Version: 1.8.0

Installation

Managing browser binaries#

Each version of Playwright needs specific versions of browser binaries to operate. By default Playwright downloads Chromium, WebKit and Firefox browsers into the OS-specific cache folders:

  • %USERPROFILE%\AppData\Local\ms-playwright on Windows
  • ~/Library/Caches/ms-playwright on MacOS
  • ~/.cache/ms-playwright on Linux
$ npm i -D playwright

These browsers will take few hundreds of megabytes of the disk space when installed:

$ du -hs ./Library/Caches/ms-playwright/*
281M chromium-XXXXXX
187M firefox-XXXX
180M webkit-XXXX

You can override default behavior using environment variables. When installing Playwright, ask it to download browsers into a specific location:

# Linux/macOS
$ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npm i -D playwright
# Windows
$ set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
$ npm i -D playwright

When running Playwright scripts, ask it to search for browsers in a shared location:

# Linux/macOS
$ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers node playwright-script.js
# Windows
$ set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
$ node playwright-script.js

Or you can opt into the hermetic install and place binaries under the node_modules/ folder:

# Linux/macOS
# Places binaries to node_modules/playwright
$ PLAYWRIGHT_BROWSERS_PATH=0 npm i -D playwright
# Windows
# Places binaries to node_modules\playwright
$ set PLAYWRIGHT_BROWSERS_PATH=0
$ npm i -D playwright

Playwright keeps track of packages that need those browsers and will garbage collect them as you update Playwright to the newer versions.

note

Developers can opt-in in this mode via exporting PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers in their .bashrc.

Download from artifact repository#

By default, Playwright downloads browsers from Microsoft and Google public CDNs.

Sometimes companies maintain an internal artifact repository to host browser binaries. In this case, Playwright can be configured to download from a custom location using the PLAYWRIGHT_DOWNLOAD_HOST env variable.

# Linux/macOS
$ PLAYWRIGHT_DOWNLOAD_HOST=192.168.1.78 npm i -D playwright
# Windows
$ set PLAYWRIGHT_DOWNLOAD_HOST=192.168.1.78
$ npm i -D playwright

It is also possible to use a per-browser download hosts using PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST, PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST and PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST env variables that take precedence over PLAYWRIGHT_DOWNLOAD_HOST.

# Linux/macOS
$ PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=192.168.1.1 PLAYWRIGHT_DOWNLOAD_HOST=192.168.1.78 npm i -D playwright

Skip browser downloads#

In certain cases, it is desired to avoid browser downloads altogether because browser binaries are managed separately.

This can be done by setting PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD variable before installation.

# Linux/macOS
$ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright
# Windows
$ set PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
$ npm i -D playwright

Download single browser binary#

Playwright ships three packages that bundle only a single browser:

note

All configuration environment variables also apply to these packages.

Using these packages is as easy as using a regular Playwright:

Install a specific package

$ npm i -D playwright-webkit

Require package

// Notice a proper package name in require
const { webkit } = require('playwright-webkit');
(async () => {
const browser = await webkit.launch();
// ...
})();