/**
* @license
* Copyright 2023 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
/// <reference types="node" />
/// <reference types="node" />
import childProcess from 'child_process';
import { type Browser, type BrowserPlatform, type ChromeReleaseChannel } from './browser-data/browser-data.js';
/**
* @public
*/
export interface ComputeExecutablePathOptions {
/**
* Root path to the storage directory.
*/
cacheDir: string;
/**
* Determines which platform the browser will be suited for.
*
* @defaultValue **Auto-detected.**
*/
platform?: BrowserPlatform;
/**
* Determines which browser to launch.
*/
browser: Browser;
/**
* Determines which buildId to download. BuildId should uniquely identify
* binaries and they are used for caching.
*/
buildId: string;
}
/**
* @public
*/
export declare function computeExecutablePath(options: ComputeExecutablePathOptions): string;
/**
* @public
*/
export interface SystemOptions {
/**
* Determines which platform the browser will be suited for.
*
* @defaultValue **Auto-detected.**
*/
platform?: BrowserPlatform;
/**
* Determines which browser to launch.
*/
browser: Browser;
/**
* Release channel to look for on the system.
*/
channel: ChromeReleaseChannel;
}
/**
* @public
*/
export declare function computeSystemExecutablePath(options: SystemOptions): string;
/**
* @public
*/
export interface LaunchOptions {
/**
* Absolute path to the browser's executable.
*/
executablePath: string;
/**
* Configures stdio streams to open two additional streams for automation over
* those streams instead of WebSocket.
*
* @defaultValue `false`.
*/
pipe?: boolean;
/**
* If true, forwards the browser's process stdout and stderr to the Node's
* process stdout and stderr.
*
* @defaultValue `false`.
*/
dumpio?: boolean;
/**
* Additional arguments to pass to the executable when launching.
*/
args?: string[];
/**
* Environment variables to set for the browser process.
*/
env?: Record<string, string | undefined>;
/**
* Handles SIGINT in the Node process and tries to kill the browser process.
*
* @defaultValue `true`.
*/
handleSIGINT?: boolean;
/**
* Handles SIGTERM in the Node process and tries to gracefully close the browser
* process.
*
* @defaultValue `true`.
*/
handleSIGTERM?: boolean;
/**
* Handles SIGHUP in the Node process and tries to gracefully close the browser process.
*
* @defaultValue `true`.
*/
handleSIGHUP?: boolean;
/**
* Whether to spawn process in the {@link https://nodejs.org/api/child_process.html#optionsdetached | detached}
* mode.
*
* @defaultValue `true` except on Windows.
*/
detached?: boolean;
/**
* A callback to run after the browser process exits or before the process
* will be closed via the {@link Process.close} call (including when handling
* signals). The callback is only run once.
*/
onExit?: () => Promise<void>;
}
/**
* Launches a browser process according to {@link LaunchOptions}.
*
* @public
*/
export declare function launch(opts: LaunchOptions): Process;
/**
* @public
*/
export declare const CDP_WEBSOCKET_ENDPOINT_REGEX: RegExp;
/**
* @public
*/
export declare const WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX: RegExp;
/**
* @public
*/
export declare class Process {
#private;
constructor(opts: LaunchOptions);
get nodeProcess(): childProcess.ChildProcess;
close(): Promise<void>;
hasClosed(): Promise<void>;
kill(): void;
waitForLineOutput(regex: RegExp, timeout?: number): Promise<string>;
}
/**
* @internal
*/
export interface ErrorLike extends Error {
name: string;
message: string;
}
/**
* @internal
*/
export declare function isErrorLike(obj: unknown): obj is ErrorLike;
/**
* @internal
*/
export declare function isErrnoException(obj: unknown): obj is NodeJS.ErrnoException;
/**
* @public
*/
export declare class TimeoutError extends Error {
/**
* @internal
*/
constructor(message?: string);
}
//# sourceMappingURL=launch.d.ts.map |