Skip to content

Commit ac55d77

Browse files
committed
Fix intermittent Puppeteer session test failure with context safety checks
- Added safety checks for browser context existence before restoring session - Added try-catch wrapper to handle page restoration failures gracefully - Reset context-related variables (context, contextLocator) after session restore - Matches safety improvements from Playwright helper (lines 1048-1069) - Fixes 'Argument should belong to the same JavaScript world' protocol error
1 parent 20c4ff6 commit ac55d77

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

lib/helper/Puppeteer.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -436,9 +436,27 @@ class Puppeteer extends Helper {
436436
} else {
437437
this.activeSessionName = session
438438
}
439+
439440
const defaultCtx = this.browser.defaultBrowserContext()
440-
const existingPages = defaultCtx.targets().filter(t => t.type() === 'page')
441-
await this._setPage(await existingPages[0].page())
441+
if (!defaultCtx) {
442+
this.debug('Cannot restore session vars: default browser context is undefined')
443+
return
444+
}
445+
446+
try {
447+
const existingPages = defaultCtx.targets().filter(t => t.type() === 'page')
448+
if (existingPages && existingPages.length > 0) {
449+
await this._setPage(await existingPages[0].page())
450+
// Reset context-related variables to ensure clean state after session
451+
this.context = await this.page
452+
this.contextLocator = null
453+
} else {
454+
this.debug('Cannot restore session vars: no pages available')
455+
}
456+
} catch (err) {
457+
this.debug(`Failed to restore session vars: ${err.message}`)
458+
return
459+
}
442460

443461
return this._waitForAction()
444462
},

0 commit comments

Comments
 (0)