Refactor workbench into task-based UI shell
This commit is contained in:
@@ -18,15 +18,18 @@ def test_app_uses_quality_and_map_presentational_components() -> None:
|
||||
assert "<GeoMap" not in app
|
||||
|
||||
|
||||
def test_map_workspace_is_promoted_before_dense_workflow_grid() -> None:
|
||||
def test_map_workspace_lives_in_task_based_workbench_shell() -> None:
|
||||
app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8")
|
||||
styles = (ROOT / "frontend" / "src" / "styles" / "app.css").read_text(encoding="utf-8")
|
||||
|
||||
assert app.index("<MapWorkspace") < app.index('<main className="workspace-grid">')
|
||||
assert "grid-template-columns: repeat(12, minmax(0, 1fr));" in styles
|
||||
assert ".workspace-grid > section" in styles
|
||||
assert "max-height: 42rem;" in styles
|
||||
assert "overflow: auto;" in styles
|
||||
assert "activeWorkspace === 'map'" in app
|
||||
assert app.index("activeWorkspace === 'map'") < app.index("<MapWorkspace")
|
||||
assert 'className="workbench-main"' in app
|
||||
assert 'className="workbench-inspector"' in app
|
||||
assert ".workbench-layout" in styles
|
||||
assert ".workbench-sidebar" in styles
|
||||
assert ".workbench-main" in styles
|
||||
assert ".workbench-inspector" in styles
|
||||
|
||||
|
||||
def test_quality_results_panel_owns_persisted_quality_check_markup() -> None:
|
||||
|
||||
@@ -35,10 +35,10 @@ def test_app_entrypoint_has_clean_encoding_and_react_imports() -> None:
|
||||
app = app_path.read_text(encoding="utf-8")
|
||||
|
||||
assert not app_bytes.startswith(b"\xef\xbb\xbf")
|
||||
assert "import { useMemo } from 'react'" in app
|
||||
assert "import { useMemo, useState } from 'react'" in app
|
||||
assert "FormEvent" not in app
|
||||
assert "useEffect" not in app
|
||||
assert "useState" not in app
|
||||
assert "const [activeWorkspace, setActiveWorkspace] = useState<WorkspaceKey>('overview')" in app
|
||||
|
||||
|
||||
def test_demo_workflow_hook_owns_demo_api_and_cross_module_selection() -> None:
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
|
||||
|
||||
def test_app_uses_task_based_workbench_shell() -> None:
|
||||
app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8")
|
||||
|
||||
assert "type WorkspaceKey" in app
|
||||
assert "workspaceNavItems" in app
|
||||
assert 'data-testid={`workspace-nav-${item.key}`}' in app
|
||||
assert 'className="workbench-layout"' in app
|
||||
assert 'className="workbench-sidebar"' in app
|
||||
assert 'className="workbench-main"' in app
|
||||
assert 'className="workbench-inspector"' in app
|
||||
assert "activeWorkspace === 'data'" in app
|
||||
assert "activeWorkspace === 'map'" in app
|
||||
assert "activeWorkspace === 'analysis'" in app
|
||||
assert "activeWorkspace === 'ai'" in app
|
||||
assert "activeWorkspace === 'exports'" in app
|
||||
assert "activeWorkspace === 'system'" in app
|
||||
|
||||
|
||||
def test_workbench_shell_css_provides_navigation_main_and_inspector_regions() -> None:
|
||||
css = (ROOT / "frontend" / "src" / "styles" / "app.css").read_text(encoding="utf-8")
|
||||
|
||||
assert ".workbench-topbar" in css
|
||||
assert ".context-bar" in css
|
||||
assert ".workbench-layout" in css
|
||||
assert ".workbench-sidebar" in css
|
||||
assert ".nav-item-active" in css
|
||||
assert ".workbench-main" in css
|
||||
assert ".workbench-inspector" in css
|
||||
assert ".workspace-grid-data" in css
|
||||
assert ".workspace-grid-ai" in css
|
||||
Reference in New Issue
Block a user