c5a72e9887
* feat: Set which browser to launch via PUPPETEER_PRODUCT This change introduces a PUPPETEER_PRODUCT environment variable as a first step toward using Puppeteer with many different browsers. Setting PUPPETEER_PRODUCT=firefox, for example, enables Firefox-specific Launcher settings. The state is also exposed as `puppeteer.product` in the API to support adding other product-specific behaviour as needed. The bulk of the change is a refactoring in Launcher to decouple generic browser start-up from product-specific configuration. Respecting the puppeteer-core restriction for PUPPETEER_ environment variables, lazily instantiate the Launcher based on a `product` Puppeteer.launch option, if available. * test: Distinguish Juggler unit tests from Firefox The funit script is renamed to fjunit (j for Juggler, which is used only by the experimental puppeteer-firefox package. In contrast, the funit script now refers to running Puppeteer unit tests against the main puppeteer package with Firefox. To do so with Firefox Nightly, run: `BINARY=path/to/firefox npm run funit` A number of changes in this patch make it easier to run Puppeteer unit tests in Mozilla's CI.
67 lines
2.9 KiB
TypeScript
67 lines
2.9 KiB
TypeScript
import { Connection as RealConnection, CDPSession as RealCDPSession } from './Connection.js';
|
|
import { Browser as RealBrowser, BrowserContext as RealBrowserContext} from './Browser.js';
|
|
import {Target as RealTarget} from './Target.js';
|
|
import {Page as RealPage} from './Page.js';
|
|
import {TaskQueue as RealTaskQueue} from './TaskQueue.js';
|
|
import {Mouse as RealMouse, Keyboard as RealKeyboard, Touchscreen as RealTouchscreen} from './Input.js';
|
|
import {Frame as RealFrame, FrameManager as RealFrameManager} from './FrameManager.js';
|
|
import {JSHandle as RealJSHandle, ElementHandle as RealElementHandle} from './JSHandle.js';
|
|
import {DOMWorld as RealDOMWorld} from './DOMWorld.js';
|
|
import {TimeoutSettings as RealTimeoutSettings} from './TimeoutSettings.js';
|
|
import {ExecutionContext as RealExecutionContext} from './ExecutionContext.js';
|
|
import { NetworkManager as RealNetworkManager, Request as RealRequest, Response as RealResponse } from './NetworkManager.js';
|
|
import * as child_process from 'child_process';
|
|
declare global {
|
|
module Puppeteer {
|
|
export class Connection extends RealConnection {}
|
|
export class CDPSession extends RealCDPSession {
|
|
on<T extends keyof Protocol.Events>(event: T, listener: (arg: Protocol.Events[T]) => void): this;
|
|
send<T extends keyof Protocol.CommandParameters>(message: T, parameters?: Protocol.CommandParameters[T]): Promise<Protocol.CommandReturnValues[T]>;
|
|
}
|
|
export class Mouse extends RealMouse {}
|
|
export class Keyboard extends RealKeyboard {}
|
|
export class Touchscreen extends RealTouchscreen {}
|
|
export class TaskQueue extends RealTaskQueue {}
|
|
export class Browser extends RealBrowser {}
|
|
export class BrowserContext extends RealBrowserContext {}
|
|
export class Target extends RealTarget {}
|
|
export class Frame extends RealFrame {}
|
|
export class FrameManager extends RealFrameManager {}
|
|
export class NetworkManager extends RealNetworkManager {}
|
|
export class ElementHandle extends RealElementHandle {}
|
|
export class JSHandle extends RealJSHandle {}
|
|
export class DOMWorld extends RealDOMWorld {}
|
|
export class TimeoutSettings extends RealTimeoutSettings {}
|
|
export class ExecutionContext extends RealExecutionContext {}
|
|
export class Page extends RealPage { }
|
|
export class Response extends RealResponse { }
|
|
export class Request extends RealRequest { }
|
|
|
|
export interface ConnectionTransport {
|
|
send(string);
|
|
close();
|
|
onmessage?: (message: string) => void,
|
|
onclose?: () => void,
|
|
}
|
|
|
|
export interface ProductLauncher {
|
|
launch(object)
|
|
connect(object)
|
|
executablePath: () => string,
|
|
defaultArgs(object)
|
|
product:string,
|
|
}
|
|
|
|
export interface ChildProcess extends child_process.ChildProcess { }
|
|
|
|
export type Viewport = {
|
|
width: number;
|
|
height: number;
|
|
deviceScaleFactor?: number;
|
|
isMobile?: boolean;
|
|
isLandscape?: boolean;
|
|
hasTouch?: boolean;
|
|
}
|
|
}
|
|
}
|