Wave 4 exit - record the new probes and move the baseline counts
Wave 4's five exit criteria, and what shows each of them: counts come from the server, identical across users aggregates_check 16/16 work packages addressable by URL, incl. signed-out url_state_check 23/23 drafts autosave, unsaved work guarded, save honest autosave_check 34/34 toasts announce, helper text legible, focus visible a11y_check 22/22 X1 and X5 cleared see below X1 is cleared: a work package has an address, and WPUrl.absolute() is what CR-011 and CR-014 will paste into an email in wave 8. X5 is cleared: /api/wps/metrics returns by_location with its dimensions declared alongside the groups, so CR-004 and CR-018 can group by building/floor/sector in wave 6 by changing the dimensions and the keys, not the response shape. Four metrics moved off their wave 0 baselines and are recorded in the file map so wave 9 measures against the right numbers. The one that matters most is not in the plan's list: `outline: none` went from six to one, and the survivor has its replacement in the rule directly above it. The file map also now says to run the browser probes ONE AT A TIME. Chained, they exhaust the headless browser's ports and abort with "browser would not start", which reads as a code fault and is not one - it cost a confusing red run here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -210,6 +210,39 @@ snapshots every custom property's resolved value and every element's computed co
|
||||
and type, on all 7 pages, and diffs two snapshots. Use it for any task that claims to change
|
||||
styling without changing appearance.
|
||||
|
||||
Wave 4 added three more, each written because its task's done-when could not be checked by
|
||||
anything that already existed:
|
||||
|
||||
```bash
|
||||
python tests/aggregates_check.py # B4 — do the counts come from the server? 16 checks
|
||||
python tests/url_state_check.py # S3 — does the app's state have an address? 23 checks
|
||||
python tests/autosave_check.py # S2/B5 — does unsaved work survive? 34 checks
|
||||
python tests/a11y_check.py # S10/S11/S12 — announce, legible, focus 22 checks
|
||||
```
|
||||
|
||||
Each tests what was *broken* rather than what is easy to assert. `aggregates_check.py` poisons
|
||||
localStorage and demands the dashboard still report the server's total; a test that only
|
||||
checked the totals were correct would have passed before `B4` was built. `a11y_check.py` runs
|
||||
with CDP focus emulation on, without which `:focus-visible` never matches in headless and every
|
||||
element reports a clean pass.
|
||||
|
||||
**Run them one at a time.** Chained back to back they exhaust the headless browser's ports and
|
||||
all three abort with "browser would not start"; that failure looks like a code fault and is not
|
||||
one.
|
||||
|
||||
### Baseline counts, updated
|
||||
|
||||
| # | Metric | Wave 0 | Now | Changed by |
|
||||
|---|---|---|---|---|
|
||||
| 5 | sheets declaring their own `#0f62fe` | 4 (really 5, see §4) | **1** | `T3.2` |
|
||||
| 7 | `aria-live` / `role="alert"\|"status"` sites | 0 | **13** | `T4.4`, `T4.5` |
|
||||
| 8 | `pushState` | 0 | **2** (6 call sites via `wp-url.js`) | `T4.2` |
|
||||
| — | `outline: none` in stylesheets | 6 | **1**, with its replacement one rule above | `T3.4`, `T4.7` |
|
||||
| — | helper-text contrast, worst case | 3.01:1 | **4.56:1** | `T4.6` |
|
||||
|
||||
Metrics 1–4 and 6 (native dialogs, `<div onclick>`, `.help-tip` badges) are wave 9's to move
|
||||
and are unchanged.
|
||||
|
||||
`server/smoketest.py` is the one that is **not** self-contained: it drives a server you point
|
||||
it at and aborts unless `WP_SMOKE_USER` and `WP_SMOKE_PASSWORD` are set, because every route
|
||||
but `/api/health` needs a session. Use an admin account — it creates and deletes a project.
|
||||
|
||||
Reference in New Issue
Block a user