From cc3aeeb6eae4663198466755f23746ef821408ae Mon Sep 17 00:00:00 2001 From: Alex Rudenko Date: Fri, 5 Jan 2024 11:00:59 +0100 Subject: [PATCH] fix: wait for WebDriver BiDi browser to close gracefully (#11636) --- .../src/node/ProductLauncher.ts | 19 ++++++++++++++++++- test/TestExpectations.json | 6 ------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/puppeteer-core/src/node/ProductLauncher.ts b/packages/puppeteer-core/src/node/ProductLauncher.ts index 1d3cbe42574..8d532f42836 100644 --- a/packages/puppeteer-core/src/node/ProductLauncher.ts +++ b/packages/puppeteer-core/src/node/ProductLauncher.ts @@ -16,6 +16,13 @@ import { computeExecutablePath, } from '@puppeteer/browsers'; +import { + firstValueFrom, + from, + map, + race, + timer, +} from '../../third_party/rxjs/rxjs.js'; import type {Browser, BrowserCloseCallback} from '../api/Browser.js'; import {CdpBrowser} from '../cdp/Browser.js'; import {Connection} from '../cdp/Connection.js'; @@ -236,7 +243,17 @@ export abstract class ProductLauncher { await browserProcess.close(); } } else { - await browserProcess.close(); + // Wait for a possible graceful shutdown. + await firstValueFrom( + race( + from(browserProcess.hasClosed()), + timer(5000).pipe( + map(() => { + return from(browserProcess.close()); + }) + ) + ) + ); } } diff --git a/test/TestExpectations.json b/test/TestExpectations.json index cdda8ae93d1..372e97da068 100644 --- a/test/TestExpectations.json +++ b/test/TestExpectations.json @@ -2293,12 +2293,6 @@ "parameters": ["firefox", "webDriverBiDi"], "expectations": ["SKIP"] }, - { - "testIdPattern": "[launcher.spec] Launcher specs Puppeteer Puppeteer.launch userDataDir option should restore state", - "platforms": ["darwin", "linux", "win32"], - "parameters": ["firefox", "webDriverBiDi"], - "expectations": ["SKIP"] - }, { "testIdPattern": "[locator.spec] Locator Locator.click should work with a OOPIF", "platforms": ["darwin", "linux", "win32"],