verify-stack was failing intermittently on the Playwright e2e with Page crashed mid-action (locator.fill) and 90s timeouts — the run logged "2 workers", i.e. two full channel: 'chromium' browsers running alongside the entire compose stack on the 8 GB self-hosted runner. The renderer gets OOM-killed. Tests passed only when a retry happened to run alone.
Fix: pin workers: 1 in tests/e2e/playwright.config.ts (there are only two long-running happy-path specs, so serial costs little) and add --disable-dev-shm-usage. This removes the memory contention at the source rather than leaning on retries (CLAUDE.md §15 — flaky tests are fixed, not retried).
Failing test committed first — N/A: the "red" is the observed verify-stack e2e crash (Page crashed, 2 workers); this changes test-harness config to fix it. Verified green by re-running the e2e (see notes).
Conventional Commit referencing the issue (refs #115).
CI green — the point of the change; verify-stack e2e should stop OOM-crashing.
Docs — none needed (test-config only; rationale in an inline comment).
ADR — N/A.
Notes for reviewers
One-line-of-behaviour change: workers: 1 + --disable-dev-shm-usage; no product or spec changes.
Page crashed is a renderer OOM, not a product defect — the happy path passes when a browser runs alone (the flaky retries already showed this). Single-worker makes that the normal case.
Independent of #110 (that PR fixes docker-compose.local.yml; this fixes the CI verify-stack e2e). Landing this first unblocks #110's verify-stack.
## What & why
`verify-stack` was failing intermittently on the Playwright e2e with `Page crashed` mid-action (`locator.fill`) and 90s timeouts — the run logged **"2 workers"**, i.e. two full `channel: 'chromium'` browsers running alongside the entire compose stack on the 8 GB self-hosted runner. The renderer gets OOM-killed. Tests passed only when a retry happened to run alone.
Fix: pin `workers: 1` in `tests/e2e/playwright.config.ts` (there are only two long-running happy-path specs, so serial costs little) and add `--disable-dev-shm-usage`. This removes the memory contention at the source rather than leaning on `retries` (CLAUDE.md §15 — flaky tests are fixed, not retried).
Closes #115
## Definition of Done
- [x] Linked Gitea issue (#115).
- [ ] Failing test committed first — N/A: the "red" is the observed `verify-stack` e2e crash (`Page crashed`, 2 workers); this changes test-harness config to fix it. Verified green by re-running the e2e (see notes).
- [x] Conventional Commit referencing the issue (`refs #115`).
- [ ] CI green — the point of the change; `verify-stack` e2e should stop OOM-crashing.
- [x] Docs — none needed (test-config only; rationale in an inline comment).
- [ ] ADR — N/A.
## Notes for reviewers
- One-line-of-behaviour change: `workers: 1` + `--disable-dev-shm-usage`; no product or spec changes.
- `Page crashed` is a renderer OOM, not a product defect — the happy path passes when a browser runs alone (the flaky retries already showed this). Single-worker makes that the normal case.
- Independent of #110 (that PR fixes `docker-compose.local.yml`; this fixes the CI `verify-stack` e2e). Landing this first unblocks #110's `verify-stack`.
verify-stack intermittently failed on the e2e with "Page crashed" mid-action:
Playwright defaulted to 2 workers, so two full chromium browsers ran alongside the
whole compose stack on the 8 GB runner and the renderer was OOM-killed. Pin
workers: 1 (only two long-running happy-path specs) and add --disable-dev-shm-usage,
removing the memory contention rather than masking it with retries (CLAUDE.md §15).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
not
merged commit d5e5fa254c into main2026-07-22 12:04:01 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What & why
verify-stackwas failing intermittently on the Playwright e2e withPage crashedmid-action (locator.fill) and 90s timeouts — the run logged "2 workers", i.e. two fullchannel: 'chromium'browsers running alongside the entire compose stack on the 8 GB self-hosted runner. The renderer gets OOM-killed. Tests passed only when a retry happened to run alone.Fix: pin
workers: 1intests/e2e/playwright.config.ts(there are only two long-running happy-path specs, so serial costs little) and add--disable-dev-shm-usage. This removes the memory contention at the source rather than leaning onretries(CLAUDE.md §15 — flaky tests are fixed, not retried).Closes #115
Definition of Done
verify-stacke2e crash (Page crashed, 2 workers); this changes test-harness config to fix it. Verified green by re-running the e2e (see notes).refs #115).verify-stacke2e should stop OOM-crashing.Notes for reviewers
workers: 1+--disable-dev-shm-usage; no product or spec changes.Page crashedis a renderer OOM, not a product defect — the happy path passes when a browser runs alone (the flaky retries already showed this). Single-worker makes that the normal case.docker-compose.local.yml; this fixes the CIverify-stacke2e). Landing this first unblocks #110'sverify-stack.