ci(e2e): run Playwright from the prebuilt image instead of downloading browsers (refs #73)
All checks were successful
CI / lint (pull_request) Successful in 5m43s
CI / build (pull_request) Successful in 56s
CI / unit (pull_request) Successful in 1m0s
CI / frontend (pull_request) Successful in 1m50s
CI / mutation (pull_request) Successful in 4m6s
CI / verify-stack (pull_request) Successful in 7m3s
All checks were successful
CI / lint (pull_request) Successful in 5m43s
CI / build (pull_request) Successful in 56s
CI / unit (pull_request) Successful in 1m0s
CI / frontend (pull_request) Successful in 1m50s
CI / mutation (pull_request) Successful in 4m6s
CI / verify-stack (pull_request) Successful in 7m3s
The verify-e2e lane downloaded ~150 MB of Chromium (npx playwright install) on every verify-stack run. Use the official mcr.microsoft.com/playwright image with browsers pre-baked; npm install still pins @playwright/test from tests/e2e, and the image tag is kept in lockstep with that version. Verified the exact create + docker cp + start flow launches the baked browser with no download. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,10 +3,14 @@
|
||||
# Walking-skeleton e2e (S-08d) against an ALREADY-RUNNING full stack: drive the self-service portal
|
||||
# in a real browser through mock-DigiD login → submit → confirmation (login → BFF → domain).
|
||||
#
|
||||
# Runs Playwright INSIDE the compose network (a node container on `cg`), so the browser reaches
|
||||
# Runs Playwright INSIDE the compose network (a container on `cg`), so the browser reaches
|
||||
# Keycloak by service name (keycloak:8080) — the same authority the BFF validates against, so the
|
||||
# token issuer matches (ADR-0010). The spec is copied into the container (docker cp), not mounted,
|
||||
# so it leaves no root-owned files on the host. The caller owns stack bring-up + teardown.
|
||||
#
|
||||
# Uses the official Playwright image with browsers pre-baked, instead of downloading ~150 MB of
|
||||
# Chromium on every run (issue #73). The image tag MUST match tests/e2e/package.json's
|
||||
# @playwright/test version — bump both together.
|
||||
set -euo pipefail
|
||||
|
||||
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
@@ -19,7 +23,7 @@ echo ">> running Playwright e2e on network $net against http://self-service"
|
||||
|
||||
cid="$(docker create --network "$net" -w /e2e --ipc=host \
|
||||
-e SELF_SERVICE_URL=http://self-service \
|
||||
node:24 sh -c 'npm install --no-audit --no-fund && npx playwright install --with-deps chromium && npx playwright test')"
|
||||
mcr.microsoft.com/playwright:v1.61.1-noble sh -c 'npm install --no-audit --no-fund && npx playwright test')"
|
||||
trap 'docker rm -f "$cid" >/dev/null 2>&1 || true' EXIT
|
||||
docker cp "$root/tests/e2e/." "$cid:/e2e" >/dev/null
|
||||
docker start -a "$cid"
|
||||
|
||||
Reference in New Issue
Block a user