From cf5101d44a15dac76fb5eb8f26ce2075863cd843 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Wed, 4 May 2022 20:52:50 +0100 Subject: [PATCH] fix(networkidle): do not produce networkidle event on errored pages (#13938) --- packages/playwright-core/src/server/frames.ts | 10 +++++++++- packages/playwright-core/src/server/page.ts | 3 +-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/playwright-core/src/server/frames.ts b/packages/playwright-core/src/server/frames.ts index 1ca9bf1f45..21b2b4425f 100644 --- a/packages/playwright-core/src/server/frames.ts +++ b/packages/playwright-core/src/server/frames.ts @@ -85,6 +85,8 @@ type SelectorInFrame = { info: SelectorInfo; }; +const kDummyFrameId = ''; + export class FrameManager { private _page: Page; private _frames = new Map(); @@ -99,6 +101,11 @@ export class FrameManager { this._mainFrame = undefined as any as Frame; } + createDummyMainFrameIfNeeded() { + if (!this._mainFrame) + this.frameAttached(kDummyFrameId, null); + } + dispose() { for (const frame of this._frames.values()) frame._stopNetworkIdleTimer(); @@ -468,7 +475,8 @@ export class Frame extends SdkObject { this._firedLifecycleEvents.add('commit'); this._subtreeLifecycleEvents.add('commit'); - this._startNetworkIdleTimer(); + if (id !== kDummyFrameId) + this._startNetworkIdleTimer(); } isDetached(): boolean { diff --git a/packages/playwright-core/src/server/page.ts b/packages/playwright-core/src/server/page.ts index 5c20264261..ab2574567e 100644 --- a/packages/playwright-core/src/server/page.ts +++ b/packages/playwright-core/src/server/page.ts @@ -587,8 +587,7 @@ export class Page extends SdkObject { private _setIsError(error: Error) { this._pageIsError = error; - if (!this._frameManager.mainFrame()) - this._frameManager.frameAttached('', null); + this._frameManager.createDummyMainFrameIfNeeded(); } isClosed(): boolean {