Skip to content

Filter sheets and drinks screen have no golden coverage #508

Description

@richardthe3rd

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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions