cherrypick(release-1.4): do not throw when 'port' option is present (#3881)
This cherry-picks PR #3877 References #3872 Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
This commit is contained in:
parent
64947f19b3
commit
8795d46519
|
|
@ -63,7 +63,6 @@ export class BrowserType extends ChannelOwner<channels.BrowserTypeChannel, chann
|
||||||
|
|
||||||
async launch(options: LaunchOptions = {}): Promise<Browser> {
|
async launch(options: LaunchOptions = {}): Promise<Browser> {
|
||||||
const logger = options.logger;
|
const logger = options.logger;
|
||||||
options = { ...options, logger: undefined };
|
|
||||||
return this._wrapApiCall('browserType.launch', async () => {
|
return this._wrapApiCall('browserType.launch', async () => {
|
||||||
assert(!(options as any).userDataDir, 'userDataDir option is not supported in `browserType.launch`. Use `browserType.launchPersistentContext` instead');
|
assert(!(options as any).userDataDir, 'userDataDir option is not supported in `browserType.launch`. Use `browserType.launchPersistentContext` instead');
|
||||||
assert(!(options as any).port, 'Cannot specify a port without launching as a server.');
|
assert(!(options as any).port, 'Cannot specify a port without launching as a server.');
|
||||||
|
|
@ -87,8 +86,8 @@ export class BrowserType extends ChannelOwner<channels.BrowserTypeChannel, chann
|
||||||
|
|
||||||
async launchPersistentContext(userDataDir: string, options: LaunchPersistentContextOptions = {}): Promise<BrowserContext> {
|
async launchPersistentContext(userDataDir: string, options: LaunchPersistentContextOptions = {}): Promise<BrowserContext> {
|
||||||
const logger = options.logger;
|
const logger = options.logger;
|
||||||
options = { ...options, logger: undefined };
|
|
||||||
return this._wrapApiCall('browserType.launchPersistentContext', async () => {
|
return this._wrapApiCall('browserType.launchPersistentContext', async () => {
|
||||||
|
assert(!(options as any).port, 'Cannot specify a port without launching as a server.');
|
||||||
if (options.extraHTTPHeaders)
|
if (options.extraHTTPHeaders)
|
||||||
validateHeaders(options.extraHTTPHeaders);
|
validateHeaders(options.extraHTTPHeaders);
|
||||||
const persistentOptions: channels.BrowserTypeLaunchPersistentContextParams = {
|
const persistentOptions: channels.BrowserTypeLaunchPersistentContextParams = {
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ import { Progress, runAbortableTask } from './progress';
|
||||||
import * as types from './types';
|
import * as types from './types';
|
||||||
import { TimeoutSettings } from '../utils/timeoutSettings';
|
import { TimeoutSettings } from '../utils/timeoutSettings';
|
||||||
import { validateHostRequirements } from './validateDependencies';
|
import { validateHostRequirements } from './validateDependencies';
|
||||||
import { assert, isDebugMode } from '../utils/utils';
|
import { isDebugMode } from '../utils/utils';
|
||||||
|
|
||||||
export interface BrowserType {
|
export interface BrowserType {
|
||||||
executablePath(): string;
|
executablePath(): string;
|
||||||
|
|
@ -72,15 +72,12 @@ export abstract class BrowserTypeBase implements BrowserType {
|
||||||
}
|
}
|
||||||
|
|
||||||
async launch(options: types.LaunchOptions = {}): Promise<Browser> {
|
async launch(options: types.LaunchOptions = {}): Promise<Browser> {
|
||||||
assert(!(options as any).userDataDir, 'userDataDir option is not supported in `browserType.launch`. Use `browserType.launchPersistentContext` instead');
|
|
||||||
assert(!(options as any).port, 'Cannot specify a port without launching as a server.');
|
|
||||||
options = validateLaunchOptions(options);
|
options = validateLaunchOptions(options);
|
||||||
const browser = await runAbortableTask(progress => this._innerLaunch(progress, options, undefined), TimeoutSettings.timeout(options), 'browser').catch(e => { throw this._rewriteStartupError(e); });
|
const browser = await runAbortableTask(progress => this._innerLaunch(progress, options, undefined), TimeoutSettings.timeout(options), 'browser').catch(e => { throw this._rewriteStartupError(e); });
|
||||||
return browser;
|
return browser;
|
||||||
}
|
}
|
||||||
|
|
||||||
async launchPersistentContext(userDataDir: string, options: types.LaunchPersistentOptions = {}): Promise<BrowserContext> {
|
async launchPersistentContext(userDataDir: string, options: types.LaunchPersistentOptions = {}): Promise<BrowserContext> {
|
||||||
assert(!(options as any).port, 'Cannot specify a port without launching as a server.');
|
|
||||||
options = validateLaunchOptions(options);
|
options = validateLaunchOptions(options);
|
||||||
const persistent: types.BrowserContextOptions = options;
|
const persistent: types.BrowserContextOptions = options;
|
||||||
validateBrowserContextOptions(persistent);
|
validateBrowserContextOptions(persistent);
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,12 @@ describe('lauch server', suite => {
|
||||||
await browserServer.close();
|
await browserServer.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should work with port', async ({browserType, defaultBrowserOptions, parallelIndex}) => {
|
||||||
|
const browserServer = await browserType.launchServer({ ...defaultBrowserOptions, port: 8800 + parallelIndex });
|
||||||
|
expect(browserServer.wsEndpoint()).toContain(String(8800 + parallelIndex));
|
||||||
|
await browserServer.close();
|
||||||
|
});
|
||||||
|
|
||||||
it('should fire "close" event during kill', async ({browserType, defaultBrowserOptions}) => {
|
it('should fire "close" event during kill', async ({browserType, defaultBrowserOptions}) => {
|
||||||
const order = [];
|
const order = [];
|
||||||
const browserServer = await browserType.launchServer(defaultBrowserOptions);
|
const browserServer = await browserType.launchServer(defaultBrowserOptions);
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,19 @@ it('should throw if userDataDir option is passed', async ({browserType, defaultB
|
||||||
let waitError = null;
|
let waitError = null;
|
||||||
const options = Object.assign({}, defaultBrowserOptions, {userDataDir: 'random-path'});
|
const options = Object.assign({}, defaultBrowserOptions, {userDataDir: 'random-path'});
|
||||||
await browserType.launch(options).catch(e => waitError = e);
|
await browserType.launch(options).catch(e => waitError = e);
|
||||||
expect(waitError.message).toContain('launchPersistentContext');
|
expect(waitError.message).toContain('userDataDir option is not supported in `browserType.launch`. Use `browserType.launchPersistentContext` instead');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw if port option is passed', async ({browserType, defaultBrowserOptions}) => {
|
||||||
|
const options = Object.assign({}, defaultBrowserOptions, {port: 1234});
|
||||||
|
const error = await browserType.launch(options).catch(e => e);
|
||||||
|
expect(error.message).toContain('Cannot specify a port without launching as a server.');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw if port option is passed for persistent context', async ({browserType, defaultBrowserOptions}) => {
|
||||||
|
const options = Object.assign({}, defaultBrowserOptions, {port: 1234});
|
||||||
|
const error = await browserType.launchPersistentContext('foo', options).catch(e => e);
|
||||||
|
expect(error.message).toContain('Cannot specify a port without launching as a server.');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should throw if page argument is passed', test => {
|
it('should throw if page argument is passed', test => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue