From 464cbb7457f9e43d1535ffbc4f10d216cf7b56bf Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Wed, 15 Jun 2022 08:31:32 -0800 Subject: [PATCH] feat(chromium): allow attaching to other targets as to pages (#14873) --- packages/playwright-core/src/server/chromium/crBrowser.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/playwright-core/src/server/chromium/crBrowser.ts b/packages/playwright-core/src/server/chromium/crBrowser.ts index 4423aaa6bc..0dba9f9cbf 100644 --- a/packages/playwright-core/src/server/chromium/crBrowser.ts +++ b/packages/playwright-core/src/server/chromium/crBrowser.ts @@ -161,7 +161,9 @@ export class CRBrowser extends Browser { return; } - if (targetInfo.type === 'other' || !context) { + const treatOtherAsPage = targetInfo.type === 'other' && process.env.PW_CHROMIUM_ATTACH_TO_OTHER; + + if (!context || (targetInfo.type === 'other' && !treatOtherAsPage)) { if (waitingForDebugger) { // Ideally, detaching should resume any target, but there is a bug in the backend. session._sendMayFail('Runtime.runIfWaitingForDebugger').then(() => { @@ -181,9 +183,9 @@ export class CRBrowser extends Browser { return; } - if (targetInfo.type === 'page') { + if (targetInfo.type === 'page' || treatOtherAsPage) { const opener = targetInfo.openerId ? this._crPages.get(targetInfo.openerId) || null : null; - const crPage = new CRPage(session, targetInfo.targetId, context, opener, { hasUIWindow: true, isBackgroundPage: false }); + const crPage = new CRPage(session, targetInfo.targetId, context, opener, { hasUIWindow: targetInfo.type === 'page', isBackgroundPage: false }); this._crPages.set(targetInfo.targetId, crPage); return; }