Version: 1.0.0

Advanced 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 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:

$ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npm i playwright

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

$ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers node playwright-script.js

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

$ PLAYWRIGHT_BROWSERS_PATH=0 node playwright-script.js

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.

$ PLAYWRIGHT_DOWNLOAD_HOST= npm i 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.


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 playwright-webkit

Require package

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