Commit f922ac8
fix(workers): do not exit worker on unhandled rejections (#5561)
* fix(workers): do not exit worker process on unhandled rejections
The worker process unhandledRejection handler currently calls
process.exit(1) for any rejection whose message is not "expected" /
"AssertionError". Exiting the worker silently drops every remaining
test in its queue — they do not appear in the failure summary, they
are missing entirely from the run report.
In real suites this triggers routinely from orphaned promises:
- page.waitForResponse() created before an action that throws —
the response promise outlives the throw and rejects with Timeout
seconds/minutes later, after the scenario has already moved on
(or finished).
- Session-restore races in the auth plugin when multiple workers
cold-cache simultaneously.
- Playwright video.saveAs after a context close.
Measured on a 133-scenario suite, 4 workers, Node 22:
Without this fix: 73 / 133 executed, 2 workers killed
→ 60 tests silently lost from the report
With this fix: 145 / 145 executed, 0 workers killed
→ all rejections logged, failed tests stay in
the report, worker continues to next test
Restores 3.x behaviour (workers logged rejections and continued).
The uncaughtException handler keeps its current behaviour — that one
is genuinely unrecoverable.
* refactor: shorten comment in unhandledRejection handler
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent e6caee6 commit f922ac8
1 file changed
Lines changed: 1 addition & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
| 57 | + | |
62 | 58 | | |
63 | 59 | | |
64 | 60 | | |
| |||
0 commit comments