2020-05-07 22:33:35 +03:00
# 🎭 Playwright
2020-04-23 23:50:12 +03:00
2022-01-24 19:40:45 +03:00
[![npm version ](https://img.shields.io/npm/v/playwright.svg?style=flat )](https://www.npmjs.com/package/playwright) <!-- GEN:chromium-version-badge --> [![Chromium version](https://img.shields.io/badge/chromium-99.0.4837.0-blue.svg?logo=google-chrome)](https://www.chromium.org/Home)<!-- GEN:stop --> <!-- GEN:firefox-version-badge --> [![Firefox version](https://img.shields.io/badge/firefox-96.0.1-blue.svg?logo=mozilla-firefox)](https://www.mozilla.org/en-US/firefox/new/)<!-- GEN:stop --> <!-- GEN:webkit-version-badge --> [![WebKit version](https://img.shields.io/badge/webkit-15.4-blue.svg?logo=safari)](https://webkit.org/)<!-- GEN:stop -->
2020-04-23 23:50:12 +03:00
2021-02-24 19:16:27 +03:00
## [Documentation](https://playwright.dev) | [API reference](https://playwright.dev/docs/api/class-playwright/)
2020-04-23 23:50:12 +03:00
2021-11-29 22:33:59 +03:00
Playwright is a framework for Web Testing and Automation. It allows testing [Chromium ](https://www.chromium.org/Home ), [Firefox ](https://www.mozilla.org/en-US/firefox/new/ ) and [WebKit ](https://webkit.org/ ) with a single API. Playwright is built to enable cross-browser web automation that is **ever-green** , **capable** , **reliable** and **fast** .
2020-04-23 23:50:12 +03:00
2020-04-24 22:19:31 +03:00
| | Linux | macOS | Windows |
| :--- | :---: | :---: | :---: |
2022-01-24 19:40:45 +03:00
| Chromium <!-- GEN:chromium - version --> 99.0.4837.0<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
2021-10-06 00:06:05 +03:00
| WebKit <!-- GEN:webkit - version --> 15.4<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
2022-01-18 20:28:04 +03:00
| Firefox <!-- GEN:firefox - version --> 96.0.1<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
2020-04-23 23:50:12 +03:00
2022-01-28 00:00:09 +03:00
Headless execution is supported for all the browsers on all platforms. Check out [system requirements ](https://playwright.dev/docs/library#system-requirements ) for details.
2020-04-23 23:50:12 +03:00
2020-04-24 22:19:31 +03:00
## Usage
2020-04-23 23:50:12 +03:00
```
2020-05-26 20:24:48 +03:00
npm i -D playwright
2020-04-23 23:50:12 +03:00
```
2020-04-24 22:19:31 +03:00
This installs Playwright and browser binaries for Chromium, Firefox and WebKit. Once installed, you can `require` Playwright in a Node.js script and automate web browser interactions.
2020-04-23 23:50:12 +03:00
2021-01-21 15:54:57 +03:00
* [Getting started ](https://playwright.dev/docs/intro )
* [Installation configuration ](https://playwright.dev/docs/installation )
* [API reference ](https://playwright.dev/docs/api/class-playwright )
2020-04-23 23:50:12 +03:00
2020-04-24 22:19:31 +03:00
## Capabilities
Playwright is built to automate the broad and growing set of web browser capabilities used by Single Page Apps and Progressive Web Apps.
* Scenarios that span multiple page, domains and iframes
* Auto-wait for elements to be ready before executing actions (like click, fill)
* Intercept network activity for stubbing and mocking network requests
* Emulate mobile devices, geolocation, permissions
2020-05-08 20:32:24 +03:00
* Support for web components via shadow-piercing selectors
2020-04-24 22:19:31 +03:00
* Native input events for mouse and keyboard
* Upload and download files
## Examples
2020-04-23 23:50:12 +03:00
#### Page screenshot
2022-01-10 21:22:36 +03:00
This code snippet navigates to whatsmyuseragent.org and saves a screenshot.
2020-04-23 23:50:12 +03:00
2022-01-10 21:22:36 +03:00
```TypeScript
import { test } from '@playwright/test';
2020-04-23 23:50:12 +03:00
2022-01-10 21:22:36 +03:00
test('Page Screenshot', async ({ page }) => {
2020-04-23 23:50:12 +03:00
await page.goto('http://whatsmyuseragent.org/');
2022-01-10 21:22:36 +03:00
await page.screenshot({ path: `example.png` });
});
2020-04-23 23:50:12 +03:00
```
#### Mobile and geolocation
This snippet emulates Mobile Safari on a device at a given geolocation, navigates to maps.google.com, performs action and takes a screenshot.
2022-01-10 21:22:36 +03:00
```TypeScript
import { test, devices } from '@playwright/test';
test.use({
...devices['iPhone 13 Pro'],
locale: 'en-US',
geolocation: { longitude: 12.492507, latitude: 41.889938 },
permissions: ['geolocation'],
})
test('Mobile and geolocation', async ({ page }) => {
2020-04-23 23:50:12 +03:00
await page.goto('https://maps.google.com');
2022-01-10 21:22:36 +03:00
await page.locator('text="Your location"').click();
2020-04-23 23:50:12 +03:00
await page.waitForRequest(/.*preview\/pwa/);
await page.screenshot({ path: 'colosseum-iphone.png' });
2022-01-10 21:22:36 +03:00
});
2020-04-23 23:50:12 +03:00
```
#### Evaluate in browser context
2022-01-10 21:22:36 +03:00
This code snippet navigates to example.com, and executes a script in the page context.
2020-04-23 23:50:12 +03:00
2022-01-10 21:22:36 +03:00
```TypeScript
import { test } from '@playwright/test';
2020-04-23 23:50:12 +03:00
2022-01-10 21:22:36 +03:00
test('Evaluate in browser context', async ({ page }) => {
2020-04-23 23:50:12 +03:00
await page.goto('https://www.example.com/');
const dimensions = await page.evaluate(() => {
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight,
deviceScaleFactor: window.devicePixelRatio
}
2020-05-07 22:33:35 +03:00
});
2020-04-23 23:50:12 +03:00
console.log(dimensions);
2022-01-10 21:22:36 +03:00
});
2020-04-23 23:50:12 +03:00
```
#### Intercept network requests
2022-01-10 21:22:36 +03:00
This code snippet sets up request routing for a page to log all network requests.
2020-04-23 23:50:12 +03:00
2022-01-10 21:22:36 +03:00
```TypeScript
import { test } from '@playwright/test';
2020-04-23 23:50:12 +03:00
2022-01-10 21:22:36 +03:00
test('Intercept network requests', async ({ page }) => {
2020-04-23 23:50:12 +03:00
// Log and continue all network requests
2021-10-22 19:06:26 +03:00
await page.route('**', route => {
2020-04-23 23:50:12 +03:00
console.log(route.request().url());
route.continue();
});
await page.goto('http://todomvc.com');
2022-01-10 21:22:36 +03:00
});
2020-04-23 23:50:12 +03:00
```
## Resources
2022-01-28 00:00:09 +03:00
* [Documentation ](https://playwright.dev/docs/intro )
2021-02-24 19:16:27 +03:00
* [API reference ](https://playwright.dev/docs/api/class-playwright/ )
* [Community showcase ](https://playwright.dev/docs/showcase/ )
2020-07-31 21:58:12 +03:00
* [Contribution guide ](CONTRIBUTING.md )
* [Changelog ](https://github.com/microsoft/playwright/releases )