- Managing browser binaries
- Download from artifact repository
- Skip browser downloads
- Download single browser binary
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:
$ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npm i -D 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
.
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=192.168.1.78 npm i -D playwright
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.
$ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright
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();
// ....
})();