2020-12-30 18:04:51 -08:00
|
|
|
|
<!-- THIS FILE IS NOW GENERATED -->
|
|
|
|
|
|
2020-04-24 12:19:54 -07:00
|
|
|
|
# Continuous Integration
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-06-26 17:49:18 -07:00
|
|
|
|
Playwright tests can be executed in CI environments. We have created sample
|
|
|
|
|
configurations for common CI providers.
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-04-24 12:19:54 -07:00
|
|
|
|
<!-- GEN:toc -->
|
2020-06-26 17:49:18 -07:00
|
|
|
|
- [Introduction](#introduction)
|
2020-05-11 09:54:03 -07:00
|
|
|
|
- [CI configurations](#ci-configurations)
|
|
|
|
|
* [GitHub Actions](#github-actions)
|
|
|
|
|
* [Docker](#docker)
|
|
|
|
|
* [Azure Pipelines](#azure-pipelines)
|
|
|
|
|
* [Travis CI](#travis-ci)
|
|
|
|
|
* [CircleCI](#circleci)
|
2020-08-12 14:01:55 -07:00
|
|
|
|
* [Jenkins](#jenkins)
|
2020-06-13 13:11:24 -07:00
|
|
|
|
* [Bitbucket Pipelines](#bitbucket-pipelines)
|
2020-06-26 17:49:18 -07:00
|
|
|
|
* [GitLab CI](#gitlab-ci)
|
2020-05-11 09:54:03 -07:00
|
|
|
|
- [Caching browsers](#caching-browsers)
|
2020-09-10 15:14:00 -07:00
|
|
|
|
- [Exception: `node_modules` are cached](#exception-node_modules-are-cached)
|
2020-05-11 22:52:21 -07:00
|
|
|
|
- [Directories to cache](#directories-to-cache)
|
|
|
|
|
- [Debugging browser launches](#debugging-browser-launches)
|
2020-06-13 13:11:24 -07:00
|
|
|
|
- [Running headful](#running-headful)
|
2020-04-24 12:19:54 -07:00
|
|
|
|
<!-- GEN:stop -->
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-06-26 17:49:18 -07:00
|
|
|
|
## Introduction
|
|
|
|
|
|
|
|
|
|
3 steps to get your tests running on CI:
|
2020-12-30 18:04:51 -08:00
|
|
|
|
1. **Ensure CI agent can run browsers**: Use
|
|
|
|
|
[our Docker image](docker/README.md) in Linux agents. Windows and macOS
|
|
|
|
|
agents do not require any additional dependencies.
|
2020-06-26 17:49:18 -07:00
|
|
|
|
1. **Install Playwright**: In most projects, this would be done with `npm ci`
|
2020-12-30 18:04:51 -08:00
|
|
|
|
(or `npm install`). Playwright would install the relevant browsers
|
|
|
|
|
automatically.
|
2020-06-26 17:49:18 -07:00
|
|
|
|
1. **Run your tests**: Use `npm test` or equivalent to execute your tests.
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-05-11 09:54:03 -07:00
|
|
|
|
## CI configurations
|
|
|
|
|
|
|
|
|
|
### GitHub Actions
|
2020-04-20 10:38:25 -07:00
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
The
|
|
|
|
|
[Playwright GitHub Action](https://github.com/microsoft/playwright-github-action)
|
|
|
|
|
can be used to run Playwright tests on GitHub Actions.
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-04-24 12:19:54 -07:00
|
|
|
|
```yml
|
|
|
|
|
steps:
|
|
|
|
|
- uses: microsoft/playwright-github-action@v1
|
|
|
|
|
- name: Run your tests
|
|
|
|
|
run: npm test
|
|
|
|
|
```
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
We run [our tests](/.github/workflows/tests.yml) on GitHub Actions, across a
|
|
|
|
|
matrix of 3 platforms (Windows, Linux, macOS) and 3 browsers (Chromium, Firefox,
|
|
|
|
|
WebKit).
|
2020-04-24 12:19:54 -07:00
|
|
|
|
|
2020-05-11 09:54:03 -07:00
|
|
|
|
### Docker
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
We have a [pre-built Docker image](docker/README.md) which can either be used
|
|
|
|
|
directly, or as a reference to update your existing Docker definitions.
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-05-11 22:52:21 -07:00
|
|
|
|
Suggested configuration
|
2020-12-30 18:04:51 -08:00
|
|
|
|
1. By default, Docker runs a container with a `/dev/shm` shared memory space
|
|
|
|
|
64MB. This is
|
|
|
|
|
[typically too small](https://github.com/c0b/chrome-in-docker/issues/1)
|
|
|
|
|
for Chromium and will cause Chromium to crash when rendering large pages.
|
|
|
|
|
To fix, run the container with `docker run --shm-size=1gb` to increase the
|
|
|
|
|
size of `/dev/shm`. Since Chromium 65, this is no longer necessary.
|
|
|
|
|
Instead, launch the browser with the `--disable-dev-shm-usage` flag:
|
2020-05-11 09:54:03 -07:00
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
const browser = await playwright.chromium.launch({
|
|
|
|
|
args: ['--disable-dev-shm-usage']
|
|
|
|
|
});
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This will write shared memory files into `/tmp` instead of `/dev/shm`. See
|
2020-12-30 18:04:51 -08:00
|
|
|
|
[crbug.com/736452](https://bugs.chromium.org/p/chromium/issues/detail?id=736452)
|
|
|
|
|
for more details.
|
|
|
|
|
1. Using `--ipc=host` is also recommended when using Chromium—without it
|
|
|
|
|
Chromium can run out of memory and crash. Learn more about this option in
|
|
|
|
|
[Docker docs](https://docs.docker.com/engine/reference/run/#ipc-settings---ipc).
|
|
|
|
|
1. Seeing other weird errors when launching Chromium? Try running your
|
|
|
|
|
container with `docker run --cap-add=SYS_ADMIN` when developing locally.
|
|
|
|
|
1. [dumb-init](https://github.com/Yelp/dumb-init) is worth checking out if
|
|
|
|
|
you're experiencing a lot of zombies Chromium processes sticking around.
|
|
|
|
|
There's special treatment for processes with PID=1, which makes it hard to
|
|
|
|
|
terminate Chromium properly in some cases (e.g. in Docker).
|
2020-05-11 09:54:03 -07:00
|
|
|
|
|
|
|
|
|
### Azure Pipelines
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
For Windows or macOS agents, no additional configuration required, just install
|
|
|
|
|
Playwright and run your tests.
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
For Linux agents, you can use [our Docker container](docker/README.md) with
|
|
|
|
|
Azure Pipelines support for
|
|
|
|
|
[running containerized jobs](https://docs.microsoft.com/en-us/azure/devops/pipelines/process/container-phases?view=azure-devops).
|
|
|
|
|
Alternatively, you can refer to the [Dockerfile](docker/README.md) to see
|
|
|
|
|
additional dependencies that need to be installed on a Ubuntu agent.
|
2020-06-13 13:11:24 -07:00
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
pool:
|
|
|
|
|
vmImage: 'ubuntu-18.04'
|
|
|
|
|
|
2020-06-29 15:23:01 -07:00
|
|
|
|
container: mcr.microsoft.com/playwright:bionic
|
2020-06-13 13:11:24 -07:00
|
|
|
|
|
|
|
|
|
steps:
|
|
|
|
|
- script: npm install
|
|
|
|
|
- script: npm run test
|
|
|
|
|
```
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-05-11 09:54:03 -07:00
|
|
|
|
### Travis CI
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-07-18 10:52:47 -07:00
|
|
|
|
We run our tests on Travis CI over a Linux agent (Ubuntu 18.04).
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-05-11 22:52:21 -07:00
|
|
|
|
Suggested configuration
|
|
|
|
|
1. [User namespace cloning](http://man7.org/linux/man-pages/man7/user_namespaces.7.html)
|
|
|
|
|
should be enabled to support proper sandboxing
|
2020-12-30 18:04:51 -08:00
|
|
|
|
1. [xvfb](https://en.wikipedia.org/wiki/Xvfb) should be launched in order to
|
|
|
|
|
run Chromium in non-headless mode (e.g. to test Chrome Extensions)
|
|
|
|
|
1. If your project does not have `package-lock.json`, Travis would be
|
|
|
|
|
auto-caching `node_modules` directory. If you run `npm install` (instead
|
|
|
|
|
of `npm ci`), it is possible that the browser binaries are not downloaded.
|
|
|
|
|
Fix this with [these steps](#exception-node_modules-are-cached) outlined
|
|
|
|
|
below.
|
2020-05-11 09:54:03 -07:00
|
|
|
|
|
|
|
|
|
To sum up, your `.travis.yml` might look like this:
|
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
language: node_js
|
|
|
|
|
dist: bionic
|
|
|
|
|
addons:
|
|
|
|
|
apt:
|
|
|
|
|
packages:
|
2020-09-02 23:42:01 +02:00
|
|
|
|
# These are required to run webkit
|
2020-05-11 09:54:03 -07:00
|
|
|
|
- libwoff1
|
|
|
|
|
- libopus0
|
|
|
|
|
- libwebp6
|
|
|
|
|
- libwebpdemux2
|
|
|
|
|
- libenchant1c2a
|
|
|
|
|
- libgudev-1.0-0
|
|
|
|
|
- libsecret-1-0
|
|
|
|
|
- libhyphen0
|
|
|
|
|
- libgdk-pixbuf2.0-0
|
|
|
|
|
- libegl1
|
|
|
|
|
- libgles2
|
|
|
|
|
- libevent-2.1-6
|
|
|
|
|
- libnotify4
|
|
|
|
|
- libxslt1.1
|
|
|
|
|
- libvpx5
|
2020-07-18 10:52:47 -07:00
|
|
|
|
# gstreamer and plugins to support video playback in WebKit.
|
|
|
|
|
- gstreamer1.0-gl
|
|
|
|
|
- gstreamer1.0-plugins-base
|
|
|
|
|
- gstreamer1.0-plugins-good
|
|
|
|
|
- gstreamer1.0-plugins-bad
|
|
|
|
|
# This is required to run chromium
|
|
|
|
|
- libgbm1
|
|
|
|
|
# this is needed for running headful tests
|
2020-05-11 22:52:21 -07:00
|
|
|
|
- xvfb
|
2020-05-11 09:54:03 -07:00
|
|
|
|
|
|
|
|
|
# allow headful tests
|
|
|
|
|
before_install:
|
|
|
|
|
# Enable user namespace cloning
|
|
|
|
|
- "sysctl kernel.unprivileged_userns_clone=1"
|
|
|
|
|
# Launch XVFB
|
|
|
|
|
- "export DISPLAY=:99.0"
|
|
|
|
|
- "sh -e /etc/init.d/xvfb start"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### CircleCI
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
We run our tests on CircleCI, with our
|
|
|
|
|
[pre-built Docker image](docker/README.md). Running Playwright smoothly on
|
|
|
|
|
CircleCI requires the following steps:
|
2020-05-11 09:54:03 -07:00
|
|
|
|
1. Use the pre-built [Docker image](docker/README.md) in your config like so:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
docker:
|
2020-06-29 15:23:01 -07:00
|
|
|
|
- image: mcr.microsoft.com/playwright:bionic
|
2020-05-11 09:54:03 -07:00
|
|
|
|
environment:
|
|
|
|
|
NODE_ENV: development # Needed if playwright is in `devDependencies`
|
|
|
|
|
```
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
1. If you’re using Playwright through Jest, then you may encounter an error
|
|
|
|
|
spawning child processes:
|
2020-05-11 09:54:03 -07:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[00:00.0] jest args: --e2e --spec --max-workers=36
|
|
|
|
|
Error: spawn ENOMEM
|
|
|
|
|
at ChildProcess.spawn (internal/child_process.js:394:11)
|
|
|
|
|
```
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
This is likely caused by Jest autodetecting the number of processes on the
|
|
|
|
|
entire machine (`36`) rather than the number allowed to your container
|
|
|
|
|
(`2`). To fix this, set `jest --maxWorkers=2` in your test command.
|
2020-05-11 09:54:03 -07:00
|
|
|
|
|
2020-08-12 14:01:55 -07:00
|
|
|
|
### Jenkins
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
Jenkins supports Docker agents for pipelines. Use the
|
|
|
|
|
[Playwright Docker image](docker/README.md) to run tests on Jenkins.
|
2020-08-12 14:01:55 -07:00
|
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
|
pipeline {
|
|
|
|
|
agent { docker { image 'mcr.microsoft.com/playwright:bionic' } }
|
|
|
|
|
stages {
|
|
|
|
|
stage('e2e-tests') {
|
|
|
|
|
steps {
|
|
|
|
|
sh 'npm install'
|
|
|
|
|
sh 'npm run test'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
2020-06-13 13:11:24 -07:00
|
|
|
|
### Bitbucket Pipelines
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
Bitbucket Pipelines can use public
|
|
|
|
|
[Docker images as build environments](https://confluence.atlassian.com/bitbucket/use-docker-images-as-build-environments-792298897.html).
|
|
|
|
|
To run Playwright tests on Bitbucket, use our public Docker image
|
|
|
|
|
([see Dockerfile](docker/README.md)).
|
2020-06-13 13:11:24 -07:00
|
|
|
|
|
|
|
|
|
```yml
|
2020-06-29 15:23:01 -07:00
|
|
|
|
image: mcr.microsoft.com/playwright:bionic
|
2020-06-13 13:11:24 -07:00
|
|
|
|
```
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
While the Docker image supports sandboxing for Chromium, it does not work in the
|
|
|
|
|
Bitbucket Pipelines environment. To launch Chromium on Bitbucket Pipelines, use
|
|
|
|
|
the `chromiumSandbox: false` launch argument.
|
2020-06-13 13:11:24 -07:00
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
const { chromium } = require('playwright');
|
2020-07-21 13:49:09 -07:00
|
|
|
|
const browser = await chromium.launch({ chromiumSandbox: false });
|
2020-06-13 13:11:24 -07:00
|
|
|
|
```
|
|
|
|
|
|
2020-06-26 17:49:18 -07:00
|
|
|
|
### GitLab CI
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
To run Playwright tests on GitLab, use our public Docker image
|
|
|
|
|
([see Dockerfile](docker/README.md)).
|
2020-06-26 17:49:18 -07:00
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
stages:
|
|
|
|
|
- test
|
|
|
|
|
|
|
|
|
|
tests:
|
|
|
|
|
stage: test
|
2020-06-29 16:04:58 -07:00
|
|
|
|
image: mcr.microsoft.com/playwright:bionic
|
2020-06-26 17:49:18 -07:00
|
|
|
|
script:
|
|
|
|
|
- npm install # This should install playwright
|
|
|
|
|
- npm run test
|
|
|
|
|
```
|
|
|
|
|
|
2020-05-11 22:52:21 -07:00
|
|
|
|
## Caching browsers
|
2020-05-11 09:54:03 -07:00
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
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).
|
2020-05-11 09:54:03 -07:00
|
|
|
|
|
2020-05-11 22:52:21 -07:00
|
|
|
|
Caching browsers on CI is **strictly optional**: The `postinstall` hooks should
|
|
|
|
|
execute and download the browser binaries on every run.
|
2020-05-11 09:54:03 -07:00
|
|
|
|
|
2020-05-11 22:52:21 -07:00
|
|
|
|
#### Exception: `node_modules` are cached
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
Most CI providers cache the
|
|
|
|
|
[npm-cache](https://docs.npmjs.com/cli-commands/cache.html) directory (located
|
|
|
|
|
at `$HOME/.npm`). If your CI pipelines caches the `node_modules` directory and
|
|
|
|
|
you run `npm install` (instead of `npm ci`), the default configuration
|
|
|
|
|
|
|
|
|
|
**will not work**. This is because the `npm install` step will find the
|
|
|
|
|
Playwright NPM package on disk and not execute the `postinstall` step.
|
2020-05-11 22:52:21 -07:00
|
|
|
|
|
|
|
|
|
> Travis CI automatically caches `node_modules` if your repo does not have a
|
2020-12-30 18:04:51 -08:00
|
|
|
|
`package-lock.json` file.
|
2020-05-11 22:52:21 -07:00
|
|
|
|
|
|
|
|
|
This behavior can be fixed with one of the following approaches:
|
2020-12-30 18:04:51 -08:00
|
|
|
|
1. Move to caching `$HOME/.npm` or the npm-cache directory. (This is the
|
|
|
|
|
default 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).
|
2020-06-26 17:49:18 -07:00
|
|
|
|
1. Use `npm ci` (instead of `npm install`) which forces a clean install: by
|
2020-12-30 18:04:51 -08:00
|
|
|
|
removing the existing `node_modules` directory. See
|
|
|
|
|
[npm docs](https://docs.npmjs.com/cli/ci.html).
|
2020-05-11 22:52:21 -07:00
|
|
|
|
1. Cache the browser binaries, with the steps below.
|
|
|
|
|
|
|
|
|
|
#### Directories to cache
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
With the default behavior, Playwright downloads the browser binaries in the
|
|
|
|
|
following directories:
|
2020-05-11 09:54:03 -07:00
|
|
|
|
- `%USERPROFILE%\AppData\Local\ms-playwright` on Windows
|
|
|
|
|
- `~/Library/Caches/ms-playwright` on MacOS
|
|
|
|
|
- `~/.cache/ms-playwright` on Linux
|
2020-03-03 12:21:21 -08:00
|
|
|
|
|
2020-05-11 22:52:21 -07:00
|
|
|
|
To cache the browser downloads between CI runs, cache this location in your CI
|
|
|
|
|
configuration, against a hash of the Playwright version.
|
|
|
|
|
|
|
|
|
|
## Debugging browser launches
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
Playwright supports the `DEBUG` environment variable to output debug logs during
|
|
|
|
|
execution. Setting it to `pw:browser*` is helpful while debugging `Error: Failed
|
|
|
|
|
to launch browser` errors.
|
2020-05-11 22:52:21 -07:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
DEBUG=pw:browser* npm run test
|
|
|
|
|
```
|
2020-06-13 13:11:24 -07:00
|
|
|
|
|
|
|
|
|
## Running headful
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
By default, Playwright launches browsers in headless mode. This can be changed
|
|
|
|
|
by passing a flag when the browser is launched.
|
2020-06-13 13:11:24 -07:00
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
// Works across chromium, firefox and webkit
|
|
|
|
|
const { chromium } = require('playwright');
|
|
|
|
|
const browser = await chromium.launch({ headless: false });
|
|
|
|
|
```
|
|
|
|
|
|
2020-12-30 18:04:51 -08:00
|
|
|
|
On Linux agents, headful execution requires
|
|
|
|
|
[Xvfb](https://en.wikipedia.org/wiki/Xvfb) to be installed. Our
|
|
|
|
|
[Docker image](docker/README.md) and GitHub Action have Xvfb pre-installed. To
|
|
|
|
|
run browsers in headful mode with Xvfb, add `xvfb-run` before the Node.js
|
|
|
|
|
command.
|
2020-06-13 13:11:24 -07:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
xvfb-run node index.js
|
|
|
|
|
```
|
2020-12-30 18:04:51 -08:00
|
|
|
|
|
|
|
|
|
[Playwright]: api.md#class-playwright "Playwright"
|
|
|
|
|
[Browser]: api.md#class-browser "Browser"
|
|
|
|
|
[BrowserContext]: api.md#class-browsercontext "BrowserContext"
|
|
|
|
|
[Page]: api.md#class-page "Page"
|
|
|
|
|
[Frame]: api.md#class-frame "Frame"
|
|
|
|
|
[ElementHandle]: api.md#class-elementhandle "ElementHandle"
|
|
|
|
|
[JSHandle]: api.md#class-jshandle "JSHandle"
|
|
|
|
|
[ConsoleMessage]: api.md#class-consolemessage "ConsoleMessage"
|
|
|
|
|
[Dialog]: api.md#class-dialog "Dialog"
|
|
|
|
|
[Download]: api.md#class-download "Download"
|
|
|
|
|
[Video]: api.md#class-video "Video"
|
|
|
|
|
[FileChooser]: api.md#class-filechooser "FileChooser"
|
|
|
|
|
[Keyboard]: api.md#class-keyboard "Keyboard"
|
|
|
|
|
[Mouse]: api.md#class-mouse "Mouse"
|
|
|
|
|
[Touchscreen]: api.md#class-touchscreen "Touchscreen"
|
|
|
|
|
[Request]: api.md#class-request "Request"
|
|
|
|
|
[Response]: api.md#class-response "Response"
|
|
|
|
|
[Selectors]: api.md#class-selectors "Selectors"
|
|
|
|
|
[Route]: api.md#class-route "Route"
|
|
|
|
|
[WebSocket]: api.md#class-websocket "WebSocket"
|
|
|
|
|
[TimeoutError]: api.md#class-timeouterror "TimeoutError"
|
|
|
|
|
[Accessibility]: api.md#class-accessibility "Accessibility"
|
|
|
|
|
[Worker]: api.md#class-worker "Worker"
|
|
|
|
|
[BrowserServer]: api.md#class-browserserver "BrowserServer"
|
|
|
|
|
[BrowserType]: api.md#class-browsertype "BrowserType"
|
|
|
|
|
[Logger]: api.md#class-logger "Logger"
|
|
|
|
|
[ChromiumBrowser]: api.md#class-chromiumbrowser "ChromiumBrowser"
|
|
|
|
|
[ChromiumBrowserContext]: api.md#class-chromiumbrowsercontext "ChromiumBrowserContext"
|
|
|
|
|
[ChromiumCoverage]: api.md#class-chromiumcoverage "ChromiumCoverage"
|
|
|
|
|
[CDPSession]: api.md#class-cdpsession "CDPSession"
|
|
|
|
|
[FirefoxBrowser]: api.md#class-firefoxbrowser "FirefoxBrowser"
|
|
|
|
|
[WebKitBrowser]: api.md#class-webkitbrowser "WebKitBrowser"
|
|
|
|
|
[Array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array "Array"
|
|
|
|
|
[Buffer]: https://nodejs.org/api/buffer.html#buffer_class_buffer "Buffer"
|
|
|
|
|
[ChildProcess]: https://nodejs.org/api/child_process.html "ChildProcess"
|
|
|
|
|
[Element]: https://developer.mozilla.org/en-US/docs/Web/API/element "Element"
|
|
|
|
|
[Error]: https://nodejs.org/api/errors.html#errors_class_error "Error"
|
|
|
|
|
[EvaluationArgument]: #evaluationargument "Evaluation Argument"
|
|
|
|
|
[Map]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map "Map"
|
|
|
|
|
[Object]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object"
|
|
|
|
|
[Promise]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise"
|
|
|
|
|
[RegExp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp "RegExp"
|
|
|
|
|
[Serializable]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#Description "Serializable"
|
|
|
|
|
[UIEvent.detail]: https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail "UIEvent.detail"
|
|
|
|
|
[URL]: https://nodejs.org/api/url.html "URL"
|
|
|
|
|
[USKeyboardLayout]: ../src/usKeyboardLayout.ts "USKeyboardLayout"
|
|
|
|
|
[UnixTime]: https://en.wikipedia.org/wiki/Unix_time "Unix Time"
|
|
|
|
|
[boolean]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean"
|
|
|
|
|
[function]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function "Function"
|
|
|
|
|
[iterator]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols "Iterator"
|
|
|
|
|
[null]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null "null"
|
|
|
|
|
[number]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number"
|
|
|
|
|
[origin]: https://developer.mozilla.org/en-US/docs/Glossary/Origin "Origin"
|
|
|
|
|
[selector]: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors "selector"
|
|
|
|
|
[Readable]: https://nodejs.org/api/stream.html#stream_class_stream_readable "Readable"
|
|
|
|
|
[string]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "string"
|
|
|
|
|
[xpath]: https://developer.mozilla.org/en-US/docs/Web/XPath "xpath"
|