1.4 KiB
E2E smoke tests (Playwright)
End-to-end smoke tests that drive a real browser against the live dev stack.
These verify the cross-stack behavior the component tests mock away: the real
session cookie, the Vite /api → php:80 proxy, and the actual API contract.
Runs in a container, not the host
Playwright needs real browser binaries. Rather than installing them on the host
(the NixOS host can't launch Chromium — missing shared libraries), the suite
runs in the playwright compose service (mcr.microsoft.com/playwright,
browsers + libs preinstalled). It's gated behind a compose profile so it never
starts with a plain dev-up.
Running
- Bring the stack up:
dev-up(needsfrontend,php,databaseservices). - Run the suite via the
e2eprofile (installs deps + runs the tests in the container; the image already has the browsers):
The runner targets the SPA by compose service name (podman-compose -f compose.yaml -f compose.override.yaml --profile e2e run --rm playwrighthttp://frontend:5173, set viaE2E_BASE_URL) — container-to-container, no host browsers involved.
Version coupling
@playwright/test in package.json is pinned to an exact version that must
match the mcr.microsoft.com/playwright:vX.Y.Z-jammy image tag in
compose.override.yaml. A mismatch makes Playwright refuse to launch (the
runner and the image's bundled browsers must agree). Bump both together.