test(ui): refresh two stale baselines and settle whether they gate
`make ui-visual` had been red on main since #27, and nothing runs it, so four references had drifted across three unrelated merges. Two were refreshed with #186; these are the other two. Each recorded two changes, not one. `app-sidebar` lost Jobs (#27, shipped) and moved its highlight from Home to Tracks; `now-playing` gained the source line (shipped) and was playing from "a dynamic mix". Both are singleton stores read by a case that sets nothing, so the shot photographs whatever the case above it left behind — blessing that would have pinned the file's own ordering into a PNG. Both cases state their world now, and only then are the references re-recorded. The second half of the issue asks whether this tier should gate, and the answer is measured rather than preferred: replayed in a bare ubuntu:24.04 container — CI's `check` image — three of the ten baselines fail on rendering alone (`track-info` and one `page-header` shot at ratio 0.03 against a 0.02 allowance, `seek-bar` one pixel shorter), and the two stale ones disagree about their new height between the machines. So CI cannot run this suite without a second, container-recorded baseline set that every local run would then fail against, and a pre-push hook is the same fault with the machines swapped. It stays local and opt-in; what replaces the gate is the rule that a change moving a component's geometry refreshes that component's baseline in the same commit, having read the image, and never one it did not cause. Written where a person meets it: the skill's tier doc has the table, SKILL.md has the obligation, CLAUDE.md has the constraint. Deleting the baselines was the third option and is declined: this tier has caught one thing no other could, the `<span>` that lost the UA stylesheet's `box-sizing` and grew a badge 36→38px. Closes #196
This commit is contained in:
@@ -3471,6 +3471,25 @@ Pre-commit hooks verify generated code is fresh — always run `make generate` a
|
||||
Tests use `database.NewTestDB(t)` for in-memory SQLite, built by the same
|
||||
`applySchema` production uses so the two cannot diverge. Test audio fixtures live in `test_data/music_library_test/`. Table-driven tests are the norm.
|
||||
|
||||
**`make ui-visual` is the one tier nothing but a person runs, and it
|
||||
cannot become one.** Its ten `toMatchScreenshot` baselines were recorded
|
||||
on a developer's Arch box; replayed in a bare `ubuntu:24.04` container
|
||||
— CI's `check` image — three of them fail on font metrics and
|
||||
compositing alone (`track-info` and one `page-header` shot at a 0.03
|
||||
mismatch ratio against a 0.02 allowance, `seek-bar` one pixel shorter),
|
||||
and two components disagree about their own height between the two
|
||||
machines. So CI keeps running `make ui-test`, which is the same suite
|
||||
with the comparisons off, and a pre-push hook would be the same fault
|
||||
with the machines swapped. What replaces the gate is a rule, in
|
||||
`.pi/skills/yellowjacket-dev/references/ui-tier.md`: **a change that
|
||||
moves a component's geometry refreshes that component's baseline in the
|
||||
same commit, having read the image, and never one it did not cause**.
|
||||
That is #196, which was four stale references accumulated across three
|
||||
unrelated merges — a red tier nobody could read, which is how it stayed
|
||||
red. A visual case must also **state the world it photographs**, since
|
||||
the stores are singletons and a case that sets nothing records whatever
|
||||
the previous one left in them.
|
||||
|
||||
## Git Workflow
|
||||
|
||||
Feature branches and PRs are the only way in: **`main` is a protected
|
||||
|
||||
Reference in New Issue
Block a user