Summary
test/goldens/ holds 8 baselines — brewery, drink-detail and style screens. There are none for lib/widgets/drink_filter_sheets.dart or lib/screens/drinks_screen.dart, so no test asserts how any filter sheet or the filter bar actually looks.
Why this matters — a bug that got through
PR #506 shipped category headers in the style filter sheet that rendered centre-aligned instead of sitting above their group. The enclosing Column was the only one in that file without CrossAxisAlignment.start, and the headers were its first children narrower than the sheet.
All 1313 tests passed. The defect was found only by building the web app and looking at it in a headless browser, and was fixed in 553a034 by adding a positional assertion to the header test. That assertion guards one property of one widget — it is not coverage.
Every existing test for these sheets asserts presence, ordering by dy, or semantics. None asserts horizontal position, size, spacing or colour, so that whole class of regression is currently invisible to CI.
Suggested approach
test/widgets/drink_filter_sheets_test.dart already has a directHost(Widget sheet) helper that pumps a sheet as the scaffold body — exactly the shape a golden test needs, so this is mostly mechanical.
Candidate baselines:
CategoryFilterSheet — empty selection, and a multi-selection with the "Clear" button visible
StyleFilterSheet — grouped (multiple categories in scope, headers shown) and flat (single category, no header)
VisibilityFilterSheet — with the allergen section populated
DrinksScreen filter bar — the three label states (Category / a single name / N categories)
Follow the repo's golden discipline: generate with ./bin/mise run goldens:update <file>, review each PNG by eye once, and cover light and dark per the existing _dark/_light convention — buildAppTheme branches on brightness, so dark is where contrast regressions hide.
Impact
Medium. These are among the most-touched widgets in the app and the highest-traffic UI, and they currently have the weakest visual protection.
Summary
test/goldens/holds 8 baselines — brewery, drink-detail and style screens. There are none forlib/widgets/drink_filter_sheets.dartorlib/screens/drinks_screen.dart, so no test asserts how any filter sheet or the filter bar actually looks.Why this matters — a bug that got through
PR #506 shipped category headers in the style filter sheet that rendered centre-aligned instead of sitting above their group. The enclosing
Columnwas the only one in that file withoutCrossAxisAlignment.start, and the headers were its first children narrower than the sheet.All 1313 tests passed. The defect was found only by building the web app and looking at it in a headless browser, and was fixed in
553a034by adding a positional assertion to the header test. That assertion guards one property of one widget — it is not coverage.Every existing test for these sheets asserts presence, ordering by
dy, or semantics. None asserts horizontal position, size, spacing or colour, so that whole class of regression is currently invisible to CI.Suggested approach
test/widgets/drink_filter_sheets_test.dartalready has adirectHost(Widget sheet)helper that pumps a sheet as the scaffold body — exactly the shape a golden test needs, so this is mostly mechanical.Candidate baselines:
CategoryFilterSheet— empty selection, and a multi-selection with the "Clear" button visibleStyleFilterSheet— grouped (multiple categories in scope, headers shown) and flat (single category, no header)VisibilityFilterSheet— with the allergen section populatedDrinksScreenfilter bar — the three label states (Category/ a single name /N categories)Follow the repo's golden discipline: generate with
./bin/mise run goldens:update <file>, review each PNG by eye once, and cover light and dark per the existing_dark/_lightconvention —buildAppThemebranches on brightness, so dark is where contrast regressions hide.Impact
Medium. These are among the most-touched widgets in the app and the highest-traffic UI, and they currently have the weakest visual protection.