feat: enable tab targets (#11099)

This commit is contained in:
Alex Rudenko 2023-10-09 13:49:27 +02:00 committed by GitHub
parent 9ce204e27e
commit 8324c16348
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 15 additions and 62 deletions

View File

@ -150,7 +150,6 @@ jobs:
- chrome-headful
- chrome-new-headless
- chrome-bidi
- chrome-new-headless-tab
shard:
- 1/2
- 2/2
@ -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

View File

@ -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",
@ -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"
},

View File

@ -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';

View File

@ -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';
@ -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,
@ -76,8 +74,7 @@ export class CdpBrowser extends BrowserBase {
closeCallback,
targetFilterCallback,
isPageTargetCallback,
waitForInitiallyDiscoveredTargets,
useTabTarget
waitForInitiallyDiscoveredTargets
);
await browser._attach();
return browser;
@ -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';
@ -134,8 +130,7 @@ export class CdpBrowser extends BrowserBase {
connection,
this.#createTarget,
this.#targetFilterCallback,
waitForInitiallyDiscoveredTargets,
useTabTarget
waitForInitiallyDiscoveredTargets
);
}
this.#defaultContext = new CdpBrowserContext(this.#connection, this);

View File

@ -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;
@ -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();

View File

@ -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;

View File

@ -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 {
@ -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',

View File

@ -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"],
@ -69,9 +63,6 @@
"webDriverBiDi": {
"PUPPETEER_PROTOCOL": "webDriverBiDi"
},
"cdp": {},
"tabTarget": {
"PUPPETEER_INTERNAL_TAB_TARGET": "true"
}
"cdp": {}
}
}