fix(e2e): run Playwright single-worker to stop OOM page-crash in verify-stack (closes #115) #116

Merged
not merged 1 commits from fix/115-e2e-single-worker into main 2026-07-22 12:04:01 +00:00
+13 -1
View File
@@ -12,6 +12,12 @@ export default defineConfig({
timeout: 90_000, timeout: 90_000,
expect: { timeout: 15_000 }, expect: { timeout: 15_000 },
retries: 1, retries: 1,
// Run the specs serially. Each spec drives a full `channel: 'chromium'` browser, and the e2e
// shares an 8 GB runner with the entire compose stack (OpenZaak, NRC, Keycloak, Flowable, 4×
// Postgres, every service + 3 portals). Two parallel browsers exhaust memory and the renderer is
// OOM-killed mid-action ("Page crashed") — fixing the flakiness at its source rather than leaning
// on `retries` (CLAUDE.md §15). Only two long-running happy-path specs, so serial costs little.
workers: 1,
reporter: [['list']], reporter: [['list']],
use: { use: {
baseURL, baseURL,
@@ -26,7 +32,13 @@ export default defineConfig({
// headless), not Playwright's default headless-shell, so pin `channel: 'chromium'`. // headless), not Playwright's default headless-shell, so pin `channel: 'chromium'`.
channel: 'chromium', channel: 'chromium',
launchOptions: { launchOptions: {
args: [`--unsafely-treat-insecure-origin-as-secure=${baseURL},${behandelURL}`], args: [
`--unsafely-treat-insecure-origin-as-secure=${baseURL},${behandelURL}`,
// Write Chromium's shared memory to /tmp instead of the container's small /dev/shm, so a
// large DOM/heap can't crash the renderer on the memory-constrained runner (belt-and-braces
// alongside the single worker above).
'--disable-dev-shm-usage',
],
}, },
}, },
projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }], projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }],