diff --git a/docs/src/ci.md b/docs/src/ci.md index 1143e80213..45a7bd67c9 100644 --- a/docs/src/ci.md +++ b/docs/src/ci.md @@ -312,7 +312,7 @@ tests: By default, Playwright downloads browser binaries when the Playwright NPM package is installed. The NPM packages have a `postinstall` hook that downloads the browser -binaries. This behavior can be [customized with environment variables](./installation.md). +binaries. This behavior can be [customized with environment variables](./library.md#managing-browser-binaries). Caching browsers on CI is **strictly optional**: The `postinstall` hooks should execute and download the browser binaries on every run. @@ -333,7 +333,7 @@ This behavior can be fixed with one of the following approaches: behavior in most CI providers.) 1. Set `PLAYWRIGHT_BROWSERS_PATH=0` as the environment variable before running `npm install`. This will download the browser binaries in the `node_modules` - directory and cache them with the package code. See [installation docs](./installation.md). + directory and cache them with the package code. See [managing browser binaries](./library.md#managing-browser-binaries). 1. Use `npm ci` (instead of `npm install`) which forces a clean install: by removing the existing `node_modules` directory. See [npm docs](https://docs.npmjs.com/cli/ci.html). 1. Cache the browser binaries, with the steps below. diff --git a/docs/src/cli.md b/docs/src/cli.md index c663dcf322..4f41d12f37 100644 --- a/docs/src/cli.md +++ b/docs/src/cli.md @@ -39,7 +39,7 @@ playwright ## Install browsers -Playwright can install supported browsers. This is required to run tests with [Playwright Test](./intro.md). +Playwright can install supported browsers. ```bash js # Running without arguments will install default browsers @@ -101,8 +101,6 @@ playwright install --help playwright install --help ``` -Learn more about managing browser binaries with [Playwright Library](./installation.md) or [Playwright Test](./test-install.md). - ## Generate code ```bash js diff --git a/docs/src/installation.md b/docs/src/installation.md index 3b7294e99a..5487e16bb2 100644 --- a/docs/src/installation.md +++ b/docs/src/installation.md @@ -35,19 +35,6 @@ du -hs ~/Library/Caches/ms-playwright/* You can override default behavior using environment variables. When installing Playwright, ask it to download browsers into a specific location: -```bash js -# Linux/macOS -PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npm i -D playwright - -# Windows with cmd.exe -set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers -npm i -D playwright - -# Windows with PowerShell -$env:PLAYWRIGHT_BROWSERS_PATH="$env:USERPROFILE\pw-browsers" -npm i -D playwright -``` - ```bash python # Linux/macOS pip install playwright @@ -71,19 +58,6 @@ PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers mvn test When running Playwright scripts, ask it to search for browsers in a shared location. -```bash js -# Linux/macOS -PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers node playwright-script.js - -# Windows with cmd.exe -set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers -node playwright-script.js - -# Windows with PowerShell -$env:PLAYWRIGHT_BROWSERS_PATH="$env:USERPROFILE\pw-browsers" -node playwright-script.js -``` - ```bash python # Linux/macOS PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python playwright_script.js @@ -109,22 +83,6 @@ mvn test Or you can opt into the hermetic install and place binaries in the local folder: -```bash js -# Linux/macOS -# Places binaries to node_modules/playwright -PLAYWRIGHT_BROWSERS_PATH=0 npm i -D playwright - -# Windows with cmd.exe -# Places binaries to node_modules\playwright -set PLAYWRIGHT_BROWSERS_PATH=0 -npm i -D playwright - -# Windows with PowerShell -# Places binaries to node_modules\playwright -$env:PLAYWRIGHT_BROWSERS_PATH=0 -npm i -D playwright -``` - ```bash python # Linux/macOS pip install playwright @@ -154,19 +112,6 @@ By default, Playwright downloads browsers from Microsoft CDN. Sometimes companies maintain an internal proxy that blocks direct access to the public resources. In this case, Playwright can be configured to download browsers via a proxy server. -```bash js -# Linux/macOS -HTTPS_PROXY=https://192.0.2.1 npm i -D playwright - -# Windows with cmd.exe -set HTTPS_PROXY=https://192.0.2.1 -npm i -D playwright - -# Windows with PowerShell -$env:HTTPS_PROXY="https://192.0.2.1" -npm i -D playwright -``` - ```bash python # Linux/macOS pip install playwright @@ -204,19 +149,6 @@ 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. -```bash js -# Linux/macOS -PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 npm i -D playwright - -# Windows with cmd.exe -set PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 -npm i -D playwright - -# Windows with PowerShell -$env:PLAYWRIGHT_DOWNLOAD_HOST="192.0.2.1" -npm i -D playwright -``` - ```bash python # Linux/macOS pip install playwright @@ -249,11 +181,6 @@ mvn test 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`. -```bash js -# Linux/macOS -PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 npm i -D playwright -``` - ```bash python # Linux/macOS pip install playwright @@ -272,19 +199,6 @@ browser binaries are managed separately. This can be done by setting `PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD` variable before installation. -```bash js -# Linux/macOS -PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright - -# Windows with cmd.exe -set PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 -npm i -D playwright - -# Windows with PowerShell -$env:PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 -npm i -D playwright -``` - ```bash python # Linux/macOS pip install playwright @@ -314,38 +228,6 @@ $env:PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 mvn test ``` -## Download single browser binary -* langs: js - -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: - -Install a specific package - -```bash -npm i -D playwright-webkit -``` - -Require package - -```js -// Notice a proper package name in require -const { webkit } = require('playwright-webkit'); - -(async () => { - const browser = await webkit.launch(); - // ... -})(); -``` - ## Download single browser binary * langs: python diff --git a/docs/src/intro-js.md b/docs/src/intro-js.md index 06de4e6eee..9cac8df33e 100644 --- a/docs/src/intro-js.md +++ b/docs/src/intro-js.md @@ -1,6 +1,6 @@ --- id: intro -title: "Playwright Test" +title: "Getting Started" --- Playwright can either be used as a part of the Playwright Test, or as a [Playwright Library](./library.md). If you intend to use Playwright for testing, read on. diff --git a/docs/src/library.md b/docs/src/library.md index 1e90e0692d..ff0a75828a 100644 --- a/docs/src/library.md +++ b/docs/src/library.md @@ -8,7 +8,7 @@ Playwright can either be used as a part of the [Playwright Test](./intro.md), or - [Release notes](./release-notes.md) -## Installation +## Usage Use npm or Yarn to install Playwright library in your Node.js project. See [system requirements](#system-requirements). @@ -16,9 +16,7 @@ Use npm or Yarn to install Playwright library in your Node.js project. See [syst npm i -D playwright ``` -This single command downloads the Playwright NPM package and browser binaries for Chromium, Firefox and WebKit. To modify this behavior see [installation parameters](./installation.md). - -## Usage +This single command downloads the Playwright NPM package and browser binaries for Chromium, Firefox and WebKit. To modify this behavior see [managing browsers](#managing-browser-binaries). Once installed, you can `require` Playwright in a Node.js script, and launch any of the 3 browsers (`chromium`, `firefox` and `webkit`). @@ -122,3 +120,186 @@ Only Ubuntu 18.04 and Ubuntu 20.04 are officially supported. See also in the [Command Line Interface](./cli.md#install-system-dependencies) which has a command to install all necessary dependencies automatically for Ubuntu LTS releases. + +## 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 + +```bash js +npm i -D playwright +``` + +These browsers will take a few hundred megabytes of disk space when installed: + +```bash +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: + +```bash js +# Linux/macOS +PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npm i -D playwright + +# Windows with cmd.exe +set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers +npm i -D playwright + +# Windows with PowerShell +$env:PLAYWRIGHT_BROWSERS_PATH="$env:USERPROFILE\pw-browsers" +npm i -D playwright +``` + +When running Playwright scripts, ask it to search for browsers in a shared location. + +```bash js +# Linux/macOS +PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers node playwright-script.js + +# Windows with cmd.exe +set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers +node playwright-script.js + +# Windows with PowerShell +$env:PLAYWRIGHT_BROWSERS_PATH="$env:USERPROFILE\pw-browsers" +node playwright-script.js +``` + +Or you can opt into the hermetic install and place binaries in the local folder: + +```bash js +# Linux/macOS +# Places binaries to node_modules/playwright +PLAYWRIGHT_BROWSERS_PATH=0 npm i -D playwright + +# Windows with cmd.exe +# Places binaries to node_modules\playwright +set PLAYWRIGHT_BROWSERS_PATH=0 +npm i -D playwright + +# Windows with PowerShell +# Places binaries to node_modules\playwright +$env:PLAYWRIGHT_BROWSERS_PATH=0 +npm i -D playwright +``` + +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`. +::: + +### Install behind a firewall or a proxy + +By default, Playwright downloads browsers from Microsoft's CDN. + +Sometimes companies maintain an internal proxy that blocks direct access to the public +resources. In this case, Playwright can be configured to download browsers via a proxy server. + +```bash js +# Linux/macOS +HTTPS_PROXY=https://192.0.2.1 npm i -D playwright + +# Windows with cmd.exe +set HTTPS_PROXY=https://192.0.2.1 +npm i -D playwright + +# Windows with PowerShell +$env:HTTPS_PROXY="https://192.0.2.1" +npm i -D playwright +``` + +### Download from artifact repository + +By default, Playwright downloads browsers from Microsoft's CDN. + +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. + +```bash js +# Linux/macOS +PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 npm i -D playwright + +# Windows with cmd.exe +set PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 +npm i -D playwright + +# Windows with PowerShell +$env:PLAYWRIGHT_DOWNLOAD_HOST="192.0.2.1" +npm i -D playwright +``` + +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`. + +```bash js +# Linux/macOS +PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 npm i -D 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. + +```bash js +# Linux/macOS +PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright + +# Windows with cmd.exe +set PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 +npm i -D playwright + +# Windows with PowerShell +$env:PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 +npm i -D 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: + +Install a specific package + +```bash +npm i -D playwright-webkit +``` + +Require package + +```js +// Notice a proper package name in require +const { webkit } = require('playwright-webkit'); + +(async () => { + const browser = await webkit.launch(); + // ... +})(); +``` + +### Stale browser removal + +Playwright keeps track of the clients that use its browsers. When there are no more clients that require particular +version of the browser, that version is deleted from the system. That way you can safely use Playwright instances of +different versions and at the same time, you don't waste disk space for the browsers that are no longer in use. + +To opt-out from the unused browser removal, you can set the `PLAYWRIGHT_SKIP_BROWSER_GC=1` environment variable. diff --git a/docs/src/test-install.md b/docs/src/test-install.md index 82fb656006..41cb606371 100644 --- a/docs/src/test-install.md +++ b/docs/src/test-install.md @@ -3,8 +3,6 @@ id: test-install title: "Advanced: installing browsers" --- -This is a browser installation guide for Playwright Test. If you are using Playwright Library, please refer to [Library Installation](./installation.md) guide. - ## Installing browser binaries