From ff3f951dc8a4f24afdc76deedcbf05e16bd5074d Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Tue, 8 Jun 2021 17:28:24 -0700 Subject: [PATCH] fix(firefox): race between markAsError and Page.ready (#6976) When new page turns into download, we can have `_markAsError` followed by the `Page.ready` signal and report the page twice (as an error and as a real page). This is flaky and depends on whether `Page.ready` is fast enough before the page closes or not. Exposed by the "should report new window downloads" test. --- src/server/firefox/ffPage.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/firefox/ffPage.ts b/src/server/firefox/ffPage.ts index b4f5bef60a..3a79dfe55f 100644 --- a/src/server/firefox/ffPage.ts +++ b/src/server/firefox/ffPage.ts @@ -102,6 +102,8 @@ export class FFPage implements PageDelegate { }); this._session.once('Page.ready', async () => { await this._page.initOpener(this._opener); + if (this._initializationFailed) + return; // Note: it is important to call |reportAsNew| before resolving pageOrError promise, // so that anyone who awaits pageOrError got a ready and reported page. this._initializedPage = this._page;