[Feature] Golden tests cover 8 of 24 slide types and sit outside make check #617

Closed
opened 2026-07-22 16:21:48 +00:00 by brenno · 1 comment
Owner

Found in the pre-publication test review.

Evidence: test/golden/slide_golden_test.dart has nine tests over eight types (title, section, bullets, twoBullets, table, quote, code, image, plus a TLP variant). lib/models/slide.dart:19-48 defines 24. The goldens are also excluded from the main gate — Makefile:126, --exclude-tags golden — so even those eight run only if someone types make test-golden.

Why this matters now: every type built after the first round — chart, cockpit, timeline, scorecard, finding, checklist, scopeMatrix, discoveries, findingsSummary, question — has no visual regression test. A theme change or an adjustment in SlidePreviewWidget can shift their layout with nothing turning red and make check staying green. This review found a Scorecard slide rendering entirely blank (separate issue); a golden would have caught it. docs/CHECKS.md describes the goldens as guarding "per slide type", which is not currently true.

Proposal: for (final type in SlideType.values) in the golden file with one representative fixture per type, then run UPDATE=1 once. Until that exists, replace "each slide type" in docs/CHECKS.md with the eight names.

Found in the pre-publication test review. **Evidence:** `test/golden/slide_golden_test.dart` has nine tests over eight types (`title, section, bullets, twoBullets, table, quote, code, image`, plus a TLP variant). `lib/models/slide.dart:19-48` defines 24. The goldens are also excluded from the main gate — `Makefile:126`, `--exclude-tags golden` — so even those eight run only if someone types `make test-golden`. **Why this matters now:** every type built after the first round — `chart, cockpit, timeline, scorecard, finding, checklist, scopeMatrix, discoveries, findingsSummary, question` — has no visual regression test. A theme change or an adjustment in `SlidePreviewWidget` can shift their layout with nothing turning red and `make check` staying green. This review found a Scorecard slide rendering entirely blank (separate issue); a golden would have caught it. `docs/CHECKS.md` describes the goldens as guarding "per slide type", which is not currently true. **Proposal:** `for (final type in SlideType.values)` in the golden file with one representative fixture per type, then run `UPDATE=1` once. Until that exists, replace "each slide type" in `docs/CHECKS.md` with the eight names.
Author
Owner

Opgelost in PR #696, op main.

De lus loopt over SlideType.values, met dezelfde fixture die de markdown-ronde-trip en sinds #615 ook de rasterizer gebruiken. Belangrijker dan de zestien PNG's die erbij komen: een nieuw slidetype krijgt zijn golden nu zonder dat iemand eraan hoeft te denken. Dat was het echte gat — de acht die er waren, waren de acht van de eerste ronde.

De negen bestaande tests blijven staan; die dragen rijkere inhoud dan een standaardfixture kan (een TLP-markering met watermerk, een ontbrekende afbeelding). De lus is de ondergrens, niet de vervanging.

Wat ik bewust niet heb gedaan: de goldens in make check trekken. Je noemt de uitsluiting terecht, maar een pixelvergelijking in de dagelijkse poort faalt op elke machine behalve deze — dan is de poort niet strenger maar onbruikbaar voor een tweede ontwikkelaar. CHECKS.md beschrijft de route die dit wél oplost: een single-platform CI-job zodra er een runner is, en dat hangt aan #592.

CHECKS.md is verder rechtgezet: er stond "each slide type" terwijl het er acht waren, en de twee kanttekeningen staan er nu bij.

Opgelost in PR #696, op main. De lus loopt over `SlideType.values`, met dezelfde fixture die de markdown-ronde-trip en sinds #615 ook de rasterizer gebruiken. Belangrijker dan de zestien PNG's die erbij komen: **een nieuw slidetype krijgt zijn golden nu zonder dat iemand eraan hoeft te denken.** Dat was het echte gat — de acht die er waren, waren de acht van de eerste ronde. De negen bestaande tests blijven staan; die dragen rijkere inhoud dan een standaardfixture kan (een TLP-markering met watermerk, een ontbrekende afbeelding). De lus is de ondergrens, niet de vervanging. **Wat ik bewust niet heb gedaan: de goldens in `make check` trekken.** Je noemt de uitsluiting terecht, maar een pixelvergelijking in de dagelijkse poort faalt op elke machine behalve deze — dan is de poort niet strenger maar onbruikbaar voor een tweede ontwikkelaar. `CHECKS.md` beschrijft de route die dit wél oplost: een single-platform CI-job zodra er een runner is, en dat hangt aan #592. `CHECKS.md` is verder rechtgezet: er stond "each slide type" terwijl het er acht waren, en de twee kanttekeningen staan er nu bij.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#617
No description provided.