From 76dc43e9bacc1cad70c957f007e195bf6e210e0a Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Tue, 22 Nov 2022 11:50:35 -0800 Subject: [PATCH] cherry-pick(#18993): fix(electron): tolerate connection closed during quit --- packages/playwright-core/src/server/electron/electron.ts | 2 +- packages/playwright-core/src/server/electron/loader.ts | 3 ++- tests/electron/electron-app.spec.ts | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/playwright-core/src/server/electron/electron.ts b/packages/playwright-core/src/server/electron/electron.ts index 2c054a7871745..cb5b4730a31e6 100644 --- a/packages/playwright-core/src/server/electron/electron.ts +++ b/packages/playwright-core/src/server/electron/electron.ts @@ -77,7 +77,7 @@ export class ElectronApplication extends SdkObject { }); this._browserContext.setCustomCloseHandler(async () => { const electronHandle = await this._nodeElectronHandlePromise; - await electronHandle.evaluate(({ app }) => app.quit()); + await electronHandle.evaluate(({ app }) => app.quit()).catch(() => {}); }); } diff --git a/packages/playwright-core/src/server/electron/loader.ts b/packages/playwright-core/src/server/electron/loader.ts index 862c344402328..b1443751b3894 100644 --- a/packages/playwright-core/src/server/electron/loader.ts +++ b/packages/playwright-core/src/server/electron/loader.ts @@ -29,9 +29,10 @@ process.argv[1] = appPath; for (const arg of chromiumSwitches) { const match = arg.match(/--([^=]*)=?(.*)/)!; app.commandLine.appendSwitch(match[1], match[2]); - app.getAppPath = () => path.dirname(appPath); } +app.getAppPath = () => path.dirname(appPath); + let launchInfoEventPayload: any; app.on('ready', launchInfo => launchInfoEventPayload = launchInfo); diff --git a/tests/electron/electron-app.spec.ts b/tests/electron/electron-app.spec.ts index 2577b085d2664..5945457dc893c 100644 --- a/tests/electron/electron-app.spec.ts +++ b/tests/electron/electron-app.spec.ts @@ -154,6 +154,7 @@ test('should create page for browser view', async ({ playwright }) => { const app = await playwright._electron.launch({ args: [path.join(__dirname, 'electron-window-app.js')], }); + await app.firstWindow(); await app.evaluate(async electron => { const window = electron.BrowserWindow.getAllWindows()[0]; const view = new electron.BrowserView(); @@ -169,6 +170,7 @@ test('should return same browser window for browser view pages', async ({ playwr const app = await playwright._electron.launch({ args: [path.join(__dirname, 'electron-window-app.js')], }); + await app.firstWindow(); await app.evaluate(async electron => { const window = electron.BrowserWindow.getAllWindows()[0]; const view = new electron.BrowserView();