chore: simplify launch routine a bit more (#2336)
This commit is contained in:
parent
3c84e9ec3a
commit
3aca21c13b
|
|
@ -124,7 +124,20 @@ export abstract class BrowserTypeBase implements BrowserType {
|
||||||
if ((options as any).__testHookBeforeCreateBrowser)
|
if ((options as any).__testHookBeforeCreateBrowser)
|
||||||
await (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))) {
|
if (persistent && (!options.ignoreDefaultArgs || Array.isArray(options.ignoreDefaultArgs))) {
|
||||||
const context = browser._defaultContext!;
|
const context = browser._defaultContext!;
|
||||||
await context._loadDefaultContext();
|
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<BrowserServer>;
|
abstract _launchServer(options: LaunchServerOptions, launchType: LaunchType, logger: RootLogger, deadline: number, userDataDir?: string): Promise<BrowserServer>;
|
||||||
abstract _connectToServer(browserServer: BrowserServer, persistent: PersistentContextOptions | undefined): Promise<BrowserBase>;
|
|
||||||
abstract _connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise<BrowserBase>;
|
abstract _connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise<BrowserBase>;
|
||||||
}
|
}
|
||||||
|
|
@ -32,8 +32,7 @@ import { ConnectionTransport, ProtocolRequest } from '../transport';
|
||||||
import { InnerLogger, logError, RootLogger } from '../logger';
|
import { InnerLogger, logError, RootLogger } from '../logger';
|
||||||
import { BrowserDescriptor } from '../install/browserPaths';
|
import { BrowserDescriptor } from '../install/browserPaths';
|
||||||
import { CRDevTools } from '../chromium/crDevTools';
|
import { CRDevTools } from '../chromium/crDevTools';
|
||||||
import { BrowserBase, BrowserOptions } from '../browser';
|
import { BrowserOptions } from '../browser';
|
||||||
import { PersistentContextOptions } from '../browserContext';
|
|
||||||
|
|
||||||
export class Chromium extends BrowserTypeBase {
|
export class Chromium extends BrowserTypeBase {
|
||||||
private _devtools: CRDevTools | undefined;
|
private _devtools: CRDevTools | undefined;
|
||||||
|
|
@ -48,25 +47,13 @@ export class Chromium extends BrowserTypeBase {
|
||||||
return new CRDevTools(path.join(this._browserPath, 'devtools-preferences.json'));
|
return new CRDevTools(path.join(this._browserPath, 'devtools-preferences.json'));
|
||||||
}
|
}
|
||||||
|
|
||||||
async _connectToServer(browserServer: BrowserServer, persistent: PersistentContextOptions | undefined): Promise<BrowserBase> {
|
async _connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise<CRBrowser> {
|
||||||
const options = browserServer._launchOptions;
|
|
||||||
let devtools = this._devtools;
|
let devtools = this._devtools;
|
||||||
if ((options as any).__testHookForDevTools) {
|
if ((options as any).__testHookForDevTools) {
|
||||||
devtools = this._createDevTools();
|
devtools = this._createDevTools();
|
||||||
await (options as any).__testHookForDevTools(devtools);
|
await (options as any).__testHookForDevTools(devtools);
|
||||||
}
|
}
|
||||||
return await CRBrowser.connect(browserServer._transport, {
|
return CRBrowser.connect(transport, options, devtools);
|
||||||
slowMo: options.slowMo,
|
|
||||||
persistent,
|
|
||||||
headful: browserServer._headful,
|
|
||||||
logger: browserServer._logger,
|
|
||||||
downloadsPath: browserServer._downloadsPath,
|
|
||||||
ownedServer: browserServer,
|
|
||||||
}, devtools);
|
|
||||||
}
|
|
||||||
|
|
||||||
_connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise<CRBrowser> {
|
|
||||||
return CRBrowser.connect(transport, options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async _launchServer(options: LaunchServerOptions, launchType: LaunchType, logger: RootLogger, deadline: number, userDataDir?: string): Promise<BrowserServer> {
|
async _launchServer(options: LaunchServerOptions, launchType: LaunchType, logger: RootLogger, deadline: number, userDataDir?: string): Promise<BrowserServer> {
|
||||||
|
|
|
||||||
|
|
@ -30,28 +30,11 @@ import { BrowserArgOptions, LaunchServerOptions, BrowserTypeBase, processBrowser
|
||||||
import { launchProcess, waitForLine } from './processLauncher';
|
import { launchProcess, waitForLine } from './processLauncher';
|
||||||
import { ConnectionTransport, SequenceNumberMixer, WebSocketTransport } from '../transport';
|
import { ConnectionTransport, SequenceNumberMixer, WebSocketTransport } from '../transport';
|
||||||
import { InnerLogger, logError, RootLogger } from '../logger';
|
import { InnerLogger, logError, RootLogger } from '../logger';
|
||||||
import { BrowserDescriptor } from '../install/browserPaths';
|
import { BrowserOptions } from '../browser';
|
||||||
import { BrowserBase, BrowserOptions } from '../browser';
|
|
||||||
import { PersistentContextOptions } from '../browserContext';
|
|
||||||
|
|
||||||
const mkdtempAsync = util.promisify(fs.mkdtemp);
|
const mkdtempAsync = util.promisify(fs.mkdtemp);
|
||||||
|
|
||||||
export class Firefox extends BrowserTypeBase {
|
export class Firefox extends BrowserTypeBase {
|
||||||
constructor(packagePath: string, browser: BrowserDescriptor) {
|
|
||||||
super(packagePath, browser);
|
|
||||||
}
|
|
||||||
|
|
||||||
_connectToServer(browserServer: BrowserServer, persistent: PersistentContextOptions | undefined): Promise<BrowserBase> {
|
|
||||||
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<FFBrowser> {
|
_connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise<FFBrowser> {
|
||||||
return FFBrowser.connect(transport, options);
|
return FFBrowser.connect(transport, options);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,26 +30,9 @@ import * as ws from 'ws';
|
||||||
import { BrowserServer, WebSocketWrapper } from './browserServer';
|
import { BrowserServer, WebSocketWrapper } from './browserServer';
|
||||||
import { Events } from '../events';
|
import { Events } from '../events';
|
||||||
import { InnerLogger, logError, RootLogger } from '../logger';
|
import { InnerLogger, logError, RootLogger } from '../logger';
|
||||||
import { BrowserDescriptor } from '../install/browserPaths';
|
import { BrowserOptions } from '../browser';
|
||||||
import { BrowserBase, BrowserOptions } from '../browser';
|
|
||||||
import { PersistentContextOptions } from '../browserContext';
|
|
||||||
|
|
||||||
export class WebKit extends BrowserTypeBase {
|
export class WebKit extends BrowserTypeBase {
|
||||||
constructor(packagePath: string, browser: BrowserDescriptor) {
|
|
||||||
super(packagePath, browser);
|
|
||||||
}
|
|
||||||
|
|
||||||
_connectToServer(browserServer: BrowserServer, persistent: PersistentContextOptions | undefined): Promise<BrowserBase> {
|
|
||||||
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<WKBrowser> {
|
_connectToTransport(transport: ConnectionTransport, options: BrowserOptions): Promise<WKBrowser> {
|
||||||
return WKBrowser.connect(transport, options);
|
return WKBrowser.connect(transport, options);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue