Skip to main content

Basic-tier deterministic E2E

npm run test:e2e:basic is the repeatable release journey for the Basic tier. It requires TEST_DATABASE_URL to identify a disposable PostgreSQL/PostGIS test database. The runner migrates that database, applies the deterministic Basic fixture, creates a unique player/Author identity for the run, starts the real Fastify API and Vite application, and executes one Playwright scenario.

The scenario contains exactly 21 named test.step blocks. They cover identity and role resolution, discovery and map-independent presentation, authoritative eligibility, challenge start and five answers, hidden active answers, marking, completion review, retry-safe rewards, collection, starter cards, a legal saved and active deck, a server-created CPU battle through completion and history, protected Author publication through real APIs, and responsive/keyboard/error checks.

These steps decompose executable evidence for the existing Basic requirements. They are not 21 separately stakeholder-approved product requirements, and each step name is intentionally limited to the assertions made in that block.

Determinism is controlled through a fixed clock, seeded content, stable reward and CPU selection, and a unique run identity. Browser requests cross the real HTTP and database boundaries. The local bearer token verifier and Mapbox module are controlled substitutes: the scenario makes no Auth0 or Mapbox network call and does not prove production tenant, DNS, provider, or deployment behavior.

The scenario source is apps/web/playwright/basic.deterministic.spec.ts; its API harness is apps/api/e2e/basic-server.ts. A passing result is executable Basic integration evidence, not manual accessibility, external-service acceptance, gameplay-balance approval, or production smoke evidence.

The preceding document was generated, edited, and reviewed with the assistance of Codex[GPT-5] and ChatGPT-Web[GPT-5.6 Sol].