From f1af4c94665555d4516debeb88c1b3c6778d02aa Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Mon, 9 Dec 2024 19:25:58 -0800 Subject: [PATCH] asf --- .../playwright-core/src/server/browserContext.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/playwright-core/src/server/browserContext.ts b/packages/playwright-core/src/server/browserContext.ts index 309008989d..6d9227c0a7 100644 --- a/packages/playwright-core/src/server/browserContext.ts +++ b/packages/playwright-core/src/server/browserContext.ts @@ -360,15 +360,21 @@ export abstract class BrowserContext extends SdkObject { } async _loadDefaultContextAsIs(progress: Progress): Promise { + let pageOrError; if (!this.pagesOrErrors().length) { const waitForEvent = helper.waitForEvent(progress, this, BrowserContext.Events.Page); progress.cleanupWhenAborted(() => waitForEvent.dispose); - const page = await waitForEvent.promise as Page; - const pageOrError = await page._delegate.pageOrError(); - if (pageOrError instanceof Error) - throw pageOrError; + // Race against BrowserContext.close + pageOrError = await Promise.race([ + waitForEvent.promise as Promise, + this._closePromise, + ]); + // Consider Page initialization errors + if (pageOrError instanceof Page) + pageOrError = await pageOrError._delegate.pageOrError(); + } else { + pageOrError = await this.pagesOrErrors()[0]; } - const pageOrError = await this.pagesOrErrors()[0]; if (pageOrError instanceof Error) throw pageOrError; await pageOrError.mainFrame()._waitForLoadState(progress, 'load');