mirror of
https://github.com/microsoft/playwright.git
synced 2024-12-16 07:33:35 +03:00
119 lines
3.8 KiB
Markdown
119 lines
3.8 KiB
Markdown
# 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
|
|
|
|
Each version of Playwright needs specific versions of browser binaries to operate.
|
|
|
|
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
|
|
du -hs ./node_modules/playwright/.local-browsers/*
|
|
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.
|
|
|
|
### 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.
|
|
|
|
```sh
|
|
$ PLAYWRIGHT_DOWNLOAD_HOST=192.168.1.78 npm i playwright
|
|
```
|
|
|
|
### Share browser binaries across projects
|
|
|
|
Often times, developers work with multiple NPM projects that all use Playwright.
|
|
By default, every project will have browser binaries in its own `node_modules/` folder.
|
|
To save the disk space and to speedup installation, Playwright can re-use
|
|
these binaries.
|
|
|
|
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`.
|
|
|
|
### 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.
|
|
|
|
```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
|
|
```
|
|
|
|
2. Require package
|
|
|
|
```js
|
|
// Notice a proper package name in require
|
|
const { webkit } = require('playwright-webkit');
|
|
|
|
(async () => {
|
|
const browser = await webkit.launch();
|
|
// ....
|
|
})();
|
|
```
|