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") navigation = ( ROOT / "frontend" / "src" / "components" / "shell" / "WorkbenchNavigation.tsx" ).read_text(encoding="utf-8") assert 'aria-label={`Open ${item.label}: ${item.description}`}' in navigation assert "title={item.description}" in navigation assert "aria-current={item.key === activeWorkspace ? 'page' : undefined}" in navigation assert "label: 'Bronnen'" in app assert "label: 'Kaart'" in app assert "label: 'Kwaliteit'" in app assert "label: 'Downloads'" 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