from __future__ import annotations from pathlib import Path from tests.frontend_contract import read_feature ROOT = Path(__file__).resolve().parents[2] def test_detection_lab_exposes_structured_surfaces() -> None: lab = "\n".join( ( (ROOT / "frontend" / "src" / "components" / "detection" / "DetectionLab.tsx").read_text(encoding="utf-8"), (ROOT / "frontend" / "src" / "components" / "detection" / "DetectionModelManagement.tsx").read_text(encoding="utf-8"), ) ) assert 'className="workspace-panel ai-lab-shell detection-lab-shell"' in lab assert 'className="ai-lab-model-surface"' in lab assert 'aria-label="Technische modelmogelijkheden"' in lab assert 'className="ai-lab-run-surface"' in lab assert 'aria-label="Gebouwdetectie starten"' in lab assert 'className="ai-lab-state-stack"' in lab assert 'className="ai-lab-results-surface"' in lab assert 'aria-label="Resultaten van de beeldanalyse"' in lab assert 'className="ai-lab-qa-surface"' in lab assert 'aria-label="Kwaliteitscontrole gebouwdetectie"' in lab def test_segmentation_lab_exposes_structured_surfaces() -> None: lab = read_feature("segmentation") assert 'className="workspace-panel ai-lab-shell segmentation-lab-shell"' in lab assert 'className="ai-lab-model-surface"' in lab assert 'aria-label="Technische informatie over segmentatiemodellen"' in lab assert 'className="ai-lab-run-surface"' in lab assert 'aria-label="Segmentatie starten"' in lab assert 'className="ai-lab-state-stack"' in lab assert 'className="ai-lab-results-surface"' in lab assert 'aria-label="Segmentatieresultaten"' in lab assert 'className="ai-lab-qa-surface"' in lab assert 'aria-label="Kwaliteitscontrole voor segmentatie"' in lab def test_ai_lab_preserves_existing_detection_and_segmentation_controls() -> None: detection = read_feature("detection") segmentation = read_feature("segmentation") assert "onRunDetection" in detection assert "onLoadResults" in detection assert "onRunQa" in detection assert "detectionTileManifestPath" in detection assert "{detectionItems.length} objecten geladen" in detection assert "Vergelijk met referentielaag" in detection assert "onRunSegmentation" in segmentation assert "onLoadResults" in segmentation assert "onRunQa" in segmentation assert "selectedSegmentationModelConfigured" in segmentation assert "segmentationItems.length" in segmentation assert "vlakken geladen" in segmentation assert "Vergelijk met referentielaag" in segmentation def test_ai_lab_density_css_contracts() -> None: css = (ROOT / "frontend" / "src" / "styles" / "app.css").read_text(encoding="utf-8") assert ".ai-lab-shell" in css assert ".ai-lab-model-surface" in css assert ".ai-lab-run-surface" in css assert ".ai-lab-results-surface" in css assert ".ai-lab-qa-surface" in css assert ".ai-lab-state-stack" in css assert ".ai-lab-shell .model-list" in css assert ".ai-lab-shell .lab-form-grid" in css assert ".ai-lab-summary-grid" in css assert "grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));" in css assert "grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr));" in css