E2E test coverage (batched)

Treat e2e coverage gaps as one focused session, not one-off additions per PR. The storefront has Playwright under storefront/e2e/ (page objects + fixtures), but it’s not in CI today — adding an assertion in a feature PR would be local-only, so we accumulate them here and tackle as a unit.

Open questions

  • Should e2e run in CI? Today only pnpm lint + pnpm format:check gate PRs (#19, #27). E2e needs the full stack up (Medusa + Payload + Meili + storefront) which makes the CI job non-trivial. Decision pending.

Known coverage gaps (add as they surface)

  • Order confirmation address block (from #32 Copilot review). Assert the rendered shipping/billing lines on /order/confirmed/[id] — name, street, City, Province ZIP, country, email/phone. Stable selectors already added: data-testid="shipping-address-summary" and data-testid="billing-address-summary" on the two containers. Existing checkout flow (storefront/e2e/fixtures/page-objects/3-checkout/checkout-flow.ts:153-168) only asserts the confirmation header.

How to apply

When this lands a session: stand up CI infra for e2e (or accept local-only), then sweep this file’s gaps + any new ones, plus a once-over on the existing page objects for outdated selectors (the storefront has churned a lot — country/region centralize, Tailwind 4, etc.). Cross-link new PRs back to this file when they add coverage.