Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: enable tab targets #11099

Merged
merged 3 commits into from
Oct 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 0 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@ jobs:
- chrome-headful
- chrome-new-headless
- chrome-bidi
- chrome-new-headless-tab
shard:
- 1/2
- 2/2
Expand All @@ -159,10 +158,6 @@ jobs:
suite: chrome-bidi
- os: macos-latest
suite: chrome-headful
- os: windows-latest
suite: chrome-new-headless-tab
- os: macos-latest
suite: chrome-new-headless-tab
steps:
- name: Check out repository
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
Expand Down
4 changes: 0 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
"test-types": "tsd -t packages/puppeteer",
"test:chrome:headful": "wireit",
"test:chrome:new-headless": "wireit",
"test:chrome:new-headless-tab": "wireit",
"test:chrome:headless": "wireit",
"test:chrome:bidi": "wireit",
"test:chrome:bidi-local": "wireit",
Expand Down Expand Up @@ -76,9 +75,6 @@
"test:chrome:new-headless": {
"command": "npm test -- --test-suite chrome-new-headless"
},
"test:chrome:new-headless-tab": {
"command": "npm test -- --test-suite chrome-new-headless-tab"
},
"test:chrome:bidi": {
"command": "npm test -- --test-suite chrome-bidi"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/browsers/test/src/versions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@

export const testChromeBuildId = '113.0.5672.0';
export const testChromiumBuildId = '1083080';
export const testFirefoxBuildId = '119.0a1';
export const testFirefoxBuildId = '120.0a1';
export const testChromeDriverBuildId = '115.0.5763.0';
export const testChromeHeadlessShellBuildId = '118.0.5950.0';
13 changes: 4 additions & 9 deletions packages/puppeteer-core/src/cdp/Browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import {CDPSessionEvent, type CDPSession} from '../api/CDPSession.js';
import type {Page} from '../api/Page.js';
import type {Target} from '../api/Target.js';
import type {Viewport} from '../common/Viewport.js';
import {USE_TAB_TARGET} from '../environment.js';
import {assert} from '../util/assert.js';

import {ChromeTargetManager} from './ChromeTargetManager.js';
Expand Down Expand Up @@ -63,8 +62,7 @@ export class CdpBrowser extends BrowserBase {
closeCallback?: BrowserCloseCallback,
targetFilterCallback?: TargetFilterCallback,
isPageTargetCallback?: IsPageTargetCallback,
waitForInitiallyDiscoveredTargets = true,
useTabTarget = USE_TAB_TARGET
waitForInitiallyDiscoveredTargets = true
): Promise<CdpBrowser> {
const browser = new CdpBrowser(
product,
Expand All @@ -76,8 +74,7 @@ export class CdpBrowser extends BrowserBase {
closeCallback,
targetFilterCallback,
isPageTargetCallback,
waitForInitiallyDiscoveredTargets,
useTabTarget
waitForInitiallyDiscoveredTargets
);
await browser._attach();
return browser;
Expand Down Expand Up @@ -107,8 +104,7 @@ export class CdpBrowser extends BrowserBase {
closeCallback?: BrowserCloseCallback,
targetFilterCallback?: TargetFilterCallback,
isPageTargetCallback?: IsPageTargetCallback,
waitForInitiallyDiscoveredTargets = true,
useTabTarget = USE_TAB_TARGET
waitForInitiallyDiscoveredTargets = true
) {
super();
product = product || 'chrome';
Expand All @@ -134,8 +130,7 @@ export class CdpBrowser extends BrowserBase {
connection,
this.#createTarget,
this.#targetFilterCallback,
waitForInitiallyDiscoveredTargets,
useTabTarget
waitForInitiallyDiscoveredTargets
);
}
this.#defaultContext = new CdpBrowserContext(this.#connection, this);
Expand Down
27 changes: 9 additions & 18 deletions packages/puppeteer-core/src/cdp/ChromeTargetManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,22 +98,15 @@ export class ChromeTargetManager
#targetsIdsForInit = new Set<string>();
#waitForInitiallyDiscoveredTargets = true;

// TODO: remove the flag once the testing/rollout is done.
#tabMode: boolean;
#discoveryFilter: Protocol.Target.FilterEntry[];
#discoveryFilter: Protocol.Target.FilterEntry[] = [{}];

constructor(
connection: Connection,
targetFactory: TargetFactory,
targetFilterCallback?: TargetFilterCallback,
waitForInitiallyDiscoveredTargets = true,
useTabTarget = false
waitForInitiallyDiscoveredTargets = true
) {
super();
this.#tabMode = useTabTarget;
this.#discoveryFilter = this.#tabMode
? [{}]
: [{type: 'tab', exclude: true}, {}];
this.#connection = connection;
this.#targetFilterCallback = targetFilterCallback;
this.#targetFactory = targetFactory;
Expand Down Expand Up @@ -166,15 +159,13 @@ export class ChromeTargetManager
waitForDebuggerOnStart: true,
flatten: true,
autoAttach: true,
filter: this.#tabMode
? [
{
type: 'page',
exclude: true,
},
...this.#discoveryFilter,
]
: this.#discoveryFilter,
filter: [
{
type: 'page',
exclude: true,
},
...this.#discoveryFilter,
],
});
this.#finishInitializationIfReady();
await this.#initializeDeferred.valueOrThrow();
Expand Down
10 changes: 0 additions & 10 deletions packages/puppeteer-core/src/environment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,3 @@ export const DEFERRED_PROMISE_DEBUG_TIMEOUT =
typeof process.env['PUPPETEER_DEFERRED_PROMISE_DEBUG_TIMEOUT'] !== 'undefined'
? Number(process.env['PUPPETEER_DEFERRED_PROMISE_DEBUG_TIMEOUT'])
: -1;

/**
* Only used for internal testing.
*
* @internal
*/
export const USE_TAB_TARGET =
typeof process !== 'undefined'
? process.env['PUPPETEER_INTERNAL_TAB_TARGET'] === 'true'
: false;
5 changes: 0 additions & 5 deletions packages/puppeteer-core/src/node/ChromeLauncher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import {

import type {Browser} from '../api/Browser.js';
import {debugError} from '../common/util.js';
import {USE_TAB_TARGET} from '../environment.js';
import {assert} from '../util/assert.js';

import type {
Expand Down Expand Up @@ -175,10 +174,6 @@ export class ChromeLauncher extends ProductLauncher {
'OptimizationHints',
];

if (!USE_TAB_TARGET) {
disabledFeatures.push('Prerender2');
}

const chromeArguments = [
'--allow-pre-commit-input',
'--disable-background-networking',
Expand Down
11 changes: 1 addition & 10 deletions test/TestSuites.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,6 @@
"parameters": ["chrome", "new-headless", "cdp"],
"expectedLineCoverage": 93
},
{
"id": "chrome-new-headless-tab",
"platforms": ["linux"],
"parameters": ["chrome", "new-headless", "cdp", "tabTarget"],
"expectedLineCoverage": 93
},
{
"id": "firefox-headless",
"platforms": ["linux", "darwin"],
Expand Down Expand Up @@ -69,9 +63,6 @@
"webDriverBiDi": {
"PUPPETEER_PROTOCOL": "webDriverBiDi"
},
"cdp": {},
"tabTarget": {
"PUPPETEER_INTERNAL_TAB_TARGET": "true"
}
"cdp": {}
}
}