/** * @license * Copyright 2022 Google Inc. * SPDX-License-Identifier: Apache-2.0 */ import type {SupportedBrowser} from './SupportedBrowser.js'; /** * Defines experiment options for Puppeteer. * * See individual properties for more information. * * @public */ export type ExperimentsConfiguration = Record<string, never>; /** * Defines options to configure Puppeteer's behavior during installation and * runtime. * * See individual properties for more information. * * @public */ export interface Configuration { /** * Defines the directory to be used by Puppeteer for caching. * * Can be overridden by `PUPPETEER_CACHE_DIR`. * * @defaultValue `path.join(os.homedir(), '.cache', 'puppeteer')` */ cacheDirectory?: string; /** * Specifies an executable path to be used in * {@link PuppeteerNode.launch | puppeteer.launch}. * * Can be overridden by `PUPPETEER_EXECUTABLE_PATH`. * * @defaultValue **Auto-computed.** */ executablePath?: string; /** * Specifies which browser you'd like Puppeteer to use. * * Can be overridden by `PUPPETEER_BROWSER`. * * @defaultValue `chrome` */ defaultBrowser?: SupportedBrowser; /** * Defines the directory to be used by Puppeteer for creating temporary files. * * Can be overridden by `PUPPETEER_TMP_DIR`. * * @defaultValue `os.tmpdir()` */ temporaryDirectory?: string; /** * Tells Puppeteer to not download during installation. * * Can be overridden by `PUPPETEER_SKIP_DOWNLOAD`. */ skipDownload?: boolean; /** * Tells Puppeteer to log at the given level. * * @defaultValue `warn` */ logLevel?: 'silent' | 'error' | 'warn'; /** * Defines experimental options for Puppeteer. */ experiments?: ExperimentsConfiguration; chrome?: ChromeSettings; ['chrome-headless-shell']?: ChromeHeadlessShellSettings; firefox?: FirefoxSettings; } /** * @public */ export interface ChromeSettings { /** * Tells Puppeteer to not download the browser during installation. * * Can be overridden by `PUPPETEER_CHROME_SKIP_DOWNLOAD`. * * @defaultValue false */ skipDownload?: boolean; /** * Specifies the URL prefix that is used to download the browser. * * Can be overridden by `PUPPETEER_CHROME_DOWNLOAD_BASE_URL`. * * @remarks * This must include the protocol and may even need a path prefix. * This must **not** include a trailing slash similar to the default. * * @defaultValue https://storage.googleapis.com/chrome-for-testing-public */ downloadBaseUrl?: string; /** * Specifies a certain version of the browser you'd like Puppeteer to use. * * Can be overridden by `PUPPETEER_CHROME_VERSION` * or `PUPPETEER_SKIP_CHROME_DOWNLOAD`. * * See {@link PuppeteerNode.launch | puppeteer.launch} on how executable path * is inferred. * * @example 119.0.6045.105 * @defaultValue The pinned browser version supported by the current Puppeteer * version. */ version?: string; } /** * @public */ export interface ChromeHeadlessShellSettings { /** * Tells Puppeteer to not download the browser during installation. * * Can be overridden by `PUPPETEER_CHROME_HEADLESS_SHELL_SKIP_DOWNLOAD` * or `PUPPETEER_SKIP_CHROME_HEADLESS_SHELL_DOWNLOAD`. * * @defaultValue false */ skipDownload?: boolean; /** * Specifies the URL prefix that is used to download the browser. * * Can be overridden by `PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL`. * * @remarks * This must include the protocol and may even need a path prefix. * This must **not** include a trailing slash similar to the default. * * @defaultValue https://storage.googleapis.com/chrome-for-testing-public */ downloadBaseUrl?: string; /** * Specifies a certain version of the browser you'd like Puppeteer to use. * * Can be overridden by `PUPPETEER_CHROME_HEADLESS_SHELL_VERSION`. * * See {@link PuppeteerNode.launch | puppeteer.launch} on how executable path * is inferred. * * @example 119.0.6045.105 * @defaultValue The pinned browser version supported by the current Puppeteer * version. */ version?: string; } /** * @public */ export interface FirefoxSettings { /** * Tells Puppeteer to not download the browser during installation. * * Can be overridden by `PUPPETEER_FIREFOX_SKIP_DOWNLOAD`. * * @defaultValue true */ skipDownload?: boolean; /** * Specifies the URL prefix that is used to download the browser. * * Can be overridden by `PUPPETEER_FIREFOX_DOWNLOAD_BASE_URL`. * * @remarks * This must include the protocol and may even need a path prefix. * This must **not** include a trailing slash similar to the default. * * @defaultValue https://archive.mozilla.org/pub/firefox/releases */ downloadBaseUrl?: string; /** * Specifies a certain version of the browser you'd like Puppeteer to use. * * Can be overridden by `PUPPETEER_FIREFOX_VERSION`. * * See {@link PuppeteerNode.launch | puppeteer.launch} on how executable path * is inferred. * * @example stable_129.0 * @defaultValue The pinned browser version supported by the current Puppeteer * version. */ version?: string; }