from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def test_global_focus_visible_contracts_are_defined() -> None: css = (ROOT / "frontend" / "src" / "styles" / "app.css").read_text(encoding="utf-8") assert "--focus-ring" in css assert "--focus-ring-soft" in css assert "button:focus-visible" in css assert ".nav-item:focus-visible" in css assert ".command-chip:focus-visible" in css assert ".inspector-tab:focus-visible" in css assert ".dataset-action-button:focus-visible" in css assert "outline: 3px solid var(--focus-ring);" in css assert "outline-offset: 2px;" in css def test_primary_navigation_has_keyboard_labels() -> None: app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8") assert 'aria-label={`Open ${item.label} workspace: ${item.description}`}' in app assert 'aria-label={`Switch to ${item.label} workspace`}' in app assert 'aria-label="Open data setup workspace"' in app assert 'aria-label="Inspect map workspace"' in app assert 'aria-label="Review QA/QC workspace"' in app assert 'aria-label="Manage exports workspace"' in app def test_inspector_tabs_are_bound_to_tab_panels() -> None: inspector = (ROOT / "frontend" / "src" / "components" / "inspector" / "WorkbenchInspector.tsx").read_text( encoding="utf-8" ) assert "const activeTabId = `inspector-tab-${activeTab}`" in inspector assert "const activePanelId = `inspector-panel-${activeTab}`" in inspector assert "aria-controls={`inspector-panel-${tab.key}`}" in inspector assert "id={`inspector-tab-${tab.key}`}" in inspector assert 'role="tabpanel"' in inspector assert "id={activePanelId}" in inspector assert "aria-labelledby={activeTabId}" in inspector