feat(cdp): replace wsEndpoint with protocol neutral endpointURL (#6141)
This commit is contained in:
		
							parent
							
								
									53d50f9b72
								
							
						
					
					
						commit
						63d0d466e3
					
				| 
						 | 
					@ -116,7 +116,7 @@ Connecting over the Chrome DevTools Protocol is only supported for Chromium-base
 | 
				
			||||||
### param: BrowserType.connectOverCDP.params
 | 
					### param: BrowserType.connectOverCDP.params
 | 
				
			||||||
* langs: js
 | 
					* langs: js
 | 
				
			||||||
- `params` <[Object]>
 | 
					- `params` <[Object]>
 | 
				
			||||||
  - `wsEndpoint` <[string]> A CDP websocket endpoint to connect to.
 | 
					  - `endpointURL` <[string]> A CDP websocket endpoint or http url to connect to. For example `http://localhost:9222/` or `ws://127.0.0.1:9222/devtools/browser/387adf4c-243f-4051-a181-46798f4a46f4`.
 | 
				
			||||||
  - `slowMo` <[float]> Slows down Playwright operations by the specified amount of milliseconds. Useful so that you
 | 
					  - `slowMo` <[float]> Slows down Playwright operations by the specified amount of milliseconds. Useful so that you
 | 
				
			||||||
    can see what is going on. Defaults to 0.
 | 
					    can see what is going on. Defaults to 0.
 | 
				
			||||||
  - `logger` <[Logger]> Logger sink for Playwright logging. Optional.
 | 
					  - `logger` <[Logger]> Logger sink for Playwright logging. Optional.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,11 +58,11 @@ page.navigate("https://www.w3.org/");
 | 
				
			||||||
playwright.close();
 | 
					playwright.close();
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### param: BrowserType.connectOverCDP.wsEndpoint
 | 
					### param: BrowserType.connectOverCDP.endpointURL
 | 
				
			||||||
* langs: java
 | 
					* langs: java
 | 
				
			||||||
- `wsEndpoint` <[string]>
 | 
					- `endpointURL` <[string]>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
A CDP websocket endpoint to connect to.
 | 
					A CDP websocket endpoint or http url to connect to. For example `http://localhost:9222/` or `ws://127.0.0.1:9222/devtools/browser/387adf4c-243f-4051-a181-46798f4a46f4`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### param: BrowserContext.waitForPage.callback = %%-java-wait-for-event-callback-%%
 | 
					### param: BrowserContext.waitForPage.callback = %%-java-wait-for-event-callback-%%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -187,14 +187,16 @@ export class BrowserType extends ChannelOwner<channels.BrowserTypeChannel, chann
 | 
				
			||||||
    }, logger);
 | 
					    }, logger);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async connectOverCDP(params: ConnectOptions): Promise<Browser> {
 | 
					  async connectOverCDP(params: api.ConnectOverCDPOptions): Promise<Browser>
 | 
				
			||||||
 | 
					  async connectOverCDP(params: api.ConnectOptions): Promise<Browser>
 | 
				
			||||||
 | 
					  async connectOverCDP(params: api.ConnectOverCDPOptions | api.ConnectOptions): Promise<Browser> {
 | 
				
			||||||
    if (this.name() !== 'chromium')
 | 
					    if (this.name() !== 'chromium')
 | 
				
			||||||
      throw new Error('Connecting over CDP is only supported in Chromium.');
 | 
					      throw new Error('Connecting over CDP is only supported in Chromium.');
 | 
				
			||||||
    const logger = params.logger;
 | 
					    const logger = params.logger;
 | 
				
			||||||
    return this._wrapApiCall('browserType.connectOverCDP', async (channel: channels.BrowserTypeChannel) => {
 | 
					    return this._wrapApiCall('browserType.connectOverCDP', async (channel: channels.BrowserTypeChannel) => {
 | 
				
			||||||
      const result = await channel.connectOverCDP({
 | 
					      const result = await channel.connectOverCDP({
 | 
				
			||||||
        sdkLanguage: 'javascript',
 | 
					        sdkLanguage: 'javascript',
 | 
				
			||||||
        wsEndpoint: params.wsEndpoint,
 | 
					        endpointURL: 'endpointURL' in params ? params.endpointURL : params.wsEndpoint,
 | 
				
			||||||
        slowMo: params.slowMo,
 | 
					        slowMo: params.slowMo,
 | 
				
			||||||
        timeout: params.timeout
 | 
					        timeout: params.timeout
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@ export class BrowserTypeDispatcher extends Dispatcher<BrowserType, channels.Brow
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async connectOverCDP(params: channels.BrowserTypeConnectOverCDPParams, metadata: CallMetadata): Promise<channels.BrowserTypeConnectOverCDPResult> {
 | 
					  async connectOverCDP(params: channels.BrowserTypeConnectOverCDPParams, metadata: CallMetadata): Promise<channels.BrowserTypeConnectOverCDPResult> {
 | 
				
			||||||
    const browser = await this._object.connectOverCDP(metadata, params.wsEndpoint, params, params.timeout);
 | 
					    const browser = await this._object.connectOverCDP(metadata, params.endpointURL, params, params.timeout);
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
      browser: new BrowserDispatcher(this._scope, browser),
 | 
					      browser: new BrowserDispatcher(this._scope, browser),
 | 
				
			||||||
      defaultContext: browser._defaultContext ? new BrowserContextDispatcher(this._scope, browser._defaultContext) : undefined,
 | 
					      defaultContext: browser._defaultContext ? new BrowserContextDispatcher(this._scope, browser._defaultContext) : undefined,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -408,7 +408,7 @@ export type BrowserTypeLaunchPersistentContextResult = {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
export type BrowserTypeConnectOverCDPParams = {
 | 
					export type BrowserTypeConnectOverCDPParams = {
 | 
				
			||||||
  sdkLanguage: string,
 | 
					  sdkLanguage: string,
 | 
				
			||||||
  wsEndpoint: string,
 | 
					  endpointURL: string,
 | 
				
			||||||
  slowMo?: number,
 | 
					  slowMo?: number,
 | 
				
			||||||
  timeout?: number,
 | 
					  timeout?: number,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -422,7 +422,7 @@ BrowserType:
 | 
				
			||||||
    connectOverCDP:
 | 
					    connectOverCDP:
 | 
				
			||||||
      parameters:
 | 
					      parameters:
 | 
				
			||||||
        sdkLanguage: string
 | 
					        sdkLanguage: string
 | 
				
			||||||
        wsEndpoint: string
 | 
					        endpointURL: string
 | 
				
			||||||
        slowMo: number?
 | 
					        slowMo: number?
 | 
				
			||||||
        timeout: number?
 | 
					        timeout: number?
 | 
				
			||||||
      returns:
 | 
					      returns:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -249,7 +249,7 @@ export function createScheme(tChannel: (name: string) => Validator): Scheme {
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
  scheme.BrowserTypeConnectOverCDPParams = tObject({
 | 
					  scheme.BrowserTypeConnectOverCDPParams = tObject({
 | 
				
			||||||
    sdkLanguage: tString,
 | 
					    sdkLanguage: tString,
 | 
				
			||||||
    wsEndpoint: tString,
 | 
					    endpointURL: tString,
 | 
				
			||||||
    slowMo: tOptional(tNumber),
 | 
					    slowMo: tOptional(tNumber),
 | 
				
			||||||
    timeout: tOptional(tNumber),
 | 
					    timeout: tOptional(tNumber),
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -248,7 +248,7 @@ export abstract class BrowserType extends SdkObject {
 | 
				
			||||||
    return { browserProcess, downloadsPath, transport };
 | 
					    return { browserProcess, downloadsPath, transport };
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async connectOverCDP(metadata: CallMetadata, wsEndpoint: string, options: { slowMo?: number, sdkLanguage: string }, timeout?: number): Promise<Browser> {
 | 
					  async connectOverCDP(metadata: CallMetadata, endpointURL: string, options: { slowMo?: number, sdkLanguage: string }, timeout?: number): Promise<Browser> {
 | 
				
			||||||
    throw new Error('CDP connections are only supported by Chromium');
 | 
					    throw new Error('CDP connections are only supported by Chromium');
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,6 +32,7 @@ import { TimeoutSettings } from '../../utils/timeoutSettings';
 | 
				
			||||||
import { helper } from '../helper';
 | 
					import { helper } from '../helper';
 | 
				
			||||||
import { CallMetadata } from '../instrumentation';
 | 
					import { CallMetadata } from '../instrumentation';
 | 
				
			||||||
import { findChromiumChannel } from './findChromiumChannel';
 | 
					import { findChromiumChannel } from './findChromiumChannel';
 | 
				
			||||||
 | 
					import http from 'http';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class Chromium extends BrowserType {
 | 
					export class Chromium extends BrowserType {
 | 
				
			||||||
  private _devtools: CRDevTools | undefined;
 | 
					  private _devtools: CRDevTools | undefined;
 | 
				
			||||||
| 
						 | 
					@ -49,12 +50,12 @@ export class Chromium extends BrowserType {
 | 
				
			||||||
    return super.executablePath(options);
 | 
					    return super.executablePath(options);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async connectOverCDP(metadata: CallMetadata, wsEndpoint: string, options: { slowMo?: number, sdkLanguage: string }, timeout?: number) {
 | 
					  async connectOverCDP(metadata: CallMetadata, endpointURL: string, options: { slowMo?: number, sdkLanguage: string }, timeout?: number) {
 | 
				
			||||||
    const controller = new ProgressController(metadata, this);
 | 
					    const controller = new ProgressController(metadata, this);
 | 
				
			||||||
    controller.setLogName('browser');
 | 
					    controller.setLogName('browser');
 | 
				
			||||||
    const browserLogsCollector = new RecentLogsCollector();
 | 
					    const browserLogsCollector = new RecentLogsCollector();
 | 
				
			||||||
    return controller.run(async progress => {
 | 
					    return controller.run(async progress => {
 | 
				
			||||||
      const chromeTransport = await WebSocketTransport.connect(progress, wsEndpoint);
 | 
					      const chromeTransport = await WebSocketTransport.connect(progress, await urlToWSEndpoint(endpointURL));
 | 
				
			||||||
      const browserProcess: BrowserProcess = {
 | 
					      const browserProcess: BrowserProcess = {
 | 
				
			||||||
        close: async () => {
 | 
					        close: async () => {
 | 
				
			||||||
          await chromeTransport.closeAndWait();
 | 
					          await chromeTransport.closeAndWait();
 | 
				
			||||||
| 
						 | 
					@ -192,3 +193,17 @@ const DEFAULT_ARGS = [
 | 
				
			||||||
  '--password-store=basic',
 | 
					  '--password-store=basic',
 | 
				
			||||||
  '--use-mock-keychain',
 | 
					  '--use-mock-keychain',
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function urlToWSEndpoint(endpointURL: string) {
 | 
				
			||||||
 | 
					  if (endpointURL.startsWith('ws'))
 | 
				
			||||||
 | 
					    return endpointURL;
 | 
				
			||||||
 | 
					  const httpURL = endpointURL.endsWith('/') ? `${endpointURL}json/version/` : `${endpointURL}/json/version/`;
 | 
				
			||||||
 | 
					  const json = await new Promise<string>((resolve, reject) => {
 | 
				
			||||||
 | 
					    http.get(httpURL, resp => {
 | 
				
			||||||
 | 
					      let data = '';
 | 
				
			||||||
 | 
					      resp.on('data', chunk => data += chunk);
 | 
				
			||||||
 | 
					      resp.on('end', () => resolve(data));
 | 
				
			||||||
 | 
					    }).on('error', reject);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  return JSON.parse(json).webSocketDebuggerUrl;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,6 @@ test('browserType.name should work', async ({browserType, browserName}) => {
 | 
				
			||||||
test('should throw when trying to connect with not-chromium', async ({ browserType, browserName }) => {
 | 
					test('should throw when trying to connect with not-chromium', async ({ browserType, browserName }) => {
 | 
				
			||||||
  test.skip(browserName === 'chromium');
 | 
					  test.skip(browserName === 'chromium');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const error = await browserType.connectOverCDP({wsEndpoint: 'foo'}).catch(e => e);
 | 
					  const error = await browserType.connectOverCDP({endpointURL: 'ws://foo'}).catch(e => e);
 | 
				
			||||||
  expect(error.message).toBe('Connecting over CDP is only supported in Chromium.');
 | 
					  expect(error.message).toBe('Connecting over CDP is only supported in Chromium.');
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,15 +112,8 @@ playwrightTest.describe('chromium', () => {
 | 
				
			||||||
      args: ['--remote-debugging-port=' + port]
 | 
					      args: ['--remote-debugging-port=' + port]
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      const json = await new Promise<string>((resolve, reject) => {
 | 
					 | 
				
			||||||
        http.get(`http://localhost:${port}/json/version/`, resp => {
 | 
					 | 
				
			||||||
          let data = '';
 | 
					 | 
				
			||||||
          resp.on('data', chunk => data += chunk);
 | 
					 | 
				
			||||||
          resp.on('end', () => resolve(data));
 | 
					 | 
				
			||||||
        }).on('error', reject);
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
      const cdpBrowser = await browserType.connectOverCDP({
 | 
					      const cdpBrowser = await browserType.connectOverCDP({
 | 
				
			||||||
        wsEndpoint: JSON.parse(json).webSocketDebuggerUrl,
 | 
					        endpointURL: `http://localhost:${port}/`,
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      const contexts = cdpBrowser.contexts();
 | 
					      const contexts = cdpBrowser.contexts();
 | 
				
			||||||
      expect(contexts.length).toBe(1);
 | 
					      expect(contexts.length).toBe(1);
 | 
				
			||||||
| 
						 | 
					@ -137,18 +130,11 @@ playwrightTest.describe('chromium', () => {
 | 
				
			||||||
      args: ['--remote-debugging-port=' + port]
 | 
					      args: ['--remote-debugging-port=' + port]
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      const json = await new Promise<string>((resolve, reject) => {
 | 
					 | 
				
			||||||
        http.get(`http://localhost:${port}/json/version/`, resp => {
 | 
					 | 
				
			||||||
          let data = '';
 | 
					 | 
				
			||||||
          resp.on('data', chunk => data += chunk);
 | 
					 | 
				
			||||||
          resp.on('end', () => resolve(data));
 | 
					 | 
				
			||||||
        }).on('error', reject);
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
      const cdpBrowser1 = await browserType.connectOverCDP({
 | 
					      const cdpBrowser1 = await browserType.connectOverCDP({
 | 
				
			||||||
        wsEndpoint: JSON.parse(json).webSocketDebuggerUrl,
 | 
					        endpointURL: `http://localhost:${port}/`,
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      const cdpBrowser2 = await browserType.connectOverCDP({
 | 
					      const cdpBrowser2 = await browserType.connectOverCDP({
 | 
				
			||||||
        wsEndpoint: JSON.parse(json).webSocketDebuggerUrl,
 | 
					        endpointURL: `http://localhost:${port}/`,
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      const contexts1 = cdpBrowser1.contexts();
 | 
					      const contexts1 = cdpBrowser1.contexts();
 | 
				
			||||||
      expect(contexts1.length).toBe(1);
 | 
					      expect(contexts1.length).toBe(1);
 | 
				
			||||||
| 
						 | 
					@ -179,15 +165,8 @@ playwrightTest.describe('chromium', () => {
 | 
				
			||||||
      args: ['--remote-debugging-port=' + port]
 | 
					      args: ['--remote-debugging-port=' + port]
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      const json = await new Promise<string>((resolve, reject) => {
 | 
					 | 
				
			||||||
        http.get(`http://localhost:${port}/json/version/`, resp => {
 | 
					 | 
				
			||||||
          let data = '';
 | 
					 | 
				
			||||||
          resp.on('data', chunk => data += chunk);
 | 
					 | 
				
			||||||
          resp.on('end', () => resolve(data));
 | 
					 | 
				
			||||||
        }).on('error', reject);
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
      const cdpBrowser1 = await browserType.connectOverCDP({
 | 
					      const cdpBrowser1 = await browserType.connectOverCDP({
 | 
				
			||||||
        wsEndpoint: JSON.parse(json).webSocketDebuggerUrl,
 | 
					        endpointURL: `http://localhost:${port}`,
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      const context = cdpBrowser1.contexts()[0];
 | 
					      const context = cdpBrowser1.contexts()[0];
 | 
				
			||||||
      const page = await cdpBrowser1.contexts()[0].newPage();
 | 
					      const page = await cdpBrowser1.contexts()[0].newPage();
 | 
				
			||||||
| 
						 | 
					@ -199,7 +178,7 @@ playwrightTest.describe('chromium', () => {
 | 
				
			||||||
      await cdpBrowser1.close();
 | 
					      await cdpBrowser1.close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      const cdpBrowser2 = await browserType.connectOverCDP({
 | 
					      const cdpBrowser2 = await browserType.connectOverCDP({
 | 
				
			||||||
        wsEndpoint: JSON.parse(json).webSocketDebuggerUrl,
 | 
					        endpointURL: `http://localhost:${port}`,
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      const context2 = cdpBrowser2.contexts()[0];
 | 
					      const context2 = cdpBrowser2.contexts()[0];
 | 
				
			||||||
      expect(context2.serviceWorkers().length).toBe(1);
 | 
					      expect(context2.serviceWorkers().length).toBe(1);
 | 
				
			||||||
| 
						 | 
					@ -208,4 +187,36 @@ playwrightTest.describe('chromium', () => {
 | 
				
			||||||
      await browserServer.close();
 | 
					      await browserServer.close();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					  playwrightTest('should connect over a ws endpoint', async ({browserType, browserOptions, server}, testInfo) => {
 | 
				
			||||||
 | 
					    const port = 9339 + testInfo.workerIndex;
 | 
				
			||||||
 | 
					    const browserServer = await browserType.launch({
 | 
				
			||||||
 | 
					      ...browserOptions,
 | 
				
			||||||
 | 
					      args: ['--remote-debugging-port=' + port]
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const json = await new Promise<string>((resolve, reject) => {
 | 
				
			||||||
 | 
					        http.get(`http://localhost:${port}/json/version/`, resp => {
 | 
				
			||||||
 | 
					          let data = '';
 | 
				
			||||||
 | 
					          resp.on('data', chunk => data += chunk);
 | 
				
			||||||
 | 
					          resp.on('end', () => resolve(data));
 | 
				
			||||||
 | 
					        }).on('error', reject);
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      const cdpBrowser = await browserType.connectOverCDP({
 | 
				
			||||||
 | 
					        endpointURL: JSON.parse(json).webSocketDebuggerUrl,
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      const contexts = cdpBrowser.contexts();
 | 
				
			||||||
 | 
					      expect(contexts.length).toBe(1);
 | 
				
			||||||
 | 
					      await cdpBrowser.close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // also connect with the depercreated wsEndpoint option
 | 
				
			||||||
 | 
					      const cdpBrowser2 = await browserType.connectOverCDP({
 | 
				
			||||||
 | 
					        wsEndpoint: JSON.parse(json).webSocketDebuggerUrl,
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      const contexts2 = cdpBrowser.contexts();
 | 
				
			||||||
 | 
					      expect(contexts2.length).toBe(1);
 | 
				
			||||||
 | 
					      await cdpBrowser2.close();
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      await browserServer.close();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6460,13 +6460,6 @@ export interface ElementHandle<T=Node> extends JSHandle<T> {
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export interface BrowserType<Unused = {}> {
 | 
					export interface BrowserType<Unused = {}> {
 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * This methods attaches Playwright to an existing browser instance.
 | 
					 | 
				
			||||||
   * @param params 
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  connect(params: ConnectOptions): Promise<Browser>;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * This methods attaches Playwright to an existing browser instance using the Chrome DevTools Protocol.
 | 
					   * This methods attaches Playwright to an existing browser instance using the Chrome DevTools Protocol.
 | 
				
			||||||
   * 
 | 
					   * 
 | 
				
			||||||
| 
						 | 
					@ -6476,29 +6469,17 @@ export interface BrowserType<Unused = {}> {
 | 
				
			||||||
   * > NOTE: Connecting over the Chrome DevTools Protocol is only supported for Chromium-based browsers.
 | 
					   * > NOTE: Connecting over the Chrome DevTools Protocol is only supported for Chromium-based browsers.
 | 
				
			||||||
   * @param params 
 | 
					   * @param params 
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  connectOverCDP(params: {
 | 
					  connectOverCDP(options: ConnectOverCDPOptions): Promise<Browser>;
 | 
				
			||||||
    /**
 | 
					  /**
 | 
				
			||||||
     * A CDP websocket endpoint to connect to.
 | 
					   * Option `wsEndpoint` is deprecated. Instead use `endpointURL`.
 | 
				
			||||||
     */
 | 
					   * @deprecated
 | 
				
			||||||
    wsEndpoint: string;
 | 
					   */
 | 
				
			||||||
 | 
					  connectOverCDP(options: ConnectOptions): Promise<Browser>;
 | 
				
			||||||
    /**
 | 
					  /**
 | 
				
			||||||
     * Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going on.
 | 
					   * This methods attaches Playwright to an existing browser instance.
 | 
				
			||||||
     * Defaults to 0.
 | 
					   * @param params 
 | 
				
			||||||
     */
 | 
					   */
 | 
				
			||||||
    slowMo?: number;
 | 
					  connect(params: ConnectOptions): Promise<Browser>;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Logger sink for Playwright logging. Optional.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    logger?: Logger;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Maximum time in milliseconds to wait for the connection to be established. Defaults to `30000` (30 seconds). Pass `0` to
 | 
					 | 
				
			||||||
     * disable timeout.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    timeout?: number;
 | 
					 | 
				
			||||||
  }): Promise<Browser>;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * A path where Playwright expects to find a bundled browser executable.
 | 
					   * A path where Playwright expects to find a bundled browser executable.
 | 
				
			||||||
| 
						 | 
					@ -10687,6 +10668,31 @@ export interface LaunchOptions {
 | 
				
			||||||
  timeout?: number;
 | 
					  timeout?: number;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface ConnectOverCDPOptions {
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * A CDP websocket endpoint or http url to connect to. For example `http://localhost:9222/` or
 | 
				
			||||||
 | 
					   * `ws://127.0.0.1:9222/devtools/browser/387adf4c-243f-4051-a181-46798f4a46f4`.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  endpointURL: string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going on.
 | 
				
			||||||
 | 
					   * Defaults to 0.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  slowMo?: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Logger sink for Playwright logging. Optional.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  logger?: Logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Maximum time in milliseconds to wait for the connection to be established. Defaults to `30000` (30 seconds). Pass `0` to
 | 
				
			||||||
 | 
					   * disable timeout.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  timeout?: number;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface ConnectOptions {
 | 
					export interface ConnectOptions {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * A browser websocket endpoint to connect to.
 | 
					   * A browser websocket endpoint to connect to.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  "BrowserTypeLaunchOptions": "LaunchOptions",
 | 
					  "BrowserTypeLaunchOptions": "LaunchOptions",
 | 
				
			||||||
  "BrowserTypeConnectParams": "ConnectOptions",
 | 
					  "BrowserTypeConnectParams": "ConnectOptions",
 | 
				
			||||||
 | 
					  "BrowserTypeConnectOverCDPParams": "ConnectOverCDPOptions",
 | 
				
			||||||
  "BrowserContextCookies": "Cookie",
 | 
					  "BrowserContextCookies": "Cookie",
 | 
				
			||||||
  "BrowserNewContextOptions": "BrowserContextOptions",
 | 
					  "BrowserNewContextOptions": "BrowserContextOptions",
 | 
				
			||||||
  "BrowserNewContextOptionsViewport": "ViewportSize",
 | 
					  "BrowserNewContextOptionsViewport": "ViewportSize",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -141,7 +141,12 @@ export interface ElementHandle<T=Node> extends JSHandle<T> {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface BrowserType<Unused = {}> {
 | 
					export interface BrowserType<Unused = {}> {
 | 
				
			||||||
 | 
					  connectOverCDP(options: ConnectOverCDPOptions): Promise<Browser>;
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Option `wsEndpoint` is deprecated. Instead use `endpointURL`.
 | 
				
			||||||
 | 
					   * @deprecated
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  connectOverCDP(options: ConnectOptions): Promise<Browser>;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface CDPSession {
 | 
					export interface CDPSession {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue