diff --git a/packages/playwright-core/src/server/chromium/crBrowser.ts b/packages/playwright-core/src/server/chromium/crBrowser.ts index 016663707e..0217005427 100644 --- a/packages/playwright-core/src/server/chromium/crBrowser.ts +++ b/packages/playwright-core/src/server/chromium/crBrowser.ts @@ -525,7 +525,7 @@ export class CRBrowserContext extends BrowserContext { await Promise.all(openedBeforeUnloadDialogs.map(dialog => dialog.dismiss())); if (!this._browserContextId) { - await Promise.all(this._crPages().map(crPage => crPage._mainFrameSession._stopVideoRecording())); + await this.stopVideoRecording(); // Closing persistent context should close the browser. await this._browser.close({ reason }); return; @@ -545,6 +545,10 @@ export class CRBrowserContext extends BrowserContext { } } + async stopVideoRecording() { + await Promise.all(this._crPages().map(crPage => crPage._mainFrameSession._stopVideoRecording())); + } + onClosePersistent() { // When persistent context is closed, we do not necessary get Target.detachedFromTarget // for all the background pages. diff --git a/packages/playwright-core/src/server/electron/electron.ts b/packages/playwright-core/src/server/electron/electron.ts index 677446695b..eeb27552a8 100644 --- a/packages/playwright-core/src/server/electron/electron.ts +++ b/packages/playwright-core/src/server/electron/electron.ts @@ -78,6 +78,7 @@ export class ElectronApplication extends SdkObject { }); }); this._browserContext.setCustomCloseHandler(async () => { + await this._browserContext.stopVideoRecording(); const electronHandle = await this._nodeElectronHandlePromise; await electronHandle.evaluate(({ app }) => app.quit()).catch(() => {}); });