diff --git a/docs/api.md b/docs/api.md index 763be0e88e..a2bc9b2c0b 100644 --- a/docs/api.md +++ b/docs/api.md @@ -3373,7 +3373,6 @@ const newWindowTarget = await browser.chromium.waitForTarget(target => target.ur - [chromiumBrowserServer.close()](#chromiumbrowserserverclose) -- [chromiumBrowserServer.connect()](#chromiumbrowserserverconnect) - [chromiumBrowserServer.connectOptions()](#chromiumbrowserserverconnectoptions) - [chromiumBrowserServer.process()](#chromiumbrowserserverprocess) - [chromiumBrowserServer.wsEndpoint()](#chromiumbrowserserverwsendpoint) @@ -3384,11 +3383,6 @@ const newWindowTarget = await browser.chromium.waitForTarget(target => target.ur Closes the browser gracefully and makes sure the process is terminated. -#### chromiumBrowserServer.connect() -- returns: <[Promise]<[ChromiumBrowser]>> - -Connects to the browser server and returns a <[ChromiumBrowser]> object. - #### chromiumBrowserServer.connectOptions() - returns: <[Object]> - `browserWSEndpoint` a [browser websocket endpoint](#browserwsendpoint) to connect to. @@ -3567,7 +3561,6 @@ Firefox browser instance does not expose Firefox-specific features. - [firefoxBrowserServer.close()](#firefoxbrowserserverclose) -- [firefoxBrowserServer.connect()](#firefoxbrowserserverconnect) - [firefoxBrowserServer.connectOptions()](#firefoxbrowserserverconnectoptions) - [firefoxBrowserServer.process()](#firefoxbrowserserverprocess) - [firefoxBrowserServer.wsEndpoint()](#firefoxbrowserserverwsendpoint) @@ -3578,11 +3571,6 @@ Firefox browser instance does not expose Firefox-specific features. Closes the browser gracefully and makes sure the process is terminated. -#### firefoxBrowserServer.connect() -- returns: <[Promise]<[FirefoxBrowser]>> - -Connects to the browser server and returns a <[FirefoxBrowser]> object. - #### firefoxBrowserServer.connectOptions() - returns: <[Object]> - `browserWSEndpoint` a [browser websocket endpoint](#browserwsendpoint) to connect to. @@ -3680,7 +3668,6 @@ WebKit browser instance does not expose WebKit-specific features. - [webKitBrowserServer.close()](#webkitbrowserserverclose) -- [webKitBrowserServer.connect()](#webkitbrowserserverconnect) - [webKitBrowserServer.connectOptions()](#webkitbrowserserverconnectoptions) - [webKitBrowserServer.process()](#webkitbrowserserverprocess) - [webKitBrowserServer.wsEndpoint()](#webkitbrowserserverwsendpoint) @@ -3691,11 +3678,6 @@ WebKit browser instance does not expose WebKit-specific features. Closes the browser gracefully and makes sure the process is terminated. -#### webKitBrowserServer.connect() -- returns: <[Promise]<[WebKitBrowser]>> - -Connects to the browser server and returns a <[WebKitBrowser]> object. - #### webKitBrowserServer.connectOptions() - returns: <[Object]> - `slowMo` <[number]> diff --git a/src/server/crPlaywright.ts b/src/server/crPlaywright.ts index 82774c5a38..9f816a6d01 100644 --- a/src/server/crPlaywright.ts +++ b/src/server/crPlaywright.ts @@ -66,13 +66,6 @@ export class CRBrowserServer { this._connectOptions = connectOptions; } - async connect(): Promise { - const browser = await CRBrowser.connect(this._connectOptions); - // Hack: for typical launch scenario, ensure that close waits for actual process termination. - browser.close = this._gracefullyClose; - return browser; - } - process(): ChildProcess { return this._process; } @@ -101,7 +94,10 @@ export class CRPlaywright implements Playwright { async launch(options?: LaunchOptions): Promise { const server = await this.launchServer(options); - return server.connect(); + const browser = await CRBrowser.connect(server.connectOptions()); + // Hack: for typical launch scenario, ensure that close waits for actual process termination. + browser.close = () => server.close(); + return browser; } async launchServer(options: LaunchOptions = {}): Promise { diff --git a/src/server/ffPlaywright.ts b/src/server/ffPlaywright.ts index 4d5874cc6b..0ad55ed84e 100644 --- a/src/server/ffPlaywright.ts +++ b/src/server/ffPlaywright.ts @@ -63,13 +63,6 @@ export class FFBrowserServer { this._connectOptions = connectOptions; } - async connect(): Promise { - const browser = await FFBrowser.connect(this._connectOptions); - // Hack: for typical launch scenario, ensure that close waits for actual process termination. - browser.close = this._gracefullyClose; - return browser; - } - process(): ChildProcess { return this._process; } @@ -98,7 +91,10 @@ export class FFPlaywright implements Playwright { async launch(options: LaunchOptions): Promise { const server = await this.launchServer(options); - return server.connect(); + const browser = await FFBrowser.connect(server.connectOptions()); + // Hack: for typical launch scenario, ensure that close waits for actual process termination. + browser.close = () => server.close(); + return browser; } async launchServer(options: LaunchOptions = {}): Promise { diff --git a/src/server/wkPlaywright.ts b/src/server/wkPlaywright.ts index 46574a9e54..598840cddc 100644 --- a/src/server/wkPlaywright.ts +++ b/src/server/wkPlaywright.ts @@ -69,13 +69,6 @@ export class WKBrowserServer { this._connectOptions = connectOptions; } - async connect(): Promise { - const browser = await WKBrowser.connect(this._connectOptions); - // Hack: for typical launch scenario, ensure that close waits for actual process termination. - browser.close = this._gracefullyClose; - return browser; - } - process(): ChildProcess { return this._process; } @@ -104,7 +97,10 @@ export class WKPlaywright implements Playwright { async launch(options?: LaunchOptions): Promise { const server = await this.launchServer(options); - return server.connect(); + const browser = await WKBrowser.connect(server.connectOptions()); + // Hack: for typical launch scenario, ensure that close waits for actual process termination. + browser.close = () => server.close(); + return browser; } async launchServer(options: LaunchOptions = {}): Promise { diff --git a/test/chromium/connect.spec.js b/test/chromium/connect.spec.js index 3e1544e849..6d5859de79 100644 --- a/test/chromium/connect.spec.js +++ b/test/chromium/connect.spec.js @@ -25,7 +25,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p describe('Playwright.connect', function() { it('should be able to connect multiple times to the same browser', async({server}) => { const browserServer = await playwright.launchServer(defaultBrowserOptions); - const local = await browserServer.connect(); + const local = await playwright.connect(browserServer.connectOptions()); const remote = await playwright.connect({ ...defaultBrowserOptions, browserWSEndpoint: browserServer.wsEndpoint() @@ -40,7 +40,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p }); it('should be able to close remote browser', async({server}) => { const browserServer = await playwright.launchServer(defaultBrowserOptions); - const local = await browserServer.connect(); + const local = await playwright.connect(browserServer.connectOptions()); const remote = await playwright.connect({ ...defaultBrowserOptions, browserWSEndpoint: browserServer.wsEndpoint() @@ -53,7 +53,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p // @see https://github.com/GoogleChrome/puppeteer/issues/4197#issuecomment-481793410 it('should be able to connect to the same page simultaneously', async({server}) => { const browserServer = await playwright.launchServer(defaultBrowserOptions); - const local = await browserServer.connect(); + const local = await playwright.connect(browserServer.connectOptions()); const remote = await playwright.connect({ ...defaultBrowserOptions, browserWSEndpoint: browserServer.wsEndpoint() }); const [page1, page2] = await Promise.all([ new Promise(x => local.once('targetcreated', target => x(target.page()))), diff --git a/test/chromium/launcher.spec.js b/test/chromium/launcher.spec.js index 05522324c5..6bd2221b65 100644 --- a/test/chromium/launcher.spec.js +++ b/test/chromium/launcher.spec.js @@ -161,7 +161,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p it('should support the pipe option', async() => { const options = Object.assign({pipe: true}, defaultBrowserOptions); const browserServer = await playwright.launchServer(options); - const browser = await browserServer.connect(); + const browser = await playwright.connect(browserServer.connectOptions()); expect((await browser.defaultContext().pages()).length).toBe(1); expect(browserServer.wsEndpoint()).toBe(null); const page = await browser.defaultContext().newPage(); @@ -173,7 +173,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p const options = Object.assign({}, defaultBrowserOptions); options.args = ['--remote-debugging-pipe'].concat(options.args || []); const browserServer = await playwright.launchServer(options); - const browser = await browserServer.connect(); + const browser = await playwright.connect(browserServer.connectOptions()); expect(browserServer.wsEndpoint()).toBe(null); const page = await browser.defaultContext().newPage(); expect(await page.evaluate('11 * 11')).toBe(121); @@ -183,7 +183,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p it('should fire "disconnected" when closing with pipe', async() => { const options = Object.assign({pipe: true}, defaultBrowserOptions); const browserServer = await playwright.launchServer(options); - const browser = await browserServer.connect(); + const browser = await playwright.connect(browserServer.connectOptions()); const disconnectedEventPromise = new Promise(resolve => browser.once('disconnected', resolve)); // Emulate user exiting browser. browserServer.process().kill(); @@ -210,7 +210,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p describe('Browser.Events.disconnected', function() { it('should be emitted when: browser gets closed, disconnected or underlying websocket gets closed', async() => { const browserServer = await playwright.launchServer(defaultBrowserOptions); - const originalBrowser = await browserServer.connect(); + const originalBrowser = await playwright.connect(browserServer.connectOptions()); const browserWSEndpoint = browserServer.wsEndpoint(); const remoteBrowser1 = await playwright.connect({browserWSEndpoint}); const remoteBrowser2 = await playwright.connect({browserWSEndpoint}); diff --git a/test/launcher.spec.js b/test/launcher.spec.js index 7122821796..4b8871255d 100644 --- a/test/launcher.spec.js +++ b/test/launcher.spec.js @@ -140,7 +140,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p describe('Playwright.connect', function() { it.skip(WEBKIT)('should be able to reconnect to a browser', async({server}) => { const browserServer = await playwright.launchServer(defaultBrowserOptions); - const browser = await browserServer.connect(); + const browser = await playwright.connect(browserServer.connectOptions()); const browserWSEndpoint = browserServer.wsEndpoint(); const page = await browser.defaultContext().newPage(); await page.goto(server.PREFIX + '/frames/nested-frames.html'); diff --git a/test/playwright.spec.js b/test/playwright.spec.js index af013bea11..c8e7045fab 100644 --- a/test/playwright.spec.js +++ b/test/playwright.spec.js @@ -91,7 +91,7 @@ module.exports.describe = ({testRunner, product, playwrightPath}) => { describe('Browser', function() { beforeAll(async state => { state.browserServer = await playwright.launchServer(defaultBrowserOptions); - state.browser = await state.browserServer.connect(); + state.browser = await playwright.connect(state.browserServer.connectOptions()); }); afterAll(async state => { diff --git a/test/web.spec.js b/test/web.spec.js index bf4a5e1142..e8df7cd367 100644 --- a/test/web.spec.js +++ b/test/web.spec.js @@ -23,7 +23,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p beforeAll(async state => { state.controlledBrowserServer = await playwright.launchServer({ ...defaultBrowserOptions, pipe: false }); state.hostBrowserServer = await playwright.launchServer(defaultBrowserOptions); - state.hostBrowser = await state.hostBrowserServer.connect(); + state.hostBrowser = await playwright.connect(state.hostBrowserServer.connectOptions()); }); afterAll(async state => { diff --git a/test/webkit/launcher.spec.js b/test/webkit/launcher.spec.js index f46965f47b..37662731c9 100644 --- a/test/webkit/launcher.spec.js +++ b/test/webkit/launcher.spec.js @@ -31,7 +31,7 @@ module.exports.describe = function ({ testRunner, expect, playwright, defaultBro it('should have websocket by default', async() => { const options = Object.assign({pipe: false}, defaultBrowserOptions); const browserServer = await playwright.launchServer(options); - const browser = await browserServer.connect(); + const browser = await playwright.connect(browserServer.connectOptions()); expect((await browser.defaultContext().pages()).length).toBe(1); expect(browserServer.wsEndpoint()).not.toBe(null); const page = await browser.defaultContext().newPage(); @@ -42,7 +42,7 @@ module.exports.describe = function ({ testRunner, expect, playwright, defaultBro it('should support the pipe option', async() => { const options = Object.assign({pipe: true}, defaultBrowserOptions); const browserServer = await playwright.launchServer(options); - const browser = await browserServer.connect(); + const browser = await playwright.connect(browserServer.connectOptions()); expect((await browser.defaultContext().pages()).length).toBe(1); expect(browserServer.wsEndpoint()).toBe(null); const page = await browser.defaultContext().newPage(); @@ -53,7 +53,7 @@ module.exports.describe = function ({ testRunner, expect, playwright, defaultBro it('should fire "disconnected" when closing with pipe', async() => { const options = Object.assign({pipe: true}, defaultBrowserOptions); const browserServer = await playwright.launchServer(options); - const browser = await browserServer.connect(); + const browser = await playwright.connect(browserServer.connectOptions()); const disconnectedEventPromise = new Promise(resolve => browser.once('disconnected', resolve)); // Emulate user exiting browser. process.kill(-browserServer.process().pid, 'SIGKILL'); @@ -62,7 +62,7 @@ module.exports.describe = function ({ testRunner, expect, playwright, defaultBro it('should fire "disconnected" when closing with websocket', async() => { const options = Object.assign({pipe: false}, defaultBrowserOptions); const browserServer = await playwright.launchServer(options); - const browser = await browserServer.connect(); + const browser = await playwright.connect(browserServer.connectOptions()); const disconnectedEventPromise = new Promise(resolve => browser.once('disconnected', resolve)); // Emulate user exiting browser. process.kill(-browserServer.process().pid, 'SIGKILL'); diff --git a/utils/protocol-types-generator/index.js b/utils/protocol-types-generator/index.js index 9fd1916cf7..1e65c120a8 100644 --- a/utils/protocol-types-generator/index.js +++ b/utils/protocol-types-generator/index.js @@ -12,7 +12,8 @@ async function generateChromiunProtocol(revision) { const playwright = await require('../../index').chromium; const browserServer = await playwright.launchServer({executablePath: revision.executablePath}); const origin = browserServer.wsEndpoint().match(/ws:\/\/([0-9A-Za-z:\.]*)\//)[1]; - const page = await (await browserServer.connect()).defaultContext().newPage(); + const browser = await playwright.connect(browserServer.connectOptions()); + const page = await browser.defaultContext().newPage(); await page.goto(`http://${origin}/json/protocol`); const json = JSON.parse(await page.evaluate(() => document.documentElement.innerText)); await browserServer.close();