2020-04-24 22:20:04 +03:00
# Installation
<!-- GEN:toc -->
- [System requirements ](#system-requirements )
- [Managing browser binaries ](#managing-browser-binaries )
* [Download from artifact repository ](#download-from-artifact-repository )
* [Share browser binaries across projects ](#share-browser-binaries-across-projects )
* [Skip browser downloads ](#skip-browser-downloads )
- [Download single browser binary ](#download-single-browser-binary )
<!-- GEN:stop -->
## System requirements
Playwright requires Node.js version 10.15 or above. The browser binaries for Chromium,
Firefox and WebKit work across the 3 platforms (Windows, macOS, Linux):
* **Windows**: Works with Windows and Windows Subsystem for Linux (WSL).
* **macOS**: Requires 10.14 or above.
* **Linux**: Depending on your Linux distribution, you might need to install additional
dependencies to run the browsers.
* For Ubuntu 18.04, the additional dependencies are defined in [our Docker image ](docker/Dockerfile.bionic ),
which is based on Ubuntu.
## Managing browser binaries
2020-04-22 02:38:40 +03:00
2020-04-22 03:13:14 +03:00
Each version of Playwright needs specific versions of browser binaries to operate.
2020-04-22 02:38:40 +03:00
2020-04-22 03:13:14 +03:00
By default it downloads Chromium, WebKit and Firefox browsers into the `node_modules/` folder. This way no extra steps are needed to get playwright up and running:
```sh
npm i playwright
```
These browsers will take hundreds of megabytes of the disk space when installed:
```sh
2020-04-22 03:19:10 +03:00
du -hs ./node_modules/playwright/.local-browsers/*
2020-04-22 03:13:14 +03:00
281M .local-browsers/chromium-XXXXXX
187M .local-browsers/firefox-XXXX
180M .local-browsers/webkit-XXXX
```
To mitigate that, Playwright has a rich set of options to control browser management.
2020-04-22 02:38:40 +03:00
2020-04-24 22:20:04 +03:00
### Download from artifact repository
2020-04-22 02:38:40 +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.
```sh
$ PLAYWRIGHT_DOWNLOAD_HOST=192.168.1.78 npm i playwright
```
2020-04-24 22:20:04 +03:00
### Share browser binaries across projects
2020-04-22 02:38:40 +03:00
2020-04-22 03:17:29 +03:00
Often times, developers work with multiple NPM projects that all use Playwright.
2020-04-22 02:38:40 +03:00
By default, every project will have browser binaries in its own `node_modules/` folder.
2020-04-22 03:13:14 +03:00
To save the disk space and to speedup installation, Playwright can re-use
these binaries.
2020-04-22 02:38:40 +03:00
Sharing browser binaries is a two-step process:
1. When installing Playwright, ask it to download browsers into a shared location:
```sh
$ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npm i playwright
```
2. When running Playwright scripts, ask it to search for browsers in a shared location:
```sh
$ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers node playwright-script.js
```
> **NOTE** Developers can opt-in in this mode via exporting `PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers` in their `.bashrc`.
2020-04-24 22:20:04 +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
$ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i playwright
```
## 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:
1. Install a specific package
```sh
$ npm i playwright-webkit
```
2020-04-23 23:40:34 +03:00
2. 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();
// ....
})();
```