Commit fe10e5f
committed
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.1 parent 743f603 commit fe10e5f
1 file changed
Lines changed: 7 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
62 | 64 | | |
63 | 65 | | |
64 | 66 | | |
| |||
0 commit comments