From 8a646124a441dc8dae43cec425ec6c5d98552f46 Mon Sep 17 00:00:00 2001 From: Alex Rudenko Date: Thu, 11 Aug 2022 07:45:49 +0200 Subject: [PATCH] fix: use targetFilter in puppeteer.launch Drive-by: adds Symbol.toStringTag to Target to simplify debugging. Closes #8772 --- src/common/Target.ts | 7 +++++++ src/node/ChromeLauncher.ts | 3 ++- src/node/FirefoxLauncher.ts | 3 ++- test/src/launcher.spec.ts | 23 +++++++++++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/common/Target.ts b/src/common/Target.ts index 90c326ccfb9f6..e016e09e62b3a 100644 --- a/src/common/Target.ts +++ b/src/common/Target.ts @@ -135,6 +135,13 @@ export class Target { return this.#sessionFactory(); } + /** + * @internal + */ + get [Symbol.toStringTag](): string { + return JSON.stringify(this.#targetInfo, null, 2); + } + /** * @internal */ diff --git a/src/node/ChromeLauncher.ts b/src/node/ChromeLauncher.ts index a46ac1b5b683e..f09701f13d342 100644 --- a/src/node/ChromeLauncher.ts +++ b/src/node/ChromeLauncher.ts @@ -161,7 +161,8 @@ export class ChromeLauncher implements ProductLauncher { ignoreHTTPSErrors, defaultViewport, runner.proc, - runner.close.bind(runner) + runner.close.bind(runner), + options.targetFilter ); } catch (error) { runner.kill(); diff --git a/src/node/FirefoxLauncher.ts b/src/node/FirefoxLauncher.ts index 9a888e4d70dbb..2e40894ec578e 100644 --- a/src/node/FirefoxLauncher.ts +++ b/src/node/FirefoxLauncher.ts @@ -158,7 +158,8 @@ export class FirefoxLauncher implements ProductLauncher { ignoreHTTPSErrors, defaultViewport, runner.proc, - runner.close.bind(runner) + runner.close.bind(runner), + options.targetFilter ); } catch (error) { runner.kill(); diff --git a/test/src/launcher.spec.ts b/test/src/launcher.spec.ts index 791e9a814fe4d..eee140da4a281 100644 --- a/test/src/launcher.spec.ts +++ b/test/src/launcher.spec.ts @@ -753,6 +753,29 @@ describe('Launcher specs', function () { await page.close(); await browser.close(); }); + + it('should support targetFilter option in puppeteer.launch', async () => { + const {puppeteer, defaultBrowserOptions} = getTestState(); + const browser = await puppeteer.launch({ + ...defaultBrowserOptions, + targetFilter: target => { + return target.type !== 'page'; + }, + waitForInitialPage: false, + }); + try { + const targets = browser.targets(); + expect(targets.length).toEqual(1); + expect( + targets.find(target => { + return target.type() === 'page'; + }) + ).toBeUndefined(); + } finally { + await browser.close(); + } + }); + // @see https://github.com/puppeteer/puppeteer/issues/4197 itFailsFirefox('should support targetFilter option', async () => { const {server, puppeteer, defaultBrowserOptions} = getTestState();