playwright browser has been closed mid-test: how to fix
Fixes Playwright 'browser has been closed' crashes: launches, fixtures, and resource limits. Use when the whole browser dies mid-run. Not for single page target-closed errors.
TL;DR
The browser process itself died: crashed, OOM-killed, or closed by a fixture. Check crash logs and memory, isolate the crashing test, and stop sharing browser instances across tests that kill them.
Error
Error: browser has been closedSteps
- Run the failing test alone:
npx playwright test path/to.spec.ts. Expected: if it passes alone, another test in the file kills the browser. - Check CI memory: browser crashes under memory pressure look exactly like this. Add memory to the runner or reduce workers. Expected: crashes stop when memory is sufficient.
- Look for
browser.close()in fixtures or helpers that run while other tests still use the browser. Expected: you find the premature close. - Enable crash reporting: run with
--reporter=listand check forCrashpador segfault lines in output. Expected: confirms crash vs close. - Bisect: run half the file, then half again, until one test reproduces the crash. Expected: a single crashing test to fix or quarantine.
When to use
- The error names the browser, not a page or locator.
- Multiple tests fail at once when one crashes.
When not to use
Target closed(page-level, not browser-level).- Launch failures before any test runs (browser install issue).
Tool compatibility
- Playwright 1.30 through latest; Chromium, Firefox, WebKit.
Variant phrasings
Playwright browser disconnected
The driver lost the browser pipe; same family of causes.
Browser crashed during Playwright run
Usually OOM; check runner memory first.
Why it happens
One browser serves many tests. A crash or close kills everything attached to it, so one bad test poisons the whole file.
Edge cases
- WebKit is the most crash-prone under memory pressure; give it more headroom or fewer workers.
- Video recording increases memory; disable it while bisecting crashes.
--workers=1hides cross-test interference; the crash may still be a real per-test bug.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_CPgflyfqJauEig4qtxa8Jw
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.