from __future__ import annotations from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def test_change_detection_panel_exposes_structured_surfaces() -> None: panel = (ROOT / "frontend" / "src" / "components" / "analysis" / "ChangeDetectionPanel.tsx").read_text( encoding="utf-8" ) assert 'className="panel change-detection-shell"' in panel assert 'className="panel-header change-detection-heading"' in panel assert 'className="change-detection-input-surface"' in panel assert 'aria-label="Instellingen voor veranderingsanalyse"' in panel assert 'className="change-detection-state-stack"' in panel assert 'className="change-detection-result-surface"' in panel assert 'aria-label="Samenvatting veranderingsanalyse"' in panel assert 'className="change-detection-warning-surface"' in panel def test_change_detection_panel_preserves_existing_compare_controls() -> None: panel = (ROOT / "frontend" / "src" / "components" / "analysis" / "ChangeDetectionPanel.tsx").read_text( encoding="utf-8" ) assert "onSourceDatasetChange" in panel assert "onTargetDatasetChange" in panel assert "onIouThresholdChange" in panel assert "onIncludeUnchangedChange" in panel assert "onRun" in panel assert "Kaartlagen vergelijken" in panel assert "Voeg minstens twee vectorlagen toe om periodes te vergelijken." in panel assert "result.added_count" in panel assert "result.removed_count" in panel assert "result.unchanged_count" in panel def test_change_detection_density_css_contracts() -> None: css = (ROOT / "frontend" / "src" / "styles" / "app.css").read_text(encoding="utf-8") assert ".change-detection-shell" in css assert ".change-detection-heading" in css assert ".change-detection-input-surface" in css assert ".change-detection-state-stack" in css assert ".change-detection-result-surface" in css assert ".change-detection-warning-surface" in css assert ".change-detection-shell .form-grid" in css assert ".change-detection-shell .summary-grid" in css assert "grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));" in css assert "grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr));" in css