chore: use given cdp port for communicating chrome (#35759)

This commit is contained in:
Pavel Feldman 2025-05-08 11:02:55 -07:00 committed by GitHub
parent 33f811b2ae
commit 4facda5f22
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 15 additions and 15 deletions

View File

@ -557,7 +557,7 @@ scheme.BrowserTypeLaunchParams = tObject({
tracesDir: tOptional(tString), tracesDir: tOptional(tString),
chromiumSandbox: tOptional(tBoolean), chromiumSandbox: tOptional(tBoolean),
firefoxUserPrefs: tOptional(tAny), firefoxUserPrefs: tOptional(tAny),
webSocketPort: tOptional(tNumber), cdpPort: tOptional(tNumber),
slowMo: tOptional(tNumber), slowMo: tOptional(tNumber),
}); });
scheme.BrowserTypeLaunchResult = tObject({ scheme.BrowserTypeLaunchResult = tObject({
@ -587,7 +587,7 @@ scheme.BrowserTypeLaunchPersistentContextParams = tObject({
tracesDir: tOptional(tString), tracesDir: tOptional(tString),
chromiumSandbox: tOptional(tBoolean), chromiumSandbox: tOptional(tBoolean),
firefoxUserPrefs: tOptional(tAny), firefoxUserPrefs: tOptional(tAny),
webSocketPort: tOptional(tNumber), cdpPort: tOptional(tNumber),
noDefaultViewport: tOptional(tBoolean), noDefaultViewport: tOptional(tBoolean),
viewport: tOptional(tObject({ viewport: tOptional(tObject({
width: tNumber, width: tNumber,

View File

@ -95,7 +95,7 @@ export abstract class BrowserType extends SdkObject {
return browser; return browser;
} }
async launchPersistentContext(metadata: CallMetadata, userDataDir: string, options: channels.BrowserTypeLaunchPersistentContextOptions & { webSocketPort?: number, internalIgnoreHTTPSErrors?: boolean }): Promise<BrowserContext> { async launchPersistentContext(metadata: CallMetadata, userDataDir: string, options: channels.BrowserTypeLaunchPersistentContextOptions & { cdpPort?: number, internalIgnoreHTTPSErrors?: boolean }): Promise<BrowserContext> {
const launchOptions = this._validateLaunchOptions(options); const launchOptions = this._validateLaunchOptions(options);
const controller = new ProgressController(metadata, this); const controller = new ProgressController(metadata, this);
controller.setLogName('browser'); controller.setLogName('browser');
@ -271,7 +271,7 @@ export abstract class BrowserType extends SdkObject {
}; };
progress.cleanupWhenAborted(() => closeOrKill(progress.timeUntilDeadline())); progress.cleanupWhenAborted(() => closeOrKill(progress.timeUntilDeadline()));
const wsEndpoint = (await readyState?.waitUntilReady())?.wsEndpoint; const wsEndpoint = (await readyState?.waitUntilReady())?.wsEndpoint;
if (options.webSocketPort !== undefined || !this.supportsPipeTransport()) { if (options.cdpPort !== undefined || !this.supportsPipeTransport()) {
transport = await WebSocketTransport.connect(progress, wsEndpoint!); transport = await WebSocketTransport.connect(progress, wsEndpoint!);
} else { } else {
const stdio = launchedProcess.stdio as unknown as [NodeJS.ReadableStream, NodeJS.WritableStream, NodeJS.WritableStream, NodeJS.WritableStream, NodeJS.ReadableStream]; const stdio = launchedProcess.stdio as unknown as [NodeJS.ReadableStream, NodeJS.WritableStream, NodeJS.WritableStream, NodeJS.WritableStream, NodeJS.ReadableStream];

View File

@ -276,8 +276,8 @@ export class Chromium extends BrowserType {
override defaultArgs(options: types.LaunchOptions, isPersistent: boolean, userDataDir: string): string[] { override defaultArgs(options: types.LaunchOptions, isPersistent: boolean, userDataDir: string): string[] {
const chromeArguments = this._innerDefaultArgs(options); const chromeArguments = this._innerDefaultArgs(options);
chromeArguments.push(`--user-data-dir=${userDataDir}`); chromeArguments.push(`--user-data-dir=${userDataDir}`);
if (options.webSocketPort !== undefined) if (options.cdpPort !== undefined)
chromeArguments.push(`--remote-debugging-port=${options.webSocketPort}`); chromeArguments.push(`--remote-debugging-port=${options.cdpPort}`);
else else
chromeArguments.push('--remote-debugging-pipe'); chromeArguments.push('--remote-debugging-pipe');
if (isPersistent) if (isPersistent)
@ -345,7 +345,7 @@ export class Chromium extends BrowserType {
} }
override readyState(options: types.LaunchOptions): BrowserReadyState | undefined { override readyState(options: types.LaunchOptions): BrowserReadyState | undefined {
if (options.webSocketPort !== undefined || options.args?.some(a => a.startsWith('--remote-debugging-port'))) if (options.cdpPort !== undefined || options.args?.some(a => a.startsWith('--remote-debugging-port')))
return new ChromiumReadyState(); return new ChromiumReadyState();
return undefined; return undefined;
} }

View File

@ -112,7 +112,7 @@ export class RecorderApp extends EventEmitter implements IRecorderApp {
persistentContextOptions: { persistentContextOptions: {
noDefaultViewport: true, noDefaultViewport: true,
headless: !!process.env.PWTEST_CLI_HEADLESS || (isUnderTest() && !headed), headless: !!process.env.PWTEST_CLI_HEADLESS || (isUnderTest() && !headed),
webSocketPort: isUnderTest() ? 0 : undefined, cdpPort: isUnderTest() ? 0 : undefined,
handleSIGINT: recorder.handleSIGINT, handleSIGINT: recorder.handleSIGINT,
executablePath: inspectedContext._browser.options.isChromium ? inspectedContext._browser.options.customExecutablePath : undefined, executablePath: inspectedContext._browser.options.isChromium ? inspectedContext._browser.options.customExecutablePath : undefined,
// Use the same channel as the inspected context to guarantee that the browser is installed. // Use the same channel as the inspected context to guarantee that the browser is installed.

View File

@ -174,7 +174,7 @@ export async function openTraceViewerApp(url: string, browserName: string, optio
windowSize: { width: 1280, height: 800 }, windowSize: { width: 1280, height: 800 },
persistentContextOptions: { persistentContextOptions: {
...options?.persistentContextOptions, ...options?.persistentContextOptions,
webSocketPort: isUnderTest() ? 0 : undefined, cdpPort: isUnderTest() ? 0 : undefined,
headless: !!options?.headless, headless: !!options?.headless,
colorScheme: isUnderTest() ? 'light' : undefined, colorScheme: isUnderTest() ? 'light' : undefined,
}, },

View File

@ -153,7 +153,7 @@ export type NormalizedContinueOverrides = {
export type EmulatedSize = { viewport: Size, screen: Size }; export type EmulatedSize = { viewport: Size, screen: Size };
export type LaunchOptions = channels.BrowserTypeLaunchOptions & { export type LaunchOptions = channels.BrowserTypeLaunchOptions & {
webSocketPort?: number, cdpPort?: number,
proxyOverride?: ProxySettings, proxyOverride?: ProxySettings,
assistantMode?: boolean, assistantMode?: boolean,
}; };

View File

@ -967,7 +967,7 @@ export type BrowserTypeLaunchParams = {
tracesDir?: string, tracesDir?: string,
chromiumSandbox?: boolean, chromiumSandbox?: boolean,
firefoxUserPrefs?: any, firefoxUserPrefs?: any,
webSocketPort?: number, cdpPort?: number,
slowMo?: number, slowMo?: number,
}; };
export type BrowserTypeLaunchOptions = { export type BrowserTypeLaunchOptions = {
@ -994,7 +994,7 @@ export type BrowserTypeLaunchOptions = {
tracesDir?: string, tracesDir?: string,
chromiumSandbox?: boolean, chromiumSandbox?: boolean,
firefoxUserPrefs?: any, firefoxUserPrefs?: any,
webSocketPort?: number, cdpPort?: number,
slowMo?: number, slowMo?: number,
}; };
export type BrowserTypeLaunchResult = { export type BrowserTypeLaunchResult = {
@ -1024,7 +1024,7 @@ export type BrowserTypeLaunchPersistentContextParams = {
tracesDir?: string, tracesDir?: string,
chromiumSandbox?: boolean, chromiumSandbox?: boolean,
firefoxUserPrefs?: any, firefoxUserPrefs?: any,
webSocketPort?: number, cdpPort?: number,
noDefaultViewport?: boolean, noDefaultViewport?: boolean,
viewport?: { viewport?: {
width: number, width: number,
@ -1107,7 +1107,7 @@ export type BrowserTypeLaunchPersistentContextOptions = {
tracesDir?: string, tracesDir?: string,
chromiumSandbox?: boolean, chromiumSandbox?: boolean,
firefoxUserPrefs?: any, firefoxUserPrefs?: any,
webSocketPort?: number, cdpPort?: number,
noDefaultViewport?: boolean, noDefaultViewport?: boolean,
viewport?: { viewport?: {
width: number, width: number,

View File

@ -496,7 +496,7 @@ LaunchOptions:
tracesDir: string? tracesDir: string?
chromiumSandbox: boolean? chromiumSandbox: boolean?
firefoxUserPrefs: json? firefoxUserPrefs: json?
webSocketPort: number? cdpPort: number?
ContextOptions: ContextOptions: