2020-05-04 00:22:07 +03:00
# Advanced installation
2020-04-24 22:20:04 +03:00
<!-- GEN:toc -->
- [Managing browser binaries ](#managing-browser-binaries )
2020-04-30 04:59:20 +03:00
- [Download from artifact repository ](#download-from-artifact-repository )
- [Skip browser downloads ](#skip-browser-downloads )
2020-04-24 22:20:04 +03:00
- [Download single browser binary ](#download-single-browser-binary )
<!-- GEN:stop -->
2020-04-30 04:59:20 +03:00
< br >
2020-04-24 22:20:04 +03:00
## Managing browser binaries
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
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:
2020-04-22 02:38:40 +03:00
2020-05-01 03:41:56 +03:00
- `%USERPROFILE%\AppData\Local\ms-playwright` on Windows
2020-04-30 04:59:20 +03:00
- `~/Library/Caches/ms-playwright` on MacOS
2020-05-03 17:58:46 +03:00
- `~/.cache/ms-playwright` on Linux
2020-04-22 03:13:14 +03:00
```sh
2020-05-26 20:24:48 +03:00
npm i -D playwright
2020-04-22 03:13:14 +03:00
```
2020-04-30 04:59:20 +03:00
These browsers will take few hundreds of megabytes of the disk space when installed:
2020-04-22 03:13:14 +03:00
```sh
2020-04-30 04:59:20 +03:00
du -hs ./Library/Caches/ms-playwright/*
281M chromium-XXXXXX
2020-05-07 22:33:35 +03:00
187M firefox-XXXX
180M webkit-XXXX
2020-04-22 03:13:14 +03:00
```
2020-04-30 04:59:20 +03:00
You can override default behavior using environment variables. When installing Playwright, ask it to download browsers into a specific location:
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
```sh
2020-06-13 23:11:39 +03:00
# Linux/macOS
2020-05-26 20:24:48 +03:00
$ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npm i -D playwright
2020-06-13 23:11:39 +03:00
# Windows
$ set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
$ npm i -D playwright
2020-04-30 04:59:20 +03:00
```
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
When running Playwright scripts, ask it to search for browsers in a shared location:
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
```sh
2020-06-13 23:11:39 +03:00
# Linux/macOS
2020-04-30 04:59:20 +03:00
$ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers node playwright-script.js
2020-06-13 23:11:39 +03:00
# Windows
$ set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
$ node playwright-script.js
2020-04-30 04:59:20 +03:00
```
Or you can opt into the hermetic install and place binaries under the `node_modules/` folder:
2020-04-22 02:38:40 +03:00
```sh
2020-06-13 23:11:39 +03:00
# Linux/macOS
$ PLAYWRIGHT_BROWSERS_PATH=0 npm i -D playwright
# Windows
$ set PLAYWRIGHT_BROWSERS_PATH=0
$ npm i -D playwright
2020-04-22 02:38:40 +03:00
```
2020-04-30 04:59:20 +03:00
Playwright keeps track of packages that need those browsers and will garbage collect them as you update Playwright to the newer versions.
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
< br >
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
> **NOTE** Developers can opt-in in this mode via exporting `PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers` in their `.bashrc`.
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
< br >
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
## Download from artifact repository
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
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.
2020-04-22 02:38:40 +03:00
```sh
2020-06-13 23:11:39 +03:00
# Linux/macOS
2020-05-26 20:24:48 +03:00
$ PLAYWRIGHT_DOWNLOAD_HOST=192.168.1.78 npm i -D playwright
2020-06-13 23:11:39 +03:00
# Windows
$ set PLAYWRIGHT_DOWNLOAD_HOST=192.168.1.78
$ npm i -D playwright
2020-04-22 02:38:40 +03:00
```
2020-06-18 22:35:37 +03:00
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` .
```sh
# Linux/macOS
$ PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=192.168.1.1 PLAYWRIGHT_DOWNLOAD_HOST=192.168.1.78 npm i -D playwright
```
2020-04-30 04:59:20 +03:00
< br >
2020-04-22 02:38:40 +03:00
2020-04-30 04:59:20 +03:00
## Skip browser downloads
2020-04-22 02:38:40 +03:00
2020-04-24 22:20:04 +03:00
In certain cases, it is desired to avoid browser downloads altogether because
2020-04-22 02:38:40 +03:00
browser binaries are managed separately.
This can be done by setting `PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD` variable before installation.
```sh
2020-06-13 23:11:39 +03:00
# Linux/macOS
2020-05-26 20:24:48 +03:00
$ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright
2020-06-13 23:11:39 +03:00
# Windows
$ set PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
$ npm i -D playwright
2020-04-22 02:38:40 +03:00
```
2020-04-30 04:59:20 +03:00
< br >
2020-04-22 02:38:40 +03:00
## Download single browser binary
Playwright ships three packages that bundle only a single browser:
- [`playwright-chromium` ](https://www.npmjs.com/package/playwright-chromium )
- [`playwright-webkit` ](https://www.npmjs.com/package/playwright-webkit )
- [`playwright-firefox` ](https://www.npmjs.com/package/playwright-firefox )
> **NOTE** All configuration environment variables also apply to these packages.
Using these packages is as easy as using a regular Playwright:
2020-04-30 04:59:20 +03:00
Install a specific package
2020-04-22 02:38:40 +03:00
```sh
2020-05-26 20:24:48 +03:00
$ npm i -D playwright-webkit
2020-04-22 02:38:40 +03:00
```
2020-04-30 04:59:20 +03:00
Require package
2020-04-22 02:38:40 +03:00
```js
// Notice a proper package name in require
2020-04-24 22:20:04 +03:00
const { webkit } = require('playwright-webkit');
2020-04-22 02:38:40 +03:00
(async () => {
const browser = await webkit.launch();
2020-06-13 23:11:39 +03:00
// ...
2020-04-22 02:38:40 +03:00
})();
```