From 3aca21c13b2039465ffd3f1281a10293928b9a8c Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Thu, 21 May 2020 19:16:13 -0700 Subject: [PATCH] chore: simplify launch routine a bit more (#2336) --- src/server/browserType.ts | 18 +++++++++++++++--- src/server/chromium.ts | 19 +++---------------- src/server/firefox.ts | 19 +------------------ src/server/webkit.ts | 19 +------------------ 4 files changed, 20 insertions(+), 55 deletions(-) diff --git a/src/server/browserType.ts b/src/server/browserType.ts index 41460452d4..cc9557bed1 100644 --- a/src/server/browserType.ts +++ b/src/server/browserType.ts @@ -124,7 +124,20 @@ export abstract class BrowserTypeBase implements BrowserType { if ((options as any).__testHookBeforeCreateBrowser) await (options as any).__testHookBeforeCreateBrowser(); - const browser = await this._connectToServer(browserServer, persistent); + const browserOptions: BrowserOptions = { + slowMo: options.slowMo, + persistent, + headful: browserServer._headful, + logger: browserServer._logger, + downloadsPath: browserServer._downloadsPath, + ownedServer: browserServer, + }; + for (const [key, value] of Object.entries(options)) { + if (key.startsWith('__testHook')) + (browserOptions as any)[key] = value; + } + + const browser = await this._connectToTransport(browserServer._transport, browserOptions); if (persistent && (!options.ignoreDefaultArgs || Array.isArray(options.ignoreDefaultArgs))) { const context = browser._defaultContext!; await context._loadDefaultContext(); @@ -171,6 +184,5 @@ export abstract class BrowserTypeBase implements BrowserType { } abstract _launchServer(options: LaunchServerOptions, launchType: LaunchType, logger: RootLogger, deadline: number, userDataDir?: string): Promise; - abstract _connectToServer(browserServer: BrowserServer, persistent: PersistentContextOptions | undefined): Promise; abstract _connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise; -} +} \ No newline at end of file diff --git a/src/server/chromium.ts b/src/server/chromium.ts index 73c6d4bdcb..954b466df5 100644 --- a/src/server/chromium.ts +++ b/src/server/chromium.ts @@ -32,8 +32,7 @@ import { ConnectionTransport, ProtocolRequest } from '../transport'; import { InnerLogger, logError, RootLogger } from '../logger'; import { BrowserDescriptor } from '../install/browserPaths'; import { CRDevTools } from '../chromium/crDevTools'; -import { BrowserBase, BrowserOptions } from '../browser'; -import { PersistentContextOptions } from '../browserContext'; +import { BrowserOptions } from '../browser'; export class Chromium extends BrowserTypeBase { private _devtools: CRDevTools | undefined; @@ -48,25 +47,13 @@ export class Chromium extends BrowserTypeBase { return new CRDevTools(path.join(this._browserPath, 'devtools-preferences.json')); } - async _connectToServer(browserServer: BrowserServer, persistent: PersistentContextOptions | undefined): Promise { - const options = browserServer._launchOptions; + async _connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise { let devtools = this._devtools; if ((options as any).__testHookForDevTools) { devtools = this._createDevTools(); await (options as any).__testHookForDevTools(devtools); } - return await CRBrowser.connect(browserServer._transport, { - slowMo: options.slowMo, - persistent, - headful: browserServer._headful, - logger: browserServer._logger, - downloadsPath: browserServer._downloadsPath, - ownedServer: browserServer, - }, devtools); - } - - _connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise { - return CRBrowser.connect(transport, options); + return CRBrowser.connect(transport, options, devtools); } async _launchServer(options: LaunchServerOptions, launchType: LaunchType, logger: RootLogger, deadline: number, userDataDir?: string): Promise { diff --git a/src/server/firefox.ts b/src/server/firefox.ts index 55bd54d61f..702fae2134 100644 --- a/src/server/firefox.ts +++ b/src/server/firefox.ts @@ -30,28 +30,11 @@ import { BrowserArgOptions, LaunchServerOptions, BrowserTypeBase, processBrowser import { launchProcess, waitForLine } from './processLauncher'; import { ConnectionTransport, SequenceNumberMixer, WebSocketTransport } from '../transport'; import { InnerLogger, logError, RootLogger } from '../logger'; -import { BrowserDescriptor } from '../install/browserPaths'; -import { BrowserBase, BrowserOptions } from '../browser'; -import { PersistentContextOptions } from '../browserContext'; +import { BrowserOptions } from '../browser'; const mkdtempAsync = util.promisify(fs.mkdtemp); export class Firefox extends BrowserTypeBase { - constructor(packagePath: string, browser: BrowserDescriptor) { - super(packagePath, browser); - } - - _connectToServer(browserServer: BrowserServer, persistent: PersistentContextOptions | undefined): Promise { - return FFBrowser.connect(browserServer._transport, { - slowMo: browserServer._launchOptions.slowMo, - logger: browserServer._logger, - persistent, - downloadsPath: browserServer._downloadsPath, - headful: browserServer._headful, - ownedServer: browserServer, - }); - } - _connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise { return FFBrowser.connect(transport, options); } diff --git a/src/server/webkit.ts b/src/server/webkit.ts index bd3a4ef425..04768bc4e5 100644 --- a/src/server/webkit.ts +++ b/src/server/webkit.ts @@ -30,26 +30,9 @@ import * as ws from 'ws'; import { BrowserServer, WebSocketWrapper } from './browserServer'; import { Events } from '../events'; import { InnerLogger, logError, RootLogger } from '../logger'; -import { BrowserDescriptor } from '../install/browserPaths'; -import { BrowserBase, BrowserOptions } from '../browser'; -import { PersistentContextOptions } from '../browserContext'; +import { BrowserOptions } from '../browser'; export class WebKit extends BrowserTypeBase { - constructor(packagePath: string, browser: BrowserDescriptor) { - super(packagePath, browser); - } - - _connectToServer(browserServer: BrowserServer, persistent: PersistentContextOptions | undefined): Promise { - return WKBrowser.connect(browserServer._transport, { - slowMo: browserServer._launchOptions.slowMo, - headful: browserServer._headful, - logger: browserServer._logger, - persistent, - downloadsPath: browserServer._downloadsPath, - ownedServer: browserServer - }); - } - _connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise { return WKBrowser.connect(transport, options); }