mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
feat: enable tab targets (#11099)
This commit is contained in:
parent
9ce204e27e
commit
8324c16348
5
.github/workflows/ci.yml
vendored
5
.github/workflows/ci.yml
vendored
@ -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
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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';
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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',
|
||||
|
@ -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": {}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user