Skip to content

Commit 29bbfc1

Browse files
DavertMikclaude
andcommitted
fix: skip _finishTest and _cleanup for ALL helpers when browser restarts
Previous fix only checked individual helpers, but non-browser helpers like JSONResponse and ScreenshotSessionHelper also don't need cleanup when browser restarts. Now checks if ANY helper has restart enabled and skips _finishTest/_cleanup for all helpers in that case. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent bf996d0 commit 29bbfc1

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

lib/listener/helpers.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -73,27 +73,25 @@ export default function () {
7373
})
7474

7575
event.dispatcher.on(event.all.result, () => {
76-
// Skip _finishTest for helpers that restart browser/context to avoid double cleanup
76+
// Skip _finishTest for all helpers if any browser helper restarts to avoid double cleanup
77+
const hasBrowserRestart = Object.values(helpers).some(helper => (helper.config && helper.config.restart) || (helper.options && (helper.options.restart === 'browser' || helper.options.restart === 'context')))
78+
7779
Object.keys(helpers).forEach(key => {
7880
const helper = helpers[key]
79-
if (helper._finishTest) {
80-
const shouldSkip = (helper.config && helper.config.restart) || (helper.options && (helper.options.restart === 'browser' || helper.options.restart === 'context'))
81-
if (!shouldSkip) {
82-
recorder.add(`hook ${key}._finishTest()`, () => helper._finishTest(), true, false)
83-
}
81+
if (helper._finishTest && !hasBrowserRestart) {
82+
recorder.add(`hook ${key}._finishTest()`, () => helper._finishTest(), true, false)
8483
}
8584
})
8685
})
8786

8887
event.dispatcher.on(event.all.after, () => {
89-
// Skip _cleanup for helpers that restart browser/context to avoid double cleanup
88+
// Skip _cleanup for all helpers if any browser helper restarts to avoid double cleanup
89+
const hasBrowserRestart = Object.values(helpers).some(helper => (helper.config && helper.config.restart) || (helper.options && (helper.options.restart === 'browser' || helper.options.restart === 'context')))
90+
9091
Object.keys(helpers).forEach(key => {
9192
const helper = helpers[key]
92-
if (helper._cleanup) {
93-
const shouldSkip = (helper.config && helper.config.restart) || (helper.options && (helper.options.restart === 'browser' || helper.options.restart === 'context'))
94-
if (!shouldSkip) {
95-
recorder.add(`hook ${key}._cleanup()`, () => helper._cleanup(), true, false)
96-
}
93+
if (helper._cleanup && !hasBrowserRestart) {
94+
recorder.add(`hook ${key}._cleanup()`, () => helper._cleanup(), true, false)
9795
}
9896
})
9997
})

0 commit comments

Comments
 (0)