from __future__ import annotations from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def test_overview_exposes_end_to_end_workflow_guidance() -> None: app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8") assert 'aria-label="V1 workflow guidance"' in app assert 'className="workflow-guidance-panel"' in app assert 'className="workflow-guidance-steps"' in app assert "workflowGuidanceSteps.map" in app assert "Project & AOI" in app assert "Data" in app assert "Map" in app assert "QA / AI" in app assert "Export" in app def test_workflow_guidance_routes_to_existing_workspaces() -> None: app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8") assert "target: 'data'" in app assert "target: 'map'" in app assert "target: 'analysis'" in app assert "target: 'exports'" in app assert "onOpenAiWorkspace={() => setActiveWorkspace('ai')}" in app assert "onClick={() => openWorkflowGuidanceStep(step.target)}" in app assert "setActiveWorkspace(target)" in app def test_workflow_guidance_has_responsive_contracts() -> None: css = (ROOT / "frontend" / "src" / "styles" / "app.css").read_text(encoding="utf-8") assert ".workflow-guidance-panel" in css assert ".workflow-guidance-steps" in css assert ".workflow-guidance-step" in css assert ".workflow-guidance-step-active" in css assert ".workflow-step-status" in css assert "grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));" in css def test_workflow_guidance_complete_state_and_map_copy_are_precise() -> None: app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8") assert "workflowGuidanceComplete" in app assert "Ready for handoff" in app assert "layer feature" in app assert "+ AOI" in app assert "AOI loaded" in app def test_workflow_guidance_map_and_export_steps_reuse_dataset_context() -> None: app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8") assert "openWorkflowGuidanceStep" in app assert "target === 'map'" in app assert "openDatasetInMap(availableMapDatasets[0])" in app assert "target === 'exports'" in app assert "openDatasetExport(availableMapDatasets[0])" in app assert "onClick={() => openWorkflowGuidanceStep(step.target)}" in app