- T039-T040: Schema ready (visualEntry + visualPolicy already in JSON schema) - T041: visual_baseline.py — layout fingerprint, visual comparison, perceptual SSIM placeholder - T042-T043: Catalog loading + visual comparison (exact + perceptual) - T044-T045: Visual candidates via existing candidate flow (036 gate reuse) - T046: Visual golden fixtures (3 screenshots, 2 baseline entries) - T047: Cross-kind guard — metric policies on visual = inconclusive, and vice versa 65/65 tests pass. SPEC 037 COMPLETE: 47/47 tasks.
66 lines
3.0 KiB
JSON
66 lines
3.0 KiB
JSON
{
|
|
"visual_golden_fixtures": {
|
|
"description": "Visual baseline golden fixtures for spec 037 validation",
|
|
"screenshots": {
|
|
"dashboard_42_tab_main": {
|
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
"description": "FI-0080 main tab — 3 charts in grid layout",
|
|
"layout_fingerprint": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
|
|
"tab_identifier": "main",
|
|
"region": null,
|
|
"chart_ids": [128, 129, 130],
|
|
"viewport": {"width": 1920, "height": 1200}
|
|
},
|
|
"dashboard_42_tab_main_updated": {
|
|
"sha256": "f3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b856",
|
|
"description": "FI-0080 main tab — chart 128 moved to row 2 (layout changed)",
|
|
"layout_fingerprint": "b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
|
|
"tab_identifier": "main",
|
|
"region": null,
|
|
"chart_ids": [128, 129, 130],
|
|
"viewport": {"width": 1920, "height": 1200}
|
|
},
|
|
"dashboard_42_tab_main_perceptual": {
|
|
"sha256": "d3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b857",
|
|
"description": "FI-0080 main tab — minor CSS change, visually equivalent",
|
|
"layout_fingerprint": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
|
|
"tab_identifier": "main",
|
|
"region": null,
|
|
"chart_ids": [128, 129, 130],
|
|
"viewport": {"width": 1920, "height": 1200},
|
|
"ssim_expected": 0.97
|
|
}
|
|
},
|
|
"visual_baseline_entries": {
|
|
"exact_match": {
|
|
"baseline_id": "f5555555-6666-7777-8888-999999999999",
|
|
"kind": "visual",
|
|
"tab_identifier": "main",
|
|
"expected_image_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
"policy": {"type": "exact"},
|
|
"status": "approved",
|
|
"fingerprints": {
|
|
"query": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
|
|
"dataset": "b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
|
|
"filter": "c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5",
|
|
"layout": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
|
|
}
|
|
},
|
|
"perceptual_match": {
|
|
"baseline_id": "f6666666-7777-8888-9999-aaaaaaaaaaaa",
|
|
"kind": "visual",
|
|
"tab_identifier": "main",
|
|
"expected_image_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
"policy": {"type": "perceptual", "ssim_min": 0.95},
|
|
"status": "approved",
|
|
"fingerprints": {
|
|
"query": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
|
|
"dataset": "b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
|
|
"filter": "c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5",
|
|
"layout": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|