Chrome Launcher
Launch Google Chrome with ease from node.
- Disables many Chrome services that add noise to automated scenarios
- Opens up the browser's
remote-debugging-port
on an available port - Automagically locates a Chrome binary to launch
- Uses a fresh Chrome profile for each launch, and cleans itself up on
kill()
- Binds
Ctrl-C
(by default) to terminate the Chrome process - Exposes a small set of options for configurability over these details
Installing
yarn add chrome-launcher # or with npm: npm install chrome-launcher
API
.launch([opts])
Launch options
// (optional) remote debugging port number to use. If provided port is already busy, launch() will reject // Default: an available port is autoselected port: number; // (optional) Additional flags to pass to Chrome, for example: ['--headless', '--disable-gpu'] // See all flags here: http://peter.sh/experiments/chromium-command-line-switches/ // Do note, many flags are set by default: https://github.com/GoogleChrome/lighthouse/blob/master/chrome-launcher/flags.ts chromeFlags: Array<string>; // (optional) Close the Chrome process on `Ctrl-C` // Default: true handleSIGINT: boolean; // (optional) Explicit path of intended Chrome binary // If the `CHROME_PATH` env variable is set, that will be used // Usage of `LIGHTHOUSE_CHROMIUM_PATH` env variable is deprecated // By default, any detected Chrome Canary or Chrome (stable) will be launched chromePath: string; // (optional) Chrome profile path to use // By default, a fresh Chrome profile will be created userDataDir: string; // (optional) Starting URL to open the browser with // Default: `about:blank` startingUrl: string; // (optional) Logging level: verbose, info, error, silent // Default: 'info' logLevel: string; // (optional) Enable extension loading // Default: false enableExtensions: boolean;
Launched chrome interface
.launch().then(chrome => ...
// The remote debugging port exposed by the launched chromechromeport: number; // Method kill Chrome (and cleanup the profile folder)chromekill: Promise<{}>; // The process idchromepid: number;
Examples
Launching chrome:
const chromeLauncher = ; chromeLauncher;
Launching headless chrome:
const chromeLauncher = ; chromeLauncher;
Continuous Integration
In a CI environment like Travis, Chrome may not be installed. If you want to use chrome-launcher
, you can install Chrome using Lighthouse's download-chrome.sh
script:
curl -L https://raw.githubusercontent.com/GoogleChrome/lighthouse/v2.1.0/lighthouse-core/scripts/download-chrome.sh | bash
Then in .travis.yml
, use it like so:
language: node_jsinstall: - yarn installbefore_script: - export DISPLAY=:99.0 - export LIGHTHOUSE_CHROMIUM_PATH="$(pwd)/chrome-linux/chrome" - sh -e /etc/init.d/xvfb start - curl -L https://raw.githubusercontent.com/GoogleChrome/lighthouse/v2.1.0/lighthouse-core/scripts/download-chrome.sh | bash