from __future__ import annotations from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def test_detection_lab_exposes_run_readiness_contract() -> None: lab = (ROOT / "frontend" / "src" / "components" / "detection" / "DetectionLab.tsx").read_text( encoding="utf-8" ) assert "selectedDetectionModel = detectionModels.find" in lab assert "detectionRequiresTileManifest = selectedDetectionModelId === 'yolo-configured'" in lab assert "detectionTileManifestPath.trim().length > 0" in lab assert "detectionRunReady" in lab assert 'aria-label="Detection run readiness"' in lab assert "Wat is nog nodig?" in lab assert "Luchtbeeld" in lab assert "Analysemodel" in lab assert "Beeldtegels" in lab assert "Klaar om te starten" in lab def test_segmentation_lab_exposes_run_readiness_contract() -> None: lab = (ROOT / "frontend" / "src" / "components" / "segmentation" / "SegmentationLab.tsx").read_text( encoding="utf-8" ) assert "segmentationHasDataset" in lab assert "segmentationHasTileManifest = segmentationTileManifestPath.trim().length > 0" in lab assert "segmentationRunReady" in lab assert "selectedSegmentationModelConfigured" in lab assert "selectedSegmentationModelLimitation" in lab assert 'aria-label="Segmentation run readiness"' in lab assert "Run readiness" in lab assert "Raster dataset" in lab assert "Model availability" in lab assert "Tile manifest" in lab assert "Ready to submit" in lab def test_ai_lab_run_readiness_css_contract() -> None: css = (ROOT / "frontend" / "src" / "styles" / "app.css").read_text(encoding="utf-8") assert ".lab-readiness-panel" in css assert ".lab-readiness-panel-ready" in css assert ".lab-readiness-grid" in css assert ".lab-readiness-item" in css assert ".lab-readiness-item-ready" in css