🎭 Playwright
Documentation | API reference
Playwright is a Node.js library to automate Chromium, Firefox and WebKit with a single API. Playwright is built to enable cross-browser web automation that is ever-green, capable, reliable and fast.
Linux | macOS | Windows | |
---|---|---|---|
Chromium 86.0.4238.0 | ✅ | ✅ | ✅ |
WebKit 14.0 | ✅ | ✅ | ✅ |
Firefox 80.0b8 | ✅ | ✅ | ✅ |
Headless execution is supported for all the browsers on all platforms. Check out system requirements for details.
Usage
npm i -D playwright
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.
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
- Support for web components via shadow-piercing selectors
- Native input events for mouse and keyboard
- Upload and download files
Examples
Page screenshot
This code snippet navigates to whatsmyuseragent.org in Chromium, Firefox and WebKit, and saves 3 screenshots.
const playwright = ; async { for const browserType of 'chromium' 'firefox' 'webkit' const browser = await playwrightbrowserType; const context = await browser; const page = await context; await page; await page; await browser; };
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.
const webkit devices = ;const iPhone11 = devices'iPhone 11 Pro'; async { const browser = await webkit; const context = await browser; const page = await context; await page; await page; await page; await page; await browser;};
Evaluate in browser context
This code snippet navigates to example.com in Firefox, and executes a script in the page context.
const firefox = ; async { const browser = await firefox; const context = await browser; const page = await context; await page; const dimensions = await page; console; await browser;};
Intercept network requests
This code snippet sets up request routing for a WebKit page to log all network requests.
const webkit = ; async { const browser = await webkit; const context = await browser; const page = await context; // Log and continue all network requests page; await page; await browser;};