diff --git a/packages/playwright-core/src/server/frames.ts b/packages/playwright-core/src/server/frames.ts index 073085f72f..dfd550eeab 100644 --- a/packages/playwright-core/src/server/frames.ts +++ b/packages/playwright-core/src/server/frames.ts @@ -114,10 +114,13 @@ export class FrameManager { dispose(reason: string) { for (const frame of this._frames.values()) { - frame.dispose(reason); + frame._onDetached(reason); frame._stopNetworkIdleTimer(); frame._invalidateNonStallingEvaluations(reason); + this.clearWebSockets(frame); } + + this.closeOpenDialogs(); } mainFrame(): Frame { @@ -1563,10 +1566,10 @@ export class Frame extends SdkObject { ]); } - _onDetached() { + _onDetached(reason = 'Frame was detached') { this._stopNetworkIdleTimer(); - this._detachedScope.close(new Error('Frame was detached')); - this.dispose('Frame was detached'); + this._detachedScope.close(new Error(reason)); + this.dispose(reason); } dispose(reason: string) { diff --git a/packages/playwright-core/src/server/page.ts b/packages/playwright-core/src/server/page.ts index 929ffbd68b..0a5819fcd2 100644 --- a/packages/playwright-core/src/server/page.ts +++ b/packages/playwright-core/src/server/page.ts @@ -284,6 +284,7 @@ export class Page extends SdkObject { this._closedPromise.resolve(); this.instrumentation.onPageClose(this); this.openScope.close(new TargetClosedError()); + this._clearWorkers(); } _didCrash() { @@ -293,6 +294,7 @@ export class Page extends SdkObject { this._crashed = true; this.instrumentation.onPageClose(this); this.openScope.close(new Error('Page crashed')); + this._clearWorkers(); } async _onFileChooserOpened(handle: dom.ElementHandle) {