From e95318a6a2031aa9ed5cfd3e0bb330cc44472671 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Wed, 30 Jul 2025 17:54:54 -0700 Subject: [PATCH] chore(chromium): pass auto attach filter for iframes (#36784) --- .../src/server/chromium/crBrowser.ts | 2 +- .../src/server/chromium/crPage.ts | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/playwright-core/src/server/chromium/crBrowser.ts b/packages/playwright-core/src/server/chromium/crBrowser.ts index 626ee3d221942..37b9a7d47e94b 100644 --- a/packages/playwright-core/src/server/chromium/crBrowser.ts +++ b/packages/playwright-core/src/server/chromium/crBrowser.ts @@ -151,7 +151,7 @@ export class CRBrowser extends Browser { await Promise.all([...this._crPages.values()].map(crPage => crPage._page.waitForInitializedOrError())); } - _onAttachedToTarget({ targetInfo, sessionId, waitingForDebugger }: Protocol.Target.attachedToTargetPayload) { + _onAttachedToTarget({ targetInfo, sessionId }: Protocol.Target.attachedToTargetPayload) { if (targetInfo.type === 'browser') return; const session = this._session.createChildSession(sessionId); diff --git a/packages/playwright-core/src/server/chromium/crPage.ts b/packages/playwright-core/src/server/chromium/crPage.ts index 502d135c81cad..3a6847e8f9beb 100644 --- a/packages/playwright-core/src/server/chromium/crPage.ts +++ b/packages/playwright-core/src/server/chromium/crPage.ts @@ -516,7 +516,16 @@ class FrameSession { worldName: this._crPage.utilityWorldName, }), this._crPage._networkManager.addSession(this._client, undefined, this._isMainFrame()), - this._client.send('Target.setAutoAttach', { autoAttach: true, waitForDebuggerOnStart: true, flatten: true }), + this._client.send('Target.setAutoAttach', { + autoAttach: true, + waitForDebuggerOnStart: true, + flatten: true, + filter: [ + { type: 'iframe' }, + { type: 'worker' }, + { type: 'service_worker', exclude: !process.env.PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS } + ] + }), ]; if (!isSettingStorageState) { if (this._crPage._browserContext.needsPlaywrightBinding()) @@ -734,7 +743,15 @@ class FrameSession { // TODO: attribute workers to the right frame. this._crPage._networkManager.addSession(session, this._page.frameManager.frame(this._targetId) ?? undefined).catch(() => {}); session._sendMayFail('Runtime.runIfWaitingForDebugger'); - session._sendMayFail('Target.setAutoAttach', { autoAttach: true, waitForDebuggerOnStart: true, flatten: true }); + session._sendMayFail('Target.setAutoAttach', { + autoAttach: true, + waitForDebuggerOnStart: true, + flatten: true, + filter: [ + { type: 'worker' }, + { type: 'service_worker', exclude: !process.env.PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS } + ] + }); session.on('Target.attachedToTarget', event => this._onAttachedToTarget(event)); session.on('Target.detachedFromTarget', event => this._onDetachedFromTarget(event)); session.on('Runtime.consoleAPICalled', event => {