Skip to content

Commit bf996d0

Browse files
DavertMikclaude
andcommitted
fix: skip _finishTest and _cleanup when browser restart is enabled
Prevents double cleanup and hanging when BROWSER_RESTART=browser or BROWSER_RESTART=context is used. The cleanup already happens in _after() and _afterSuite() hooks, so _finishTest() and _cleanup() are redundant and cause the process to hang trying to clean up an already closed browser. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 478df12 commit bf996d0

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

lib/listener/helpers.js

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

7575
event.dispatcher.on(event.all.result, () => {
76-
runAsyncHelpersHook('_finishTest', {}, true)
76+
// Skip _finishTest for helpers that restart browser/context to avoid double cleanup
77+
Object.keys(helpers).forEach(key => {
78+
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+
}
84+
}
85+
})
7786
})
7887

7988
event.dispatcher.on(event.all.after, () => {
80-
runAsyncHelpersHook('_cleanup', {}, true)
89+
// Skip _cleanup for helpers that restart browser/context to avoid double cleanup
90+
Object.keys(helpers).forEach(key => {
91+
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+
}
97+
}
98+
})
8199
})
82100
}

0 commit comments

Comments
 (0)