SIGN IN SIGN UP

Run the accessibility suite in parallel, with a one-theme quick mode

`pnpm test:a11y` took a quarter of an hour: the config inherited `workers: 1`
from the lottie suite, and nine tenths of it was the popup sweep - every
story scanned by Axe, in each of the four themes, one after another.

- Tests run in parallel, and each theme's sweep is split into 8 parts that
  take every 8th story, so the heavy groups spread out.
- The quick mode sweeps the stories in one theme (day); roles, names and
  keyboard wiring do not change with the theme, only colour does.
  `test:a11y:full` (A11Y_ALL_THEMES=1, implied on CI) sweeps all four;
  A11Y_THEMES picks themes, A11Y_WORKERS / A11Y_STORY_PARTS tune the split.
- AxeBuilder opened a blank page for every scan to merge per-frame results
  in - a new renderer per story. createAxeBuilder runs axe in the page
  (legacy mode) wherever there is no frame to reach, and keeps the default
  where the surface holds one (the mini app, payment verification).
- The fixed 400 ms after closing a story is a wait for the popup to leave
  the DOM: its teardown, 250 ms after close, releases the shared overlay
  and navigation state and must not land on the next popup.
- One browser context per worker (e2e/workerContext.ts) keeps the ~1600
  dev modules cached between tests; each test clears the storage it used.
  The two tests that boot the real client, and Firefox, whose dynamic
  imports then failed now and then, keep a context per test.
- With the suite in parallel, a popup's content can arrive after settling
  and still be fading in when axe reads it (aiTone/view read 2.64:1
  mid-fade). A failed scan is repeated once things have stopped moving; only
  what fails again is reported.
- The Playwright suites run on vite.e2e.config.ts: the dev server without
  hot reload, which reloaded pages under running tests whenever anything in
  the checkout was edited.

Measured on this machine with the usual background load: quick 117-141 s,
Chromium only 70 s, full 247 s. The full run reports one real finding,
stickers/added in night and tinted, which it also reported before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
E
Eduard Kuzmenko committed
f39093fe3005a8008190861c1ab10f3a08b9e8a7
Parent: 5a87c44