2020-09-09 17:31:42 -07:00
# 🎭 Playwright CLI [](https://www.npmjs.com/package/playwright-cli) [](https://join.slack.com/t/playwright/shared_invite/enQtOTEyMTUxMzgxMjIwLThjMDUxZmIyNTRiMTJjNjIyMzdmZDA3MTQxZWUwZTFjZjQwNGYxZGM5MzRmNzZlMWI5ZWUyOTkzMjE5Njg1NDg)
2020-06-19 11:49:43 -07:00
2020-09-08 16:29:12 -07:00
Playwright CLI is utility tool for [Playwright ](https://github.com/Microsoft/playwright ). With the CLI, you can:
2020-09-03 12:38:44 -07:00
2020-09-08 16:09:22 -07:00
* [Generate code ](#generate-code ): Record user interactions and generate Playwright scripts.
2020-09-08 16:29:12 -07:00
* [Open pages ](#open-pages ): Open pages in Chromium, Firefox and WebKit (Safari) on all platforms.
2020-09-08 16:09:22 -07:00
* Emulate [devices ](#emulate-devices ), [color schemes ](#emulate-color-scheme-and-viewport-size ) and [geolocation ](#emulate-geolocation-language-and-timezone ).
* [Inspect selectors ](#inspect-selectors ): Use the Playwright DevTools API to inspect selectors.
* Generate [page screenshots ](#take-screenshot ) and [PDFs ](#generate-pdf )
2020-09-03 12:38:44 -07:00
## Usage
2020-09-08 16:09:22 -07:00
``` sh
$ npx playwright-cli --help
2020-09-03 12:38:44 -07:00
2020-09-08 16:29:12 -07:00
# To save as a dependency
2020-09-05 23:16:29 +02:00
$ npm install -D playwright-cli
2020-06-19 12:11:43 -07:00
```
2020-06-19 11:49:43 -07:00
2020-09-08 16:09:22 -07:00
## Generate code
2020-09-03 12:38:44 -07:00
2020-09-08 16:09:22 -07:00
``` sh
$ npx playwright-cli codegen wikipedia.org
2020-09-03 12:38:44 -07:00
```
2020-06-19 11:49:43 -07:00
2020-09-08 16:29:12 -07:00
Run `codegen` and perform actions in the browser. Playwright CLI will generate JavaScript code for the user interactions. `codegen` will attempt to generate resilient text-based selectors.
2020-09-03 12:38:44 -07:00
2020-09-08 16:09:22 -07:00
<img src="https://user-images.githubusercontent.com/284612/92536033-7e7ebe00-f1ed-11ea-9e1a-7cbd912e3391.gif">
2020-09-03 12:38:44 -07:00
2020-09-08 16:29:12 -07:00
## Open pages
2020-09-08 16:09:22 -07:00
2020-09-08 16:29:12 -07:00
With `open` , you can use Playwright bundled browsers to browse web pages. Playwright provides cross-platform WebKit builds that can be used to reproduce Safari rendering across Windows, Linux and macOS.
2020-09-03 12:38:44 -07:00
``` sh
# Open page in Chromium
npx playwright-cli open example.com
```
``` sh
# Open page in WebKit
npx playwright-cli wk example.com
```
2020-09-08 16:09:22 -07:00
### Emulate devices
2020-09-08 16:29:12 -07:00
`open` can emulate mobile and tablet devices ([see all devices ](https://github.com/microsoft/playwright/blob/master/src/server/deviceDescriptors.ts )).
2020-09-08 16:09:22 -07:00
``` sh
# Emulate iPhone 11.
2020-09-08 16:29:12 -07:00
npx playwright-cli --device= "iPhone 11" open wikipedia.org
2020-09-08 16:09:22 -07:00
```
### Emulate color scheme and viewport size
2020-09-03 12:38:44 -07:00
``` sh
# Emulate screen size and color scheme.
2020-09-08 16:29:12 -07:00
npx playwright-cli --viewport-size= 800,600 --color-scheme= dark open twitter.com
2020-09-03 12:38:44 -07:00
```
2020-09-08 16:09:22 -07:00
### Emulate geolocation, language and timezone
2020-09-03 12:38:44 -07:00
``` sh
2020-09-08 16:09:22 -07:00
# Emulate timezone, language & location
2020-09-03 12:38:44 -07:00
# Once page opens, click the "my location" button to see geolocation in action
2020-09-08 16:29:12 -07:00
npx playwright-cli --timezone= "Europe/Rome" --geolocation= "41.890221,12.492348" --lang= "it-IT" open maps.google.com
2020-09-03 12:38:44 -07:00
```
2020-09-08 16:09:22 -07:00
## Inspect selectors
During `open` or `codegen` , you can use following API inside the developer tools console of any browser.
2020-09-03 12:38:44 -07:00
2020-09-08 16:29:12 -07:00
<img src="https://user-images.githubusercontent.com/284612/92536317-37dd9380-f1ee-11ea-875d-daf1b206dd56.png">
2020-09-08 16:09:22 -07:00
#### playwright.$(selector)
2020-09-06 18:21:40 -07:00
Query Playwright selector, using the actual Playwright query engine, for example:
``` js
> playwright . $ ( '.auth-form >> text=Log in' ) ;
< button > Log in < / b u t t o n >
```
2020-09-08 16:09:22 -07:00
#### playwright.$$(selector)
2020-09-06 18:21:40 -07:00
Same as `playwright.$` , but returns all matching elements.
``` js
> playwright . $$ ( 'li >> text=John' )
> [ < li > , < li > , < li > , < li > ]
```
2020-09-08 16:09:22 -07:00
#### playwright.inspect(selector)
2020-09-06 18:21:40 -07:00
2020-09-08 16:29:12 -07:00
Reveal element in the Elements panel (if DevTools of the respective browser supports it).
2020-09-06 18:21:40 -07:00
``` js
> playwright . inspect ( 'text=Log in' )
```
2020-09-08 16:09:22 -07:00
#### playwright.selector(element)
2020-09-06 18:21:40 -07:00
2020-09-08 16:29:12 -07:00
Generates selector for the given element.
2020-09-06 18:21:40 -07:00
``` js
> playwright . selector ( $0 )
"div[id=" glow - ingress - block "] >> text=/.*Hello.*/"
```
2020-09-08 16:09:22 -07:00
## Take screenshot
2020-09-08 16:29:12 -07:00
2020-09-08 16:09:22 -07:00
``` sh
# See command help
$ npx playwright-cli screenshot --help
```
``` sh
# Wait 3 seconds before capturing a screenshot after page loads ('load' event fires)
npx playwright-cli \
--device= "iPhone 11" \
--color-scheme= dark \
screenshot \
--wait-for-timeout= 3000 \
2020-09-08 16:29:12 -07:00
twitter.com twitter-iphone.png
2020-09-08 16:09:22 -07:00
```
``` sh
# Capture a full page screenshot
npx playwright-cli screenshot --full-page en.wikipedia.org wiki-full.png
```
## Generate PDF
PDF generation only works in Headless Chromium.
``` sh
# See command help
$ npx playwright-cli pdf https://en.wikipedia.org/wiki/PDF wiki.pdf
```
## Known limitations
2020-09-08 16:29:12 -07:00
Opening WebKit Web Inspector will disconnect Playwright from the browser. In such cases, code generation will stop.