Compare Versions - playwright
npm / playwright / Compare Versions
Highlights
#39121 fix(trace viewer): make paths via stdin work #39129 fix: do not force swiftshader on chromium mac
Browser Versions
- Chromium 145.0.7632.6
- Mozilla Firefox 146.0.1
- WebKit 26.0
Highlights
#39036 fix(msedge): fix local network permissions #39037 chore: update cft download location #38995 chore(webkit): disable frame sessions on fronzen builds
Browser Versions
- Chromium 145.0.7632.6
- Mozilla Firefox 146.0.1
- WebKit 26.0
📣 Playwright CLI+SKILLs 📣
We are adding a new token-efficient CLI mode of operation to Playwright with the skills located at playwright-cli. This brings the long-awaited official SKILL-focused CLI mode to our story and makes it more coding agent-friendly.
It is the first snapshot with the essential command set (which is already larger than the original MCP!), but we expect it to grow rapidly. Unlike the token use, that one we expect to go down since snapshots are no longer forced into the LLM!
Timeline
If you're using merged reports, the HTML report Speedboard tab now shows the Timeline:

UI Mode and Trace Viewer Improvements
- New 'system' theme option follows your OS dark/light mode preference
- Search functionality (Cmd/Ctrl+F) is now available in code editors
- Network details panel has been reorganized for better usability
- JSON responses are now automatically formatted for readability
Thanks to @cpAdm for contributing these improvements!
Miscellaneous
browserType.connectOverCDP() now accepts an isLocal option. When set to true, it tells Playwright that it runs on the same host as the CDP server, enabling file system optimizations.
Breaking Changes ⚠️
- Removed
_reactand_vueselectors. See locators guide for alternatives. - Removed
:lightselector engine suffix. Use standard CSS selectors instead. - Option
devtoolsfrom browserType.launch() has been removed. Useargs: ['--auto-open-devtools-for-tabs']instead. - Removed macOS 13 support for WebKit. We recommend to upgrade your macOS version, or keep using an older Playwright version.
Browser Versions
- Chromium 145.0.7632.6
- Mozilla Firefox 146.0.1
- WebKit 26.0
This version was also tested against the following stable channels:
- Google Chrome 144
- Microsoft Edge 144
Speedboard
In HTML reporter, there's a new tab we call "Speedboard":
It shows you all your executed tests sorted by slowness, and can help you understand where your test suite is taking longer than expected. Take a look at yours - maybe you'll find some tests that are spending a longer time waiting than they should!
Chrome for Testing
Starting with this release, Playwright switches from Chromium, to using Chrome for Testing builds. Both headed and headless browsers are subject to this. Your tests should still be passing after upgrading to Playwright 1.57.
We're expecting no functional changes to come from this switch. The biggest change is the new icon and title in your toolbar.
If you still see an unexpected behaviour change, please file an issue.
On Arm64 Linux, Playwright continues to use Chromium.
Waiting for webserver output
testConfig.webServer added a wait field. Pass a regular expression, and Playwright will wait until the webserver logs match it.
import { defineConfig } from '@playwright/test';
export default defineConfig({
webServer: {
command: 'npm run start',
wait: {
stdout: '/Listening on port (?<my_server_port>\\d+)/'
},
},
});
If you include a named capture group into the expression, then Playwright will provide the capture group contents via environment variables:
import { test, expect } from '@playwright/test';
test.use({ baseUrl: `http://localhost:${process.env.MY_SERVER_PORT ?? 3000}` });
test('homepage', async ({ page }) => {
await page.goto('/');
});
This is not just useful for capturing varying ports of dev servers. You can also use it to wait for readiness of a service that doesn't expose an HTTP readiness check, but instead prints a readiness message to stdout or stderr.
Breaking Change
After 3 years of being deprecated, we removed Page#accessibility from our API. Please use other libraries such as Axe if you need to test page accessibility. See our Node.js guide for integration with Axe.
New APIs
- New property testConfig.tag adds a tag to all tests in this run. This is useful when using merge-reports.
- worker.on('console') event is emitted when JavaScript within the worker calls one of console API methods, e.g. console.log or console.dir. worker.waitForEvent() can be used to wait for it.
- locator.description() returns locator description previously set with locator.describe(), and
Locator.toString()now uses the description when available. - New option
stepsin locator.click() and locator.dragTo() that configures the number ofmousemoveevents emitted while moving the mouse pointer to the target element. - Network requests issued by Service Workers are now reported and can be routed through the BrowserContext, only in Chromium. You can opt out using the
PLAYWRIGHT_DISABLE_SERVICE_WORKER_NETWORKenvironment variable. - Console messages from Service Workers are dispatched through worker.on('console'). You can opt out of this using the
PLAYWRIGHT_DISABLE_SERVICE_WORKER_CONSOLEenvironment variable.
Browser Versions
- Chromium 143.0.7499.4
- Mozilla Firefox 144.0.2
- WebKit 26.0
Highlights
#37871 chore: allow local-network-access permission in chromium #37891 fix(agents): remove workspaceFolder ref from vscode mcp #37759 chore: rename agents to test agents #37757 chore(mcp): fallback to cwd when resolving test config
Browser Versions
- Chromium 141.0.7390.37
- Mozilla Firefox 142.0.1
- WebKit 26.0
Playwright Agents
Introducing Playwright Agents, three custom agent definitions designed to guide LLMs through the core process of building a Playwright test:
- 🎭 planner explores the app and produces a Markdown test plan
- 🎭 generator transforms the Markdown plan into the Playwright Test files
- 🎭 healer executes the test suite and automatically repairs failing tests
Run npx playwright init-agents with your client of choice to generate the latest agent definitions:
# Generate agent files for each agentic loop
# Visual Studio Code
npx playwright init-agents --loop=vscode
# Claude Code
npx playwright init-agents --loop=claude
# opencode
npx playwright init-agents --loop=opencode
[!NOTE] VS Code v1.105 (currently on the VS Code Insiders channel) is needed for the agentic experience in VS Code. It will become stable shortly, we are a bit ahead of times with this functionality!
Learn more about Playwright Agents
New APIs
- New methods page.consoleMessages() and page.pageErrors() for retrieving the most recent console messages from the page
- New method page.requests() for retrieving the most recent network requests from the page
- Added
--test-listand--test-list-invertto allow manual specification of specific tests from a file
UI Mode and HTML Reporter
- Added option to
'html'reporter to disable the "Copy prompt" button - Added option to
'html'reporter and UI Mode to merge files, collapsing test and describe blocks into a single unified list - Added option to UI Mode mirroring the
--update-snapshotsoptions - Added option to UI Mode to run only a single worker at a time
Breaking Changes
- Event browserContext.on('backgroundpage') has been deprecated and will not be emitted. Method browserContext.backgroundPages() will return an empty list
Miscellaneous
- Aria snapshots render and compare
inputplaceholder - Added environment variable
PLAYWRIGHT_TESTto Playwright worker processes to allow discriminating on testing status
Browser Versions
- Chromium 141.0.7390.37
- Mozilla Firefox 142.0.1
- WebKit 26.0
Highlights
https://github.com/microsoft/playwright/issues/37479 - [Bug]: Upgrade Chromium to 140.0.7339.186. https://github.com/microsoft/playwright/issues/37147 - [Regression]: Internal error: step id not found. https://github.com/microsoft/playwright/issues/37146 - [Regression]: HTML reporter displays a broken chip link when there are no projects. https://github.com/microsoft/playwright/pull/37137 - Revert "fix(a11y): track inert elements as hidden". https://github.com/microsoft/playwright/pull/37532 - chore: do not use -k option
Browser Versions
- Chromium 140.0.7339.186
- Mozilla Firefox 141.0
- WebKit 26.0
This version was also tested against the following stable channels:
- Google Chrome 139
- Microsoft Edge 139
New APIs
- New Property testStepInfo.titlePath Returns the full title path starting from the test file, including test and step titles.
Codegen
- Automatic
toBeVisible()assertions: Codegen can now generate automatictoBeVisible()assertions for common UI interactions. This feature can be enabled in the Codegen settings UI.
Breaking Changes
- ⚠️ Dropped support for Chromium extension manifest v2.
Miscellaneous
- Added support for Debian 13 "Trixie".
Browser Versions
- Chromium 140.0.7339.16
- Mozilla Firefox 141.0
- WebKit 26.0
This version was also tested against the following stable channels:
- Google Chrome 139
- Microsoft Edge 139
Highlights
https://github.com/microsoft/playwright/issues/36714 - [Regression]: Codegen is not able to launch in Administrator Terminal on Windows (ProtocolError: Protocol error) https://github.com/microsoft/playwright/issues/36828 - [Regression]: Playwright Codegen keeps spamming with selected option https://github.com/microsoft/playwright/issues/36810 - [Regression]: Starting Codegen with target language doesn't work anymore
Browser Versions
- Chromium 139.0.7258.5
- Mozilla Firefox 140.0.2
- WebKit 26.0
This version was also tested against the following stable channels:
- Google Chrome 140
- Microsoft Edge 140
Highlights
https://github.com/microsoft/playwright/issues/36650 - [Regression]: 1.54.0 breaks downloading browsers when an HTTP(S) proxy is used
Browser Versions
- Chromium 139.0.7258.5
- Mozilla Firefox 140.0.2
- WebKit 26.0
This version was also tested against the following stable channels:
- Google Chrome 140
- Microsoft Edge 140
Highlights
-
New cookie property
partitionKeyin browserContext.cookies() and browserContext.addCookies(). This property allows to save and restore partitioned cookies. See CHIPS MDN article for more information. Note that browsers have different support and defaults for cookie partitioning. -
New option
noSnippetsto disable code snippets in the html report.import { defineConfig } from '@playwright/test'; export default defineConfig({ reporter: [['html', { noSnippets: true }]] }); -
New property
locationin test annotations, for example in testResult.annotations and testInfo.annotations. It shows where the annotation liketest.skiportest.fixmewas added.
Command Line
-
New option
--user-data-dirin multiple commands. You can specify the same user data dir to reuse browsing state, like authentication, between sessions.npx playwright codegen --user-data-dir=./user-data -
Option
-gvhas been removed from thenpx playwright testcommand. Use--grep-invertinstead. -
npx playwright opendoes not open the test recorder anymore. Usenpx playwright codegeninstead.
Miscellaneous
- Support for Node.js 16 has been removed.
- Support for Node.js 18 has been deprecated, and will be removed in the future.
Browser Versions
- Chromium 139.0.7258.5
- Mozilla Firefox 140.0.2
- WebKit 26.0
This version was also tested against the following stable channels:
- Google Chrome 140
- Microsoft Edge 140
Highlights
https://github.com/microsoft/playwright/issues/36317 - [Regression]: Merging pre-1.53 blob reports loses attachments
https://github.com/microsoft/playwright/pull/36357 - [Regression (Chromium)]: CDP missing trailing slash
https://github.com/microsoft/playwright/issues/36292 - [Bug (MSEdge)]: Edge fails to launch when using msRelaunchNoCompatLayer
Browser Versions
- Chromium 138.0.7204.23
- Mozilla Firefox 139.0
- WebKit 18.5
This version was also tested against the following stable channels:
- Google Chrome 137
- Microsoft Edge 137
Highlights
https://github.com/microsoft/playwright/issues/36339 - [Regression]: Click can fail when scrolling required
https://github.com/microsoft/playwright/issues/36307 - [Regression (Chromium)]: Under some scenarios filling a textarea doesn't fill
https://github.com/microsoft/playwright/issues/36294 - [Regression (Firefox)]: setViewportSize times out
https://github.com/microsoft/playwright/pull/36350 - [Fix]: Display HTTP method for fetch trace entries
Browser Versions
- Chromium 138.0.7204.23
- Mozilla Firefox 139.0
- WebKit 18.5
This version was also tested against the following stable channels:
- Google Chrome 137
- Microsoft Edge 137
Trace Viewer and HTML Reporter Updates
-
New Steps in Trace Viewer and HTML reporter:
-
New option in
'html'reporter to set the title of a specific test run:import { defineConfig } from '@playwright/test'; export default defineConfig({ reporter: [['html', { title: 'Custom test run #1028' }]] });
Miscellaneous
-
New option
kindin testInfo.snapshotPath() controls which snapshot path template is used. -
New method locator.describe() to describe a locator. Used for trace viewer and reports.
const button = page.getByTestId('btn-sub').describe('Subscribe button'); await button.click(); -
npx playwright install --listwill now list all installed browsers, versions and locations.
Browser Versions
- Chromium 138.0.7204.4
- Mozilla Firefox 139.0
- WebKit 18.5
This version was also tested against the following stable channels:
- Google Chrome 137
- Microsoft Edge 137
Highlights
-
New method expect(locator).toContainClass() to ergonomically assert individual class names on the element.
await expect(page.getByRole('listitem', { name: 'Ship v1.52' })).toContainClass('done'); -
Aria Snapshots got two new properties:
/childrenfor strict matching and/urlfor links.await expect(locator).toMatchAriaSnapshot(` - list - /children: equal - listitem: Feature A - listitem: - link "Feature B": - /url: "https://playwright.dev" `);
Test Runner
- New property testProject.workers allows to specify the number of concurrent worker processes to use for a test project. The global limit of property testConfig.workers still applies.
- New testConfig.failOnFlakyTests option to fail the test run if any flaky tests are detected, similarly to
--fail-on-flaky-tests. This is useful for CI/CD environments where you want to ensure that all tests are stable before deploying. - New property testResult.annotations contains annotations for each test retry.
Miscellaneous
- New option
maxRedirectsin apiRequest.newContext() to control the maximum number of redirects. - HTML reporter now supports NOT filtering via
!@my-tagor!my-file.spec.tsor!p:my-project.
Breaking Changes
- Changes to glob URL patterns in methods like page.route():
?wildcard is not supported any more, it will always match question mark?character.- Ranges/sets
[]are not supported anymore. We recommend using regular expressions instead.
- Method route.continue() does not allow to override the
Cookieheader anymore. If aCookieheader is provided, it will be ignored, and the cookie will be loaded from the browser's cookie store. To set custom cookies, use browserContext.addCookies(). - macOS 13 is now deprecated and will no longer receive WebKit updates. Please upgrade to a more recent macOS version to continue benefiting from the latest WebKit improvements.
Browser Versions
- Chromium 136.0.7103.25
- Mozilla Firefox 137.0
- WebKit 18.4
This version was also tested against the following stable channels:
- Google Chrome 135
- Microsoft Edge 135
Highlights
https://github.com/microsoft/playwright/issues/35093 - [Regression]: TimeoutOverflowWarning: 2149630296.634 does not fit into a 32-bit signed integer https://github.com/microsoft/playwright/issues/35138 - [Regression]: TypeError: Cannot read properties of undefined (reading 'expectInfo')
Browser Versions
- Chromium 134.0.6998.35
- Mozilla Firefox 135.0
- WebKit 18.4
This version was also tested against the following stable channels:
- Google Chrome 133
- Microsoft Edge 133
StorageState for indexedDB
-
New option
indexedDBfor browserContext.storageState() allows to save and restore IndexedDB contents. Useful when your application uses IndexedDB API to store authentication tokens, like Firebase Authentication.Here is an example following the authentication guide:
// tests/auth.setup.ts import { test as setup, expect } from '@playwright/test'; import path from 'path'; const authFile = path.join(__dirname, '../playwright/.auth/user.json'); setup('authenticate', async ({ page }) => { await page.goto('/'); // ... perform authentication steps ... // make sure to save indexedDB await page.context().storageState({ path: authFile, indexedDB: true }); });
Copy prompt
New "Copy prompt" button on errors in the HTML report, trace viewer and UI mode. Click to copy a pre-filled LLM prompt that contains the error message and useful context for fixing the error.
Filter visible elements
New option visible for locator.filter() allows matching only visible elements.
// example.spec.ts
test('some test', async ({ page }) => {
// Ignore invisible todo items.
const todoItems = page.getByTestId('todo-item').filter({ visible: true });
// Check there are exactly 3 visible ones.
await expect(todoItems).toHaveCount(3);
});
Git information in HTML report
Set option testConfig.captureGitInfo to capture git information into testConfig.metadata.
// playwright.config.ts
import { defineConfig } from '@playwright/test';
export default defineConfig({
captureGitInfo: { commit: true, diff: true }
});
HTML report will show this information when available:
Test Step improvements
A new TestStepInfo object is now available in test steps. You can add step attachments or skip the step under some conditions.
test('some test', async ({ page, isMobile }) => {
// Note the new "step" argument:
await test.step('here is my step', async step => {
step.skip(isMobile, 'not relevant on mobile layouts');
// ...
await step.attach('my attachment', { body: 'some text' });
// ...
});
});
Miscellaneous
- New option
contrastfor methods page.emulateMedia() and browser.newContext() allows to emulate theprefers-contrastmedia feature. - New option
failOnStatusCodemakes all fetch requests made through the APIRequestContext throw on response codes other than 2xx and 3xx. - Assertion expect(page).toHaveURL() now supports a predicate.
Browser Versions
- Chromium 134.0.6998.35
- Mozilla Firefox 135.0
- WebKit 18.4
This version was also tested against the following stable channels:
- Google Chrome 133
- Microsoft Edge 133
Highlights
https://github.com/microsoft/playwright/issues/34483 - [Feature]: single aria snapshot for different engines/browsers https://github.com/microsoft/playwright/issues/34497 - [Bug]: Firefox not handling keepalive: true fetch requests https://github.com/microsoft/playwright/issues/34504 - [Bug]: update snapshots not creating good diffs https://github.com/microsoft/playwright/issues/34507 - [Bug]: snapshotPathTemplate doesnt work when multiple projects https://github.com/microsoft/playwright/issues/34462 - [Bug]: updateSnapshots "changed" throws an error
Browser Versions
- Chromium 133.0.6943.16
- Mozilla Firefox 134.0
- WebKit 18.2
This version was also tested against the following stable channels:
- Google Chrome 132
- Microsoft Edge 132
Test runner
-
New option
timeoutallows specifying a maximum run time for an individual test step. A timed-out step will fail the execution of the test.test('some test', async ({ page }) => { await test.step('a step', async () => { // This step can time out separately from the test }, { timeout: 1000 }); }); -
New method test.step.skip() to disable execution of a test step.
test('some test', async ({ page }) => { await test.step('before running step', async () => { // Normal step }); await test.step.skip('not yet ready', async () => { // This step is skipped }); await test.step('after running step', async () => { // This step still runs even though the previous one was skipped }); }); -
Expanded expect(locator).toMatchAriaSnapshot() to allow storing of aria snapshots in separate YAML files.
-
Added method expect(locator).toHaveAccessibleErrorMessage() to assert the Locator points to an element with a given aria errormessage.
-
Option testConfig.updateSnapshots added the configuration enum
changed.changedupdates only the snapshots that have changed, whereasallnow updates all snapshots, regardless of whether there are any differences. -
New option testConfig.updateSourceMethod defines the way source code is updated when testConfig.updateSnapshots is configured. Added
overwriteand3-waymodes that write the changes into source code, on top of existingpatchmode that creates a patch file.npx playwright test --update-snapshots=changed --update-source-method=3way -
Option testConfig.webServer added a
gracefulShutdownfield for specifying a process kill signal other than the defaultSIGKILL. -
Exposed testStep.attachments from the reporter API to allow retrieval of all attachments created by that step.
-
New option
pathTemplatefortoHaveScreenshotandtoMatchAriaSnapshotassertions in the testConfig.expect configuration.
UI updates
- Updated default HTML reporter to improve display of attachments.
- New button for picking elements to produce aria snapshots.
- Additional details (such as keys pressed) are now displayed alongside action API calls in traces.
- Display of
canvascontent in traces is error-prone. Display is now disabled by default, and can be enabled via theDisplay canvas contentUI setting. CallandNetworkpanels now display additional time information.
Breaking
- expect(locator).toBeEditable() and locator.isEditable() now throw if the target element is not
<input>,<select>, or a number of other editable elements. - Option testConfig.updateSnapshots now updates all snapshots when set to
all, rather than only the failed/changed snapshots. Use the new enumchangedto keep the old functionality of only updating the changed snapshots.
Browser Versions
- Chromium 133.0.6943.16
- Mozilla Firefox 134.0
- WebKit 18.2
This version was also tested against the following stable channels:
- Google Chrome 132
- Microsoft Edge 132
Highlights
https://github.com/microsoft/playwright/issues/33802 - [Bug]: Codegen's Clear button doesn't work if not recording https://github.com/microsoft/playwright/issues/33806 - [Bug]: playwright hangs while waiting for pending navigations https://github.com/microsoft/playwright/issues/33787 - [Bug]: VSC extension isn't capturing all entered text https://github.com/microsoft/playwright/issues/33788 - [Regression]: Double clicking the steps in trace viewer doesn't filter actions https://github.com/microsoft/playwright/issues/33772 - [Bug]: aria_snapshot generates invalid yaml when combined with an aria-label attribut https://github.com/microsoft/playwright/issues/33791 - [Bug]: text input with number value raises "container is not iterable" with to_match_aria_snapshot https://github.com/microsoft/playwright/issues/33644 - [Bug]: getByRole can't find element with the accessible name from label element when aria-labelledby is not valid https://github.com/microsoft/playwright/issues/33660 - [Regression]: Unable to open Playwright UI in Dark Mode
Browser Versions
- Chromium 131.0.6778.33
- Mozilla Firefox 132.0
- WebKit 18.2
This version was also tested against the following stable channels:
- Google Chrome 130
- Microsoft Edge 130
Aria snapshots
New assertion expect(locator).toMatchAriaSnapshot() verifies page structure by comparing to an expected accessibility tree, represented as YAML.
await page.goto('https://playwright.dev');
await expect(page.locator('body')).toMatchAriaSnapshot(`
- banner:
- heading /Playwright enables reliable/ [level=1]
- link "Get started"
- link "Star microsoft/playwright on GitHub"
- main:
- img "Browsers (Chromium, Firefox, WebKit)"
- heading "Any browser • Any platform • One API"
`);
You can generate this assertion with Test Generator and update the expected snapshot with --update-snapshots command line flag.
Learn more in the aria snapshots guide.
Test runner
- New option testConfig.tsconfig allows to specify a single
tsconfigto be used for all tests. - New method test.fail.only() to focus on a failing test.
- Options testConfig.globalSetup and testConfig.globalTeardown now support multiple setups/teardowns.
- New value
'on-first-failure'for testOptions.screenshot. - Added "previous" and "next" buttons to the HTML report to quickly switch between test cases.
- New properties testInfoError.cause and testError.cause mirroring
Error.cause.
Breaking: channels chrome, msedge and similar switch to new headless
This change affects you if you're using one of the following channels in your playwright.config.ts:
chrome,chrome-dev,chrome-beta, orchrome-canarymsedge,msedge-dev,msedge-beta, ormsedge-canary
What do I need to do?
After updating to Playwright v1.49, run your test suite. If it still passes, you're good to go. If not, you will probably need to update your snapshots, and adapt some of your test code around PDF viewers and extensions. See issue #33566 for more details.
Other breaking changes
- There will be no more updates for WebKit on Ubuntu 20.04 and Debian 11. We recommend updating your OS to a later version.
- Package
@playwright/experimental-ct-vue2will no longer be updated. - Package
@playwright/experimental-ct-solidwill no longer be updated.
Try new Chromium headless
You can opt into the new headless mode by using 'chromium' channel. As official Chrome documentation puts it:
New Headless on the other hand is the real Chrome browser, and is thus more authentic, reliable, and offers more features. This makes it more suitable for high-accuracy end-to-end web app testing or browser extension testing.
See issue #33566 for the list of possible breakages you could encounter and more details on Chromium headless. Please file an issue if you see any problems after opting in.
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'], channel: 'chromium' },
},
],
});
Miscellaneous
<canvas>elements inside a snapshot now draw a preview.- New method tracing.group() to visually group actions in the trace.
- Playwright docker images switched from Node.js v20 to Node.js v22 LTS.
Browser Versions
- Chromium 131.0.6778.33
- Mozilla Firefox 132.0
- WebKit 18.2
This version was also tested against the following stable channels:
- Google Chrome 130
- Microsoft Edge 130
Highlights
https://github.com/microsoft/playwright/issues/33141 - [Bug]: UI Mode crashed https://github.com/microsoft/playwright/issues/33219 - [BUG] Trace Viewer PWA crashes with "Aw, Snap!" https://github.com/microsoft/playwright/issues/33086 - [Bug]: UI Mode Memory problem https://github.com/microsoft/playwright/issues/33000 - [Regression]: Inspector and Browser doesn't close on CTRL+C https://github.com/microsoft/playwright/issues/33204 - [Bug]: Chrome tab and inspector not closing after terminating session in terminal
Browser Versions
- Chromium 130.0.6723.19
- Mozilla Firefox 130.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 129
- Microsoft Edge 129
Highlights
https://github.com/microsoft/playwright/issues/33023 - [Bug]: command line flag --headed has no effect in ui mode https://github.com/microsoft/playwright/issues/33107 - [REGRESSION]: page.waitForRequest does not get resolved since 1.48.0 https://github.com/microsoft/playwright/issues/33085 - [Bug]: WebSocket route does not handle full URLs in Playwright https://github.com/microsoft/playwright/issues/33052 - [Regression]: Inspector not showing recorded steps https://github.com/microsoft/playwright/issues/33132 - [Bug]: Wrong Ubuntu release name in Dockerfile.noble https://github.com/microsoft/playwright/pull/32996 - [BUG] Trace attachments have small unusable height
Browser Versions
- Chromium 130.0.6723.19
- Mozilla Firefox 130.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 129
- Microsoft Edge 129
WebSocket routing
New methods page.routeWebSocket() and browserContext.routeWebSocket() allow to intercept, modify and mock WebSocket connections initiated in the page. Below is a simple example that mocks WebSocket communication by responding to a "request" with a "response".
await page.routeWebSocket('/ws', ws => {
ws.onMessage(message => {
if (message === 'request')
ws.send('response');
});
});
See WebSocketRoute for more details.
UI updates
- New "copy" buttons for annotations and test location in the HTML report.
- Route method calls like route.fulfill() are not shown in the report and trace viewer anymore. You can see which network requests were routed in the network tab instead.
- New "Copy as cURL" and "Copy as fetch" buttons for requests in the network tab.
Miscellaneous
- Option
formand similar ones now accept FormData. - New method page.requestGC() may help detect memory leaks.
- New option
locationto pass custom step location. - Requests made by APIRequestContext now record detailed timing and security information in the HAR.
Browser Versions
- Chromium 130.0.6723.19
- Mozilla Firefox 130.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 129
- Microsoft Edge 129
Highlights
https://github.com/microsoft/playwright/pull/32699- [REGRESSION]: fix(codegen): use content_frame property in python/.NET https://github.com/microsoft/playwright/issues/32706- [REGRESSION]: page.pause() does not pause test timeout after 1.47 https://github.com/microsoft/playwright/pull/32661 - fix(trace-viewer): time delta between local and remote actions
Browser Versions
- Chromium 129.0.6668.29
- Mozilla Firefox 130.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 128
- Microsoft Edge 128
Highlights
https://github.com/microsoft/playwright/issues/32480 - [REGRESSION]: tsconfig.json's compilerOptions.paths no longer working in 1.47 https://github.com/microsoft/playwright/issues/32552 - [REGRESSION]: broken UI in Trace Viewer while showing network response body
Browser Versions
- Chromium 129.0.6668.29
- Mozilla Firefox 130.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 128
- Microsoft Edge 128
Network Tab improvements
The Network tab in the UI mode and trace viewer has several nice improvements:
- filtering by asset type and URL
- better display of query string parameters
- preview of font assets
Credit to @kubajanik for these wonderful improvements!
--tsconfig CLI option
By default, Playwright will look up the closest tsconfig for each imported file using a heuristic. You can now specify a single tsconfig file in the command line, and Playwright will use it for all imported files, not only test files:
# Pass a specific tsconfig
npx playwright test --tsconfig tsconfig.test.json
APIRequestContext now accepts URLSearchParams and string as query parameters
You can now pass URLSearchParams and string as query parameters to APIRequestContext:
test('query params', async ({ request }) => {
const searchParams = new URLSearchParams();
searchParams.set('userId', 1);
const response = await request.get(
'https://jsonplaceholder.typicode.com/posts',
{
params: searchParams // or as a string: 'userId=1'
}
);
// ...
});
Miscellaneous
- The
mcr.microsoft.com/playwright:v1.47.0now serves a Playwright image based on Ubuntu 24.04 Noble. To use the 22.04 jammy-based image, please usemcr.microsoft.com/playwright:v1.47.0-jammyinstead. - The
:latest/:focal/:jammytag for Playwright Docker images is no longer being published. Pin to a specific version for better stability and reproducibility. - New option
behaviorin page.removeAllListeners(), browser.removeAllListeners() and browserContext.removeAllListeners() to wait for ongoing listeners to complete. - TLS client certificates can now be passed from memory by passing
certandkeyas buffers instead of file paths. - Attachments with a
text/htmlcontent type can now be opened in a new tab in the HTML report. This is useful for including third-party reports or other HTML content in the Playwright test report and distributing it to your team. noWaitAfterin locator.selectOption() was deprecated.- We've seen reports of WebGL in Webkit misbehaving on GitHub Actions
macos-13. We recommend upgrading GitHub Actions tomacos-14.
Browser Versions
- Chromium 129.0.6668.29
- Mozilla Firefox 130.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 128
- Microsoft Edge 128
Highlights
https://github.com/microsoft/playwright/issues/32004 - [REGRESSION]: Client Certificates don't work with Microsoft IIS https://github.com/microsoft/playwright/issues/32004 - [REGRESSION]: Websites stall on TLS handshake errors when using Client Certificates https://github.com/microsoft/playwright/issues/32146 - [BUG]: Credential scanners warn about internal socks-proxy TLS certificates https://github.com/microsoft/playwright/issues/32056 - [REGRESSION]: 1.46.0 (TypeScript) - custom fixtures extend no longer chainable https://github.com/microsoft/playwright/issues/32070 - [Bug]: --only-changed flag and project dependencies https://github.com/microsoft/playwright/issues/32188 - [Bug]: --only-changed with shallow clone throws "unknown revision" error
Browser Versions
- Chromium 128.0.6613.18
- Mozilla Firefox 128.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 127
- Microsoft Edge 127
TLS Client Certificates
Playwright now allows to supply client-side certificates, so that server can verify them, as specified by TLS Client Authentication.
When client certificates are specified, all browser traffic is routed through a proxy that establishes the secure TLS connection, provides client certificates to the server and validates server certificates.
The following snippet sets up a client certificate for https://example.com:
import { defineConfig } from '@playwright/test';
export default defineConfig({
// ...
use: {
clientCertificates: [{
origin: 'https://example.com',
certPath: './cert.pem',
keyPath: './key.pem',
passphrase: 'mysecretpassword',
}],
},
// ...
});
You can also provide client certificates to a particular test project or as a parameter of browser.newContext() and apiRequest.newContext().
--only-changed cli option
New CLI option --only-changed allows to only run test files that have been changed since the last git commit or from a specific git "ref".
# Only run test files with uncommitted changes
npx playwright test --only-changed
# Only run test files changed relative to the "main" branch
npx playwright test --only-changed=main
Component Testing: New router fixture
This release introduces an experimental router fixture to intercept and handle network requests in component testing.
There are two ways to use the router fixture:
- Call
router.route(url, handler)that behaves similarly to page.route(). - Call
router.use(handlers)and pass MSW library request handlers to it.
Here is an example of reusing your existing MSW handlers in the test.
import { handlers } from '@src/mocks/handlers';
test.beforeEach(async ({ router }) => {
// install common handlers before each test
await router.use(...handlers);
});
test('example test', async ({ mount }) => {
// test as usual, your handlers are active
// ...
});
This fixture is only available in component tests.
UI Mode / Trace Viewer Updates
- Test annotations are now shown in UI mode.
- Content of text attachments is now rendered inline in the attachments pane.
- New setting to show/hide routing actions like route.continue().
- Request method and status are shown in the network details tab.
- New button to copy source file location to clipboard.
- Metadata pane now displays the
baseURL.
Miscellaneous
- New
maxRetriesoption in apiRequestContext.fetch() which retries on theECONNRESETnetwork error. - New option to box a fixture to minimize the fixture exposure in test reports and error messages.
- New option to provide a custom fixture title to be used in test reports and error messages.
Possibly breaking change
Fixture values that are array of objects, when specified in the test.use() block, may require being wrapped into a fixture tuple. This is best seen on the example:
import { test as base } from '@playwright/test';
// Define an option fixture that has an "array of objects" value
type User = { name: string, password: string };
const test = base.extend<{ users: User[] }>({
users: [ [], { option: true } ],
});
// Specify option value in the test.use block.
test.use({
// WRONG: this syntax may not work for you
users: [
{ name: 'John Doe', password: 'secret' },
{ name: 'John Smith', password: 's3cr3t' },
],
// CORRECT: this syntax will work. Note extra [] around the value, and the "scope" property.
users: [[
{ name: 'John Doe', password: 'secret' },
{ name: 'John Smith', password: 's3cr3t' },
], { scope: 'test' }],
});
test('example test', async () => {
// ...
});
Browser Versions
- Chromium 128.0.6613.18
- Mozilla Firefox 128.0
- WebKit 18.0
This version was also tested against the following stable channels:
- Google Chrome 127
- Microsoft Edge 127
Highlights
https://github.com/microsoft/playwright/issues/31764 - [Bug]: some actions do not appear in the trace file https://github.com/microsoft/playwright-java/issues/1617 - [Bug]: Traceviewer not reporting all actions
Browser Versions
- Chromium 127.0.6533.5
- Mozilla Firefox 127.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 126
- Microsoft Edge 126
Highlights
https://github.com/microsoft/playwright/issues/31613 - [REGRESSION]: Trace is not showing any screenshots nor test name https://github.com/microsoft/playwright/issues/31601 - [REGRESSION]: missing trace for 2nd browser https://github.com/microsoft/playwright/issues/31541 - [REGRESSION]: Failing tests have a trace with no images and with steps missing
Browser Versions
- Chromium 127.0.6533.5
- Mozilla Firefox 127.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 126
- Microsoft Edge 126
Highlights
https://github.com/microsoft/playwright/issues/31473 - [REGRESSION]: Playwright raises an error ENOENT: no such file or directory, open 'test-results/.playwright-artifacts-0/hash.zip' with Electron
https://github.com/microsoft/playwright/issues/31442 - [REGRESSION]: Locators of elements changing from/to hidden have operations hanging when using --disable-web-security
https://github.com/microsoft/playwright/issues/31431 - [REGRESSION]: NewTab doesn't work properly with Chrome with --disable-web-security
https://github.com/microsoft/playwright/issues/31425 - [REGRESSION]: beforeEach hooks are not skipped when describe condition depends on fixtures
https://github.com/microsoft/playwright/issues/31491 - [REGRESSION]: @playwright/experimental-ct-react doesn't work with VSCode extension and PNPM
Browser Versions
- Chromium 127.0.6533.5
- Mozilla Firefox 127.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 126
- Microsoft Edge 126
Clock
Utilizing the new Clock API allows to manipulate and control time within tests to verify time-related behavior. This API covers many common scenarios, including:
- testing with predefined time;
- keeping consistent time and timers;
- monitoring inactivity;
- ticking through time manually.
// Initialize clock and let the page load naturally.
await page.clock.install({ time: new Date('2024-02-02T08:00:00') });
await page.goto('http://localhost:3333');
// Pretend that the user closed the laptop lid and opened it again at 10am,
// Pause the time once reached that point.
await page.clock.pauseAt(new Date('2024-02-02T10:00:00'));
// Assert the page state.
await expect(page.getByTestId('current-time')).toHaveText('2/2/2024, 10:00:00 AM');
// Close the laptop lid again and open it at 10:30am.
await page.clock.fastForward('30:00');
await expect(page.getByTestId('current-time')).toHaveText('2/2/2024, 10:30:00 AM');
See the clock guide for more details.
Test runner
-
New CLI option
--fail-on-flaky-teststhat sets exit code to1upon any flaky tests. Note that by default, the test runner exits with code0when all failed tests recovered upon a retry. With this option, the test run will fail in such case. -
New enviroment variable
PLAYWRIGHT_FORCE_TTYcontrols whether built-inlist,lineanddotreporters assume a live terminal. For example, this could be useful to disable tty behavior when your CI environment does not handle ANSI control sequences well. Alternatively, you can enable tty behavior even when to live terminal is present, if you plan to post-process the output and handle control sequences.# Avoid TTY features that output ANSI control sequences PLAYWRIGHT_FORCE_TTY=0 npx playwright test # Enable TTY features, assuming a terminal width 80 PLAYWRIGHT_FORCE_TTY=80 npx playwright test -
New options testConfig.respectGitIgnore and testProject.respectGitIgnore control whether files matching
.gitignorepatterns are excluded when searching for tests. -
New property
timeoutis now available for custom expect matchers. This property takes into accountplaywright.config.tsandexpect.configure().import { expect as baseExpect } from '@playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // When no timeout option is specified, use the config timeout. const timeout = options?.timeout ?? this.timeout; // ... implement the assertion ... }, });
Miscellaneous
-
Method locator.setInputFiles() now supports uploading a directory for
<input type=file webkitdirectory>elements.await page.getByLabel('Upload directory').setInputFiles(path.join(__dirname, 'mydir')); -
Multiple methods like locator.click() or locator.press() now support a
ControlOrMetamodifier key. This key maps toMetaon macOS and maps toControlon Windows and Linux.// Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation. await page.keyboard.press('ControlOrMeta+S'); -
New property
httpCredentials.sendin apiRequest.newContext() that allows to either always send theAuthorizationheader or only send it in response to401 Unauthorized. -
New option
reasonin apiRequestContext.dispose() that will be included in the error message of ongoing operations interrupted by the context disposal. -
New option
hostin browserType.launchServer() allows to accept websocket connections on a specific address instead of unspecified0.0.0.0. -
Playwright now supports Chromium, Firefox and WebKit on Ubuntu 24.04.
-
v1.45 is the last release to receive WebKit update for macOS 12 Monterey. Please update macOS to keep using the latest WebKit.
Browser Versions
- Chromium 127.0.6533.5
- Mozilla Firefox 127.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 126
- Microsoft Edge 126
Highlights
https://github.com/microsoft/playwright/issues/30779 - [REGRESSION]: When using video: 'on' with VSCode extension the browser got closed
https://github.com/microsoft/playwright/issues/30755 - [REGRESSION]: Electron launch with spaces inside executablePath didn't work
https://github.com/microsoft/playwright/issues/30770 - [REGRESSION]: Mask elements outside of viewport when creating fullscreen screenshots didn't work
https://github.com/microsoft/playwright/issues/30858 - [REGRESSION]: ipv6 got shown instead of localhost in show-trace/show-report
Browser Versions
- Chromium 125.0.6422.14
- Mozilla Firefox 125.0.1
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 124
- Microsoft Edge 124
New APIs
Accessibility assertions
-
expect(locator).toHaveAccessibleName() checks if the element has the specified accessible name:
const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleName('Submit'); -
expect(locator).toHaveAccessibleDescription() checks if the element has the specified accessible description:
const locator = page.getByRole('button'); await expect(locator).toHaveAccessibleDescription('Upload a photo'); -
expect(locator).toHaveRole() checks if the element has the specified ARIA role:
const locator = page.getByTestId('save-button'); await expect(locator).toHaveRole('button');
Locator handler
- After executing the handler added with page.addLocatorHandler(), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new
noWaitAfteroption. - You can use new
timesoption in page.addLocatorHandler() to specify maximum number of times the handler should be run. - The handler in page.addLocatorHandler() now accepts the locator as argument.
- New page.removeLocatorHandler() method for removing previously added locator handlers.
const locator = page.getByText('This interstitial covers the button');
await page.addLocatorHandler(locator, async overlay => {
await overlay.locator('#close').click();
}, { times: 3, noWaitAfter: true });
// Run your tests that can be interrupted by the overlay.
// ...
await page.removeLocatorHandler(locator);
Miscellaneous options
-
multipartoption inapiRequestContext.fetch()now acceptsFormDataand supports repeating fields with the same name.const formData = new FormData(); formData.append('file', new File(['let x = 2024;'], 'f1.js', { type: 'text/javascript' })); formData.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' })); context.request.post('https://example.com/uploadFiles', { multipart: formData }); -
expect(callback).toPass({ intervals })can now be configured byexpect.toPass.inervalsoption globally in testConfig.expect or per project in testProject.expect. -
expect(page).toHaveURL(url)now supportsignoreCaseoption. -
testProject.ignoreSnapshots allows to configure per project whether to skip screenshot expectations.
Reporter API
- New method suite.entries() returns child test suites and test cases in their declaration order. suite.type and testCase.type can be used to tell apart test cases and suites in the list.
- Blob reporter now allows overriding report file path with a single option
outputFile. The same option can also be specified asPLAYWRIGHT_BLOB_OUTPUT_FILEenvironment variable that might be more convenient on CI/CD. - JUnit reporter now supports
includeProjectInTestNameoption.
Command line
-
--last-failedCLI option for running only tests that failed in the previous run.First run all tests:
$ npx playwright test Running 103 tests using 5 workers ... 2 failed [chromium] › my-test.spec.ts:8:5 › two ───────────────────────────────────────────────────────── [chromium] › my-test.spec.ts:13:5 › three ────────────────────────────────────────────────────── 101 passed (30.0s)Now fix the failing tests and run Playwright again with
--last-failedoption:$ npx playwright test --last-failed Running 2 tests using 2 workers 2 passed (1.2s)
Browser Versions
- Chromium 125.0.6422.14
- Mozilla Firefox 125.0.1
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 124
- Microsoft Edge 124
Highlights
https://github.com/microsoft/playwright/issues/30300 - [REGRESSION]: UI mode restarts if keep storage state https://github.com/microsoft/playwright/issues/30339 - [REGRESSION]: Brand new install of playwright, unable to run chromium with show browser using vscode
Browser Versions
- Chromium 124.0.6367.29
- Mozilla Firefox 124.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 123
- Microsoft Edge 123
New APIs
-
Method browserContext.clearCookies() now supports filters to remove only some cookies.
// Clear all cookies. await context.clearCookies(); // New: clear cookies with a particular name. await context.clearCookies({ name: 'session-id' }); // New: clear cookies for a particular domain. await context.clearCookies({ domain: 'my-origin.com' }); -
New mode
retain-on-first-failurefor testOptions.trace. In this mode, trace is recorded for the first run of each test, but not for retires. When test run fails, the trace file is retained, otherwise it is removed.import { defineConfig } from '@playwright/test'; export default defineConfig({ use: { trace: 'retain-on-first-failure', }, }); -
New property testInfo.tags exposes test tags during test execution.
test('example', async ({ page }) => { console.log(test.info().tags); }); -
New method locator.contentFrame() converts a
Locatorobject to aFrameLocator. This can be useful when you have aLocatorobject obtained somewhere, and later on would like to interact with the content inside the frame.const locator = page.locator('iframe[name="embedded"]'); // ... const frameLocator = locator.contentFrame(); await frameLocator.getByRole('button').click(); -
New method frameLocator.owner() converts a
FrameLocatorobject to aLocator. This can be useful when you have aFrameLocatorobject obtained somewhere, and later on would like to interact with theiframeelement.const frameLocator = page.frameLocator('iframe[name="embedded"]'); // ... const locator = frameLocator.owner(); await expect(locator).toBeVisible();
UI Mode Updates
- See tags in the test list.
- Filter by tags by typing
@fastor clicking on the tag itself. - New shortcuts:
- F5 to run tests.
- Shift F5 to stop running tests.
- Ctrl ` to toggle test output.
Browser Versions
- Chromium 124.0.6367.29
- Mozilla Firefox 124.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 123
- Microsoft Edge 123
Highlights
https://github.com/microsoft/playwright/issues/29732 - [Regression]: HEAD requests to webServer.url since v1.42.0 https://github.com/microsoft/playwright/issues/29746 - [Regression]: Playwright CT CLI scripts fail due to broken initializePlugin import https://github.com/microsoft/playwright/issues/29739 - [Bug]: Component tests fails when imported a module with a dot in a name https://github.com/microsoft/playwright/issues/29731 - [Regression]: 1.42.0 breaks some import statements https://github.com/microsoft/playwright/issues/29760 - [Bug]: Possible regression with chained locators in v1.42
Browser Versions
- Chromium 123.0.6312.4
- Mozilla Firefox 123.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 122
- Microsoft Edge 123
New APIs
-
Test tags
New tag syntax for adding tags to the tests (@-tokens in the test title are still supported).
test('test customer login', { tag: ['@fast', '@login'] }, async ({ page }) => { // ... });Use
--grepcommand line option to run only tests with certain tags.npx playwright test --grep @fast -
Annotating skipped tests
New annotation syntax for test annotations allows annotating the tests that do not run.
test('test full report', { annotation: [ { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/23180' }, { type: 'docs', description: 'https://playwright.dev/docs/test-annotations#tag-tests' }, ], }, async ({ page }) => { // ... }); -
page.addLocatorHandler()
[!WARNING] This feature is experimental, we are actively looking for the feedback based on your scenarios.
New method page.addLocatorHandler() registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears.
// Setup the handler.
await page.addLocatorHandler(
page.getByRole('heading', { name: 'Hej! You are in control of your cookies.' }),
async () => {
await page.getByRole('button', { name: 'Accept all' }).click();
});
// Write the test as usual.
await page.goto('https://www.ikea.com/');
await page.getByRole('link', { name: 'Collection of blue and white' }).click();
await expect(page.getByRole('heading', { name: 'Light and easy' })).toBeVisible();
-
Project wildcard filter Playwright command line flag now supports '*' wildcard when filtering by project.
npx playwright test --project='*mobile*' -
Other APIs
-
expect(callback).toPass({ timeout }) The timeout can now be configured by
expect.toPass.timeoutoption globally or in project config -
electronApplication.on('console') electronApplication.on('console') event is emitted when Electron main process calls console API methods.
electronApp.on('console', async msg => { const values = []; for (const arg of msg.args()) values.push(await arg.jsonValue()); console.log(...values); }); await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' })); -
page.pdf() accepts two new options
taggedandoutline.
-
Breaking changes
Mixing the test instances in the same suite is no longer supported. Allowing it was an oversight as it makes reasoning about the semantics unnecessarily hard.
const test = baseTest.extend({ item: async ({}, use) => {} });
baseTest.describe('Admin user', () => {
test('1', async ({ page, item }) => {});
test('2', async ({ page, item }) => {});
});
Announcements
- ⚠️ Ubuntu 18 is not supported anymore.
Browser Versions
- Chromium 123.0.6312.4
- Mozilla Firefox 123.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 122
- Microsoft Edge 123
Highlights
https://github.com/microsoft/playwright/issues/29123 - [REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId.
Browser Versions
- Chromium 121.0.6167.57
- Mozilla Firefox 121.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 120
- Microsoft Edge 120
Highlights
https://github.com/microsoft/playwright/issues/29067 - [REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded https://github.com/microsoft/playwright/issues/29028 - [REGRESSION] React component tests throw type error when passing null/undefined to component https://github.com/microsoft/playwright/issues/29027 - [REGRESSION] React component tests not passing Date prop values https://github.com/microsoft/playwright/issues/29023 - [REGRESSION] React component tests not rendering children prop https://github.com/microsoft/playwright/issues/29019 - [REGRESSION] trace.playwright.dev does not currently support the loading from URL
Browser Versions
- Chromium 121.0.6167.57
- Mozilla Firefox 121.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 120
- Microsoft Edge 120
New APIs
- New method page.unrouteAll([options]) removes all routes registered by page.route(url, handler, handler[, options]) and page.routeFromHAR(har[, options]). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them.
- New method browserContext.unrouteAll([options]) removes all routes registered by browserContext.route(url, handler, handler[, options]) and browserContext.routeFromHAR(har[, options]). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them.
- New option
stylein page.screenshot([options]) and locator.screenshot([options]) to add custom CSS to the page before taking a screenshot. - New option
stylePathfor methods expect(page).toHaveScreenshot(name[, options]) and expect(locator).toHaveScreenshot(name[, options]) to apply a custom stylesheet while making the screenshot. - New
fileNameoption for Blob reporter, to specify the name of the report to be created.
Browser Versions
- Chromium 121.0.6167.57
- Mozilla Firefox 121.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 120
- Microsoft Edge 120
Highlights
https://github.com/microsoft/playwright/issues/28319 - [REGRESSION]: Version 1.40.0 Produces corrupted traces https://github.com/microsoft/playwright/issues/28371 - [BUG] The color of the 'ok' text did not change to green in the vs code test results section https://github.com/microsoft/playwright/issues/28321 - [BUG] Ambiguous test outcome and status for serial mode https://github.com/microsoft/playwright/issues/28362 - [BUG] Merging blobs ends up in Error: Cannot create a string longer than 0x1fffffe8 characters https://github.com/microsoft/playwright/pull/28239 - fix: collect all errors in removeFolders
Browser Versions
- Chromium 120.0.6099.28
- Mozilla Firefox 119.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 119
- Microsoft Edge 119
Test Generator Update
New tools to generate assertions:
- "Assert visibility" tool generates expect(locator).toBeVisible().
- "Assert value" tool generates expect(locator).toHaveValue(value).
- "Assert text" tool generates expect(locator).toContainText(text).
Here is an example of a generated test with assertions:
import { test, expect } from '@playwright/test';
test('test', async ({ page }) => {
await page.goto('https://playwright.dev/');
await page.getByRole('link', { name: 'Get started' }).click();
await expect(page.getByLabel('Breadcrumbs').getByRole('list')).toContainText('Installation');
await expect(page.getByLabel('Search')).toBeVisible();
await page.getByLabel('Search').click();
await page.getByPlaceholder('Search docs').fill('locator');
await expect(page.getByPlaceholder('Search docs')).toHaveValue('locator');
});
New APIs
- Option
reasonin page.close(), browserContext.close() and browser.close(). Close reason is reported for all operations interrupted by the closure. - Option
firefoxUserPrefsin browserType.launchPersistentContext(userDataDir).
Other Changes
- Methods download.path() and download.createReadStream() throw an error for failed and cancelled downloads.
- Playwright docker image now comes with Node.js v20.
Browser Versions
- Chromium 120.0.6099.28
- Mozilla Firefox 119.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 119
- Microsoft Edge 119
Add custom matchers to your expect
You can extend Playwright assertions by providing custom matchers. These matchers will be available on the expect object.
import { expect as baseExpect } from '@playwright/test';
export const expect = baseExpect.extend({
async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) {
// ... see documentation for how to write matchers.
},
});
test('pass', async ({ page }) => {
await expect(page.getByTestId('cart')).toHaveAmount(5);
});
See the documentation for a full example.
Merge test fixtures
You can now merge test fixtures from multiple files or modules:
import { mergeTests } from '@playwright/test';
import { test as dbTest } from 'database-test-utils';
import { test as a11yTest } from 'a11y-test-utils';
export const test = mergeTests(dbTest, a11yTest);
import { test } from './fixtures';
test('passes', async ({ database, page, a11y }) => {
// use database and a11y fixtures.
});
Merge custom expect matchers
You can now merge custom expect matchers from multiple files or modules:
import { mergeTests, mergeExpects } from '@playwright/test';
import { test as dbTest, expect as dbExpect } from 'database-test-utils';
import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils';
export const test = mergeTests(dbTest, a11yTest);
export const expect = mergeExpects(dbExpect, a11yExpect);
import { test, expect } from './fixtures';
test('passes', async ({ page, database }) => {
await expect(database).toHaveDatabaseUser('admin');
await expect(page).toPassA11yAudit();
});
Hide implementation details: box test steps
You can mark a test.step() as "boxed" so that errors inside it point to the step call site.
async function login(page) {
await test.step('login', async () => {
// ...
}, { box: true }); // Note the "box" option here.
}
Error: Timed out 5000ms waiting for expect(locator).toBeVisible()
... error details omitted ...
14 | await page.goto('https://github.com/login');
> 15 | await login(page);
| ^
16 | });
See test.step() documentation for a full example.
New APIs
Browser Versions
- Chromium 119.0.6045.9
- Mozilla Firefox 118.0.1
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 118
- Microsoft Edge 118
Highlights
https://github.com/microsoft/playwright/issues/27071 - expect(value).toMatchSnapshot() deprecation announcement on V1.38 https://github.com/microsoft/playwright/issues/27072 - [BUG] PWT trace viewer fails to load trace and throws TypeError https://github.com/microsoft/playwright/issues/27073 - [BUG] RangeError: Invalid time value https://github.com/microsoft/playwright/issues/27087 - [REGRESSION]: npx playwright test --list prints all tests twice https://github.com/microsoft/playwright/issues/27113 - [REGRESSION]: No longer able to extend PlaywrightTest.Matchers type for locators and pages https://github.com/microsoft/playwright/issues/27144 - [BUG]can not display trace https://github.com/microsoft/playwright/issues/27163 - [REGRESSION] Single Quote Wrongly Escaped by Locator When Using Unicode Flag https://github.com/microsoft/playwright/issues/27181 - [BUG] evaluate serializing fails at 1.38
Browser Versions
- Chromium 117.0.5938.62
- Mozilla Firefox 117.0
- WebKit 17.0
This version was also tested against the following stable channels:
- Google Chrome 116
- Microsoft Edge 116
UI Mode Updates
- Zoom into time range.
- Network panel redesign.
New APIs
browserContext.on('weberror')locator.pressSequentially()- The
reporter.onEnd()now reportsstartTimeand total runduration.
Deprecations
- The following methods were deprecated:
page.type(),frame.type(),locator.type()andelementHandle.type(). Please uselocator.fill()instead which is much faster. Uselocator.pressSequentially()only if there is a special keyboard handling on the page, and you need to press keys one-by-one.
Breaking Changes: Playwright no longer downloads browsers automatically
[!NOTE] If you are using
@playwright/testpackage, this change does not affect you.
Playwright recommends to use @playwright/test package and download browsers via npx playwright install command. If you are following this recommendation, nothing has changed for you.
However, up to v1.38, installing the playwright package instead of @playwright/test did automatically download browsers. This is no longer the case, and we recommend to explicitly download browsers via npx playwright install command.
v1.37 and earlier
playwright package was downloading browsers during npm install, while @playwright/test was not.
v1.38 and later
playwright and @playwright/test packages do not download browsers during npm install.
Recommended migration
Run npx playwright install to download browsers after npm install. For example, in your CI configuration:
- run: npm ci
- run: npx playwright install --with-deps
Alternative migration option - not recommended
Add @playwright/browser-chromium, @playwright/browser-firefox and @playwright/browser-webkit as a dependency. These packages download respective browsers during npm install. Make sure you keep the version of all playwright packages in sync:
// package.json
{
"devDependencies": {
"playwright": "1.38.0",
"@playwright/browser-chromium": "1.38.0",
"@playwright/browser-firefox": "1.38.0",
"@playwright/browser-webkit": "1.38.0"
}
}
Browser Versions
- Chromium 117.0.5938.62
- Mozilla Firefox 117.0
- WebKit 17.0
This version was also tested against the following stable channels:
- Google Chrome 116
- Microsoft Edge 116
Highlights
https://github.com/microsoft/playwright/issues/26496 - [REGRESSION] webServer stdout is always getting printed https://github.com/microsoft/playwright/issues/26492 - [REGRESSION] test.only with project dependency is not working
Browser Versions
- Chromium 116.0.5845.82
- Mozilla Firefox 115.0
- WebKit 17.0
This version was also tested against the following stable channels:
- Google Chrome 115
- Microsoft Edge 115
Watch the overview: Playwright 1.36 & 1.37
✨ New tool to merge reports
If you run tests on multiple shards, you can now merge all reports in a single HTML report (or any other report)
using the new merge-reports CLI tool.
Using merge-reports tool requires the following steps:
-
Adding a new "blob" reporter to the config when running on CI:
export default defineConfig({ testDir: './tests', reporter: process.env.CI ? 'blob' : 'html', });The "blob" reporter will produce ".zip" files that contain all the information about the test run.
-
Copying all "blob" reports in a single shared location and running
npx playwright merge-reports:npx playwright merge-reports --reporter html ./all-blob-reports
Read more in our documentation.
📚 Debian 12 Bookworm Support
Playwright now supports Debian 12 Bookworm on both x86_64 and arm64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues!
Linux support looks like this:
| Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | |
|---|---|---|---|---|
| Chromium | ✅ | ✅ | ✅ | ✅ |
| WebKit | ✅ | ✅ | ✅ | ✅ |
| Firefox | ✅ | ✅ | ✅ | ✅ |
🌈 UI Mode Updates
- UI Mode now respects project dependencies. You can control which dependencies to respect by checking/unchecking them in a projects list.
- Console logs from the test are now displayed in the Console tab.
Browser Versions
- Chromium 116.0.5845.82
- Mozilla Firefox 115.0
- WebKit 17.0
This version was also tested against the following stable channels:
- Google Chrome 115
- Microsoft Edge 115
Highlights
https://github.com/microsoft/playwright/issues/24316 - [REGRESSION] Character classes are not working in globs in 1.36
Browser Versions
- Chromium 115.0.5790.75
- Mozilla Firefox 115.0
- WebKit 17.0
This version was also tested against the following stable channels:
- Google Chrome 114
- Microsoft Edge 114
Highlights
https://github.com/microsoft/playwright/issues/24184 - [REGRESSION]: Snapshot name contains some random string after test name when tests are run in container
Browser Versions
- Chromium 115.0.5790.75
- Mozilla Firefox 115.0
- WebKit 17.0
This version was also tested against the following stable channels:
- Google Chrome 114
- Microsoft Edge 114
Watch the overview: Playwright 1.36 & 1.37
Highlights
🏝️ Summer maintenance release.
Browser Versions
- Chromium 115.0.5790.75
- Mozilla Firefox 115.0
- WebKit 17.0
This version was also tested against the following stable channels:
- Google Chrome 114
- Microsoft Edge 114
Highlights
https://github.com/microsoft/playwright/issues/23622 - [Docs] Provide a description how to correctly use expect.configure with poll parameter https://github.com/microsoft/playwright/issues/23666 - [BUG] Live Trace does not work with Codespaces https://github.com/microsoft/playwright/issues/23693 - [BUG] attachment steps are not hidden inside expect.toHaveScreenshot()
Browser Versions
- Chromium 115.0.5790.13
- Mozilla Firefox 113.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 114
- Microsoft Edge 114
Highlights
-
UI mode is now available in VSCode Playwright extension via a new "Show trace viewer" button:
-
UI mode and trace viewer mark network requests handled with
page.route()andbrowserContext.route()handlers, as well as those issued via the API testing: -
New option
maskColorfor methodspage.screenshot(),locator.screenshot(),expect(page).toHaveScreenshot()andexpect(locator).toHaveScreenshot()to change default masking color:await page.goto('https://playwright.dev'); await expect(page).toHaveScreenshot({ mask: [page.locator('img')], maskColor: '#00FF00', // green }); -
New
uninstallCLI command to uninstall browser binaries:$ npx playwright uninstall # remove browsers installed by this installation $ npx playwright uninstall --all # remove all ever-install Playwright browsers -
Both UI mode and trace viewer now could be opened in a browser tab:
$ npx playwright test --ui-port 0 # open UI mode in a tab on a random port $ npx playwright show-trace --port 0 # open trace viewer in tab on a random port
⚠️ Breaking changes
-
playwright-corebinary got renamed fromplaywrighttoplaywright-core. So if you useplaywright-coreCLI, make sure to update the name:$ npx playwright-core install # the new way to install browsers when using playwright-coreThis change does not affect
@playwright/testandplaywrightpackage users.
Browser Versions
- Chromium 115.0.5790.13
- Mozilla Firefox 113.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 114
- Microsoft Edge 114
Highlights
https://github.com/microsoft/playwright/issues/23228 - [BUG] Getting "Please install @playwright/test package..." after upgrading from 1.34.0 to 1.34.1
Browser Versions
- Chromium 114.0.5735.26
- Mozilla Firefox 113.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 113
- Microsoft Edge 113
Highlights
https://github.com/microsoft/playwright/issues/23225 - [BUG] VSCode Extension broken with Playwright 1.34.1
Browser Versions
- Chromium 114.0.5735.26
- Mozilla Firefox 113.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 113
- Microsoft Edge 113
Highlights
https://github.com/microsoft/playwright/issues/23186 - [BUG] Container image for v1.34.0 missing library for webkit https://github.com/microsoft/playwright/issues/23206 - [BUG] Unable to install supported browsers for v1.34.0 from playwright-core https://github.com/microsoft/playwright/issues/23207 - [BUG] importing ES Module JSX component is broken since 1.34
Browser Versions
- Chromium 114.0.5735.26
- Mozilla Firefox 113.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 113
- Microsoft Edge 113
Playwright v1.33 & v1.34 updates
Highlights
-
UI Mode now shows steps, fixtures and attachments:
-
New property
testProject.teardownto specify a project that needs to run after this and all dependent projects have finished. Teardown is useful to cleanup any resources acquired by this project.A common pattern would be a
setupdependency with a correspondingteardown:// playwright.config.ts import { defineConfig } from '@playwright/test'; export default defineConfig({ projects: [ { name: 'setup', testMatch: /global.setup\.ts/, teardown: 'teardown', }, { name: 'teardown', testMatch: /global.teardown\.ts/, }, { name: 'chromium', use: devices['Desktop Chrome'], dependencies: ['setup'], }, { name: 'firefox', use: devices['Desktop Firefox'], dependencies: ['setup'], }, { name: 'webkit', use: devices['Desktop Safari'], dependencies: ['setup'], }, ], }); -
New method
expect.configureto create pre-configured expect instance with its own defaults such astimeoutandsoft.const slowExpect = expect.configure({ timeout: 10000 }); await slowExpect(locator).toHaveText('Submit'); // Always do soft assertions. const softExpect = expect.configure({ soft: true }); -
New options
stderrandstdoutintestConfig.webServerto configure output handling:// playwright.config.ts import { defineConfig } from '@playwright/test'; export default defineConfig({ // Run your local dev server before starting the tests webServer: { command: 'npm run start', url: 'http://127.0.0.1:3000', reuseExistingServer: !process.env.CI, stdout: 'pipe', stderr: 'pipe', }, }); -
New
locator.and()to create a locator that matches both locators.const button = page.getByRole('button').and(page.getByTitle('Subscribe')); -
New events
browserContext.on('console')andbrowserContext.on('dialog')to subscribe to any dialogs and console messages from any page from the given browser context. Use the new methodsconsoleMessage.page()anddialog.page()to pin-point event source.
⚠️ Breaking changes
-
npx playwright testno longer works if you install bothplaywrightand@playwright/test. There's no need to install both, since you can always import browser automation APIs from@playwright/testdirectly:// automation.ts import { chromium, firefox, webkit } from '@playwright/test'; /* ... */ -
Node.js 14 is no longer supported since it reached its end-of-life on April 30, 2023.
Browser Versions
- Chromium 114.0.5735.26
- Mozilla Firefox 113.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 113
- Microsoft Edge 113
Playwright v1.33 & v1.34 updates
Locators Update
-
Use
locator.or()to create a locator that matches either of the two locators. Consider a scenario where you'd like to click on a "New email" button, but sometimes a security settings dialog shows up instead. In this case, you can wait for either a "New email" button, or a dialog and act accordingly:const newEmail = page.getByRole('button', { name: 'New' }); const dialog = page.getByText('Confirm security settings'); await expect(newEmail.or(dialog)).toBeVisible(); if (await dialog.isVisible()) await page.getByRole('button', { name: 'Dismiss' }).click(); await newEmail.click(); -
Use new options
hasNotandhasNotTextinlocator.filter()to find elements that do not match certain conditions.const rowLocator = page.locator('tr'); await rowLocator .filter({ hasNotText: 'text in column 1' }) .filter({ hasNot: page.getByRole('button', { name: 'column 2 button' }) }) .screenshot(); -
Use new web-first assertion
locatorAssertions.toBeAttached()to ensure that the element is present in the page's DOM. Do not confuse with thelocatorAssertions.toBeVisible()that ensures that element is both attached & visible.
New APIs
locator.or()- New option
hasNotinlocator.filter() - New option
hasNotTextinlocator.filter() locatorAssertions.toBeAttached()- New option
timeoutinroute.fetch() reporter.onExit()
⚠️ Breaking change
- The
mcr.microsoft.com/playwright:v1.33.0now serves a Playwright image based on Ubuntu Jammy. To use the focal-based image, please usemcr.microsoft.com/playwright:v1.33.0-focalinstead.
Browser Versions
- Chromium 113.0.5672.53
- Mozilla Firefox 112.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 112
- Microsoft Edge 112
Highlights
https://github.com/microsoft/playwright/issues/22144 - [BUG] WebServer only starting after timeout https://github.com/microsoft/playwright/pull/22191 - chore: allow reusing browser between the tests https://github.com/microsoft/playwright/issues/22215 - [BUG] Tests failing in toPass often marked as passed
Browser Versions
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 111
- Microsoft Edge 111
Highlights
https://github.com/microsoft/playwright/issues/21993 - [BUG] Browser crash when using Playwright VSC extension and trace-viewer enabled in config https://github.com/microsoft/playwright/issues/22003 - [Feature] Make Vue component mount props less restrictive https://github.com/microsoft/playwright/issues/22089 - [REGRESSION]: Tests failing with "Error: tracing.stopChunk"
Browser Versions
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 111
- Microsoft Edge 111
Highlights
https://github.com/microsoft/playwright/issues/21832 - [BUG] Trace is not opening on specific broken locator https://github.com/microsoft/playwright/issues/21897 - [BUG] --ui fails to open with error reading mainFrame from an undefined this._page https://github.com/microsoft/playwright/issues/21918 - [BUG]: UI mode, skipped tests not being found https://github.com/microsoft/playwright/issues/21941 - [BUG] UI mode does not show webServer startup errors https://github.com/microsoft/playwright/issues/21953 - [BUG] Parameterized tests are not displayed in the UI mode
Browser Versions
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 111
- Microsoft Edge 111
📣 Introducing UI Mode (preview)
New UI Mode lets you explore, run and debug tests. Comes with a built-in watch mode.

Engage with a new flag --ui:
npx playwright test --ui
New APIs
- New options
option: updateModeandoption: updateContentinpage.routeFromHAR()andbrowserContext.routeFromHAR(). - Chaining existing locator objects, see locator docs for details.
- New property
TestInfo.testId. - New option
namein methodTracing.startChunk().
⚠️ Breaking change in component tests
Note: component tests only, does not affect end-to-end tests.
@playwright/experimental-ct-reactnow supports React 18 only.- If you're running component tests with React 16 or 17, please replace
@playwright/experimental-ct-reactwith@playwright/experimental-ct-react17.
Browser Versions
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 111
- Microsoft Edge 111
Highlights
https://github.com/microsoft/playwright/issues/20784 - [BUG] ECONNREFUSED on GitHub Actions with Node 18 https://github.com/microsoft/playwright/issues/21145 - [REGRESSION]: firefox-1378 times out on await page.reload() when URL contains a #hash https://github.com/microsoft/playwright/issues/21226 - [BUG] Playwright seems to get stuck when using shard option and last test is skipped https://github.com/microsoft/playwright/issues/21227 - Using the webServer config with a Vite dev server? https://github.com/microsoft/playwright/issues/21312 - throw if defineConfig is not used for component testing
Browser Versions
- Chromium 111.0.5563.19
- Mozilla Firefox 109.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 110
- Microsoft Edge 110
Highlights
https://github.com/microsoft/playwright/issues/21093 - [Regression v1.31] Headless Windows shows cascading cmd windows https://github.com/microsoft/playwright/pull/21106 - fix(loader): experimentalLoader with node@18
Browser Versions
- Chromium 111.0.5563.19
- Mozilla Firefox 109.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 110
- Microsoft Edge 110
New APIs
-
New property
TestProject.dependenciesto configure dependencies between projects.Using dependencies allows global setup to produce traces and other artifacts, see the setup steps in the test report and more.
// playwright.config.ts import { defineConfig } from '@playwright/test'; export default defineConfig({ projects: [ { name: 'setup', testMatch: /global.setup\.ts/, }, { name: 'chromium', use: devices['Desktop Chrome'], dependencies: ['setup'], }, { name: 'firefox', use: devices['Desktop Firefox'], dependencies: ['setup'], }, { name: 'webkit', use: devices['Desktop Safari'], dependencies: ['setup'], }, ], }); -
New assertion
expect(locator).toBeInViewport()ensures that locator points to an element that intersects viewport, according to the intersection observer API.const button = page.getByRole('button'); // Make sure at least some part of element intersects viewport. await expect(button).toBeInViewport(); // Make sure element is fully outside of viewport. await expect(button).not.toBeInViewport(); // Make sure that at least half of the element intersects viewport. await expect(button).toBeInViewport({ ratio: 0.5 });
Miscellaneous
- DOM snapshots in trace viewer can be now opened in a separate window.
- New method
defineConfigto be used inplaywright.config. - New option
maxRedirectsfor methodRoute.fetch. - Playwright now supports Debian 11 arm64.
- Official docker images now include Node 18 instead of Node 16.
⚠️ Breaking change in component tests
Note: component tests only, does not affect end-to-end tests.
playwright-ct.config configuration file for component testing now requires calling defineConfig.
// Before
import { type PlaywrightTestConfig, devices } from '@playwright/experimental-ct-react';
const config: PlaywrightTestConfig = {
// ... config goes here ...
};
export default config;
Replace config variable definition with defineConfig call:
// After
import { defineConfig, devices } from '@playwright/experimental-ct-react';
export default defineConfig({
// ... config goes here ...
});
Browser Versions
- Chromium 111.0.5563.19
- Mozilla Firefox 109.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 110
- Microsoft Edge 110
🎉 Happy New Year 🎉
Maintenance release with bugfixes and new browsers only. We are baking some nice features for v1.31.
Browser Versions
- Chromium 110.0.5481.38
- Mozilla Firefox 108.0.2
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 109
- Microsoft Edge 109
Highlights
https://github.com/microsoft/playwright/issues/19661 - [BUG] 1.29.1 browserserver + page.goto = net::ERR_SOCKS_CONNECTION_FAILED
Browser Versions
- Chromium 109.0.5414.46
- Mozilla Firefox 107.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 108
- Microsoft Edge 108
Highlights
https://github.com/microsoft/playwright/issues/18928 - [BUG] Electron firstWindow times out after upgrading to 1.28.0 https://github.com/microsoft/playwright/issues/19246 - [BUG] Electron firstWindow times out after upgrading to 1.28.1 https://github.com/microsoft/playwright/issues/19412 - [REGRESSION]: 1.28 does not work with electron-serve anymore. https://github.com/microsoft/playwright/issues/19540 - [BUG] electron.app.getAppPath() returns the path one level higher if you run electron pointing to the directory https://github.com/microsoft/playwright/issues/19548 - [REGRESSION]: Ubuntu 18 LTS not supported anymore
Browser Versions
- Chromium 109.0.5414.46
- Mozilla Firefox 107.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 108
- Microsoft Edge 108
New APIs
-
New method
route.fetch()and new optionjsonforroute.fulfill():await page.route('**/api/settings', async route => { // Fetch original settings. const response = await route.fetch(); // Force settings theme to a predefined value. const json = await response.json(); json.theme = 'Solorized'; // Fulfill with modified data. await route.fulfill({ json }); }); -
New method
locator.all()to iterate over all matching elements:// Check all checkboxes! const checkboxes = page.getByRole('checkbox'); for (const checkbox of await checkboxes.all()) await checkbox.check(); -
Locator.selectOptionmatches now by value or label:<select multiple> <option value="red">Red</div> <option value="green">Green</div> <option value="blue">Blue</div> </select>await element.selectOption('Red'); -
Retry blocks of code until all assertions pass:
await expect(async () => { const response = await page.request.get('https://api.example.com'); await expect(response).toBeOK(); }).toPass();Read more in our documentation.
-
Automatically capture full page screenshot on test failure:
// playwright.config.ts import type { PlaywrightTestConfig } from '@playwright/test'; const config: PlaywrightTestConfig = { use: { screenshot: { mode: 'only-on-failure', fullPage: true, } } }; export default config;
Miscellaneous
- Playwright Test now respects
jsconfig.json. - New options
argsandproxyforandroidDevice.launchBrowser(). - Option
postDatain methodroute.continue()now supports serializable values. - Ubuntu 18.04 is not supported anymore
Browser Versions
- Chromium 109.0.5414.46
- Mozilla Firefox 107.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 108
- Microsoft Edge 108
Highlights
This patch release includes the following bug fixes:
https://github.com/microsoft/playwright/issues/18928 - [BUG] Electron firstWindow times out after upgrading to 1.28.0 https://github.com/microsoft/playwright/issues/18920 - [BUG] [expanded=false] in role selector returns elements without aria-expanded attribute https://github.com/microsoft/playwright/issues/18865 - [BUG] regression in killing web server process in 1.28.0
Browser Versions
- Chromium 108.0.5359.29
- Mozilla Firefox 106.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 107
- Microsoft Edge 107
Playwright Tools
- Record at Cursor in VSCode. You can run the test, position the cursor at the end of the test and continue generating the test.
- Live Locators in VSCode. You can hover and edit locators in VSCode to get them highlighted in the opened browser.
- Live Locators in CodeGen. Generate a locator for any element on the page using "Explore" tool.
- Codegen and Trace Viewer Dark Theme. Automatically picked up from operating system settings.
Test Runner
-
Configure retries and test timeout for a file or a test with
test.describe.configure([options]).// Each test in the file will be retried twice and have a timeout of 20 seconds. test.describe.configure({ retries: 2, timeout: 20_000 }); test('runs first', async ({ page }) => {}); test('runs second', async ({ page }) => {}); -
Use
testProject.snapshotPathTemplateandtestConfig.snapshotPathTemplateto configure a template controlling location of snapshots generated byexpect(page).toHaveScreenshot(name[, options])andexpect(screenshot).toMatchSnapshot(name[, options]).// playwright.config.ts import type { PlaywrightTestConfig } from '@playwright/test'; const config: PlaywrightTestConfig = { testDir: './tests', snapshotPathTemplate: '{testDir}/__screenshots__/{testFilePath}/{arg}{ext}', }; export default config;
New APIs
locator.blur([options])locator.clear([options])android.launchServer([options])andandroid.connect(wsEndpoint[, options])androidDevice.on('close')
Browser Versions
- Chromium 108.0.5359.29
- Mozilla Firefox 106.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 107
- Microsoft Edge 107
Highlights
This patch release includes the following bug fixes:
https://github.com/microsoft/playwright/pull/18010 - fix(generator): generate nice locators for arbitrary selectors https://github.com/microsoft/playwright/pull/17999 - chore: don't fail on undefined video/trace https://github.com/microsoft/playwright/issues/17955 - [Question] Github Actions test compatibility check failed mitigation? https://github.com/microsoft/playwright/issues/17960 - [BUG] Codegen 1.27 creates NUnit code that does not compile https://github.com/microsoft/playwright/pull/17952 - fix: fix typo in treeitem role typing
Browser Versions
- Chromium 107.0.5304.18
- Mozilla Firefox 105.0.1
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 106
- Microsoft Edge 106
Locators
With these new APIs, inspired by Testing Library, writing locators is a joy:
page.getByText(text, options)to locate by text content.page.getByRole(role, options)to locate by ARIA role, ARIA attributes and accessible name.page.getByLabel(label, options)to locate a form control by associated label's text.page.getByPlaceholder(placeholder, options)to locate an input by placeholder.page.getByAltText(altText, options)to locate an element, usually image, by its text alternative.page.getByTitle(title, options)to locate an element by its title.
await page.getByLabel('User Name').fill('John');
await page.getByLabel('Password').fill('secret-password');
await page.getByRole('button', { name: 'Sign in' }).click();
await expect(page.getByText('Welcome, John!')).toBeVisible();
All the same methods are also available on Locator, FrameLocator and Frame classes.
Other highlights
-
workersoption in theplaywright.config.tsnow accepts a percentage string to use some of the available CPUs. You can also pass it in the command line:npx playwright test --workers=20% -
New options
hostandportfor the html reporter.reporters: [['html', { host: 'localhost', port: '9223' }]] -
New field
FullConfig.configFileis available to test reporters, specifying the path to the config file if any. -
As announced in v1.25, Ubuntu 18 will not be supported as of Dec 2022. In addition to that, there will be no WebKit updates on Ubuntu 18 starting from the next Playwright release.
Behavior Changes
-
expect(locator).toHaveAttribute(name, value, options)with an empty value does not match missing attribute anymore. For example, the following snippet will succeed whenbuttondoes not have adisabledattribute.await expect(page.getByRole('button')).toHaveAttribute('disabled', ''); -
Command line options
--grepand--grep-invertpreviously incorrectly ignoredgrepandgrepInvertoptions specified in the config. Now all of them are applied together. -
JSON reporter path resolution is performed relative to the config directory instead of the current working directory:
["json", { outputFile: "./test-results/results.json" }]]
Browser Versions
- Chromium 107.0.5304.18
- Mozilla Firefox 105.0.1
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 106
- Microsoft Edge 106
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/17500 - [BUG] No tests found using the test explorer - pw/test@1.26.0
Browser Versions
- Chromium 106.0.5249.30
- Mozilla Firefox 104.0
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 105
- Microsoft Edge 105
Assertions
- New option enabled for
expect(locator).toBeEnabled([options]). expect(locator).toHaveText(expected[, options])now pierces open shadow roots.- New option editable for
expect(locator).toBeEditable([options]). - New option visible for
expect(locator).toBeVisible([options]).
Other Highlights
- New option
maxRedirectsforapiRequestContext.get(url[, options])and others to limit redirect count. - New command-line flag
--pass-with-no-teststhat allows the test suite to pass when no files are found. - New command-line flag
--ignore-snapshotsto skip snapshot expectations, such asexpect(value).toMatchSnapshot()andexpect(page).toHaveScreenshot().
Behavior Change
A bunch of Playwright APIs already support the waitUntil: 'domcontentloaded' option. For example:
await page.goto('https://playwright.dev', {
waitUntil: 'domcontentloaded',
});
Prior to 1.26, this would wait for all iframes to fire the DOMContentLoaded event.
To align with web specification, the 'domcontentloaded' value only waits for the target frame to fire the 'DOMContentLoaded' event. Use waitUntil: 'load' to wait for all iframes.
Browser Versions
- Chromium 106.0.5249.30
- Mozilla Firefox 104.0
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 105
- Microsoft Edge 105
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/16937 - [REGRESSION]: session storage failing >= 1.25.0 in firefox https://github.com/microsoft/playwright/issues/16955 - Not using channel on config file when Show and Reuse browser is checked
Browser Versions
- Chromium 105.0.5195.19
- Mozilla Firefox 103.0
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 104
- Microsoft Edge 104
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/16319 - [BUG] webServer.command esbuild fails with ESM and Yarn https://github.com/microsoft/playwright/issues/16460 - [BUG] Component test fails on 2nd run when SSL is used https://github.com/microsoft/playwright/issues/16665 - [BUG] custom selector engines don't work when running in debug mode
Browser Versions
- Chromium 105.0.5195.19
- Mozilla Firefox 103.0
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 104
- Microsoft Edge 104
VSCode Extension
-
New Playwright actions view
-
Pick selector You can pick selector right from a live page, before or after running a test
-
Record new test Start recording where you left off with the new 'Record new test' feature.
-
Show & reuse browser Watch your tests running live & keep devtools open. Develop while continuously running tests.
Test Runner
-
test.step(title, body)now returns the value of the step function:test('should work', async ({ page }) => { const pageTitle = await test.step('get title', async () => { await page.goto('https://playwright.dev'); return await page.title(); }); console.log(pageTitle); }); -
New
'interrupted'test status. -
Enable tracing via CLI flag:
npx playwright test --trace=on. -
New property
testCase.idthat can be use in reporters as a history ID.
Announcements
- 🎁 We now ship Ubuntu 22.04 Jammy Jellyfish docker image:
mcr.microsoft.com/playwright:v1.25.0-jammy. - 🪦 This is the last release with macOS 10.15 support (deprecated as of 1.21).
- 🪦 This is the last release with Node.js 12 support, we recommend upgrading to Node.js LTS (16).
- ⚠️ Ubuntu 18 is now deprecated and will not be supported as of Dec 2022.
Browser Versions
- Chromium 105.0.5195.19
- Mozilla Firefox 103.0
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 104
- Microsoft Edge 104
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/15977 - [BUG] test.use of storage state regression in 1.24
Browser Versions
- Chromium 104.0.5112.48
- Mozilla Firefox 102.0
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 103
- Microsoft Edge 103
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/15898 - [BUG] Typescript error: The type for webServer config property (TestConfigWebServer) is not typed correctly https://github.com/microsoft/playwright/issues/15913 - [BUG] hooksConfig is required for mount fixture https://github.com/microsoft/playwright/issues/15932 - [BUG] - Install MS Edge on CI Fails
Browser Versions
- Chromium 104.0.5112.48
- Mozilla Firefox 102.0
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 103
- Microsoft Edge 103
🌍 Multiple Web Servers in playwright.config.ts
Launch multiple web servers, databases, or other processes by passing an array of configurations:
// playwright.config.ts
import type { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
webServer: [
{
command: 'npm run start',
port: 3000,
timeout: 120 * 1000,
reuseExistingServer: !process.env.CI,
},
{
command: 'npm run backend',
port: 3333,
timeout: 120 * 1000,
reuseExistingServer: !process.env.CI,
}
],
use: {
baseURL: 'http://localhost:3000/',
},
};
export default config;
🐂 Debian 11 Bullseye Support
Playwright now supports Debian 11 Bullseye on x86_64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues!
Linux support looks like this:
| Ubuntu 18.04 | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | |
|---|---|---|---|---|
| Chromium | ✅ | ✅ | ✅ | ✅ |
| WebKit | ✅ | ✅ | ✅ | ✅ |
| Firefox | ✅ | ✅ | ✅ | ✅ |
🕵️ Anonymous Describe
It is now possible to call test.describe(callback) to create suites without a title. This is useful for giving a group of tests a common option with test.use(options).
test.describe(() => {
test.use({ colorScheme: 'dark' });
test('one', async ({ page }) => {
// ...
});
test('two', async ({ page }) => {
// ...
});
});
🧩 Component Tests Update
Playwright 1.24 Component Tests introduce beforeMount and afterMount hooks.
Use these to configure your app for tests.
Vue + Vue Router
For example, this could be used to setup App router in Vue.js:
// src/component.spec.ts
import { test } from '@playwright/experimental-ct-vue';
import { Component } from './mycomponent';
test('should work', async ({ mount }) => {
const component = await mount(Component, {
hooksConfig: {
/* anything to configure your app */
}
});
});
// playwright/index.ts
import { router } from '../router';
import { beforeMount } from '@playwright/experimental-ct-vue/hooks';
beforeMount(async ({ app, hooksConfig }) => {
app.use(router);
});
React + Next.js
A similar configuration in Next.js would look like this:
// src/component.spec.jsx
import { test } from '@playwright/experimental-ct-react';
import { Component } from './mycomponent';
test('should work', async ({ mount }) => {
const component = await mount(<Component></Component>, {
// Pass mock value from test into `beforeMount`.
hooksConfig: {
router: {
query: { page: 1, per_page: 10 },
asPath: '/posts'
}
}
});
});
// playwright/index.js
import router from 'next/router';
import { beforeMount } from '@playwright/experimental-ct-react/hooks';
beforeMount(async ({ hooksConfig }) => {
// Before mount, redefine useRouter to return mock value from test.
router.useRouter = () => hooksConfig.router;
});
Browser Versions
- Chromium 104.0.5112.48
- Mozilla Firefox 102.0
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 103
- Microsoft Edge 103
Highlights
This patch includes the following bug fix:
https://github.com/microsoft/playwright/issues/15717 - [REGRESSION]: Suddenly stopped working despite nothing having changed (experimentalLoader.js:load did not call the next hook in its chain and did not explicitly signal a short circuit)
Browser Versions
- Chromium 104.0.5112.20
- Mozilla Firefox 100.0.2
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 103
- Microsoft Edge 103
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/15557 - [REGRESSION]: Event Listeners not being removed if same handler is used for different events
Browser Versions
- Chromium 104.0.5112.20
- Mozilla Firefox 100.0.2
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 103
- Microsoft Edge 103
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/15273 - [BUG] LaunchOptions config has no effect after update to v1.23.0 https://github.com/microsoft/playwright/issues/15351 - [REGRESSION]: Component testing project does not compile anymore https://github.com/microsoft/playwright/issues/15431 - [BUG] Regression: page.on('console') is ignored in 1.23
Browser Versions
- Chromium 104.0.5112.20
- Mozilla Firefox 100.0.2
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 103
- Microsoft Edge 103
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/15219 - [REGRESSION]: playwright-core 1.23.0 issue with 'TypeError [ERR_INVALID_ARG_TYPE]: The "listener" argument'
Browser Versions
- Chromium 104.0.5112.20
- Mozilla Firefox 100.0.2
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 103
- Microsoft Edge 103
Network Replay
Now you can record network traffic into a HAR file and re-use the data in your tests.
To record network into HAR file:
npx playwright open --save-har=github.har.zip https://github.com/microsoft
Alternatively, you can record HAR programmatically:
const context = await browser.newContext({
recordHar: { path: 'github.har.zip' }
});
// ... do stuff ...
await context.close();
Use the new methods page.routeFromHAR() or browserContext.routeFromHAR() to serve matching responses from the HAR file:
await context.routeFromHAR('github.har.zip');
Read more in our documentation.
Advanced Routing
You can now use route.fallback() to defer routing to other handlers.
Consider the following example:
// Remove a header from all requests.
test.beforeEach(async ({ page }) => {
await page.route('**/*', route => {
const headers = route.request().headers();
delete headers['if-none-match'];
route.fallback({ headers });
});
});
test('should work', async ({ page }) => {
await page.route('**/*', route => {
if (route.request().resourceType() === 'image')
route.abort();
else
route.fallback();
});
});
Note that the new methods page.routeFromHAR() and browserContext.routeFromHAR() also participate in routing and could be deferred to.
Web-First Assertions Update
- New method
expect(locator).toHaveValues()that asserts all selected values of<select multiple>element. - Methods
expect(locator).toContainText()andexpect(locator).toHaveText()now acceptignoreCaseoption.
Component Tests Update
- Support for Vue2 via the
@playwright/experimental-ct-vue2package. - Support for component tests for create-react-app with components in
.jsfiles.
Read more about component testing with Playwright.
Miscellaneous
- If there's a service worker that's in your way, you can now easily disable it with a new context option
serviceWorkers:// playwright.config.ts export default { use: { serviceWorkers: 'block', } } - Using
.zippath forrecordHarcontext option automatically zips the resulting HAR:const context = await browser.newContext({ recordHar: { path: 'github.har.zip', } }); - If you intend to edit HAR by hand, consider using the
"minimal"HAR recording mode that only records information that is essential for replaying:const context = await browser.newContext({ recordHar: { path: 'github.har.zip', mode: 'minimal', } }); - Playwright now runs on Ubuntu 22 amd64 and Ubuntu 22 arm64. We also publish new docker image
mcr.microsoft.com/playwright:v1.23.0-focal.
⚠️ Breaking Changes ⚠️
WebServer is now considered "ready" if request to the specified port has any of the following HTTP status codes:
200-299300-399(new)400,401,402,403(new)
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/14254 - [BUG] focus() function in version 1.22 closes dropdown (not of select type) instead of just focus on the option
Browser Versions
- Chromium 102.0.5005.40
- Mozilla Firefox 99.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 101
- Microsoft Edge 101
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/14186 - [BUG] expect.toHaveScreenshot() generates an argument error
Browser Versions
- Chromium 102.0.5005.40
- Mozilla Firefox 99.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 101
- Microsoft Edge 101
Introducing Component Testing (preview)
Playwright Test can now test your React, Vue.js or Svelte components. You can use all the features of Playwright Test (such as parallelization, emulation & debugging) while running components in real browsers.
Here is what a typical component test looks like:
// App.spec.tsx
import { test, expect } from '@playwright/experimental-ct-react';
import App from './App';
// Let's test component in a dark scheme!
test.use({ colorScheme: 'dark' });
test('should render', async ({ mount }) => {
const component = await mount(<App></App>);
// As with any Playwright test, assert locator text.
await expect(component).toContainText('React');
// Or do a screenshot 🚀
await expect(component).toHaveScreenshot();
// Or use any Playwright method
await component.click();
});
Read more in our documentation.
Locators Update
-
Role selectors allow selecting elements by their ARIA role, ARIA attributes and accessible name.
// Click a button with accessible name "log in" await page.click('role=button[name="log in"]')Read more in our documentation.
-
New
locator.filter([options])API to filter an existing locatorconst buttons = page.locator('role=button'); // ... const submitButton = buttons.filter({ hasText: 'Submit' }); await submitButton.click();
Screenshots Update
New web-first assertions expect(page).toHaveScreenshot() and expect(locator).toHaveScreenshot() that wait for screenshot stabilization and enhances test reliability.
The new assertions has screenshot-specific defaults, such as:
- disables animations
- uses CSS scale option
await page.goto('https://playwright.dev');
await expect(page).toHaveScreenshot();
The new expect(page).toHaveScreenshot() saves screenshots at the same location as expect(screenshot).toMatchSnapshot().
Browser Versions
- Chromium 102.0.5005.40
- Mozilla Firefox 99.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 101
- Microsoft Edge 101
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/pull/13597 - [BUG] fullyParallel created too many workers, slowing down test run https://github.com/microsoft/playwright/issues/13530 - [REGRESSION]: Pull request #12877 prevents the library from being used on any linux distro that is not Ubuntu
Browser Versions
- Chromium 101.0.4951.26
- Mozilla Firefox 98.0.2
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 100
- Microsoft Edge 100
Highlights
-
New experimental role selectors that allow selecting elements by their ARIA role, ARIA attributes and accessible name.
// Click a button with accessible name "log in" await page.click('role=button[name="log in"]')To use role selectors, make sure to pass
PLAYWRIGHT_EXPERIMENTAL_FEATURES=1environment variable:// playwright.config.js process.env.PLAYWRIGHT_EXPERIMENTAL_FEATURES = '1'; module.exports = { /* ... */ };Read more in our documentation.
-
New
scaleoption inPage.screenshotfor smaller sized screenshots. -
New
caretoption inPage.screenshotto control text caret. Defaults to"hide". -
New method
expect.pollto wait for an arbitrary condition:// Poll the method until it returns an expected result. await expect.poll(async () => { const response = await page.request.get('https://api.example.com'); return response.status(); }).toBe(200);expect.pollsupports most synchronous matchers, like.toBe(),.toContain(), etc. Read more in our documentation.
Behavior Changes
- ESM support when running TypeScript tests is now enabled by default. The
PLAYWRIGHT_EXPERIMENTAL_TS_ESMenv variable is no longer required. - The
mcr.microsoft.com/playwrightdocker image no longer contains Python. Please usemcr.microsoft.com/playwright/pythonas a Playwright-ready docker image with pre-installed Python. - Playwright now supports large file uploads (100s of MBs) via
Locator.setInputFilesAPI.
Browser Versions
- Chromium 101.0.4951.26
- Mozilla Firefox 98.0.2
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 100
- Microsoft Edge 100
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/13078 - [BUG] Extension required when importing other files with type="module" https://github.com/microsoft/playwright/issues/13099 - [BUG] beforeAll is called before each test (fullyParallel) https://github.com/microsoft/playwright/issues/13204 - [BUG] mask stalls the screenshot
Browser Versions
- Chromium 101.0.4921.0
- Mozilla Firefox 97.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 99
- Microsoft Edge 99
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/12711 - [REGRESSION] Page.screenshot hangs on some sites https://github.com/microsoft/playwright/issues/12807 - [BUG] Cookies get assigned before fulfilling a response https://github.com/microsoft/playwright/issues/12814 - [Question] how to use expect.any in playwright https://github.com/microsoft/playwright/issues/12821 - [BUG] Chromium: Cannot click, element intercepts pointer events https://github.com/microsoft/playwright/issues/12836 - [REGRESSION]: Tests not detected as ES module in v1.20 https://github.com/microsoft/playwright/issues/12862 - [Feature] Allow to use toMatchSnapshot for file formats other than txt (e.g. csv) https://github.com/microsoft/playwright/issues/12887 - [BUG] Locator.count() with _vue selector with Repro https://github.com/microsoft/playwright/issues/12940 - [BUG] npm audit - High Severity vulnerability in json5 package forcing to install Playwright 1.18.1 https://github.com/microsoft/playwright/issues/12974 - [BUG] Regression - chromium browser closes during test or debugging session on macos
Browser Versions
- Chromium 101.0.4921.0
- Mozilla Firefox 97.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 99
- Microsoft Edge 99
Highlights
-
New options for methods
page.screenshot(),locator.screenshot()andelementHandle.screenshot():- Option
animations: "disabled"rewinds all CSS animations and transitions to a consistent state. - Option
mask: Locator[]masks given elements, overlaying them with pink#FF00FFboxes.
- Option
-
expect().toMatchSnapshot()now supports anonymous snapshots: when snapshot name is missing, Playwright Test will generate one automatically:expect('Web is Awesome <3').toMatchSnapshot(); -
New
maxDiffPixelsandmaxDiffPixelRatiooptions for fine-grained screenshot comparison usingexpect().toMatchSnapshot():expect(await page.screenshot()).toMatchSnapshot({ maxDiffPixels: 27, // allow no more than 27 different pixels. });It is most convenient to specify
maxDiffPixelsormaxDiffPixelRatioonce inTestConfig.expect. -
Playwright Test now adds
TestConfig.fullyParallelmode. By default, Playwright Test parallelizes between files. In fully parallel mode, tests inside a single file are also run in parallel. You can also use--fully-parallelcommand line flag.// playwright.config.ts export default { fullyParallel: true, }; -
TestProject.grepandTestProject.grepInvertare now configurable per project. For example, you can now configure smoke tests project usinggrep:// playwright.config.ts export default { projects: [ { name: 'smoke tests', grep: /@smoke/, }, ], }; -
Trace Viewer now shows API testing requests.
-
locator.highlight()visually reveals element(s) for easier debugging.
Announcements
- We now ship a designated Python docker image
mcr.microsoft.com/playwright/python. Please switch over to it if you use Python. This is the last release that includes Python inside our javascriptmcr.microsoft.com/playwrightdocker image. - v1.20 is the last release to receive WebKit update for macOS 10.15 Catalina. Please update MacOS to keep using latest & greatest WebKit!
Browser Versions
- Chromium 101.0.4921.0
- Mozilla Firefox 97.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 99
- Microsoft Edge 99
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/12091 - [BUG] playwright 1.19.0 generates more than 1 trace file per test https://github.com/microsoft/playwright/issues/12106 - [BUG] Error: EBUSY: resource busy or locked when using volumes in docker-compose with playwright 1.19.0 and mcr.microsoft.com/playwright:v1.15.0-focal
Browser Versions
- Chromium 100.0.4863.0
- Mozilla Firefox 96.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 98
- Microsoft Edge 98
Highlights
This patch includes the following bug fixes:
https://github.com/microsoft/playwright/issues/12075 - [Question] After update to 1.19 firefox fails to run https://github.com/microsoft/playwright/issues/12090 - [BUG] did something change on APIRequest/Response APIs ?
Browser Versions
- Chromium 100.0.4863.0
- Mozilla Firefox 96.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 98
- Microsoft Edge 98
Playwright Test Updates
Soft assertions
Playwright Test v1.19 now supports soft assertions. Failed soft assertions do not terminate test execution, but mark the test as failed. Read more in our documentation.
// Make a few checks that will not stop the test when failed...
await expect.soft(page.locator('#status')).toHaveText('Success');
await expect.soft(page.locator('#eta')).toHaveText('1 day');
// ... and continue the test to check more things.
await page.locator('#next-page').click();
await expect.soft(page.locator('#title')).toHaveText('Make another order');
Custom error messages
You can now specify a custom error message as a second argument to the expect and expect.soft functions, for example:
await expect(page.locator('text=Name'), 'should be logged in').toBeVisible();
The error would look like this:
Error: should be logged in
Call log:
- expect.toBeVisible with timeout 5000ms
- waiting for selector "text=Name"
2 |
3 | test('example test', async({ page }) => {
> 4 | await expect(page.locator('text=Name'), 'should be logged in').toBeVisible();
| ^
5 | });
6 |
Parallel mode in file
By default, tests in a single file are run in order. If you have many independent tests in a single file, you can now
run them in parallel with method: test.describe.configure:
import { test } from '@playwright/test';
test.describe.configure({ mode: 'parallel' });
test('parallel 1', async () => {});
test('parallel 2', async () => {});
⚠️ Potentially breaking change in Playwright Test Global Setup
It is unlikely that this change will affect you, no action is required if your tests keep running as they did.
We've noticed that in rare cases, the set of tests to be executed was configured in the global setup by means of the environment variables. We also noticed some applications that were post processing the reporters' output in the global teardown. If you are doing one of the two, learn more
Locator Updates
Locator now supports a has option that makes sure it contains another locator inside:
await page.locator('article', {
has: page.locator('.highlight'),
}).locator('button').click();
The snippet above will select article that has highlight in it and will press the button in it. Read more in locator documentation
Other Updates
- New
method: Locator.page method: Page.screenshotandmethod: Locator.screenshotnow automatically hides blinking caret- Playwright Codegen now generates locators and frame locators
- New option
urlintestConfig.webServerto ensure your web server is ready before running the tests - New
property: TestInfo.errorsandproperty: TestResult.errorsthat contain all failed assertions and soft assertions.
Browser Versions
- Chromium 100.0.4863.0
- Mozilla Firefox 96.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 98
- Microsoft Edge 98
Highlights
This patch includes improvements to the TypeScript support and the following bug fixes:
https://github.com/microsoft/playwright/issues/11550 - [REGRESSION]: Errors inside route handler does not lead to unhandled rejections anymore https://github.com/microsoft/playwright/issues/11552 - [BUG] Could not resolve "C:\repo\framework\utils" in file C:\repo\tests\test.ts.
Browser Versions
- Chromium 99.0.4812.0
- Mozilla Firefox 95.0
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 97
- Microsoft Edge 97
Locator Improvements
locator.dragTo(locator)expect(locator).toBeChecked({ checked })- Each locator can now be optionally filtered by the text it contains:
Read more in locator documentation.await page.locator('li', { hasText: 'my item' }).locator('button').click();
Testing API improvements
Improved TypeScript Support
- Playwright Test now respects
tsconfig.json'sbaseUrlandpaths, so you can use aliases - There is a new environment variable
PW_EXPERIMENTAL_TS_ESMthat allows importing ESM modules in your TS code, without the need for the compile step. Don't forget the.jssuffix when you are importing your esm modules. Run your tests as follows:
npm i --save-dev @playwright/test@1.18.0
PW_EXPERIMENTAL_TS_ESM=1 npx playwright test
Create Playwright
The npm init playwright command is now generally available for your use:
# Run from your project's root directory
npm init playwright
# Or create a new project
npm init playwright new-project
This will scaffold everything needed to get started with Playwright Test: configuration file, optionally add examples, a GitHub Action workflow and a first test example.spec.ts.
New APIs & changes
- new
testCase.repeatEachIndexAPI acceptDownloadsoption now defaults totrue
Breaking change: custom config options
Custom config options are a convenient way to parametrize projects with different values. Learn more in the parametrization guide.
Previously, any fixture introduced through test.extend could be overridden in the testProject.use config section. For example,
// WRONG: THIS SNIPPET DOES NOT WORK SINCE v1.18.
// fixtures.js
const test = base.extend({
myParameter: 'default',
});
// playwright.config.js
module.exports = {
use: {
myParameter: 'value',
},
};
The proper way to make a fixture parametrized in the config file is to specify option: true when defining the fixture. For example,
// CORRECT: THIS SNIPPET WORKS SINCE v1.18.
// fixtures.js
const test = base.extend({
// Fixtures marked as "option: true" will get a value specified in the config,
// or fallback to the default value.
myParameter: ['default', { option: true }],
});
// playwright.config.js
module.exports = {
use: {
myParameter: 'value',
},
};
Browser Versions
- Chromium 99.0.4812.0
- Mozilla Firefox 95.0
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 97
- Microsoft Edge 97
(1.18.0-beta-1642620709000)
Locator Improvements
locator.dragTo(locator)expect(locator).toBeChecked({ checked })- Each locator can now be optionally filtered by the text it contains:
Read more in locator documentation.await page.locator('li', { hasText: 'my item' }).locator('button').click();
Testing API improvements
Improved TypeScript Support
- Playwright Test now respects
tsconfig.json'sbaseUrlandpaths, so you can use aliases - There is a new environment variable
PW_EXPERIMENTAL_TS_ESMthat allows importing ESM modules in your TS code, without the need for the compile step. Don't forget the.jssuffix when you are importing your esm modules. Run your tests as follows:
npm i --save-dev @playwright/test@1.18.0-rc1
PW_EXPERIMENTAL_TS_ESM=1 npx playwright test
Create Playwright
The npm init playwright command is now generally available for your use:
# Run from your project's root directory
npm init playwright
# Or create a new project
npm init playwright new-project
This will scaffold everything needed to get started with Playwright Test: configuration file, optionally add examples, a GitHub Action workflow and a first test example.spec.ts.
New APIs & changes
- new
testCase.repeatEachIndexAPI - new option fixtures
acceptDownloadsoption now defaults totrue
Browser Versions
- Chromium 99.0.4812.0
- Mozilla Firefox 95.0
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 97
- Microsoft Edge 97
Bugfixes
#11274 - fix: pin colors to 1.4.0 #11228 - fix(click): don't fail on stale context while click
Highlights
This patch includes bug fixes for the following issues:
https://github.com/microsoft/playwright/issues/10638 - [BUG] Locator.click -> subtree intercepts pointer events since version 1.17.0 https://github.com/microsoft/playwright/issues/10632 - [BUG] Playwright 1.17.0 -> After clicking the element - I get an error that click action was failed https://github.com/microsoft/playwright/issues/10627 - [REGRESSION]: Can no longer click Material UI select box https://github.com/microsoft/playwright/issues/10620 - [BUG] trailing zero width whitespace fails toHaveText
Browser Versions
- Chromium 98.0.4695.0
- Mozilla Firefox 94.0.1
- WebKit 15.4
This version of Playwright was also tested against the following stable channels:
- Google Chrome 96
- Microsoft Edge 96
(1.17.1)
Frame Locators
Playwright 1.17 introduces frame locators - a locator to the iframe on the page. Frame locators capture the logic sufficient to retrieve the iframe and then locate elements in that iframe. Frame locators are strict by default, will wait for iframe to appear and can be used in Web-First assertions.

Frame locators can be created with either page.frameLocator(selector) or locator.frameLocator(selector) method.
const locator = page.frameLocator('#my-iframe').locator('text=Submit');
await locator.click();
Read more at our documentation.
Trace Viewer Update
Playwright Trace Viewer is now available online at https://trace.playwright.dev! Just drag-and-drop your trace.zip file to inspect its contents.
NOTE: trace files are not uploaded anywhere; trace.playwright.dev is a progressive web application that processes traces locally.
- Playwright Test traces now include sources by default (these could be turned off with tracing option)
- Trace Viewer now shows test name
- New trace metadata tab with browser details
- Snapshots now have URL bar

HTML Report Update
- HTML report now supports dynamic filtering
- Report is now a single static HTML file that could be sent by e-mail or as a slack attachment.

Ubuntu ARM64 support + more
- Playwright now supports Ubuntu 20.04 ARM64. You can now run Playwright tests inside Docker on Apple M1 and on Raspberry Pi.
- You can now use Playwright to install stable version of Edge on Linux:
npx playwright install msedge
New APIs
- Tracing now supports a
'title'option - Page navigations support a new
'commit'waiting option - HTML reporter got new configuration options
testConfig.snapshotDiroptiontestInfo.parallelIndextestInfo.titlePathtestOptions.tracehas new optionsexpect.toMatchSnapshotsupports subdirectoriesreporter.printsToStdio()
Browser Versions
- Chromium 98.0.4695.0
- Mozilla Firefox 94.0.1
- WebKit 15.4
This version was also tested against the following stable channels:
- Google Chrome 96
- Microsoft Edge 96
Frame Locators
Playwright 1.17 introduces frame locators - a locator to the iframe on the page. Frame locators capture the logic sufficient to retrieve the iframe and then locate elements in that iframe. Frame locators are strict by default, will wait for iframe to appear and can be used in Web-First assertions.

Frame locators can be created with either page.frameLocator(selector) or locator.frameLocator(selector) method.
const locator = page.frameLocator('#my-iframe').locator('text=Submit');
await locator.click();
Read more at our documentation.
Trace Viewer Update
Playwright Trace Viewer is now available online at https://trace.playwright.dev! Just drag-and-drop your trace.zip file to inspect its contents.
NOTE: trace files are not uploaded anywhere; trace.playwright.dev is a progressive web application that processes traces locally.
- Playwright Test traces now include sources by default (these could be turned off with tracing option)
- Trace Viewer now shows test name
- New trace metadata tab with browser details
- Snapshots now have URL bar

HTML Report Update
- HTML report now supports dynamic filtering
- Report is now a single static HTML file that could be sent by e-mail or as a slack attachment.

Ubuntu ARM64 support + more
- Playwright now supports Ubuntu 20.04 ARM64. You can now run Playwright tests inside Docker on Apple M1 and on Raspberry Pi.
- You can now use Playwright to install stable version of Edge on Linux:
npx playwright install msedge
New APIs
- Tracing now supports a
'title'option - Page navigations support a new
'commit'waiting option - HTML reporter got new configuration options
testConfig.snapshotDiroptiontestInfo.parallelIndextestInfo.titlePathtestOptions.tracehas new optionsexpect.toMatchSnapshotsupports subdirectoriesreporter.printsToStdio()
Highlights
This patch includes bug fixes for the following issues:
https://github.com/microsoft/playwright/issues/9849 - [BUG]: toHaveCount fails with serialization error in 1.16 when elements do not yet exists https://github.com/microsoft/playwright/issues/9897 - [Bug]: TraceViewer doesn't show actions https://github.com/microsoft/playwright/issues/9902 - [BUG] Warn if the html-report gets opened with file://
Browser Versions
- Chromium 97.0.4666.0
- Mozilla Firefox 93.0
- WebKit 15.4
This version of Playwright was also tested against the following stable channels:
- Google Chrome 94
- Microsoft Edge 94
(1.16.3-1635814179000)
Highlights
This patch includes bug fixes for the following issues:
https://github.com/microsoft/playwright/issues/7818 - [Bug]: dedup snapshot CSS images https://github.com/microsoft/playwright/issues/9741 - [BUG] Error while an attempt to install Playwright in CI -> Failed at the playwright@1.16.1 install script https://github.com/microsoft/playwright/issues/9756 - [Regression] Page.screenshot does not work inside Docker with BrowserServer https://github.com/microsoft/playwright/issues/9759 - [BUG] 1.16.x the package.json is not export anymore https://github.com/microsoft/playwright/issues/9760 - [BUG] snapshot updating causes failures for all tries except the last https://github.com/microsoft/playwright/issues/9768 - [BUG] ignoreHTTPSErrors not working on page.request
Browser Versions
- Chromium 97.0.4666.0
- Mozilla Firefox 93.0
- WebKit 15.4
This version of Playwright was also tested against the following stable channels:
- Google Chrome 94
- Microsoft Edge 94
(1.16.2-1635322350000)
Highlights
This patch includes bug fixes for the following issues:
https://github.com/microsoft/playwright/issues/9688 - [REGRESSION]: toHaveCount does not work anymore with 0 elements https://github.com/microsoft/playwright/issues/9692 - [BUG] HTML report shows locator._withElement for locator.evaluate
Browser Versions
- Chromium 97.0.4666.0
- Mozilla Firefox 93.0
- WebKit 15.4
This version of Playwright was also tested against the following stable channels:
- Google Chrome 94
- Microsoft Edge 94
(1.16.0-1634781227000)
🎭 Playwright Test
API Testing
Playwright 1.16 introduces new API Testing that lets you send requests to the server directly from Node.js! Now you can:
- test your server API
- prepare server side state before visiting the web application in a test
- validate server side post-conditions after running some actions in the browser
To do a request on behalf of Playwright's Page, use new page.request API:
import { test, expect } from '@playwright/test';
test('context fetch', async ({ page }) => {
// Do a GET request on behalf of page
const response = await page.request.get('http://example.com/foo.json');
// ...
});
To do a stand-alone request from node.js to an API endpoint, use new request fixture:
import { test, expect } from '@playwright/test';
test('context fetch', async ({ request }) => {
// Do a GET request on behalf of page
const response = await request.get('http://example.com/foo.json');
// ...
});
Read more about it in our API testing guide.
Response Interception
It is now possible to do response interception by combining API Testing with request interception.
For example, we can blur all the images on the page:
import { test, expect } from '@playwright/test';
import jimp from 'jimp'; // image processing library
test('response interception', async ({ page }) => {
await page.route('**/*.jpeg', async route => {
const response = await page._request.fetch(route.request());
const image = await jimp.read(await response.body());
await image.blur(5);
route.fulfill({
response,
body: await image.getBufferAsync('image/jpeg'),
});
});
const response = await page.goto('https://playwright.dev');
expect(response.status()).toBe(200);
});
Read more about response interception.
New HTML reporter
Try it out new HTML reporter with either --reporter=html or a reporter entry
in playwright.config.ts file:
$ npx playwright test --reporter=html
The HTML reporter has all the information about tests and their failures, including surfacing trace and image artifacts.

Read more about our reporters.
🎭 Playwright Library
locator.waitFor
Wait for a locator to resolve to a single element with a given state.
Defaults to the state: 'visible'.
Comes especially handy when working with lists:
import { test, expect } from '@playwright/test';
test('context fetch', async ({ page }) => {
const completeness = page.locator('text=Success');
await completeness.waitFor();
expect(await page.screenshot()).toMatchSnapshot('screen.png');
});
Read more about locator.waitFor().
🎭 Playwright Trace Viewer
- web-first assertions inside trace viewer
- run trace viewer with
npx playwright show-traceand drop trace files to the trace viewer PWA - API testing is integrated with trace viewer
- better visual attribution of action targets
Read more about Trace Viewer.
Browser Versions
- Chromium 97.0.4666.0
- Mozilla Firefox 93.0
- WebKit 15.4
This version of Playwright was also tested against the following stable channels:
- Google Chrome 94
- Microsoft Edge 94
(1.16.0-1634781227000)
Highlights
This patch includes bug fixes for the following issues:
https://github.com/microsoft/playwright/issues/9261 - [BUG] npm init playwright fails on path spaces https://github.com/microsoft/playwright/issues/9298 - [Question]: Should new Headers methods work in RouteAsync ?
Browser Versions
- Chromium 96.0.4641.0
- Mozilla Firefox 92.0
- WebKit 15.0
This version of Playwright was also tested against the following stable channels:
- Google Chrome 93
- Microsoft Edge 93
1.15.2-1633455481000
Highlights
This patch includes bug fixes for the following issues:
#9065 - [BUG] browser(webkit): disable COOP support #9092 - [BUG] browser(webkit): fix text padding #9048 - [BUG] fix(test-runner): toHaveURL respect baseURL #8955 - [BUG] fix(inspector): stop on all snapshottable actions #8921 - [BUG] fix(test runner): after hooks step should not be nested #8975 - [BUG] feat(fetch): support form data and json encodings #9071 - [BUG] fix(fetch): be compatible with a 0 timeout #8999 - [BUG] fix: do not dedup header values #9038 - [BUG] fix: restore support for slowmo connect option
Browser Versions
- Chromium 96.0.4641.0
- Mozilla Firefox 92.0
- WebKit 15.0
This version of Playwright was also tested against the following stable channels:
- Google Chrome 93
- Microsoft Edge 93
1.15.0-1633020276000
🎭 Playwright Library
🖱️ Mouse Wheel
By using Page.mouse.wheel you are now able to scroll vertically or horizontally.
📜 New Headers API
Previously it was not possible to get multiple header values of a response. This is now possible and additional helper functions are available:
- Request.allHeaders()
- Request.headersArray()
- Request.headerValue(name: string)
- Response.allHeaders()
- Response.headersArray()
- Response.headerValue(name: string)
- Response.headerValues(name: string)
🌈 Forced-Colors emulation
Its now possible to emulate the forced-colors CSS media feature by passing it in the context options or calling Page.emulateMedia().
New APIs
- Page.route() accepts new
timesoption to specify how many times this route should be matched. - Page.setChecked(selector: string, checked: boolean) and Locator.setChecked(selector: string, checked: boolean) was introduced to set the checked state of a checkbox.
- Request.sizes() Returns resource size information for given http request.
- BrowserContext.tracing.startChunk() - Start a new trace chunk.
- BrowserContext.tracing.stopChunk() - Stops a new trace chunk.
🎭 Playwright Test
🤝 test.parallel() run tests in the same file in parallel
test.describe.parallel('group', () => {
test('runs in parallel 1', async ({ page }) => {
});
test('runs in parallel 2', async ({ page }) => {
});
});
By default, tests in a single file are run in order. If you have many independent tests in a single file, you can now run them in parallel with test.describe.parallel(title, callback).
🛠 Add --debug CLI flag
By using npx playwright test --debug it will enable the Playwright Inspector for you to debug your tests.
Browser Versions
- Chromium 96.0.4641.0
- Mozilla Firefox 92.0
- WebKit 15.0
This version of Playwright was also tested against the following stable channels:
- Google Chrome 93
- Microsoft Edge 93
Highlights
This patch includes bug fixes for the following issues:
#8287 - [BUG] webkit crashes intermittently: "file data stream has an unexpected number of bytes" #8281 - [BUG] HTML report crashes if diff snapshot does not exists #8230 - Using React Selectors with multiple React trees #8366 - [BUG] Mark timeout in isVisible as deprecated and noop
Browser Versions
- Chromium 94.0.4595.0
- Mozilla Firefox 91.0
- WebKit 15.0
This version of Playwright was also tested against the following stable channels:
- Google Chrome 92
- Microsoft Edge 92
🎭 Playwright Library
⚡️ New "strict" mode
Selector ambiguity is a common problem in automation testing. "strict" mode ensures that your selector points to a single element and throws otherwise.
Pass strict: true into your action calls to opt in.
// This will throw if you have more than one button!
await page.click('button', { strict: true });
📍 New Locators API
Locator represents a view to the element(s) on the page. It captures the logic sufficient to retrieve the element at any given moment.
The difference between the Locator and ElementHandle is that the latter points to a particular element, while Locator captures the logic of how to retrieve that element.
Also, locators are "strict" by default!
const locator = page.locator('button');
await locator.click();
Learn more in the documentation.
🧩 Experimental React and Vue selector engines
React and Vue selectors allow selecting elements by its component name and/or property values. The syntax is very similar to attribute selectors and supports all attribute selector operators.
await page.click('_react=SubmitButton[enabled=true]');
await page.click('_vue=submit-button[enabled=true]');
Learn more in the react selectors documentation and the vue selectors documentation.
✨ New nth and visible selector engines
nthselector engine is equivalent to the:nth-matchpseudo class, but could be combined with other selector engines.visibleselector engine is equivalent to the:visiblepseudo class, but could be combined with other selector engines.
// select the first button among all buttons
await button.click('button >> nth=0');
// or if you are using locators, you can use first(), nth() and last()
await page.locator('button').first().click();
// click a visible button
await button.click('button >> visible=true');
🎭 Playwright Test
✅ Web-First Assertions
expect now supports lots of new web-first assertions.
Consider the following example:
await expect(page.locator('.status')).toHaveText('Submitted');
Playwright Test will be re-testing the node with the selector .status until fetched Node has the "Submitted" text. It will be re-fetching the node and checking it over and over, until the condition is met or until the timeout is reached. You can either pass this timeout or configure it once via the testProject.expect value in test config.
By default, the timeout for assertions is not set, so it'll wait forever, until the whole test times out.
List of all new assertions:
expect(locator).toBeChecked()expect(locator).toBeDisabled()expect(locator).toBeEditable()expect(locator).toBeEmpty()expect(locator).toBeEnabled()expect(locator).toBeFocused()expect(locator).toBeHidden()expect(locator).toBeVisible()expect(locator).toContainText(text, options?)expect(locator).toHaveAttribute(name, value)expect(locator).toHaveClass(expected)expect(locator).toHaveCount(count)expect(locator).toHaveCSS(name, value)expect(locator).toHaveId(id)expect(locator).toHaveJSProperty(name, value)expect(locator).toHaveText(expected, options)expect(page).toHaveTitle(title)expect(page).toHaveURL(url)expect(locator).toHaveValue(value)
⛓ Serial mode with describe.serial
Declares a group of tests that should always be run serially. If one of the tests fails, all subsequent tests are skipped. All tests in a group are retried together.
test.describe.serial('group', () => {
test('runs first', async ({ page }) => { /* ... */ });
test('runs second', async ({ page }) => { /* ... */ });
});
Learn more in the documentation.
🐾 Steps API with test.step
Split long tests into multiple steps using test.step() API:
import { test, expect } from '@playwright/test';
test('test', async ({ page }) => {
await test.step('Log in', async () => {
// ...
});
await test.step('news feed', async () => {
// ...
});
});
Step information is exposed in reporters API.
🌎 Launch web server before running tests
To launch a server during the tests, use the webServer option in the configuration file. The server will wait for a given port to be available before running the tests, and the port will be passed over to Playwright as a baseURL when creating a context.
// playwright.config.ts
import { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
webServer: {
command: 'npm run start', // command to launch
port: 3000, // port to await for
timeout: 120 * 1000,
reuseExistingServer: !process.env.CI,
},
};
export default config;
Learn more in the documentation.
Browser Versions
- Chromium 94.0.4595.0
- Mozilla Firefox 91.0
- WebKit 15.0
This version of Playwright was also tested against the following stable channels:
- Google Chrome 92
- Microsoft Edge 92
Highlights
This patch includes bug fixes for the following issues:
#7800 - [Bug]: empty screen when opening trace.zip #7785 - [Bug]: Channel installation requires curl/wget on the system #7746 - [Bug]: global use is not working to launch firefox or webkit #7849 - [Bug]: Setting the current shard through config uses n+1 instead
Browser Versions
- Chromium 93.0.4576.0
- Mozilla Firefox 90.0
- WebKit 14.2
Playwright Test
- ⚡️ Introducing Reporter API which is already used to create an Allure Playwright reporter.
- ⛺️ New
baseURLfixture to support relative paths in tests.
Playwright
- 🖖 Programmatic drag-and-drop support via the
page.dragAndDrop()API. - 🔎 Enhanced HAR with body sizes for requests and responses. Use via
recordHaroption inbrowser.newContext().
Tools
- Playwright Trace Viewer now shows parameters, returned values and
console.log()calls. - Playwright Inspector can generate Playwright Test tests.
New and Overhauled Guides
- Intro
- Authentication
- Chome Extensions
- Playwright Test Configuration
- Playwright Test Annotations
- Playwright Test Fixtures
Browser Versions
- Chromium 93.0.4576.0
- Mozilla Firefox 90.0
- WebKit 14.2
New Playwright APIs
- new
baseURLoption inbrowser.newContext()andbrowser.newPage() response.securityDetails()andresponse.serverAddr()page.dragAndDrop()andframe.dragAndDrop()download.cancel()page.inputValue(),frame.inputValue()andelementHandle.inputValue()- new
forceoption inpage.fill(),frame.fill(), andelementHandle.fill() - new
forceoption inpage.selectOption(),frame.selectOption(), andelementHandle.selectOption()
Highlights
This patch release includes bug fixes for the following issues:
#7085 - [BUG] Traceviewer screens are not recorded well when using constructable stylesheets #7093 - Folder for a test-case is getting generated in test-results even if Test Case Passes when properties are given on Failure #7099 - [test-runner] Missing types for the expect library #7124 - [Test Runner] config.outputDir must be an absolute path #7141 - [Feature] Options for video resolution #7163 - [Test runner] artifacts are removed #7223 - [BUG] test-runner viewport can't be null #7284 - [BUG] incorrect @playwright/test typings for toMatchSnapshot/toMatchInlineSnapshot/etc #7304 - [BUG] Snapshots are not captured if there is an animation at the beginning #7326 - [BUG] When PW timeouts, last trace action does not get collected[BUG] When PW timeouts, last trace action does not get collected
Browser Versions
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
This version of Playwright was also tested against the following stable channels:
- Google Chrome 91
- Microsoft Edge 91
Highlights
This patch release includes bugfixes for the following issues:
- #7015 - [BUG] Firefox: strange undefined toJSON property on JS objects
- #7004 - [test runner] Error: Error while reading global-setup.ts: Cannot find module 'global-setup.ts'
- #7048 - [BUG] Dialogs cannot be dismissed if tracing is on in Chromium or Webkit
- #7058 - [BUG] Getting no video frame error for mobile chrome
- #7020 - [Feature] Codegen should be able to emit @playwright/test syntax
Browser Versions
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
This version of Playwright was also tested against the following stable channels:
- Google Chrome 91
- Microsoft Edge 91
Highlights
This patch includes bug fixes for the following issues:
#6984 - slowMo does not exist in type 'Fixtures<{}, {}, PlaywrightTestOptions, PlaywrightWorkerOptions>' #6982 - [trace viewer] srcset sanitization removes space between values, hence breaks the links #6981 - [BUG] Getting "Please install @playwright/test package to use Playwright Test."
Browser Versions
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
This version of Playwright was also tested against the following stable channels:
- Google Chrome 91
- Microsoft Edge 91
⚡️ Introducing Playwright Test
Playwright Test is a new test runner built from scratch by Playwright team specifically to accommodate end-to-end testing needs:
- Run tests across all browsers.
- Execute tests in parallel.
- Enjoy context isolation and sensible defaults out of the box.
- Capture traces, videos, screenshots and other artifacts on failure.
- Infinitely extensible with fixtures.
Installation:
npm i -D @playwright/test
Simple test tests/foo.spec.ts:
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
await page.goto('https://playwright.dev/');
const name = await page.innerText('.navbar__title');
expect(name).toBe('Playwright');
});
Running:
npx playwright test
👉 Read more in testrunner documentation.
🧟♂️ Introducing Playwright Trace & TraceViewer
Playwright TraceViewer is a new GUI tool that helps exploring recorded Playwright traces after the script ran. Playwright traces let you examine:
- page DOM before and after each Playwright action
- page rendering before and after each Playwright action
- browse network during script execution
Traces are recorded using the new browserContext.tracing API:
const browser = await chromium.launch();
const context = await browser.newContext();
// Start tracing before creating / navigating a page.
await context.tracing.start({ screenshots: true, snapshots: true });
const page = await context.newPage();
await page.goto('https://playwright.dev');
// Stop tracing and export it into a zip archive.
await context.tracing.stop({ path: 'trace.zip' });
Traces are examined later with the Playwright CLI:
npx playwright show-trace trace.zip
That will open the following GUI:

👉 Read more in trace viewer documentation.
Browser Versions
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
This version of Playwright was also tested against the following stable channels:
- Google Chrome 91
- Microsoft Edge 91
New APIs
reducedMotionoption inpage.emulateMedia(),browserType.launchPersistentContext(),browser.newContext()andbrowser.newPage()browserContext.on('request')browserContext.on('requestfailed')browserContext.on('requestfinished')browserContext.on('response')tracesDiroption inbrowserType.launch()andbrowserType.launchPersistentContext()- new
browserContext.tracingAPI namespace - new
download.page()method - new options in
electron.launch():acceptDownloadsbypassCSPcolorSchemeextraHTTPHeadersgeolocationhttpCredentials
Issues Closed (41)
#1094 - [Feature] drag and drop
#3320 - [Feature] Emulate reduced motion media query
#4054 - [REGRESSION]: chromium.connect does not work with vanilla CDP servers anymore
#5189 - [Bug] Codegen generates goto for page click
#4535 - [Feature] page.waitForResponse support for async predicate function
#4704 - [BUG] Unable to upload big file on firefox.
#4752 - [Feature] export the screenshot options type
#5136 - [BUG] Yarn install (yarn 2) does not install chromium from time to time.
#5151 - [Question] Playwright + Firefox: How to disable download prompt and allows it to save by default?
#5446 - [BUG] Use up to date Chromium version in device User-Agents
#5501 - [BUG] Can't run Playwright in Nix
#5510 - [Feature] Improve documentation, document returned type for all methods
#5537 - [BUG] webkit reports incorrect download url
#5542 - [BUG] HTML response is null on requestfinished when opening popup
#5617 - [BUG] [Codegen] Page click recorded as click + goto
#5695 - [BUG] Uploading executable file in firefox browser
#5753 - [Question] - Page.click fails
#5775 - [Question] Firefox Error: NS_BINDING_ABORTED [Question]
#5947 - [Question] about downloads with launchPersistentContext
#5962 - [BUG?] Download promises don't resolve when using Chromium instead of Firefox in headful mode
#6026 - [BUG] Node.js 16 results in DeprecationWarning: Use of deprecated folder mapping "./" in the "exports" field with file import
#6137 - Chromium Issue while loading a page
#6239 - [BUG] Blank screenshot saved after test failure in CI
#6240 - [Question] Can't wait for an element to be visible when it is overlapped with other elements in frontend
#6264 - [BUG?] Mouse actions produce different result depending on slowMo setting
#6340 - [Feature] Capture network requests on BrowserContext
#6373 - Stream or capture Video into buffer [Question]
#6390 - [devops] workaround Chromium windows issues with swiftshader
#6403 - [BUG] Chromium - Playwright not intercepting importScripts requests in WebWorker
#6415 - [BUG] Browsers will not start in GitLab pipeline
#6431 - [BUG] Device emulation not working with CLI
#6439 - [BUG] screencast tests fail on Mac10.14
#6447 - [Question] How to use map function in $$
#6453 - [BUG] Firefox / Webkit: Unable to click element in iframe (Frame has been detached)
#6460 - getDisplayMedia in headless
#6469 - [BUG] Screencast & video metabug
#6473 - [Feature] allow custom args for ffmpeg in VideoRecorder.ts
#6477 - [BUG] webkit can disable mouse when evaluating specified JavaScript code
#6480 - [Feature] on('selector' ...
#6483 - [Question] How to set path for local exe?
#6485 - [BUG] Cannot download a file in /tmp/ with a Snap browser
Commits (342)
d22fa868 - devops: update trigger for firefox beta builder
12d8c54e - chore: swap firefox-stable and firefox (#6950)
bd193ca6 - feat: nicer stub for WebKit on MacOS 10.14 (#6948)
55da16d8 - Revert "feat: switch to the Firefox Stable equivalent by default (#6926)" (#6947)
a1e8d2d5 - feat: switch to the Firefox Stable equivalent by default (#6926)
15668f04 - chore: make WebKit @ MacOS 10.14 error more prominent (#6943)
d0eaec36 - chore: clarify that we download Playwright browser builds (#6938)
334096ed - docs(pom): fixed JS example which contained TS (#6917)
52878bb1 - docs: use proper option name for --workers (#6942)
99ec32ae - chore: more doc nits (#6937)
8960584b - fix(chromium): drag and drop works in chromium (#6207)
42a9e4a0 - docs(mobile): make experimental Android support more present (#6932)
8c13f679 - fix(test runner): remove folio/jest namespaces in expect matchers (#6930)
cfd49b5c - feat: support npx playwright install msedge (#6861)
46a02137 - chore: remove internal uses of "folio" (#6931)
b556ee6f - chore: brush up playwright-test types (#6928)
f745bf1f - chore: bring in folio source (#6923)
d4e50bed - fix: do not install media pack on non-server windows (#6925)
4b5ad33c - doc: fix first .net script (#6922)
82041b2f - test: roll to folio@0.4.0-alpha28 (#6918)
f4417556 - docs(dotnet): add test runner docs (#6919)
69b73462 - fix: various test-related fixes (#6916)
a8364668 - fix(tracing): error handling (#6888)
b5ac3932 - docs(showcase): fixed typo in showcase.md (#6915)
9ad507d9 - doc(test): pass through test docs (#6914)
ec2b6a7d - test: add a glob test (#6911)
ff3ad7a3 - fix(android): to not call Browser.setDownloadBehavior (#6913)
9142d8c2 - docs: fix that test-runner is not included (#6912)
233f1874 - feat(inspector): remove snapshots (#6909)
a96491cb - feat(downloads): subscribe to download events in Browser domain instead of Page (#6082)
e37c078e - test(nonStallingRawEvaluateInExistingMainContext): fix broken test (#6908)
21b00d0b - test: roll to folio@0.4.0-alpha27 (#6897)
85786b1a - feat(trace viewer): fix UI issues (#6890)
cfcf6a88 - feat: use WebKit stub on MacOS 10.14 (#6892)
657aa04b - browser(webkit): import <optional> to fix win compilation (#6895)
abc66c6e - docs(api): add missing callback parameter to waitForRequestFinished (#6893)
2663c0bf - browser(webkit): import <optional> to fix mac compilation (#6894)
cce62da3 - browser(webkit): roll to 06/03 (#6889)
fb0004c2 - feat(webkit): bump to 1492 (#6887)
8a81b11d - devops: replace WebKit for MacOS 10.14 build with a stub (#6886)
401dcfde - chore: do not use a subshell hack when using XVFB (#6884)
f264e85a - chore: bump dependency to fix vulnerability (#6882)
d4482f3a - chore: do not use Array.from in injected script (#6876)
f2cc439d - chore: move electron back from FYI bots to CQ1 bots (#6883)
b19b2dc3 - devops: introduce manual @next NPM publishing (#6881)
e41979a5 - chore: import @playwright/test (#6880)
375ceca9 - test: disable chromium headed tracing test (#6878)
0830c85d - test: roll to folio@0.4.0-alpha26 (#6877)
d7c202ca - browser(webkit): fix time formatting and mac compilation (#6875)
064150f8 - chore: use fs.promises API instead of promisify (#6871)
d16afef7 - doc(tracing): add a trace viewer doc (#6864)
3de3a889 - feat(test): introduce npx playwright test (#6816)
13b6444b - docs(python): add docs for installing with conda (#6845)
cc2c6917 - test: roll to folio@0.4.0-alpha25 (#6863)
b2143a95 - chore: make tracing zero config (#6859)
837ee08a - fix(waitForSelector): retry when context is gone during node adoption (#6851)
8a68fa1e - docs(test runner): advanced section (#6862)
c09726b0 - test: add tests for port-forwarding via playwrightclient (#6860)q
4fa792ee - browser(webkit): getLocalStorageData command (#6858)
c5e1c8b9 - docs: use explicit tab suffixes (#6855)
e91e49e5 - feat(port-forwarding): add playwrightclient support (#6786)
33c2f6c3 - chore: do not bundle api.json and protocol.yml (#6841)
254ec155 - feat(user-agent): Adding User-Agent in headers while making connection to browser (#6813)
17b6f06b - feat: install media pack on windows with npx playwright install-deps (#6836)
2fde9bc1 - fix(webkit): use new awaitPromise parameter instead of separate command (#6852)
d28f45b6 - api(tracing): export -> stop({path}) (#6802)
79b244a2 - chore: use bash instead of sh in code blocks (#6847)
f9c8b78c - feat(webkit): bump to 1490 (#6842)
ec7d37d9 - chore: update eslint config (#6840)
831a1c84 - feat(firefox-stable): roll Firefox-Stable to Firefox v89 (#6833)
ffe89c4e - docs(installation): use RFC5735 IPs for examples (#6729)
919d2583 - feat: support npx playwright install chrome (#6835)
1020d3d3 - feat(webkit): bump to 1488 (#6826)
251c7d8d - test: properly disable electron test (#6839)
d767fc2f - browser(firefox-stable): disable proton UI in firefox stable (#6838)
a1106e5d - test: disable test that fails on Electron (#6837)
c9613b36 - devops: introduce "FYI" test bots (#6834)
cb4adb14 - feat: install chrome-beta via cli (#6831)
3c3a7f92 - feat(chromium): roll Chromium to r888113 (#6832)
4f5b65f4 - chore: update package-lock.json to v2 (#6830)
24dca969 - chore: remove electron/android from build_packages (#6827)
b4ffe86f - browser(webkit): add missing override annotations (#6829)
9b81dccc - browser(webkit): add awaitPromise parameter to Runtime.callFunctionOn (#6828)
d79110dc - fix(port-forwarding): close socket on unexpected payloads (#6753)
531d35f9 - browser(chromium): revert swiftshader fixes (#6824)
17585a36 - devops: do not run tests for docs changes (#6825)
c8c849e1 - docs(page): add TypeScript $eval type-hint notes (#6693)
0f7a7604 - browser(firefox): roll Firefox-stable to 89 (#6823)
d21a72e7 - chore: create new Playwright instance when launching server (#6820)
2951f4b0 - chore(evaluate): remove private _evaluateInUtility methods (#6815)
5fd15d8a - docs(test runner): put more example in various sections (#6812)
98fc8b17 - docs(test runner): update reporters and snapshots docs (#6811)
c8c77e4d - docs: use sha256 for exposeFunction everywhere (#6805)
329fdb18 - chore(deps): bump ws from 7.4.5 to 7.4.6 (#6792)
9c421922 - docs(python): add expect wrapper aliases for roll (#6809)
47d4d473 - docs: fixed wrong waitForRequestFinished description (#6808)
d6fe9f0b - docs(test runner): more basic docs (#6803)
709a4cbe - docs(test runner): configuration docs (#6801)
f7e72056 - docs: update test runner docs (#6795)
7f0d817a - test: side effects of context.storageState() (#6793)
58e74b47 - browser(webkit): fix compilation on Ubuntu 18 (#6794)
8fefac9b - test: roll to folio@0.4.0-alpha21 (#6789)
a7afcf24 - docs: js/ts snippets for tests (#6791)
040e9013 - browser(webkit): roll to 05/27/21 (#6787)
9a160c9f - feat(webkit): bump to 1486 (#6741)
c54c4871 - docs(build): add more logging hints to the cheatsheet (#6785)
d2ab1951 - feat(firefox): bump to 1268 (#6779)
0f760627 - docs: add test runner docs (#6784)
93a0efa8 - docs(runner): start adding runner docs (3) (#6777)
2f36feef - browser(firefox-stable): merge do not use Array.prototype.toJSON for serialization (#6783)
c8ee008a - browser(webkit): fix headless popup window crash (#6782)
ee7e38c6 - test: roll to folio@0.4.0-alpha19 (#6774)
2c9e6e81 - docs(runner): start adding runner docs (2) (#6776)
4578d579 - docs(runner): start adding runner docs (#6773)
ddce546e - chore(lint): upgrade @typescript-eslint/eslint-plugin to 4.25.0 (#6770)
7b4af6b2 - docs: text nits (3)
250c51fd - docs: text nits (2)
9233a61b - doc: text nit
3b220e50 - test: add failing test for eval with overridden Array.toJSON (#6766)
fb3c6e50 - api(dotnet): remove whenall (#6768)
9f3e6656 - fix(inspector): do not pause while recording (#6604)
95bd4b31 - chore: fix codegen to emit new C# api (#6763)
f60b79a3 - browser(firefox): do not use Array.prototype.toJSON for serialization (#6767)
d36bffb9 - fix(connect): respect timeout in all scenarios (#6762)
bb0e196b - api(dotnet): specialize waitForEvent (#6761)
3aa14714 - chore: better logging for Windows CrashPad problem (#6758)
1d0cdb35 - chore(chromium): disable GlobalMediaControls feature (#6754)
93648aaf - chore: generate dotnet initializers (#6755)
1778e117 - fix(port-forwarding): on WebKit Win (#6745)
59d591bc - chore(port-forwarding): validate forwarded ports on the client side (#6756)
792f3d41 - api(dotnet): use jsonelement (#6749)
c60974d9 - feat: do not rely on chocolatey to install Google Chrome Beta (#6735)
24a23260 - api(dotnet): use lists, not collections (#6746)
9b5bcba1 - devops: fix goma to use new authentication (#6747)
f7f08c9c - api(dotnet): normalize enums, remove browser channel enum (#6738)
15bf6a0a - docs(class-page.md): Add additional clarification on requestFailed event (#6724)
9dd2f833 - fix(codegen): update csharp boilerplate (#6742)
3f43db5c - feat(browserServer): forward local ports (#6375)
c9f35fb8 - test: revert partly 8770c64 (#6740)
01d8f879 - chore(CLI): let other langs specify exec name (#6719)
39a8abd9 - fix(install): prevent new-lines on CI/without TTY (#6703)
f629cbe0 - docs: provide examples for PowerShell when settings env vars (#6718)
30e5681b - chore: report correct browser channel for Android tests (#6733)
4076110e - browser(webkit): fix jpeg encoding on mac after last roll (#6732)
05e5ed25 - test: revert .only (#6728)
8770c646 - browser(webkit): fix mac compilation after latest roll (#6727)
2321abb2 - api(dotnet): fix json api (#6723)
adf87fe9 - browser(webkit): roll to 05/24/21 (#6722)
2e8d65e9 - test: skip falky raw headers test in Chromium (#6721)
88defbd5 - docs(network): fixed proxy typo with username (#6716)
48b48828 - test: roll to folio@0.4.0-alpha17 (#6712)
ac0980e1 - chore(linting): enable required semicolons rule in TS (#6701)
3097b9a4 - api(dotnet): use json element for a11y (#6710)
be95cf48 - api(dotnet): make headers a dict (#6709)
3bdb1c35 - api(dotnet): generate api in a specific folder (#6708)
7d0b4c26 - chore: fix model types generation (#6706)
17553e25 - api(dotnet): hide reducedMotion from csharp until C# 1.11 release (#6705)
f9357531 - doc(dotnet): add a self-contained example (#6702)
ba29e99a - feat: added reduced motion media query emulation (#6646)
af2fec6b - fix(codegen): generate all options for java (#6698)
f529f0a2 - fix(codegen): generate acceptDownloads option for download signals (#6697)
d1d49b34 - feat(chromium): roll Chromium to r884693 (#6686)
485638e4 - feat(webkit): roll Deprecated WebKit to 1444 (#6696)
72c6f4f6 - Corrected JavaScript lambda in python sections (#6692)
544ca37c - chore(dotnet): generate clone constructors for options (#6684)
2cdf1e12 - chore: add more logging while installing browsers (#6688)
e4946b79 - fix(codegen): update csharp scripts to new syntax (#6685)
08773e83 - browser(firefox-beta): roll Firefox to 89.0b15 (#6689)
f8981962 - browser(chromium): build Chromium r885250 (#6687)
b2b45afc - browser(firefox): override reduced motion no-preference (#6683)
57f3a53a - test: roll to folio@0.4.0-alpha16 (#6656)
ae35906f - devops: flakiness dashboard to support new folio report (#6677)
447a0c4b - feat(types): export ScreenshotOptions (#6419)
8490eb3c - docs: small tweaks (#6681)
6281b95a - docs(dotnet): follow up to Anze's changes (#6672)
88591d49 - feat(firefox): roll to 1265 (#6678)
bae57944 - feat(webkit): roll to 1482 (#6676)
6b8b75d1 - docs: add JUnit examples (#6668)
c80e9fa5 - docs(dotnet): guides (#6639)
0aa9e063 - docs(dotnet): First part/pass for guides (#6583)
2f9b0575 - browser(firefox): partially revert scrollbars patch (#6670)
fad77e2f - docs(dotnet): udpate existing examples (#6669)
ba637e6e - chore: bring back dblclick alias (#6667)
2ef47b95 - fix: wait for video to finish when persistent context closes (#6664)
e679d994 - chore: remove input files and selected option overrides (#6665)
1f22673c - api(dotnet): introduce RunAndWaitForAsync (#6660)
202511d6 - docs: chromiumSandbox is by default false (#6662)
277eca1b - devops: install all FF system dependencies with --full on build (#6657)
4e979fd9 - browser(chromium): roll to latests Chromium (#6661)
e19aea73 - docs: do not recommend context for parallel execution (#6659)
8d4e6168 - browser(webkit): added reduced motion emulation (#6645)
0bf4c407 - feat(webkit): bump to 1481 (#6652)
5076cb32 - browsr(webkit): cherry-pick(mac-14): bootstrap script in utility world (#6591) (#6655)
8cc103f4 - test: unflake sync predicate test (#6654)
754ee13c - feat(electron): accept BrowserContextOptions in electron.launch (#6621)
972f0ec2 - api(dotnet): migrate to options (#6651)
b9464378 - fix: wait for ffmpeg to finish writing even if page was closed (#6648)
e804d16d - test: unflake webview tests (#6644)
475a417d - fix: compute payload mime type on server (#6647)
33a505b1 - chore: add logging for installation steps (#6565)
dc4f37c9 - feat(chromium): roll Chromium to r879910 (#6635)
c2de35e0 - browser(webkit): roll to 05-18-21 (#6643)
c4a6c2bc - browser(firefox): added reduced motion emulation (#6618)
36c0765c - api(dotnet): remove serializer options (#6641)
345f7da5 - fix(codegen): move injected recorder scripts to utility world (#6187)
b52cbfdb - fix(chromium): close background pages on close (#6608)
d2938d0a - api(dotnet): generate options (#6630)
95924862 - feat: use up2date Chromium user-agents for device descriptors (#6594)
1e6f899c - chore(dotnet): simplify enum generation (2) (#6628)
debffa74 - browser(firefox): make Juggler types compliant with protocol viewer (#6626)
50d24387 - chore(dotnet): simplify enum generation (#6623)
7eca573e - api(dotnet): remove some overrides (#6622)
69164466 - chore: jsify dotnet generator (#6620)
a728a892 - test: unskip a few tests previously skipped with channels (#6609)
68a15fc0 - fix(tests): force a new worker for channels.spec (#6616)
c23a06c9 - test: mark "should produce screencast frames fit" as flaky on wk linux (#6617)
c4b78183 - feat(webkit): bindings in util world (#6592)
be8d8364 - feat(webkit): bump to 1480 (#6605)
4c3bd118 - test: roll to folio@0.4.0-alpha14 (#6602)
c497c32e - fix(dotnet): follow up, add WaitFor(action) in order
3aa9ab88 - api(dotnet): introduce WaitFor*(action) (#6610)
5aafae39 - test: enable download url test on webkit (#6588)
d2a23a4a - fix(md): bring generic launch args into class-browsertype (#6607)
333397c0 - chore(dotnet): fix generator escaping, make script lf-friendly (#6606)
fd1e62b8 - docs(dotnet): examples for dialogs, fixes (#6599)
52658cf5 - chore(dotnet): revert opener async (#6600)
b5884b95 - docs(dotnet): examples for events, handles (#6598)
9aa61006 - docs(dotnet): examples for verification, video, fixes (#6597)
bbc3ebd5 - docs(dotnet): examples for input, intro, languages, multi-pages (#6596)
ffa83f1f - browser(webkit): bootstrap script in utility world (#6591)
5e84eade - test: roll to folio@0.4.0-alpha13 (#6570)
cff3bd04 - test: mark android test as failing (#6575)
c01c5dbb - docs(dotnet): examples for navigation.md, network.md, selectors.md (#6593)
7bbb91f2 - test(downloads): add passing test for downloads and interception (#6586)
37d03e8b - browser(webkit): roll to safari-612.1.15-branch (#6587)
bc185291 - docs(ff): temporarily remove ff-stable reference (#6585)
5b223f92 - browser(firefox): Browser.setScrollbarsHidden (#6457)
2b887bf8 - chore(dotnet): remove StatusCode property (#6582)
885285be - docs(dotnet): Video and Worker examples (#6581)
c9d2f6bf - docs(dotnet): selectors example (#6580)
8845484a - chore(dotnet): page.opener sync (#6579)
ec0b4e90 - docs(dotnet): route examples (#6578)
2477dcce - chore(dotnet): generate As as a method (#6576)
d7c6720c - chore: include context options into the trace (#6572)
7b844c5f - chore(tracing): simplify resource treatment (#6571)
9b0aeeff - fix(install-deps): install deps on mint (#6569)
0678f482 - chore(tracing): trim network urls for readability (#6566)
ab36fdeb - api(download): hide new api until c# is public (#6567)
654446a7 - devops: fix Chromium windows archiving logic (#6568)
fbae295c - fix(har): save popup's main request/response (#6562)
e87fbfcc - feat(download): add Page in Download (#6501)
3bded358 - fix(chromium): wait for existing pages when connecting (#6511)
92fa7dde - feat(firefox): roll to latest Firefoxes (#6561)
81a57ea2 - docs(dotnet): generate 1.11 api off tot (#6564)
c4321887 - chore(dotnet): remove set properties (#6531)
6a39b866 - chore: GoToAsync -> GotoAsync (#6563)
bdb4aefc - docs(tracing): remove the relative link
7adf907f - docs(dotnet): rename getPayloadAsJson to PostDataJsonAsync (#6533)
4b3e5e5c - feat(network): expose network events via browser context (#6370)
30dd0240 - docs(dotnet): BrowserContext and BrowserType (#6503)
d6b98eff - docs(dotnet): examples for dialog, download and filechooser (#6526)
8b6b894d - test: prepare test to use options as passed (#6557)
ddfbffa1 - docs(dotnet): Page examples (#6556)
ea59fd8f - docs(dotnet): Playwright examples (#6558)
47645ec8 - docs(dotnet): Frame examples (#6555)
62265905 - docs(dotnet): Request Examples (#6560)
d27ce8a8 - feat(webkit): bump to 1478 (#6550)
fce904fa - docs(dotnet): Keyboard examples (#6539)
17e9dd95 - feat(trace): support loading trace from zip (#6551)
a7ea00d0 - chore: show preview for page under cursor (#6548)
cc43b0d2 - chore: remove storybook (#6549)
d02472a9 - browser(firefox): fix uploads of large files in Firefox (#6547)
1a39843d - docs: follow up on adding trace dir, unify launch options (#6545)
41df6607 - fix: enable util world bindings in firefox (#6546)
dc7f7f9a - fix(chromium): handle backgroundPages() onClose (#6541)
eb7b4dea - tests: disable certain installation tests on Node v16 (#6544)
d6273761 - browser(webkit): use correct request when navigation turns into download (#6516)
21cb726b - chore(tracing): expose tracing api (#6523)
460cc319 - fix: propagate custom executable path to codegen (#6509)
d540b447 - browser(firefox-stable): simplify isolated world structures (#6542)
2697f838 - devops(docker): upgrade to node 16 (#6498)
bcccafea - docs(dotnet): ElementHandle and JSHandle examples (#6527)
08ed5602 - chore(docs): update section id to keep alphabetic order (#6515)
ab559189 - feat(firefox): bump to 1259 (#6510)
84031d4a - browser(firefox): simplify isolated world structures (#6521)
45ee257a - chore(test): fix some screencast tests (#6522)
6023c674 - docs(dotnet): add devices property (#6530)
0d3d2d33 - chore(dotet): fix goto casing (#6529)
5aa00d1e - docs(dotnet): fix link regex on xmldocs (#6528)
60a7b061 - docs(cli): add example on how to install-deps for a single browser (#6534)
2945f05c - docs(dotnet): accessibility docs (#6489)
8af8b634 - docs: add ref to waitForSelector from querySelector (#6514)
a04c54ac - devops: do not run workflows when all changes are browser-only (#6520)
bf81a284 - devops: run less tests on each PR (#6518)
958629fa - browser(webkit): roll to safari-612.1.14-branch (#6517)
a22ae131 - docs(java): add multithreading section (#6512)
1c10c4cb - fix: fix har entry time calculation (#6472)
33823a91 - docs(download): improve documentation (#6486)
d08c50d2 - feat(screencast): scale fixes (#6475)
2ea465bc - test(chromium): add failing test for connecting to a browser with pages (#6502)
e0aaef5e - docs: get rid of dollar sign prefix in code snippets (#6494)
6c821a08 - test(network): adding failing post data test for chromium and webkit (#6484)
269a1b64 - browser(firefox-stable): bindings in isolated worlds (#6504)
f8039bed - browser(firefox): bindings in isolated worlds (#6493)
d243ae7e - doc(contribute): fix link to tests (#6499)
b01ccc28 - test: roll to folio@0.4.0-alpha11 (#6496)
8d21b124 - browser(firefox): fit screencast images into given frame (#6495)
9a6d09fe - docs: update release notes (#6492)
3f646118 - docs(dotnet): Browser examples (#6490)
00ec4397 - test: fix android test failure (#6487)
f1a888de - feat: support Moto G4 device in emulated devices for performance testing (#5946)
845054d2 - feat(firefox): bump to 1257 and 1247 (stable) (#6476)
5f773996 - chore: get rid of trailing spaces in types.d.ts (#6481)
76e40963 - test: simplify more tests (#6471)
a5143eba - browser(webkit): fix the screencast scale and toolbar offset on Mac (#6474)
5c1ddc7f - fix: fix method elementHandle.frameElement() for framesets (#6468)
f1a65820 - browser(firefox): fix addBinding on pages with CSP (#6470)
2d4538c2 - test: cleanup tests and configs after last folio update (#6463)
a9523d9d - feat(ff): roll to 1256/1246 (#6466)
b4261ec0 - browser(ff-stable): pick up screencast changes (#6464)
edd2cc80 - browser(ff): migrate screencast to client interfaces
918ae429 - chore(deps): bump lodash from 4.17.20 to 4.17.21 (#6461)
573327b7 - test: roll to folio@0.4.0-alpha8 (#6451)
5e4badd6 - feat(firefox-beta): roll Firefox to 1254 - v89.0b9 (#6454)
78ec0571 - browser(firefox): implement screencast (#6452)
262824de - devops: fix chromium archiving with FILES.cfg (#6450)
45d92890 - fix(webkit): quick fix for screencast (#6448)
11012686 - devops: fix //browser_patches/export.sh for deprecated-webkit (#6446)
7c85846f - test: remove "headless should be able to read cookies by headful" (#6444)
b1f80bad - browser(firefox-beta): roll Firefox to v89.0b9 (May 6, 2021) (#6443)
fa7b5f3c - browser(chromium): roll Chromium to 879910 (#6441)
aab602cc - fix: use old screencast protocol calls for Mac 10.14 (#6440)
7906a8f2 - feat: add best-effort support for Ubuntu 21.04 (#6429)
c7751b9f - devops: use chromium's FILES.cfg to compute archive files (#6438)
e4272fab - browser(webkit): add stdc++fs lib to wtf to fix Ubuntu 18.04 (#6437)
298b7aef - devops: install Google Chrome Beta testers (#6389)
b29b7df4 - fix(connect): handle disconnect in various situations (#6276)
d902b06f - test: fixed flaky connectOverCDP tests (#6436)
217cbe3e - test: cleanup bad usages of pageTest (#6430)
67f98d00 - chore(dotnet): split unions into multiple overloads (#6400)
9433cae4 - test: move all page tests to a subdirectory (#6427)
c44f2dc1 - chore: cut v1.11 release (#6426)
Highlights
This patch includes bug fixes across all languages for the following issues:
- https://github.com/microsoft/playwright-python/issues/679 - can't get browser's context pages after connect_over_cdp
- https://github.com/microsoft/playwright-java/issues/432 - [Bug] Videos are not complete when an exception is thrown
Browser Versions
- Chromium 92.0.4498.0
- Mozilla Firefox 89.0b6
- WebKit 14.2
This version of Playwright was also tested against the following stable channels:
- Google Chrome 90
- Microsoft Edge 90
Issues Closed (2)
https://github.com/microsoft/playwright-python/issues/679 - can't get browser's context pages after connect_over_cdp https://github.com/microsoft/playwright-java/issues/432 - [Bug] Videos are not complete when an exception is thrown
Commits (4)
57c3011b2b678f7125388570875a5b3411322f6a - chore: mark v1.11.1 (#6675) c51bd43575d50fb68b61721b9be3e1441db5d72f - cherry-pick(release-1.11): fix video saving (#6671) 6f0923bdea0b201ac6234df84da0901147128355 - fix(release-1.11): fix tests after cherry-pick 97aacf3cdef0b7fbcb788fdca7fb6ae8485fd602 - cherry-pick(release-1.11): wait for existing pages when connecting (#6619)
Highlights
🎥 New video: Playwright: A New Test Automation Framework for the Modern Web (slides)
- We talked about Playwright
- Showed engineering work behind the scenes
- Did live demos with new features ✨
- Special thanks to applitools for hosting the event and inviting us!
Browser Versions
- Chromium 92.0.4498.0
- Mozilla Firefox 89.0b6
- WebKit 14.2
This version of Playwright was also tested against the following stable channels:
- Google Chrome 90
- Microsoft Edge 90
New APIs
- support for async predicates across the API in methods such as
page.waitForEvent(),page.waitForRequest()and others - new emulation devices: Galaxy S8, Galaxy S9+, Galaxy Tab S4, Pixel 3, Pixel 4
- new methods:
page.waitForURL()to await navigations to URLvideo.delete()andvideo.saveAs()to manage screen recordingelectronApplication.browserWindow()to access browser window
- new options:
screenoption in thebrowser.newContext()method to emulatewindow.screendimensionspositionoption inpage.check()andpage.uncheck()methodstrialoption to dry-run actions inpage.check(),page.uncheck(),page.click(),page.dblclick(),page.hover()andpage.tap()headersoption inbrowserType.connect()
Issues Closed (45)
#2370 - [Feature] selector improvements proposals
#2995 - [Question] Is it possible to customize both user-data-dir and websocket port
#3933 - [Question] logger stderr full output
#4610 - [Question] Is there a way to access the playwright object in dev tools in browsers launched within launch()?
#4740 - [BUG] [Firefox] TypeError: browser.webProgress is undefined / assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
#4761 - Chromium: await context.newPage() hangs forever, addressed with --disable-gpu arg
#5105 - Feature Option to install system dependencies
#5523 - "page-screenshot.spec.ts - should work with a mobile viewport" is flaky on Chromium
#5591 - [Docker] Follow up in docs
#5614 - [BUG] Drop support for Node.js 10 (2021-04-30)
#5687 - [BUG] page.goto: Navigation failed because page crashed!
#5693 - [Feature] breakdown PWDEBUG flags
#5762 - [BUG] iframe inside an iframe is not visible
#5765 - [BUG] click visibility check fails for visible element
#5779 - [Question]/[Feature Request] Taking a screenshot of the element without shadow
#5796 - [BUG] The First Script cannot launch browsers
#5815 - [BUG] inconsistency with OOPIF
#5816 - [Feature] Inspector Recorder Raw Mouse/Screenshot tools
#5833 - [REGRESSION]: support mac 10.14 on webkit
#5839 - [BUG] Firefox is too slow with going to page and getting content
#5840 - [Question] Docs for debugging: PWDEBUG=1, page.pause() and debugger;
#5845 - [Internal] close browsers via closing pipes in processLauncher
#5846 - [Internal] do not collect navigation signals while waiting for element state
#5853 - [Feature] Redirect video stream to new path
#5854 - [BUG] codegen inserts AltGraph key press
#5858 - [BUG] <button> in shadow DOM not working with click()
#5862 - [BUG] Error: ENOENT: no such file or directory, open '/var/task/node_modules/playwright-core/browsers.json' on Vercel with Next.js
#5872 - [Feature] Running Playwright on non-patched Firefox and Webkit
#5874 - Any plans for a Ruby Library?
#5875 - [BUG] 'hidden' on web component still resolves a child in the shadow root as visible
#5888 - [BUG] Click not working while using htmx
#5890 - [BUG]
#5893 - Missing Dependencies preventing playwright launch
#5894 - [BUG] action works on Safari, but fails in WebKit
#5895 - [Feature] Support sites hosted on cloudflare.com
#5896 - [Feature] waitForURL
#5897 - [Question] switch different firefox/chrome version
#5901 - [BUG] browserType.launch: Host system is missing dependencies! Missing libraries are: libenchant.so.1
#5914 - [BUG] Console errors while using Playwright Inspector causes tests to fail
#5915 - [BUG] : Codegen on loading a new page showing error - attaching Video
#5916 - [BUG] : Chromium Issue while loading a page
#5918 - [Feature] pass config values to chromium
#5921 - [Feature] Ability to provide postData & method properties in page.goto.
#5929 - [BUG] Control+Shift+ArrowLeft fails on contenteditables with FF + Linux
#5936 - [Feature] page.$: add waitForSelector as optional parameter
Commits (285)
f427d438 - chore: mark v1.11.0
791443d7 - feat(webkit): roll to r1472 (#6425)
477b93b1 - feat(firefox-stable): bump to 1245 (#6424)
8737207d - feat(devices): add more Android device descriptions (#6413)
765d7498 - chore(ff): remove some dead code (#6423)
9e36f5cc - docs(consoleMessage): add missing console message comments (#6320)
90de8642 - docs(dotnet): introduce separate csharp viewport option (#6198)
42a55666 - fix(types): fix waitForSelector typing to not union null when appropriate (#6344)
8d66edf6 - browser(webkit): roll to safari-612.1.13-branch (#6422)
9b8dc4ae - browser(webkit): fix Ubuntu18, make vp9 build hermetic (#6421)
47cf9c3e - feat(chromium): bump to r878941 (#6216)
ab850afb - fix: support relative downloadsPath directory for downloads (#6402)
55095279 - devops: do a full browser checkout by default on Dev machines (#6411)
ee835fba - fix(webkit): fix screencast compilation on win (#6412)
77c10201 - devops: re-use firefox checkout for firefox-stable (#6410)
5c519610 - browser(firefox-stable): cherry pick recent changes from browser_patches/firefox (#6409)
14ebcfdf - docs: update fill/selectOption docs to mention label retargeting (#6406)
fc9454eb - browser(webkit): implement screencast (#6404)
86df1df8 - test: update download test expectations (#6394)
5326f390 - browser(chromium): build 878941 that reverts shader changes (#6407)
1a582813 - browser(firefox): don't record video outside the viewport (#6361)
2945daca - devops: fixed broken GitHub Actions workflow (#6399)
b8eb2b89 - feat(firefox-beta): roll Firefox to beta 89.0b6 (1250) (#6393)
ce7a72b2 - test: disable certain screencast tests on Firefox. (#6396)
4e0e13cf - browser(firefox-beta): roll Firefox to beta 89.0b8 - May 2, 2021 (#6397)
4cd5673c - chore: add debugging information on bots to trace unzipping (#6395)
653d483b - docs: add firefox-stable channel documentation (#6328)
fe94dc5c - docs: expose tracing API in java (#6387)
6219042c - fix(webkit): swallow requests from detached frames (#6242)
fd425399 - devops: fix swiftshader on Chromium Windows (#6391)
dddfbaae - chore(dotnet): run dotnet format after generation (#6376)
1a859ebe - chore(electron): fix node/browser race conditions, expose browser window asynchronously (#6381)
6da7e702 - chore: regenerate types after non-clean merge Follow-up to #6379
af92565b - Update class-page example code (#6379)
07fb81a4 - fix(launcher): improve error message for missing channel distribution (#6380)
018f3146 - fix(electron): deliver promised _nodeElectronHandle (#6348)
de21a94b - test: roll to folio@0.4.0-alpha6 (#6366)
29164a62 - devops: use Node.js 12 on Windows bots (#6377)
6ce56dde - test(accessibility): remove and update tests for new chromium (#6372)
5e8d9d20 - feat(firefox): roll Firefox to r1248 @ v89.0b2 (#6281)
a59a494e - chore: drop support for Node.js 10 (#6371)
7405655c - docs(cli): add install-deps command and reference to it (#6374)
934bc672 - test(tracing): start adding tracing tests (#6369)
9da718d6 - docs: change the position argument location in check functions (#6191)
ba652c17 - docs: inline parsing should honor template location (#6289)
bb845397 - chore(dotnet): don't generate setters on interfaces (#6293)
d9015b99 - chore(dotnet): translate Javascript words to csharp (#6321)
dec97361 - docs(page): add missing docs on emulateMedia (#6322)
6c04b822 - browser(firefox-beta): roll @ beta Apr 29, 2021 - v89.0b6 (#6368)
0abcaf02 - browser(webkit): roll to safari-612.1.12-branch (#6367)
b0fae0f8 - browser(firefox): merge FrameData into Frame (#6365)
1c40c94e - chore: only throw the proxy on launch required on win/CR (#6350)
263a0fd2 - fix: evaluate in utility for screenshots (#6364)
a4561310 - test: set 20 minutes timeout for installation tests (#6363)
11882cdd - test: roll to folio@0.4.0-alpha3 (#6262)
2333eb09 - chore: adjust GitHub template envinfo command (#6359)
434f474c - chore(evaluate): implement non-stalling evaluate (#6354)
06a92684 - Reapply #6363 w/ modification--amend
0becd942 - Revert "Revert "fix: break require cycle (#6353)""
17e966bc - Revert "fix: break require cycle (#6353)"
0bcfa923 - fix: break require cycle (#6353)
560bea5f - fix: do not close stream until all bytes have been read (#6351)
3b1bfdff - devops(chromium): build a new Chromium 876873 (#6349)
369bd55e - feat(webkit): bump to 1468 (#6345)
1b771ed3 - docs(python): add Error base class (#6315)
0039b313 - browser(webkit): support downloads larger than 16Kb on Windows (#6343)
34135746 - feat(webkit): bump to 1467 (#6295)
922d9ce1 - chore(tracing): fix some of the start/stop scenarios (#6337)
abb61456 - docs(keyboard): clarify how page.type works for non-US characters (#6273)
83480850 - browser(webkit): preserve color scheme override after navigation (#6333)
5be005b1 - Revert "fix: increas recent logs buffer (#6330)" (#6332)
b6b2366d - fix: browser logging (#6331)
3c126024 - fix: increas recent logs buffer (#6330)
a51dc50d - fix(accessibiltiy): ignore new roles that came with new chromium (#6329)
f4b8c3a8 - browser(firefox): disable proton UI for now (#6327)
2f290cc9 - fix: fix docs for BrowserType headers (#6314)
ce033103 - docs: add route example with some logic (#6324)
be27f473 - feat(tracing): introduce context.tracing, allow exporting trace (#6313)
a9219aa8 - chore: start / stop context tracing (#6309)
97cf86d2 - chore: make instrumentation per-context (#6302)
10c76ff5 - browser(firefox): fix race between idleTasksFinishedPromise and window closure (#6308)
d31107f3 - fix(docs): make headers and option, not param (#6307)
fd31ea8b - feat: support extra http headers in browserType.connect() (#6301)
83758fa4 - devops: add swiftshader DLL to chromium archive (#6305)
f63f92be - chore: repair run_static_server.js (#6298)
a1f9152f - chore(deps): bump ssri from 6.0.1 to 6.0.2 (#6299)
cc4782a7 - Revert "fix(chromium): force --use-gl=swiftshader on Windows (#6272)" (#6300)
0ed328f6 - chore(tracing): include events in the trace (#6285)
6d38b106 - chore: abbreviate roll-browser to roll (#6296)
ff147b00 - docs: update waitForRequest/Response snippets (#6294)
6e9b76fa - chore(dotnet): enable nullable enum arguments (#6271)
7a3f8ef7 - feat(firefox-stable): roll to r1244 @ v88.0 (#6280)
cffab1f5 - chore: update //utils/roll_browser.js script to roll anything (#6279)
531bf4dc - browser(chromium): roll Chromium to new Dev (#6283)
f9478b12 - browser(webkit): fix compilation for drag drop and duplicated macro (#6278)
2755d5e3 - browser(webkit): fix timezone override on Windows (#6277)
111e5599 - devops: roll Chromium to r871980 (#6275)
59d1d2df - devops: add swiftshader file to Chromium builds (#6274)
97b485bd - docs(python): add BrowserType.connectOverCDP (#6270)
357224d6 - fix(chromium): force --use-gl=swiftshader on Windows (#6272)
3a93c419 - chore: remove stack from WaitForEventInfo (#6259)
fe4fba4a - chore: extract debugger model from inspector (#6261)
34e03fc7 - browser(webkit): roll to 04-21 (#6257)
7053ac90 - chore(types): add channel to launchServer (#6256)
6bdc67ac - feat(actions): trial option that only performs the checks (#6246)
640b10c7 - fix(codegen): missing await before newPage.goto (#6253)
85e2db24 - chore: push dispatcher guid into object, reuse it in trace (#6250)
06b06192 - fix(codegen): do not commit last action on mouse move (#6252)
faf39a23 - devops: fix firefox-stable roll build (#6255)
ad731c15 - feat(debug): PWDEBUG=console vs PWDEBUG=inspector (#6213)
4dd8a1c8 - browser(firefox-stable): roll to Firefox 88.0 (#6249)
09c35adb - browser(firefox): roll firefox-beta to Apr 20, 2021 - version 89.0b2 (#6247)
9cd89ae0 - fix: host dependency validation (#6227)
f9af4c37 - chore(tracing): render error snapshot as Action (#6241)
23dfaf9e - feat: start downloading firefox-stable channel (#6177)
033bc9bf - chore(tracing): sync timeline and list highlight (#6235)
27e720f2 - feat(tracing): keyboard navigate lists (#6224)
8ca58e34 - fix(page): add name property to pageerror event (#5970)
7dccfd42 - chore(dotnet): generate IDownload.createReadStream method (#6192)
7ec57c0c - chore: read browsers.json with require (#6186)
6296d276 - devops(gha): remove obsolete comment (#6234)
27ed123a - feat: remove core dumps from bots (#6231)
329980be - feat: use --no-service-autorun in Chromium (#6232)
243ede5d - feat(waitForEvent): allow async predicate (#6201)
fd1f3fa3 - docs(python): add BrowserType.connect (#6230)
bd0614b0 - added Selenium Box (#6228)
2c34eaea - devops: better upload flakiness dashboard upload script (#6176)
90913160 - chore: render wait for on trace timeline (#6222)
17ead282 - fix(server): disconnect ws clients on server close (#6215)
e4ae6503 - fix(inspector): fall back to custom executable path for UI (#6214)
8c1b994f - feat(webkit): bump to 1463 (#6210)
ce969142 - fix(remote): unregister selectors after client disconnect (#6195)
ce0098d9 - devops(chromium): build a new Chromium Dev 870763 (#6203)
e81a3c59 - api: add option position to check/uncheck (#6153)
96cee438 - browser(webkit): roll to safari-612.1.11-branch (#6185)
fff1f3d4 - chore: simplify remote connection protocol (#6164)
c4c9809f - docs: move waitUntil doc before timeout (#6138)
cd249042 - chore(dotnet): waitForCloseAsync (#6184)
610d1fd4 - docs: fix typo on waitForConsoleMessage (#6183)
b3b87f6c - fix(codegen): ignore AltGraph when typing (#6086)
b62a4360 - feat(selectors): support max distance in layout selectors (#6172)
82e8c722 - devops: fix firefox-stable build script (#6175)
ad8b4346 - devops: trigger Firefox Stable builds (#6174)
17c6406e - devops: add firefox-stable channel browser (#6173)
bba7ca34 - feat(chromium): roll to r869727 (#6170)
994939f8 - feat(webkit): bump to 1462 (#6169)
f3b44d18 - fix(screencast): wait for ffmpeg to finish before reporting video (#6167)
957abc49 - devops(chromium): build a new Chromium Dev 869727 (#6149)
5fe3ee13 - browser(webkit): fix assertion unsafe to ref/deref from different threads (#6163)
e26d98d6 - docs(csharp): add viewport back (#6161)
ec07a581 - test: disable test on mac 10.14 (#6157)
bd8433ba - test: cleanup various testing env variables (#6155)
856ced6e - tests: attribute electron tests to electron on the dashboard (#6156)
f6606d50 - fix: finish all artifacts when browser exits (#6151)
16c8fe74 - docs: fix typo in language filter (#6154)
e6f5ce90 - chore: allow running multiple snapshotters for tests (#6147)
db09275d - docs: reject -> throw, fix small typos (#6152)
63d0d466 - feat(cdp): replace wsEndpoint with protocol neutral endpointURL (#6141)
53d50f9b - fix(screencast): properly stop screencast on context closure (#6146)
f7e7ea93 - chore: skip click test based on the browser version (#6127)
476ff217 - feat(webkit): bump to 1461 (#6143)
779355ad - feat(types): make the template on BrowserType optional (#6142)
310692b1 - test: run page tests on electron bot (#6122)
d9546fd0 - chore: read all traces from the folder (#6134)
e82b5460 - docs(dotnet): generate arguments in a consistent order (#5800)
632ff111 - test: properly annotate Android tests for flakiness dashbboard (#6133)
bd0043b8 - browser(webkit): keep browser process running when all windows closed (#6131)
d0db4f67 - feat: include screencast in trace (#6128)
0c00891b - devops: prepare flakiness dashboard cloud function to Android tests (#6129)
09c17591 - feat(webkit): bump to 1460 (#6124)
b37116d7 - chore(dotnet): fix generating from parent directory (#6095)
ee44fbe2 - devops: upload test results for android bots (#6121)
6ff209cd - fea(firefox): roll Firefox to r1245 (#6114)
2897df69 - devops: restore flakiness dashboard upload (#6116)
d6c41574 - browser(webkit): fix curl compilation (#6115)
cdbf52f6 - docs: add basic intro page for C# (#6110)
83c7a3ba - docs: pass wsEndpoint as param in java (#6112)
4bec81b1 - browser(firefox): roll Firefox to beta @ Apr 6, 2021 (#6111)
4bd74679 - docs: add missing connectOverCDP.wsEndpoint param in java (#6109)
36a54699 - test: roll to folio 0.3.21-alpha (#6108)
0dfde2e9 - fix(screenshot): never throw page is navigating (#6103)
f61ec3fd - docs(docker): update docker documentation to inlcude java (#6102)
9abed117 - docs: expose connectOverCDP in java (#6107)
112ac2f9 - feat(chromium): roll Chromium to r867878 (#6065)
fb7c7031 - browser(webkit): roll to 06-04-21 (#6106)
fd40c92a - chore(dotnet): generate generic EventHandlers (#6076)
33198c3d - chore(dotnet): format generateDotnetApi (#6075)
e5b011ae - chore(dotnet): remove Get prefix (#6074)
ee396421 - chore(dotnet): alias for dblclick in C# (#5899)
da3ddb07 - devops: start uploading test reports from chrome stable runs (#6092)
ba5ba52e - test: expose browserVersion in the tests (#6090)
481034bd - chore: trace viewer actions sidebar (#6083)
63e471ca - test: cleanup proxy and context tests (#6085)
1a44f681 - devops: migrate flakiness dashboard to the new folio reporter format (#6089)
6a767d1a - docs(docker): use focal by default (#5746)
5afe282f - test: move remaining files from old test/ directory (#6081)
8e6639b7 - test(keyboard): add test with contenteditable and selection (#5938)
e3cf6756 - test: remove a copy of folio, use upstream (#6080)
af48a8a1 - devops: use ubuntu focal on bots and docs (#5951)
e9f0f6c8 - fix: mark disposed dispatchers as such (#6051)
bd61f863 - test: print "Using executable at ..." for custom executable (#6077)
4f7e7450 - test: migrate last tests to new folio (#6071)
f21f4788 - test: migrate more page tests to folio (#6062)
ee1bcd76 - docs: fix the Electron example
da1dafca - fix: start downloading firefox build for ubuntu 20.04 (#6064)
2c6c816a - devops: add firefox-ubuntu-20.04 as expected build (#6063)
f5781f90 - test: migrate most non-page tests to new folio (#6059)
5a1974cc - devops(chromium): build a new Chromium Dev 867878 (#6061)
4da2d6e1 - feat(firefox): roll Firefox to r1244 (#6052)
06299227 - test: migrate page tests to new folio (#6054)
46949cd2 - devops: start doing separate builds for Firefox @ Ubuntu 20.04 (#6058)
d0afa9d8 - test: migrate cli tests to new folio (#6048)
561cb23e - fix: dispatch popup event on the client end (#6044)
4f2827f3 - fix(dom): click on links inside shadow dom (#5850)
1444cc87 - test: migrate electron tests to new folio (#6043)
2357f0b5 - browser(firefox): fix bootstrap on bots with --no-interactive (#6047)
a4eb4c0b - test: migrate remoteServer tests to new folio (#6042)
a7630c91 - api: remove Chromium* classes (#6040)
d862deea - fix(deps): added missing unicode and emoji dependencies (#6039)
d662eba8 - browser(firefox): roll Firefox to beta @ Apr 1, 2021 (#6041)
be79b388 - test: bring new folio and migrate small amount of tests to it (#5994)
66541552 - browser(firefox): make dpr emulation optional, take screenshots at 1x (#5555)
2290d8f8 - test: remove unnecessary folio.extend calls before test migration (#6030)
8f71f597 - fix(input): do not retarget from input/textarea/select to an ancestor button (#6036)
d71c147a - browser(firefox): fix some missing mac edit commands (#6034)
37b07ada - docs: replace headful with headed (#6017)
cb15603c - browser(firefox): do not report console messages twice. (#6031)
9b2e4ebf - browser(webkit): make dpr emulation optional, take screenshots at 1x (#5557)
b81238ca - test: migrate fixtures.spec.ts to use beforeEach/afterEach (#6029)
16d98cb4 - chore(launcher): add more logging to processKill (#6025)
f472c961 - feat: support webkit technology preview (#5885)
9d9599c6 - api(video): implement video.saveAs and video.delete (#6005)
9532d0bd - feat(webkit): bump to 1457 (#6021)
587682e0 - feat(chromium): bump to r865012 (#5963)
26f9e296 - docs(route): add note about unroute (#6019)
2f5bf04f - browser(webkit): fix double deref
3455c326 - browser(webkit): restore occlusion detection disabled
ceb4bc25 - test: add a test for hidden shadow host (#6008)
ba89603b - test: add test for new RTCPeerConnection() (#6013)
85ab1dc7 - feat(waitForURL): add a new waitForURL api (#6010)
98f1f715 - chore: ensure we emit Page event before resoliving pageOrError (#6012)
36d2d93e - fix(firefox): roll Firefox to 1239 (#6007)
72a2dff5 - Add Sauce Labs showcase (#5990)
93d532b5 - browser(webkit): fix windows compilation (#6011)
97955247 - browser(webkit): roll to safari-612.1.9-branch (#6002)
77993c3e - fix(installer): add libx11-xcb1 to the list of chromium deps (#6003)
94252231 - fix(devops): include libANGLE-shared.dylib into mac archive (#6004)
0d3d27d3 - browser(webkit): trigger new build after updating cleanup script (#5997)
28b14fc5 - feat(docker): use playwright install-deps for building docker image (#5995)
9473f39b - fix(devops): cleanup now removes entire webkit build dir on mac (#5996)
061f9ea6 - test: failing test for websockets + offline context (#4912)
fdb3c1f1 - chore(dotnet): don't generate set only properties (#5982)
5c1e8dcd - chore(dotnet): fix properties with Is prefix (#5981)
ca7cd7a6 - devops: skip flakiness upload for forks (#5978)
0b6625bb - docs: fix HEADFUL run instructions (#5980)
6d6f802e - fix: favicon with color pref crashes firefox (#5977) (#5979)
f1c0d097 - feat(size): emulate window.screen size (#5967)
8c6822bd - fix(docker): update native deps and docker files for chromium (#5989)
2262d873 - Update nativeDeps.ts (#5988)
4cf0568a - browser(webkit): support safe area insets (#5987)
bc6dc1d1 - chore(dotnet): treat file as a reserved word (#5960)
0943af28 - fix: kill browser if process doesnt exit for 30s after close (#5968)
779037a7 - chore(dotnet): avoid adding two prefixes (#5974)
49bbc2bc - test(proxy): add a failing test for HTTPS proxy CONNECT User Agent (#5972)
2cce8850 - browser(webkit): roll to safari-612.1.8-branch (#5965)
dfe07818 - docs: fixed various typos (#5958)
475a6fe3 - chore(dotnet): use csharp types in Frame and Page (#5961)
12e00629 - docs: update channels doc to mention manual installation (#5964)
6c1d3f65 - browser(webkit): refresh embedder UI on macOS (#5957)
3ce02a95 - fix(selectors): properly generate selectors for tricky ids (#5940)
01208967 - test: interception breaks remote importScripts (#5953)
0076e46e - chore: remove stray test logs (#5955)
5872d040 - browser(chromium): build current dev chromium (865012) (#5950)
f7914956 - chore(dotnet): Improve enum values (#5939)
601c09f7 - docs(page): remove note that screenshot takes 1/6+s (#5945)
4fea83c6 - docs: commit new release notes (#5944)
6b3f4cd1 - chore: calculate video size in a single place (#5942)
8e976073 - fix(viedo): do not stall video in popups (#5941)
24ee49b9 - chore(dotnet): improve goto name in csharp (#5917)
2cf4caa4 - chore: implement mixins in protocol.yml (#5932)
76781122 - tests: do not run video tests with Chrome Stable on Linux (#5931)
cc265fe1 - docs(websocket): add web socket examples (#5927)
1b802332 - infra: remove shards from mac builds to remove 6 bots (#5928)
7d7e5ede - browser(webkit): roll back to safari-612.1.7-branch first commit (#5920)
2016fdbc - chore: cut v1.10.0 (#5925)
Highlights
- Playwright for Java v1.10 is now stable!
- Run Playwright against Google Chrome and Microsoft Edge stable channels with the new channels API.
- Chromium screenshots are fast on Mac & Windows.
Bundled Browser Versions
- Chromium 90.0.4430.0
- Mozilla Firefox 87.0b10
- WebKit 14.2
This version of Playwright was also tested against the following stable channels:
- Google Chrome 89
- Microsoft Edge 89
New APIs
browserType.launch()now accepts the new'channel'option. Read more in our documentation.
Issues Closed (61)
#742 - [Feature] - Delete a certain cookie instead of clear all cookies
#1063 - [Feature] Improve handling of invalid browser arguments
#1797 - [Feature] Support NodeList and Node[] as return from Page.evaluateHandle(pageFunction[, arg])?
#2089 - [BUG] Text selector doesn't match by combined innerText
#2220 - [Feature] Download progression
#2238 - [Feature] Hide file pickers if they will be emulated
#2308 - [Question] How to handle discarded tabs?
#2747 - [Feature] Highlight element in the browser
#2767 - [Question] Is it possible to define host resolution rules per browser instance?
#2902 - [Feature] Method to wait for event listeners to be attached
#3032 - [Feature] mouse.getPosition()
#3184 - [Feature] Support raw headers
#3265 - [Feature] page.inputValue() that reads from the value property, not the attribute
#3540 - [Feature] Lazy loaded frames API
#3648 - [Feature] Provide command args with Logger logs
#3828 - [Feature] Ability to set device scale factor on an existing page
#3989 - [Feature] Adding support to custom keyboard layout
#4263 - [Question] Video Stream
#4377 - [Feature] Support evaluate() as a content script
#4390 - [Feature] a hook mechanism to augment cross-cutting logic
#4441 - [Feature] extension message passing in non-persistent context
#4507 - [BUG] DeviceDescriptor not exposed
#4543 - [Question] Plans to implement puppetaria (aria/ selector)
#4902 - [BUG] Can't catch firefox error dialog
#5228 - [BUG] launchPersistentContext hanging on "about:blank" [REOPENED]
#5633 - [Question] How to record video / take screenshot with multiple windows
#5634 - [REGRESSION]: Text selector changed behavior
#5636 - [BUG] Playwright install fails on windows 10
#5642 - [Question] How to start webkit with persistent context?
#5648 - [BUG] Error: Duplicate target when trying to connectOverCDP next time
#5649 - [Question] How to disable Debug mode, once I set PWDEBUG in env. variable now it's always running in debug mode
#5684 - [BUG] Firefox is failing while testing.
#5716 - [Feature] make scroll into view optional for page.click()
#5733 - Browser Closed : UnhandledPromiseRejectionWarning (node:1744)
#5735 - [Question] Is there a way to access the payload for a PUT request method?
#5747 - [Question] Mocking the same endpoint multiple times in one test
#5748 - [Feature] Docs update for text= vs :has-text vs :text
#5749 - [BUG] UnhandledPromiseRejectionWarning: browserType.launch: Timeout 30000ms exceeded.
#5752 - CURLOPT_INTERFACE alternative in Playwright browser?
#5767 - [BUG] Error: browserType.launch: Failed to launch chromium because executable doesn't exist at /home/jenkins/.cache/ms-playwright/chromium-844399/chrome-linux/chrome
#5778 - [BUG] Chromium: screenshot is created without scrollbars
#5780 - [Question] Support for CentOS
#5781 - waitForResponse()
#5786 - [Question] How to download Playwright Chromium browsers in local?
#5792 - Cant trace "METHOD: OPTIONS" XHR request
#5793 - [Question] The browser rendering two versions of the same page source code
#5794 - [BUG][Chromium] AudioRtpReceiver::OnSetVolume: No audio channel exists - error with testing microphone in the Twillio video calls
#5795 - [Question]WebKit version
#5797 - [Feature] Option to not remove unused browsers
#5799 - [internal, wip] dependency installation considerations
#5801 - [BUG]browserType.launch: Failed to launch firefox because executable doesn't exist at /root/.cache/ms-playwright/firefox-1234/firefox/firefox
#5802 - [BUG] codegen window fails to appear on window as non admin
#5804 - [Question] Is there a way to emulate cmd+f functionality?
#5809 - [Question]how to use playwright cookies to bypass login
#5818 - [Question] is it not possible to use no proxy with 'per-context' lauched instance?
#5821 - [Feature] Define Page.click options typing
#5822 - Does playwright support waiting for the element invisible?
#5841 - [BUG] Inspector collects signals before action
#5842 - [BUG] When using with Chrome 89, Browser.close won't quit browser in headful mode
#5851 - [BUG] webkit evaluate promise never returns / fails
#5857 - [Question] Docker debian slim image
Commits (187)
a61487f4 - chore: mark v1.10.0
543582b4 - chore: expose channel name literals for types (#5922)
f70eaf4f - docs(android): android doc nits (#5924)
8f1d03f8 - docs(options): clarify recordHarPath and recordVideoDir behavior (#5923)
ca35da0a - test(android): run selected page tests on android (3) (#5910)
3a27bdd3 - chore(dotnet): improve name generation for objects (#5860)
9f1b2f68 - test(resize): add a screenshot resize test (#5907)
ec6453d1 - fix: installer compilation (#5908)
172de408 - browser(chromium): build current dev chromium (#5911)
b74af226 - browser(webkit): fix mac compilation after latest roll (#5909)
14ccc80c - fix(android): bundle android driver in all settings (#5883)
cac5aeb6 - docs(browser): wording nits
1bcbb152 - set system default python3 to python3.8 (#5892)
2064d27d - fix(installer): retain browsers installed via Playwrigth CLI (#5904)
6dd4d756 - browser(webkit): roll to 03-22-21 (#5903)
67c29e81 - chore: add missing await to floating promises (#5813)
be9fa743 - docs(intro): remove stray wait from sync snippet
23725192 - docs: add event listener guide (#5881)
fbb46264 - chore(dotnet): support for optional properties in generated objects (#5889)
1f1c8b74 - test(android): run selected page tests on android (2) (#5882)
ad5c028f - test(android): run selected page tests on android (#5879)
cbebf64f - docs: fix circleci invalid yaml (#5880)
16bf462e - test: organize tests to not depend on context (#5878)
5c753b76 - docs: add the browsers section (#5876)
c68bd310 - test: make init script test strict again (#5877)
c4410d3f - Revert "chore(docs): add support for language specific notes (#5810)"
516f13e7 - Revert "chore(docs): reference the available constants for csharp (#5785)"
c435ff35 - feat(firefox): roll Firefox to r1238 (#5873)
9a50304d - fix: work-around electron's broken event loop (#5867)
dfb1c99a - chore(docs): reference the available constants for csharp (#5785)
d53cea70 - fix(pageOrError): throw in launchPersistentContext if context page has errors (#5868)
bb21faf4 - fix: disable firefox's webrender on Darwin (#5870)
9bd35d82 - test: disable shortcuts test on Firefox darwin (#5869)
de16d177 - docs(dotnet): move options arguments last (#5856)
2367039a - chore(stable): throw user-friendly message when ffmpeg is missing (#5865)
141583c7 - infra(chrome_stable): add more bots (#5863)
84efdfcb - chore(autowait): auto-wait for top level navigations only (#5861)
5ae731a3 - chore(evaluate): respect signals when evaluating on handle (#5847)
7011e573 - chore(evaluate): explicitly annotate methods that wait for signals (#5859)
c5500081 - docs(dotnet): adds option parameters for csharp on element handle (#5823)
ae460f01 - devops: start downloading webkit fork on Mac 10.14 (#5837)
693e5699 - chore(docs): add support for language specific notes (#5810)
1fab8457 - browser(firefox): roll Firefox to beta @ Mar 16, 2021 (#5852)
e8a33c40 - feat(firefox): roll Firefox to r1237 (#5849)
bf36b487 - fix(rimraf): allow 10 retires when removing the profile folder (#5826)
d1a3a5d5 - chore: cleanup test logging on CI (#5848)
8df4dcb0 - feat(webkit): bump to 1446 (#5844)
d81ebff4 - fix(inspector): do not collect action signals while on pause (#5843)
36a61c36 - docs(dotnet): ability to generate generics and null on path args (#5824)
ab4629af - devops: add trigger workflow to deprecated webkit builds (#5836)
8dc74057 - devops: refactor check_cdn.sh script (#5835)
e64f6668 - devops: fork webkit into a separate browser (#5834)
5cf13612 - chore: pretty print storage state (#5830)
c2db8da4 - fix(inspector): await inspector init to avoid races (#5829)
8565e72e - chore: consolidate browser cheatsheets (#5832)
5835c7e5 - browser(webkit): fix linux builds, install liblcms2-dev (#5831)
095ad633 - chore: update error message when using userDataDir arg (#5814)
ea32ad2b - infra(channel): add edge stable bot (#5825)
95affe93 - chore: do not delete unused browsers when PLAYWRIGHT_SKIP_BROWSER_GC is specified (#5827)
226bee01 - browser(webkit): roll to 03-15-21 (#5828)
defd1a33 - fix(chromium): fix crash if connecting to a browser with a serviceworker (#5803)
1dd6bd33 - infra(channel): wire release channel to all tests (#5820)
a96d6a7d - feat: allow to pick stable channel (#5817)
0d32b053 - chore(deps): bump react-dev-utils from 11.0.3 to 11.0.4 (#5811)
c4578f19 - chore: organize per-browser dependencies (#5787)
a185da9d - chore: allow skipping host requirements validation (#5806)
7fcb8926 - fix(firefox): ensure a exception catch when async send call to a dead object; (#5805)
ad69b2af - chore: unify recorder & tracer uis (#5791)
43de2595 - fix(xmldocs): over-greedy regex for md links and clean-up (#5798)
6a8c8d9c - docs: fix Dialog class reference (#5788)
720dea40 - docs(dotnet): adding missing methods from dotnet port (#5763)
b01f6ec9 - test: add a test for css selector being relative to the root handle (#5789)
7706e5a2 - docs(python): removed wrong quotes for enum (#5784)
ddfdf8a7 - fix: install chromium along with ffmpeg (#5774)
fea66694 - feat(trace): highlight action target (#5776)
42e9a470 - chore(xmldocs): resolve MD links to XmlDocs tags (#5782)
9560da75 - chore(deps): bump elliptic from 6.5.3 to 6.5.4 (#5783)
7fa59f6d - infra(stable): add chrome stable bot (#5768)
13977301 - test: click links in shadow dom (#5773)
c020278f - docs(readme): use aka.ms Playwright Slack invite link (#5741)
0bc39f27 - chore(generator): change dotnet default value from null to default (#5764)
1d6feb2a - fix(inspect): highlight on explore input change (#5726)
d3110582 - fix(BrowserContext): race between continue and close (#5729)
aae8cc83 - docs: improve Download methods documentation (#5760)
1a94ea5f - chore: refactor trace viewer to reuse snapshot storage (#5756)
659d3c3b - docs: use custom link element in waitForNavigation example (#5755)
bc3a0fb9 - browser(webkit): roll to 03-08-21 (#5754)
47104746 - docs(dotnet): marking methods async (#5751)
0ca56a8b - docs(dotnet): mark waitForClose as async (#5730)
53a62a3a - test: add post data test with PUT request (#5745)
9e205662 - fix(postData): do not require content type when retrieving post data (#5736)
b5aeba90 - docs: update java version to alpha in the intro (#5744)
b3561e6c - feat(chromium): bump to 857950 (#5742)
ea9485ec - docs: document PlaywrightException in java (#5743)
8ed49622 - test(downloads): make logging only show up on CI (#5732)
976f35aa - fix: update codegen to produce set* instead of with* (#5738)
70beef83 - docs: rename with* to set* for java (#5737)
0306fcb1 - docs: add java examples for CLI (#5727)
e56f56c1 - browser(firefox): pass null for the data transfer (#5723)
8ffcbb38 - docs: add a pom.xml example for java intro (#5720)
26b7db96 - feat(cli): launch-server command (#5713)
5c46a61d - docs(dotnet): csharp example for worker (#5718)
2e4f6454 - docs(dotnet): csharp mouse example (#5717)
2af8b8ac - chore: inspector snapshot nits (#5676)
a9238ce2 - feat(debug): introduce npx playwright debug (#5679)
ff91858b - docs: instpector launch params for java (#5711)
217a593e - docs: remove current accessbility api from java (#5708)
d3eff503 - feat(java): implement codegen (#5692)
5903e771 - browser(chromium): roll to 857950 (#5709)
f0242910 - docs: add Page.onceDialog for java (#5706)
d87522f2 - fix(text selector): revert quoted match to match by text nodes only (#5690)
986286a3 - chore(dotnet): add examples to accessibility docs (#5702)
ad27f3bf - docs(xml): code escaping for XMLDocs generation (#5703)
23b035b0 - chore(dotnet): add documentation on result classes and include property name (#5694)
5ad8da96 - devops(docker): fix typo in docker build (#5705)
2a6bb504 - docs(python): fix outdated waitForResponse example (#5685)
28d9f244 - browser(firefox): roll Firefox to Beta @ Feb 28, 2021 (#5659)
e4d33f56 - fix(click): do not retarget from label to control when clicking (#5683)
30e88c36 - docs: enable BowserType.connect in java (#5686)
ff243f1a - fix(addInitScript): make it work on new pages without navigations (#5675)
2cdb6b49 - fix(inspector): inlcude sdkLang in the error (#5682)
2973ecea - docs: string constant quoting (#5681)
1eb0f429 - chore(dotnet): unique name for generated files, change root namespace (#5678)
1a0ccc13 - feat(webkit): bump to 1443 (#5665)
19bd32f6 - docs: add video and proxy docs (#5668)
3b9d4f2b - docs: Add ffmpeg to roll_browser.js usage output (#5643)
850e3c5a - test: add debugging output for downloads tests (#5673)
f925a033 - fix(docs): broken link to method (#5669)
f637b030 - devops(docker): fix registry to be accessible by Azure Pipelines user (#5672)
f2a3d21a - browser(chromium): roll to 858453 (#5670)
9042ca21 - docs: rename Page.console to consoleMessage in java (#5640)
cd2e976c - docs: unfork installation docs (#5661)
cad76349 - docs: spread parameters of page.setViewportSize in java (#5664)
c390f395 - fix: include parsed .md spec into api.json (#5662)
b253ee80 - chore(snapshot): brush up, start adding tests (#5646)
ee69de77 - docs: docs typos (#5658)
eb980207 - test: add a test for 2 cdp sessions against the browser (#5655)
01abeac4 - browser(webkit): roll to 03/2 (#5656)
86c7d779 - chore(dotnet): handle setters and ordering bug (#5654)
6c9e8066 - docs: add java snippets to the examples in guides (#5638)
aeb2b2f6 - feat(inspector): wire snapshots to inspector (#5628)
c652794b - chore: bump webkit version (#5637)
28f3fe8e - chore(dotnet): generate dotnet API from Markdown (#5089)
4b541749 - feat(webkit): bump to 1442 (#5622)
96e099ac - docs: use "argument: <type>" notation for events (#5626)
cb0a890a - docs: java snippets for api classes (#5629)
612bb022 - docs(intro): fixed wrong Python option (#5625)
992f8082 - chore(snapshot): implement in-memory snapshot (#5624)
b2859367 - docs: more clarity in the attribute selectors (#5621)
f7e5db4d - chore: remove ProgressController.abort (#5620)
2ff6d54f - chore: extract snapshotter from trace viewer (#5618)
af89ab7a - chore: make trace server generic (#5616)
1cd398e7 - chore: bump storybook dependency (#5619)
f72b098a - chore: encapsulate parsed snapshot id in the trace viewer (#5607)
ca8998b1 - feat(log): prepend browser pid to browser logs (#5569)
5ae26611 - chore: simplify overrides management in trace viewer (#5606)
0102e080 - fix(text selector): make quoted selector match by text nodes (#5603)
8906ba33 - chore: spell overridden (#5605)
c91159f3 - chore: make stack filtering playwright dev-friendly (#5604)
f85deeba - docs: no [File] links (#5601)
6bf3fe84 - chore: make trace model a class (#5600)
f71bf9a4 - chore: move trace viewer into server (#5597)
b07dba80 - test: improve test names (#5511)
3dd06815 - chore: udpate scripts that generates release draft (#5556)
5fb77935 - chore: move logic from sw to server (#5582)
070cfdcd - fix(inspector): skip stack trace playwright/src lines only under tests (#5594)
aa94dfbc - chore: remove invalid link from release notes (#5577)
bd31817c - docs(readme): fixed broken docs links (#5587)
fefe37e9 - fix(inspector): stacktrace with browser specific NPM package (#5589)
48c237b3 - chore: move trace to server (#5565)
180446d2 - fix(types): restore electron types (#5574)
841264c9 - fix(test): disable failing drag and drop test on mac and windows (#5575)
f3a09210 - test: move installation tests out of playwright tree (#5573)
1dc7fb1f - test: add more tests for Set-Cookie in fulfill (#5570)
5cb914b2 - fix(types): do not use import('electron') (#5572)
8f79b8c1 - docs: update release-notes.md (#5571)
e3cd52d0 - test(drag): enable drag tests everywhere but chromium (#5553)
ec9a5349 - docs: describe playwright.create in java (#5566)
dc3fd3f6 - test(drag): test for dropEffect (#5559)
8ef6cb73 - feat(codegen): use the name attribute for more elements (#5376)
11d3eb6b - browser(webkit): fix mac compilation take 2 (#5567)
e677e7ba - browser(firefox): pass drag action test (#5560)
df4b9846 - browser(webkit): fix mac compilation (#5564)
4f9b7d5a - docs: add intro docs for java (#5563)
0ad2aceb - docs: filter out devices section in java (#5562)
1ee46a8c - docs: fix docusaurus build (#5554)
0eb96d77 - chore: cut v1.9.0 (#5551)
Highlights
Text selector and click() fixes.
Browser Versions
- Chromium 90.0.4421.0
- Mozilla Firefox 86.0b10
- WebKit 14.1
Issues Closed (2)
#5634 - [REGRESSION]: Test selector changed behavior #5674 - [REGRESSION]: Label is not visible anymore
Commits (18)
e42fe217 - cherry-pick(release-1.9): fix(BrowserContext): race between continue and close (#5771) 11968ce3 - chore: mark v1.9.2 (#5770) 1dae530f - cherry-pick(release-1.9): fix(click): do not retarget from label to control when clicking (#5769) ccc89e35 - cherry-pick(release-1.9): fix(text selector): revert quoted match to match by text nodes only (#5766) 3fcc57c5 - fix: update codegen to produce set* instead of with* (#5738) (#5740) 07438f61 - cherry-pick(release-1.9): rename with* to set* for java (#5739) 097f7c3f - feat(java): implement codegen (#5692) ab3b8a1c - cherry-pick(release-1.9): launch-server command (#5713) (#5719) 4e317b3f - docs: remove current accessbility api from java (#5708) (#5712) 563254a9 - docs: add Page.onceDialog for java (#5706) (#5710) c6a29011 - cherry-pick(release-1.9): fix registry to be accessible by Azure Pipe… (#5704) f41d000c - docs: enable BowserType.connect in java (#5686) (#5691) 75b83cbe - docs: rename Page.console to consoleMessage in java (#5640) (#5671) 1d7d08c3 - docs: spread parameters of page.setViewportSize in java (#5664) (#5667) 5d275f10 - docs: describe playwright.create in java (#5566) (#5666) 6b4d528f - fix: include parsed .md spec into api.json (#5662) (#5663) 9a4d6904 - cherry-pick(release-1.9): add java snippets to the examples in guides (#5638) (#5660) 948e658c - docs: java snippets for api classes (#5629) (#5657)
Highlights
Electron types and text selector fixes.
Browser Versions
- Chromium 90.0.4421.0
- Mozilla Firefox 86.0b10
- WebKit 14.1
Issues Closed (3)
#5585 - [REGRESSION][1.9.0]: Cannot find module 'electron' or its corresponding type declarations
#5583 - [REGRESSION]: Selector text="" works differ for element with nested elements since 1.9
#5588 - [BUG][Inspector] Stack won't extracted correctly if browser specific NPM packages are used
Commits (6)
92bbdbed cherry-pick(release-1.9): make quoted selector match by text nodes (#5603) (#5608) 1196ac66 cherry-pick(release-1.9): skip stack trace playwright/src lines only under tests (#5594) (#5599) 9e69146a cherry-pick(release-1.9): stacktrace with browser specific NPM package (#5589) (#5598) 9d8d5c76 chore: mark v1.9.1 c264eb3d cherry-pick(release-1.9): move installation tests out of playwright tree (#5573) (#5578) f9b5f75f cherry-pick(release-1.9): do not use import('electron') (#5572) (#5576)
Highlights
-
Playwright Inspector is a new GUI tool to author and debug your tests.
- Line-by-line debugging of your Playwright scripts, with play, pause and step-through.
- Author new scripts by recording user actions.
- Generate element selectors for your script by hovering over elements.
- Set the
PWDEBUG=1environment variable to launch the Inspector
-
Pause script execution with
await page.pause()in headed mode. Pausing the page launches Playwright Inspector for debugging. -
New has-text pseudo-class for CSS selectors.
:has-text("example")matches any element containing"example"somewhere inside, possibly in a child or a descendant element. See more examples. -
Page dialogs are now auto-dismissed during execution, unless a listener for
dialogevent is configured. Learn more about this. -
Playwright for Python is now stable with an idiomatic snake case API and pre-built Docker image to run tests in CI/CD.
Browser Versions
- Chromium 90.0.4421.0
- Mozilla Firefox 86.0b10
- WebKit 14.1
New APIs
Issues Closed (48)
#3337 - [REGRESSION]: NS_ERROR_FILE_ALREADY_EXISTS with Firefox sporadically
#3697 - [Feature] allow selecting the second (k-th) selector match.
#3866 - [Feature] Driver - allow to install only selected browsers
#4366 - [BUG] Webkit in Docker only scroll once
#5174 - [Feature] codegen: use name to reference iframes
#4485 - [QUESTION] failed to launch chromium error while running npx jest within Dockerfile.bionic
#5186 - [BUG] codegen: race when element changes the selector during the action
#4585 - [Question] Video not being loaded, therefore it can't be played
#4624 - Endless frameattached events [BUG]
#4655 - [BUG] Navigation failed because page crashed! (Javascript tests)
#4660 - Can't find profile directory
#5182 - [BUG] cli/debug: Evaluation failed, This document requires 'TrustedHTML' assignment.
#4750 - integration for the aXe accessibility testing engine [Feature]
#4776 - [Question] MaxListenersExceededWarning: Possible EventEmitter memory leak detected.
#4780 - [BUG] Error: EPERM: operation not permitted, unlink "..../CrashpadMetrics-active.pma"
#4810 - [BUG] Different Chromium -webkit-focus-ring-color for headless/headful
#5190 - [BUG] codegen: do not use select's innerText for selector
#5185 - [BUG] Codegen does not record actions after pressing concrete keys
#4842 - [Question] Can't add 'set-cookie' headers via page.route fulfill?
#4845 - [Feature] ElementHandle.getTagName()
#4851 - [BUG] Navigation failed because page crashed!
#4854 - [Question]How to judge whether an element visble or not?
#4859 - [Question] How to handle dialog box (promptUserAndPass) which shows up when landing on page
#4867 - [Question] Docker Target directory is expected to be absolute / extract-zip@2.0 does not support relative path
#4892 - [BUG] Links in Docker docs broken
#5184 - [BUG] codegen: The generated code is incomplete in Windows system
#4922 - [BUG] (Browser.newPage): target is undefined
#5193 - [Bug] macOS notarization fails
#4961 - [BUG][Electron] page.waitForSelector : Passed function is not well-serializable!
#4964 - [BUG]WebKit test failed with page.waitForNavigation() method
#4981 - [BUG] launchPersistentContext hanging on "about:blank"
#4984 - [Feature] Support for Raspberry PI
#4996 - [BUG]install python -m playwright install on windows7 Python3.8.7, got this error message:(node:5848) UnhandledPromiseRejectionWarning: Error: connect ETIMEDOUT 13.107.24 6.13:443
#5029 - Header and footer are unusually small
#5034 - [Question] New browser windows are opened instead of tabs on every newPage()
#5051 - [BUG] Browser context is closing too long
#5052 - [Question] Is it possible to scroll element into view until it's visible and can be clicked?
#5058 - [Question] Usage advice for script injection and execution
#5061 - SSO Login Question: (Refer Issue #5053)
#5062 - [Feature]Socket connect timeout should be confiugrable
#5065 - [BUG] Malformed URL leads to UnhandledPromiseRejection
#5066 - [BUG] yarn install results in Error: unexpected end of file during archive extraction (Zlib.zlibOnError)
#5067 - [DEVOPS] automate chromium builds
#5083 - [Feature] elementHandle.$ query in whole page instead of the given element
#5084 - [BUG] Error: Unsupported platform: freebsd
#5085 - [BUG] Fix documentation regarding Java
#5087 - [Feature] Add debug log when calling to waitForResponse/waitForRequest
#5091 - [Question] Download with headless: true works fine , but with headless: false not; plw 1.8.0
Commits (319)
d23129b7 - chore: mark v1.9.0 096ddab9 - fix(inspector): hide drawer when recording (#5548) cadcd535 - docs(why-playwright): fix link to downloads doc (#5505) 75ee7279 - docs(api): fix api reference links for textContent (#5498) 74ae013d - test(webkit); enable test to scroll twice (#5550) 4ae4c3cb - browser(webkit): fix response.requestHeaders instrumentation in libsoup after latest roll (#5549) 8316f410 - browser(webkit): roll to 02-22 (#5547) b42c3690 - fix(codegen): replace html lib with createElement (#5531) eb9c8ce2 - feat(chromium): roll Chromium to Dev @ Feb 19, 2021 (#5536) c3ee1cf9 - chore(docs): use shared template for waitFroNavigation.url (#5520) a891becf - chore: remove //browser_patches/buildbots folder (#5535) b41a0c2f - feat(webkit): roll WebKit to r1438 (#5540) 6e61cde0 - test: add test to make sure that 'download' attr is respected (#5538) 65bf44d5 - docs(inspector): add initial inspector docs (#5541) 791c8dab - feat: roll firefox to r1234 (#5539) 6ec77dca - fix(inspector): fix the wait for event error rendering (#5517) eb3efb30 - fix: do not ship broken symlinks in webkit for mac (#5512) 496aeeba - browser(firefox): follow-up with crash reporter disabling (#5534) f10d0a8a - devops: do not create non-removable folders on windows (#5533) 1e327d4c - fix(bindings): unflake TestBrowserContextExposeFunction.shouldWork in java (#5532) 600f731a - feat(inspector): render api names from metainfo (#5530) d6ac3e68 - browser(webkit): honor Set-Cookie header from intercepted requests (mac) (#5529) 058ce605 - docs: combine text sections in selectors doc (#5528) f154a827 - feat(inspector): send api names along with metainfo (#5518) 46c8c29f - fix(logs): restore pw:browser logs after launch has finished (#5527) e2a935b3 - devops: fix nits in browser compilation infrastructure (#5526) c57f1fc3 - devops(chromium): missing depot tools in prepare_checkout.sh script (#5525) 57c7a703 - test: mark test as "fixme" on chromium (#5524) 5f9acfac - feat(webkit): bump to 1436 (#5513) bba9fabf - browser(firefox): roll Firefox to beta @ Feb 19, 2021 (#5521) 7ed1d885 - browser(chromium): build Chromium Dev revision (#5522) 6841da14 - docs: always use number for polling option in java (#5519) cbcc609f - fix: return non-secure cookies with HTTPS URLs (#5507) a9c91b07 - test: fix test sanitization (#5515) 18ce9563 - devops: fix firefox build (#5516) b2d9af5e - browser(firefox): properly initialize debugging pipe on windows (#5514) 48f7a372 - docs(csharp): trimming to avoid broken refs (#5330) bb2b2963 - feat(inspector): pause on page/context close (#5319) 8a9048c2 - feat(inspector): selector input (#5502) a9faa9c9 - test(webkit): add new scrolling tests to ensure correct webkit behavior (#5496) 846fd711 - browser(webkit): fix scrolling in mobile viewports (#5497) 9b73edfa - chore(docs): fix invalid markdown reference (#5479) 15833ee0 - feat(inspector): render params and durations in log (#5489) da135c2a - fix(trace viewer): follow up with recent instrumentation changes (#5488) 3248c244 - feat(inspector): collapse completed items (#5484) dc51536b - feat(waitForResponse): print regex pattern when waiting for request/response (#5485) 8c18b900 - devops: refactor chromium automation scripts (#5486) b2227c1b - feat(inspector): allow selecting file (#5483) 8f3a6c6b - chore(docs): improve xmldoc inline code parsing (#5480) cc749fe6 - fix(android): added recent apps button (#5331) 30e68f6d - chore: simplify code generation (#5466) b6bd7c0d - feat(chromium): roll Chromium to r851527 (#5434) 7971bb03 - devops: verify clean tree on bots after build (#5354) f2b25fe6 - fix: do not rely on $PATH when resolving executables (#5475) 6b40d75d - fix: allow setting input files for detached elements (#5467) 4f1d84d6 - browser(webkit): respect download attribute (#5474) d0352cfb - feat(firefox): roll Firefox to r1230 (#5473) 027f2ba9 - devops: enable goma.sh debugging info 822f7cb1 - browser(firefox): respect Set-Cookie header from fulfilled request (#5456) 9dd443e1 - chore(docs): add ability to generate xmldocs (#5164) 0c7da444 - test(inspector): add some tests (#5461) 1f3449c7 - fix(download): do not stall BrowserContext.close waiting for downloads (#5424) 8b9a2afd - feat(inspector): render errors (#5459) ae2ffb3f - feat(inspector): instrument wait for event (#5457) e7b431d2 - devops: fix test triggering (#5458) ecd15e61 - fix(inspector): restore point highlight (#5455) 0782b252 - test: fix recorder downloads test (#5454) 3c877374 - feat: add replay log (#5452) 6326d6f3 - devops: properly trigger tests on internal test runners (#5453) 291b6d00 - docs: use frameByUrl to find frame by URL (#5451) 529e3987 - docs: selector engine script type (#5450) 7e7d3db9 - docs: update init script type for java and C# (#5449) ac1599cc - fix(registry): handle relative registry path (#5406) 2a40d8ec - devops: fix goma startup and shutdown (#5447) aef052ae - chore: pause on input in pwdebug mode (#5427) 55614c7c - docs: replace bool with boolean (#5431) ccfb3c3a - docs: add callback description to waitForNavigation (#5433) 3e7b8e3d - test: add basic end-to-end driver test (#5426) 85005923 - devops: fix post-checkout cleanup on windows (#5438) 539942c8 - devops: empty commit to test internal tests 2ac93f0a - devops: another attempt to trigger internal tests (empty commit) 17b792bc - devops: attempt to trigger internal tests (empty commit) 2dfe1c75 - fix: do not spam console when building playwright packages (#5436) f2a31ad8 - browser(chromium): build Chromium Dev revision as of Feb 12 (#5435) b5d3080e - feat(firefox): roll Firefox to r1229 (#5428) 0c8d8a3d - fix(docs): correctly detect type-only overrides (#5430) fa730bec - devops: trigger internal tests on each commit 5ea6d6ee - fix(docker): avoid symlink hack in Docker images (#5429) 9d2269dc - devops: attempt to fix npm canary publishing 449adfd3 - chore(recorder): move recording output into the gui app (#5425) a42c46b9 - browser(firefox): roll Firefox to beta @ Feb 11, 2021 (#5421) 7551c01a - docs: remove devices property from c# and java (#5423) 99f8e1cf - docs: document Android and friends (#5415) 44ff8b51 - devops: fix win archiving logic (#5420) 6113d4d5 - feat(chromium): roll Chromium to r846621 (#5413) d8f637c2 - chore(typescript): enable esModuleInterop (#5409) 6576bd8b - chore: move before/after action instrumentation into dispatcher (#5416) 6e6e36b5 - chore: move progress log into the metadata (#5411) a164f2a8 - chore: make instrumentation multiplexing proxy-based (#5410) a06cf70d - chore: pass parsed stack in metainfo (#5407) fa8e898c - fix(test): missing test coverage for browserType.connectOverCDP (#5408) 60e9216e - docs: change page error type to string (#5412) d39d2eaf - docs: support method overrides (#5405) dca70abb - feat(chromium): connect to a browser over cdp (#5207) a8ebe4d8 - fix(screencast): support viewport with odd dimensions (#5399) 7933cfc7 - docs: inline Location methods into ConsoleMessage in java (#5402) b4b14eab - chore: refactor actionability checks (#5368) 38209c67 - fix(selector generator): correct nth-match, remove label treatment, performance (#5388) 90dbe35d - docs: exclude recordHar field from java (#5401) 009765d7 - devops: upload flakiness dashboard for release branches too (#5392) d21d2448 - test: mark failing test as fixme (#5397) c12374ea - feat(docs): improve link validation (#5394) 78ab2955 - fix(isVisible): do not wait for the selector to be resolved (#5393) 4d4efccb - docs: add release notes doc (#5391) 6a98241a - feat(selectors): speed up text selector (#5387) 716bd421 - docs: spread RecordHar options in java (#5390) 152701a2 - docs: rename viewport option to viewportSize in java, C# (#5383) 3695dab1 - docs: split RecordVideo object into dir and size options in java (#5389) e2013b29 - devops: fix driver publish 2e01fbdb - chore: introduce instrumentation api (#5385) 1240dd48 - devops: start publishing canary at midnight every day (#5343) adeb2348 - docs: change WebSocket.frame* event type to WebSocketFrame in java (#5384) 206432ce - devops: fix goma startup on windows db633c44 - devops: fix args.gn syntax with goma 32d62a5c - devops: fix goma path on windows (#5381) 0652f325 - chore: introduce sdk object base class (#5370) 90954490 - devops: rename env variable (#5379) d5a51a25 - devops: fix chromium-win build (#5378) 1efcf442 - test: disable test on all bigsur (#5375) ad557dc6 - devops: introduce goma infrastructure for Chromium builds (#5377) 0871a9cf - feat(codegen): improve selector generation (#5364) b50c363b - docs(selectors): add quick guide section (#5346) ef9995e6 - docs: make pdf options strings in java and C# (#5369) 002d8ef5 - chore: remove Progress.aborted (#5363) 21c24c23 - devops: do not check for logs existance when building browsers (#5367) d49a1d81 - chore: kill electron process on ctrl+c (#5366) d499cf08 - refactor: remove browserPaths in favor of Registry class (#5318) 6680713e - chore: don't reuse recorder app profile (#5365) b32be4b3 - chore: expose electron types (#5362) 4bfdaa38 - docs: fix playwright.dev generation error (#5360) 6d56a110 - feat(proxy): throw when socks proxy is used with auth (#5358) f35acc25 - docs: improve enum naming (#5359) 551338e9 - browser(webkit): roll to 02-08 (#5356) bb0af314 - fix(video): set default size to fit into 800x800 (#5333) 7e757cd5 - fix(types): regenerate types for latest doc changes (#5353) da4304a0 - chore: run recorder app in no sandbox (#5345) 48a295dc - docs(api): stock browsers for media codecs (#5352) 3c657cba - browser(chromium): roll to r851527 (#5348) f3a5bba2 - devops: infra to automate chromium builds (#5347) 32ba29a1 - devops: introduce compressed dashboard f094f65e - docs: add section for custom setup codegen (#5339) 3d14780b - fix(docker): add fonts-liberation for chromium (#5344) a1b31648 - docs: fix nested union handling (#5341) 983e0437 - chore: fix build/packaging for recorder and traceviewer (#5338) d3cc1d76 - docs: add name for SameSiteEnum (#5340) 4b74f569 - docs: add enum aliases (#5335) c0610cce - feat(recorder): remove recorder overlay toolbar (#5334) 9c0609b0 - fix(trace viewer): do not render invisble tabs (#5322) de30ee0a - fix(oopifs): account for various races between processes (#5320) 494f0f63 - docs: update route callback type for java (#5324) 28e59757 - docs: define java specific waitFor* methods (#5315) 0cbb2c14 - feat(text selector): match text in child nodes (#5293) c1b08f1a - feat(recorder): allow dragging toolbar (#5316) d1aad632 - browser(webkit): fix scrolling a second time on linux (#5173) ff06399a - docs(csharp): events convention based naming fix for csharp (#5238) cf96b150 - fix(docs): ignore case when validating order of events and methods (#5309) 997bd082 - feat(webkit): bump to 1432 (#5300) c2b8718b - fix(waitForFunction): process isFunction auto-detection (#5312) 17986773 - feat: remove chaining from trace viewer preview (#5265) dd9b51d6 - chore: friendlier install failure message (#5281) 3126fee7 - fix(lint): correctly find api.ts on windows (#5308) 3c36322c - feat(ffmpeg): roll FFMPEG to r1005 (#5303) 039e7af0 - feat(firefox): roll Firefox to r1228 (#5302) d851bcea - devops: bundle ffmpeg license file with our archives (#5301) fe2c529f - docs: complete sentences with full stop (#5298) 9841f6db - chore: remove the 1.8.0a1 mentions (#5297) 6ae2e576 - fix: properly detect function literals (#5296) 847bea2f - chore: remove force_expr parameter from python api (#5295) 34adc28e - feat(pause): make page.pause public (#5288) 509c3e91 - browser(webkit): fix ubuntu 18 compilation (#5294) c0480e59 - docs: skip Respone.json and Request.postDataJSON in Java (#5292) 1c65b592 - docs: use separate options for string and buffer body (#5291) d8e08345 - fix(server): use setMaxListeners(0) on all internal event emitters (#5283) 3d253c4e - feat: auto-detect expression/function in js server (#5284) fa1cf410 - fix(codegen): do not show recorder controls in iframes (#5282) 080a9529 - docs: rename Route.continue_ to Route.resume in java and C# (#5290) 6c44a781 - docs: make Request.failure return string by default (#5289) a8425d33 - docs: change Accessibility.snapshot type to string in java and c# (#5287) eee2d022 - docs: change Accessibility.snapshot type to string in java and c# (#5286) 53ed35ef - feat(dialogs): auto-dismiss dialogs when there are no listeners (#5269) bbfbb1b2 - browser(firefox): fix build on Windows (#5275) cb1b6428 - devops: downloading ffmpeg during install step (#5249) 9d72d6b6 - browser(webkit): roll to 02-03-21 (#5277) 4cad3450 - fix(oopifs): do not emulate focus in oopifs (#5270) 985dd566 - devops(chromium): fix chromium linux build 8d4dc600 - devops(firefox): properly cleanup old node.js artifact 986bddae - devops(firefox): fix arm build dependency management 11f570be - devops(firefox): fix Firefox on Apple Silicon (#5272) b392c57a - devops: attempt to install Firefox build deps on buildbots (#5271) 4cd0d3e5 - docs: change StorageState type to string in java and C# (#5268) 1a464c73 - feat(video): switch vp8 in ffmpeg to realtime (#5260) 1ffd654d - browser(webkit): roll to 02-02-21 (#5263) 8a8d8ea3 - fix: update terminal size dynamically (#5250) d96c5473 - docs: note that user data dir is a parent of profile path (#5262) 6c12f580 - feat(selectors): always make xpath relative (#5252) e0f41bf1 - docs: change default return type of Response.finished to string (#5261) c51a1f96 - docs: update type of env in the remaining places (#5254) cee394d6 - docs: split ignoreDefaultArgs into 2 options for java (#5251) 9e09bd36 - fix(oopifs): ignore target closure when broadcasting across oopifs (#5246) 5564b203 - docs: mark ChromiumBrowserContext as js and python specific (#5255) 8c65871b - fix(trace viewer): Bringing back the ability to display images in Network Tab in Trace Viewer. (#5232) e53c9c35 - browser(firefox): roll Firefox to beta @ Feb, 1 2021 (#5248) 276bbca3 - fix: retry browser launch if it failed due to glibc error (#5247) 198e403c - docs: add missing java.md (#5245) e0e38706 - docs: fix Python snippet casing (2) 174b6aa2 - docs: fix Python snippet casing (#5244) 1db5ef24 - docs: document electron api (#5229) e71ef794 - docs: add java traits to some methods (#5222) (#5243) 08e2b5b8 - fix(installer): retry installer when hitting ETIMEDOUT as well (#5239) 7b536319 - devops: fix chromium build on Intel MacBook (#5242) fc405ee8 - browser(webkit): mac drag and drop (#4994) a9de3d8f - feat(snapshots): switch MutationObserver to only observer attributes (#5220) bf8c30a8 - feat(ui): extract recorder sidebar into a window (#5223) 82bb92f1 - Revert "docs: add java traits to some methods (#5222)" 9c466868 - docs: add java traits to some methods (#5222) a1d875ed - docs: make inline refs us parameter name instead of its alias (#5219) 97551915 - chore: centralize playwright creation, bind context listeners to instance (#5217) 7fe7d0ef - feat(snapshots): make cssom overrides efficient (#5218) dbcdf9dc - chore(docs): aliases for dotnet/chsarp docs. (#5162) 69ca3083 - feat(snapshots): incremental snapshots (#5213) 21041bc3 - docs: support argument overrides (#5200) 8581e3e9 - fix(docs): a couple of broken links (#5211) 5e934d0f - chore(trace viewer): split SnapshotServer (#5210) 79e00e49 - feat(ui): more recorder uis (#5208) f8fbfe28 - feat(trace viewer): Adds _debugName BrowserContextOption to let users define a name for their contexts (#5205) 8d8fa4c3 - chore: move trace viewer to the src/web (#5199) 01bddcd1 - devops(chromium): account for terminated / interrupted jobs c9fae654 - devops: fix chromium checkout 75a0d7a7 - devops(chromium): install depot_tools if missing (#5204) a7eea9ff - browser(chromium): roll Chromium to r846621 (#5203) 51d90c59 - devops: support Chromium mac compilation (#5202) 06f679b1 - devops: mark another tracing test as fixme (#5201) fe1302b4 - feat(installer): retry download if connection is interrupted (#5126) b3230188 - devops: fetch chromium checkout if it has not been before (#5169) d1a2c87e - chore: remove backward compatibility code from installer (#5168) 2a71165e - chore: disable failing tracing test (#5170) ce43e730 - feat(traceviewer): use http server instead of interception (#5195) e915e51e - chore: fix bad merge in codeGenerator.ts (#5196) 2793d144 - fix(codegen): do not forget to reset currentAction in didPerformAction (#5194) e50f11c5 - feat(ui): more recorder uis (#5187) f2ef7f51 - Link patching now picks up multiple in single line (#5163) 321a873d - fix(codegen): add timeout to our actions, catch errors (#5188) ff6b2b1d - chore: make emulate media params be options (#5172) 52728668 - feat(codegen): prefer frame name over url when unique (#5175) 35baf335 - Revert "docs: update langs fields to include java (#5161)" d0ab0bd8 - docs: update langs fields to include java (#5161) 5358fed4 - chore: fix typo a4f59dd5 - devops: upload host arch as part of test report (#5167) 9de0a5a9 - chore: add Python to docker images (#5139) 90bc837e - devops: start compiling Chromium on Linux (#5166) 0108d2d4 - feat(snapshots): various improvements (#5152) a3af0829 - feat(trace viewer): Extending existing NetworkTab view (#5009) f3cc4dfe - feat(webkit): bump to 1428 (#5140) 45f7d734 - chore: plumb terminal size and port language (#5149) 5033261d - feat(trace): streaming snapshots (#5133) 22fb7448 - docs: share proxy documentation, exclude cdp session from java (#5150) 87a3ccc4 - fix: do not return cookies with empty values (#5147) 2e290be4 - chore: remove source maps in pwdebug mode (#5148) fdde9493 - fix: don't parse potentially invalid urls in event handlers (#5090) 01d6f835 - chore: introduce debug toolbar (#5145) 894abbfe - feat(selectors): has-text pseudo-class (#5120) 77b5f05e - browser(webkit): fix scrollIntoViewIfNeeded (#5146) d78d337e - feat(fill): make fill work when targeting elements inside the label (#5143) 7d2293c6 - browser(webkit): roll to 01-25 (#5141) beed9a79 - feat(chromium): bump to 845618 (#5138) 464fdc18 - chore: make recorder a supplement (#5131) be9bef51 - chore: move recorder to server side (#5128) 3e4e511d - feat(pause): page._pause to wait for user to click resume (#5050) a2422a40 - docs: proper webkit version badge on README.md (#5121) 74816e40 - fix(installer): release lock if things go south (#5125) b7fd0cd1 - test: disable trace test that always fails (#5124) 8ad73181 - devops: fix publish script to return code zero when tip-of-tree moved (#5123) 680689d0 - browser(webkit): try to fix Ubuntu 18 build (#5119) 3e1c72ac - fix(reload): do not throw when reload is racing with navigation (#5113) b88afe58 - devops: fix chromium for arm build (#5117) 8e7fc068 - chore: migrate to Folio 0.3.17 (#5115) 71d82a5a - fix(lint): fix type test to work nicely with close param (#5114) 4fbc3c8d - feat(firefox): roll to r1226 (#5109) a4eb1213 - fix: add parameter to close/crash/disconnected etc events (#5098) 018727db - test: add a test for focused input screenshot (#5060) a9b75365 - feat(logs): add wrapApiCall for logging to many api methods (#5093) 54645409 - devops: attempt to fix chromium-mac-arm64 build (#5107) 2f29c6b0 - browser(firefox): roll Firefox to beta Jan, 18 2021 (#5106) a370443a - devops: use repository dispatch to trigger builds for all applications (#5104) 86775f06 - devops: add workflow to trigger Chromium builds once revision changes 2096f424 - devops: fix chromium compilation step (#5102) ff75073c - devops: automation to compile chromium for mac arm64 (#5101) 13cc0c51 - chore: throttle thumbnail workers, remove video processing (#5097) a7d33b2f - browser(chromium): roll to 845618 (#5094) dcf041a2 - docs: update ci docs to better help Python users (#5095) 7a4b94e6 - feat(selectors): nth-match selector (#5081) 8f06761b - docs: link to the new docs from source (#5092) c757ba72 - chore: add storybook dep (#5082) 043ed975 - docs: update limitations to reflect java bindings (#5086) 25bc6302 - docs(readme): update links to website 05568f74 - browser(webkit): change scrollIntoView to only scroll if needed (#5079) 4b5c876b - chore: allow opening empty trace viewer (#5080) 16249ccb - feat(trace): account for more action types in timeline (#5077) 45c33ae0 - docs: fix some 1.8 docs nits (#5078) af6e3a8e - Revert "chore: rework the crlf in md fix" e003aa5c - chore: remove the .gitattributes entries for md/yml b5914e09 - chore: rework the crlf in md fix c6bcaf9a - Revert "chore: fix line endings in some MD files (#5071)" 0d0a6e8f - devops: update publish script to work for @next (#5072) 5bb20fb8 - chore: fix line endings in some MD files (#5071) a7949173 - devops: always check git status before publishing to npm (#5070) f10f1709 - docs: add file chooser example, remove links to js samples (#5054) 449bcdcb - browser(webkit): roll to 01-19 (#5064) 263f1642 - feat(trace viewer): improve source tab (#5038)
Highlights
page.reload() and page.isVisible() fixes.
Browser Versions
- Chromium 90.0.4392.0
- Mozilla Firefox 85.0b5
- WebKit 14.1
Issues Closed (1)
#5111 - [BUG] Frames crashes everything
Commits (3)
970e230fcba1c62aad9ffb8ddb858e18caa478a0 - chore: mark 1.8.1 a6f62f126d4a3ffaccd2484bcb57ec23144230d6 - fix(isVisible): do not wait for the selector to be resolved a1c6ab23222c224c9d0b0b565eba478d442dbd46 - fix(reload): do not throw when reload is racing with navigation
Highlights
- Selecting elements based on layout with
:left-of(),:right-of(),:above()and:below() - Playwright now includes command line interface, former playwright-cli. Give it a try with
npx playwright --help - Documentation site now has a lot more content, and a dedicated python section
selectOption(selector, values[, options])now waits for the options to be present- New methods to assert element state like
page.isEditable('selector')
Browser Versions
- Chromium 90.0.4392.0
- Mozilla Firefox 85.0b5
- WebKit 14.1
New APIs
elementHandle.isChecked()elementHandle.isDisabled()elementHandle.isEditable()elementHandle.isEnabled()elementHandle.isHidden()elementHandle.isVisible()page.isChecked(selector[, options])page.isDisabled(selector[, options])page.isEditable(selector[, options])page.isEnabled(selector[, options])page.isHidden(selector[, options])page.isVisible(selector[, options])- New option
'editable'inelementHandle.waitForElementState(state[, options])
Issues Closed (41)
#2816 - [Feature] Performance measurement
#2877 - [Feature] A special locator to visually locate an element
#4552 - I would like browser logs when my test fails for my failing test
#4424 - [Docs] Clarify distinction between logger option and console logs
#4511 - [REGRESSION]: Memory leak related to route interception
#4549 - playwright.helper.Error: Navigation failed because page crashed!
#4562 - [BUG] Annotate deprecated API methods and properties as such in TS types
#4584 - [BUG] proxies are flaky on webkit + big sur + m1
#4684 - page.url() not getting current url immediately
#4737 - [BUG] page.waitForEvent('dialog') is not working
#4738 - [Question] Running playwright from inside browser.
#4748 - [Internal] Make server error messages consistent and language-agnostic
#4764 - [BUG] [PW 1.7.0] [WebKit] page.waitForSelector: Protocol error (Runtime.evaluate): The page has been closed.
#4774 - [REGRESSION] Custom selectors no longer able to be last in group
#4775 - [Feature] Playwright does not support chromium on mac11.1
#4782 - [Question] Wait for image loaded.
#4788 - [Question]UnhandledPromiseRejectionWarning EVERYTIME
#4789 - [BUG] Firefox does not isolate proxy credentials between contexts
#4799 - [Docs] Broken links on "Running Playwright in Docker" page
#4800 - [BUG] - FileNotFoundError: [Errno 2] No such file or directory:python3.9/site-packages/playwright/driver/playwright-cli'
#4804 - [BUG] waitForSelector doesn't throw
#4805 - [BUG] waitForSelector timeout doesn't apply
#4806 - [Question] Intermittent waitForResponse timeouts when looping
#4808 - [Question] Access browser binaries from node_modules/playwright directory?
#4811 - [BUG]Screenshot quality parameter setting error
#4813 - [BUG] Missing dependencies in Docker image to play video in Webkit.
#4814 - [Question] How does Playwright handle a big list of pages?
#4816 - [Feature] element.isVisible/isClickable/etc
#4818 - [Question] Docs page color is wierd in night mode chrome
#4820 - [BUG] No usable sandbox!
#4822 - [Question] How to disable bringing page to front during launching.
#4823 - [Question] Where can I find default args used by playwright?
#4824 - [Feature] Perform actionability checks manually
#4833 - [BUG] request.postData() output is distorted on webkit
#4847 - [Question] Cannot launch chrome again after close the previous one
#4849 - [Question] page.click() and CSS extension: visible - documentation confusion
#4853 - [Question]How to get the text of an element?
#4856 - [BUG] Possible click element logic issue in combination with detach
#4862 - [Question] How does Playwright communicate with browsers?
#4863 - [Question]Please give an example of Sync dialog, thank you
#4865 - [BUG] Issue with chained selectors -- text selector doesn't work
Commits (193)
f10f1709 - docs: add file chooser example, remove links to js samples (#5054) 449bcdcb - browser(webkit): roll to 01-19 (#5064) 263f1642 - feat(trace viewer): improve source tab (#5038) c567f948 - chore: mark tot as 1.9.0-next (#5059) d00c5cfd - feat(webkit): bump to 1423 (#5057) 615954b2 - fix(dom): make selectOption wait for options (#5036) 19acf998 - docs: minor updates to selectors.md (#5055) 0586c255 - feat(text selector): normalize whitespace for quoted match (#5049) 9e3bd786 - docs: update selectors doc to be more like a guide (#5048) 9caa8e80 - test: add test for multiple arguments in :has() (#5047) 01fb3a60 - docs: extract handles, screenshots, videos docs (#5045) 0a7b917e - feat(chromium): bump to 844399 (#5044) d05c0917 - chore: roll chromium to 844399 (#5043) 17e953c2 - chore: make generate_types not depend on the source (#5040) 1fc02e88 - docs: add dialogs and downloads docs (#5042) 2db02c9a - docs(python): update installation docs (#5039) fdfea2b7 - browser(webkit): add another missing include to fix mac after roll to 01-15 (#5037) afaec552 - feat(trace): show dialogs, navigations and misc events (#5025) e67d5637 - docs: don't use lang suffix in the intro url (#5035) 41e394bc - docs: allow overriding return types (#5031) 940cf35d - browser(webkit): add missing include on mac after roll to 01-15 (#5033) 0ab6a532 - browser(webkit): roll to 01-15 (#5032) 6e94c110 - docs: prepare docs for tabbed snippets (#5026) 56ba0b3c - docs: brush up some python docs (#5027) b45905ae - feat(trace viewer): small improvements (#5007) 7701176b - docs: allow lang-specific sh snippets (#5024) de5d671d - chore: restore lockfile v1 (#5023) 19b58d47 - chore: bump chromium to r843427 (#5022) e85f2788 - docs: more python docs and snippets (#5021) 61b0dbb3 - devops: start downloading firefox arm builds on Apple Silicon. (#5019) 5dcb7bb2 - docs: declare expect_navigation as returning Response (#5020) ff20b9d1 - devops: support frequent minor releases of MacOS BigSur. (#5016) 1648d235 - docs: add python snippets for api classes (follow up) (#5018) 3ed9f2d6 - chore: disable v1 flakiness dashboard (#5015) 38dac2f3 - chore: bump electron version to 11 (#4968) 8354a91d - docs: add python snippets for api classes (#5011) 5408e26e - docs: add python snippets for class Page (#5010) 0a999bf0 - fix(driver): remove path trickery from install command (#5008) e3ebba55 - chore: cleanup code that is not used by cli anymore (#5005) 7ff86a84 - chore: add publish-driver-release workflow (#5006) 5c3f4836 - fix(cli): do not extend injected script on same-document navigations (#5002) a35617db - chore: bundle proper license file for ffmpeg (#5004) 9a9ac60d - fix: fix the cli tests, generate snake python (#5003) decf373c - fix(electron): return a ChromiumBrowserContext for electron (#4913) df53cb2f - docs: fix inline code quoting (#4992) fcbfbe6f - devops: fix azure function bugs (#4998) 8316dee4 - devops(flakiness): persist all test reports, aggregated per commit sha (#4991) 29c34325 - fix(cookies): make filtering by url work with subdomains (#4989) 0bf7477c - test(network): add failing test for Set-Cookie in fulfill (#4988) cac119f3 - docs: python api review (#4986) 3d258631 - feat(webkit): bump to 1420 (#4980) d62b661c - docs: rename proximity selectors to position selectors (#4975) cb6e4a66 - chore: update snippets in python docs (#4976) 7665a6ec - devops: support apple silicon builds of Firefox (#4979) 72519196 - fix(connect): provide an error message when ws endpoint is incorrect (#4978) 068ad0f0 - feat(firefox): roll Firefox to r1225 (#4908) 728846b3 - fix(launcher): add vcruntime140_1.dll to the list of known deps (#4973) 36650b1e - browser(webkit): fix compile on mac (#4977) bf64fedd - fix(trace viewer): updating default traceStorageDir value (#4962) 56f01204 - browser(webkit): fix mac compilation after roll to 01-11 (#4972) 62c52e86 - browser(webkit): roll to 01-11 (#4971) 5854cadd - browser(webkit): fix typo in macro name (#4970) 7a8214cd - chore: prepare non-api docs for non-js variants (#4969) 4dbbb475 - docs: document Python's expect_event methods (#4963) e67d8974 - chore: update docs to cover python specifics (#4960) e990a805 - fix: restore network request title in trace viewer. (#4957) 5a2cfdbd - api: add isChecked method (#4953) 3b617b37 - docs: validate member links (#4955) b7e0b1b3 - docs: annotate evaluate(pageFunction) js-specific (#4954) 31d980fc - chore(webpack): minify injected sources (#4946) 135e0344 - feat(cli): small improvements (#4952) 114d586f - chore: add python aliases (#4949) f0a87291 - chore: remove unused selector engines (#4950) 3f904056 - api: add isVisible, isHidden, isEnabled, isDisabled and isEditable (#4915) 498f9a52 - docs: update authentication guide to use storageState() api (#4948) d08cbc33 - docs: brush up selector docs (#4939) 97de9209 - docs: move links into playwright.dev (#4947) 77bfcd2c - chore: add some Python language snippets (#4933) 07cb5f71 - docs: Added Crystal port to showcase (#4945) 2072c614 - docs: add Java to the list of language ports (#4940) 15c0a295 - docs: split nodejs and python links (#4942) 2e05feac - feat(cli): bring in trace viewer (#4920) 54c06a1b - chore: mark methods as js-only, add python-specific methods (#4938) e56832b6 - chore: language-specific members api (#4936) 8d649949 - docs: move Go port to showcase (#4934) eb9ea205 - feat(selectors): proximity selectors (#4923) ffa169ba - chore: use chokidar for build (#4932) bdf12e32 - docs: split api-body into classes (#4931) 4cd989c6 - docs: introduce deprecation annotation and any type (#4930) 913f8524 - docs: make all links relative (#4926) 0a2fe62c - fix(extensions): do not enable screencast for background pages (#4919) 8fd34c6b - feat(webkit): bump to 1415 (#4914) 4ff7e1a4 - chore: cleanup our build system (#4903) 2311c282 - docs: pref docs to be language-specific (#4916) cc1a79ec - browser(webkit): drag and drop on windows (#4889) f672033e - chore: bundle small build of highlight.js (#4907) 6b3dcb01 - chore: fix randomly crashing build-playwright-driver.sh (#4909) 9bbabaaa - test: update screencast test to actually require red color (#4745) b6cd385a - docs: mark some paths as such (#4896) 2908568f - browser(webkit): install new dependency required for openxr on linux (#4906) 6b94f5f1 - browser(firefox): roll Firefox to beta @ Jan 5, 2021 (#4904) a9c776f5 - chore: watch to regenerate api.json (#4901) d47fb6a7 - feat(cli): build driver and upload to cdn (#4841) b00559bd - docs: add save/load storage to cli docs (#4899) 35ecf69d - chore: fix lint (#4898) 5df1c6e5 - browser(webkit): roll to 01-05 to pick up upstream Win fix (#4894) 0f8d7ec0 - docs: improve waitForElementState documentation (#4883) d8187bb5 - feat(webkit): bump to 1412 (#4886) 4996eacd - docs: split numbers into integers and floats (#4887) 849a5b37 - browser(webkit): roll to 01-04 (#4882) 4a891582 - fix(type-generator): make the generated by message consistent on windows (#4888) 80f8a0fd - doc: further align docs w/ playwright.dev (3) (#4884) 5215add6 - chore: remove selectorsV2Enabled switch (#4880) c4df5225 - fix(handles): always create proper handle type (#4879) 31ffeb32 - doc: further align docs w/ playwright.dev (2) (#4871) 3ff81fe1 - browser(webkit): do run win build again if first attempt failed (#4881) 706c1e44 - chore: use last commit timestamp for @next builds (#4876) b0b1561c - browser(webkit): kick off next build (#4878) 736ef4e8 - browser(webkit): call build.sh twice on Windows (#4875) ae935a43 - doc: further align docs w/ playwright.dev (#4866) e0e836cb - doc: split classes into files (#4864) ba291372 - docs: generate all docs off docs-src (#4858) 75198f04 - browser(chromium): bump to r839741 (#4857) a5bd415e - doc: generate class toc as a part of the api generation (#4852) ded2bc23 - browser(webkit): postpone creation of the first page (#4769) 9817d109 - doc: generator code health (3) (#4850) 6697dadc - chore(eslint): add rule no-unused-expressions (#4848) d08f8487 - chore: remove useless statement that was a typo (#4846) 722db85e - doc: generator code health (2) (#4843) 8fbb984f - test: disable most codegen on headful firefox (#4839) 7f8717f1 - feat(cli): add docs (#4837) 70c14e6b - doc: generator code health (#4840) a1232b69 - chore: simplify and remove some scripts (#4838) 068d8612 - feat(cli): make run-driver work (#4836) 293a7bdd - feat(cli): bring in codegen and tests (#4815) 4c11f5d8 - test: remove hacky requires, use imports instead (#4835) 94077e0e - chore: remove JS types checker, rely on typescript (#4831) a446792c - docs: generate api.md off documentation model (#4832) fee7dd7c - chore: nit type validator fix (#4830) 905f28c3 - feat(types): simplify android and electron types (#4829) 34c1b338 - feat(types): make our client classes implement public types (#4817) dc25173a - chore(docs): fix crlf (#4828) 2cb57701 - docs: move playwright module into api-body.md (#4827) 15cdfd1c - chore: generate types, api.json off md rather than html (#4825) 9dd982c5 - chore: commit generated types to the repository (#4826) 277d255f - chore: brush up md processing (#4819) 225e65e0 - feat(cli): share console api between cli and debug mode (#4807) f709e230 - feat(cli): bring selector generator into playwright (#4795) 8d4c46ac - fix: throw if quality=0 is passed for png screenshot (#4812) e7ee4262 - yury comments (#4639) eb50baff - browser(firefox): bump to 1224 (#4809) d40afa2f - feat(cli): first few cli commands (#4773) cc32217e - chore: fix check-deps (#4801) a7f4c69a - docs: fix browser version generation script (#4797) ff2a1f1b - fix(webkit): properly detect arm64 on apple silicon (#4783) 73edf13a - browser(webkit): roll to 12-21 (#4794) afaf13a0 - docs: add missing GEN:webkit-version (#4770) b3e78385 - browser(firefox): clear AuthCache when setting context proxy (#4793) 3eef2548 - test: failing test for firefox per-context proxy credentials (#4790) 779c5fff - chore(installer): remove stale backlinks silently (#4786) 7bbda437 - chore: improve error reporting when browse download fails (#4787) 94ee48f8 - fix: allow proxy credentials with empty password (#4779) ee417791 - chore: roll FFMPEG to r1004 (#4760) fc30c29a - test: add a test for custom engine that does not respect root (#4777) 2e220df7 - docs: explicitly annotate methods and parameters (#4771) c81ec9cc - test: fixed failing test on video bot (#4747) d498b450 - docs: remove mentions of nodejs, promises and resolves (#4768) 761bd788 - browser(firefox): fix build on MacOS (#4758) b56dd7de - devops: kick ffmpeg build (#4757) 774eb539 - fix(adb): force page scale factor update on connection (#4755) a721ba5a - devops: give unique names to test shards (#4756) 3219057a - fix(webkit): support utf-8 characters in postData, bump to 1407 (#4744) 5a1c9f1f - fix(selector): bring back v1 query logic (#4754) 9a0023cc - fix(selectors): text engine after capture matches scope (#4749) 35533b15 - fix(scroll): scroll from under the sticky header (#4641) e4658ea9 - browser(webkit): base64 encode request.postData (#4743) 7385b31f - fix(driver): stop sending protocol messages after disconnect (#4688) 94f5002a - browser(webkit): install patchelf (required by generate-bundle) (#4741) b014fa18 - browser(webkit): roll to 12-16 (#4739) 23a6e4df - chore: restructure and optimise test files (#4736) 50b0b479 - browser(webkit): mac build fix after roll to 12-15 (#4733) 2c409b04 - fix(android): leaking adb socket connections (#4730) 0af34a4f - devops: firefox build now requires newer MacOS SDK to build against (#4732) 97be66b1 - fix(adb): enable newPage in mobile browser (#4728) eecb7983 - browser(webkit): roll to 12-15 (#4727) 69476a86 - chore: add support for macOS Big Sur 11.1 (#4724) e02c5448 - chore(adb): make driver smaller (#4713) b09e0d01 - fix(launchdoctor): make launch doctor to warn on Win7 (#4718) 355a58e6 - feat(storage): accept path in save/load storage apis (#4714) 5f6ccee7 - browser(firefox): roll Firefox to beta Dec 14, 2020 (#4716) 0b8f34e7 - docs: rename aggregate parameter objects to params (#4715) ab63063c - fix(tracing): store relative video path in the trace (#4710) e91eee84 - chore: cut v1.7.0 (#4705)
Highlights
Selectors and arm64 bugfixes.
Browser Versions
- Chromium 89.0.4344.0
- Mozilla Firefox 84.0b9
- WebKit 14.1
Issues Closed (2)
#4742 - [REGRESSION]: css/xpath selector engines don't work when chained with >> #4774 - [REGRESSION] Custom selectors no longer able to be last in group
Commits (4)
bbb411a9 - cherrypick(release-1.7): fix(webkit): properly detect arm64 on apple silicon (#4796) 883ed59d - chore: mark v1.7.1 (#4792) 64c8639c - cherrypick(release-1.7): fix(selector): bring back v1 query logic (#4791) 29568e8b - fix(selectors): text engine after capture matches scope (#4749)
Highlights
- New Java SDK: Playwright for Java is now on par with JavaScript, Python and C# bindings.
- Browser storage API: New convenience APIs to save and load browser storage state (cookies, local storage) to simplify automation scenarios with authentication.
- New CSS selectors: We heard your feedback for more flexible selectors and have revamped the selectors implementation. Playwright 1.7 introduces new CSS extensions and there's more coming soon.
- New website: The docs website at playwright.dev has been updated and is now built with Docusaurus.
- Support for Apple Silicon: Playwright browser binaries for WebKit and Chromium are now built for Apple Silicon.
Browser Versions
- Chromium 89.0.4344.0
- Mozilla Firefox 84.0b9
- WebKit 14.1
New APIs
- new method
browserContext.storageState()to get current state for later reuse storageStateoption inbrowser.newContext()andbrowser.newPage()to setup browser context state
Issues Closed (56)
#647 - Other Browsers #1129 - [Feature] Browser context serialization to support local storage #1677 - [Internal] Run applicable tests for iframes and oopifs #1960 - [BUG] Playwright in Storybook #2274 - [Bug] running tests in parallel in Docker lead to page crashes #2352 - [BUG] page.emulateMedia colorScheme has no effect in firefox without reload #2360 - [BUG] Checkbox wont check unless force parameter is passed on #2409 - [BUG] UnhandledPromiseRejectionWarning: Error: by Firefox and web kit. #2415 - [BUG] Serviceworker shows wrong request.referrer in Playwright #2425 - [Feature] Support Socks5 with auth #2426 - [Question] How can we touch a button on screen ? #2646 - [Question] Ci/Cd using AWS Codebuild/Codepipeline #2698 - [BUG] Chromium headless on Windows does not launch without --disable-gpu #2748 - [BUG] Chromium fails to connect in CI most of the times #2761 - Playwright API v1: shortcomings #2768 - [BUG] Click doesn't work properly if page is zoomed in #3148 - [Question] Issue with launching Chromium in headful mode #3152 - [BUG] Firefox multi page screenshots and focus ring #3244 - [Question] Allow Multiple Downloads Notification #3261 - [BUG] State of WebKit video codecs #3284 - [BUG] MS Edge Chromium crashes on closing in headless mode #3318 - [Feature] SSR on playwright.dev #3337 - [REGRESSION]: NS_ERROR_FILE_ALREADY_EXISTS with Firefox sporadically #3347 - [Feature] CSS.forcePseudoState #3498 - [Question] How to manually download file (donwload dialog) ? #3509 - [Question] Is it possible to set AlwaysOpenPdfExternally #3552 - [Question] First-class test runner support #3726 - [BUG] Playwright-core - page.waitForEvent: Timeout 30000ms exceeded #3871 - [BUG] Always failed in CircleCI #3901 - [Feature] APIs for getting values from the page #3990 - [BUG] AvailWidth/Height #4037 - [BUG] Edge does not report request payload #4075 - [Question] Run headless Firefox with non-default executable path #4112 - [Feature] pass args to new context #4117 - I am trying to use a proxy in Webkit and when I redirect once it loses the proxy. What am I doing wrong? #4124 - [BUG] page.click() is inconsistent in large webapp #4203 - [BUG] Using a typescript version thats too old gives a bad error message #4235 - [Question] How to fight web app (Salesforce) pausing due to window/tab not in focus #4242 - [BUG] Helpful error message for lockfile #4254 - [Question] Will node js be updated to 14 lts in docker image? #4269 - [Feature] Export credential #4297 - [BUG] Twitter timeout error on firefox #4320 - [DevOps] GitHub Dependency graph does not work #4345 - [Bug] Initial browser launch time inconsistent #4381 - [Question] Is there an API endpoint to get the binary download URLs? #4398 - [Question] wait until all of elements appear #4432 - [Question] - Firefox.launch.Process failed to launch! No space left on device. #4433 - [Types] Page.waitForResponse() urlOrPredicate use typed function #4439 - [REGRESSION]: self signed certificate in certificate chain -> Error with installation #4445 - [BUG] Unknown scheme for WebSocket.listenerCount #4461 - [BUG] Error when using PM2 process manager in cluster mode #4465 - [BUG] MS Edge Chromium cannot end msedge.exe processes in HEAD mode #4467 - [BUG] Can't connect to running browserServer from another process #4472 - [BUG] Crash when opening a new tab from UI #4486 - [Question] chromium with head #4487 - [BUG] Playwright not intercepting fetch requests in WebWorker
Commits (193)
e91eee84 - chore: cut v1.7.0 (#4705) e6c206ed - chore: update PrintDeps.exe to r1004 (#4709) c5bb08c5 - docs: remove outdated troubleshooting (#4706) 8d574a76 - docs: update docker readme 4799e8f2 - feat(adb): add screenshot (#4701) 1596b53d - test(adb): fix browser tests (#4700) f89dcc7b - feat(adb): implement push (#4697) b8112ded - devops: fix Android tests on GHA (#4698) f4eff4db - devops: add bot to test Android (#4693) 67f92be3 - chore(deps): bump ini from 1.3.5 to 1.3.8 (#4692) 844b2c8f - chore(adb): lint the driver (#4696) ad5309ca - feat(adb): make shell return binary (#4695) 7c89ec05 - feat(adb): expose a11y tree (#4694) 1b7fb7d5 - feat(android): expose installAPK(path) and ADB socket (#4689) 6cc695d9 - test(adb): fix the adb tests (#4691) 2ba60e92 - test(adb): add some adb tests (#4679) aa1b546b - chore(android): respect timeout, add build script (#4690) f20518f2 - fix(har): do not complain about a lot of listeners (#4675) 765b0778 - feat: start downloading arm64 Chromium builds (#4681) 616df7d2 - fix(adb): minor fixes (#4678) 495085cb - fix(chromium): make interception work with dedicated workers (#4658) b9c95976 - feat(selectors): optimize old->new conversion for css (#4672) e97ab7e4 - test: unflake some web socket tests (#4673) 12dc04a3 - feat(selectors): optimize old->new selectors conversion for text (#4671) c8e9b054 - feat(selectors): disable proximity selectors (#4659) 84ff20f1 - test: fix test server on Node 15 (#4668) b486e840 - devops: revert ability to skip architecture enforcement (#4667) 4f3f6267 - chore: add dummy package.json's for GH dependents analysis (#4666) 8fc49c98 - feat(adb): support webviews (#4657) f939fdc1 - feat(firefox): bump to 1221 (#4656) b67e0221 - feat(selectors): update new text selector (#4654) aacd8e63 - chore: expose adb devices and actions (#4647) ab44d682 - feat(selectors): remove index for now, add documentation (#4640) 1d90d7a9 - feat: fix browser installation on mac 11.0-arm64 (#4652) e0a02c3f - feat(webkit): bump to 1402 (#4651) bc0af57a - feat: support download of native WebKit build for Apple M1 (#4648) add7ce7f - devops: fix buildbot mac m1 name c36af734 - devops: add old-fashioned scripts to run Mac M1 buildbot (#4649) 93c362de - devops: fix architecture enforcement (#4645) 6d3278f1 - devops: add ability to skip architecture enforcement (#4644) dd9c312b - devops: start producing WebKit builds for Apple Silicon (#4643) 64a2940a - devops: fix webkit archiving (#4642) 17f1b20f - devops: trigger all builds with new windows buildbot (#4638) 6c4d3b86 - chore(docker): put browser deps instructions first (#4637) c1dcef39 - devops(windows): fix vswhere location (#4636) 99b98d62 - browser(webkit): do not spam stderr with screencast debug logs (#4635) 1060fce0 - feat(selectors): explicit list of custom functions (#4629) be16ce4b - feat(errors): append recent browser logs when browser disconnects (#4625) e1e000d2 - browser(firefox): do not spam stderr with screencast logs (#4630) ea833daa - chore: fix internal binding (#4598) 1e754a4d - feat(selectors): proximity selectors (#4614) c36f5fa3 - feat(chromium): roll to 833159 (#4626) 18b565a9 - feat(selectors): correctly work in large DOM (#4628) 73982834 - devops: absolute paths for webkit libraries and output directory (#4627) 20201310 - feat(firefox): roll Firefox to r1218 (#4620) e8dcd876 - browser(chromium): build 833159 (#4623) e75ebc17 - browser(firefox): roll Firefox to Dec, 7 2020 (#4622) 4be41f25 - browser(webkit): build fix, switch to the new download API (#4621) d8520f06 - devops: fix webkit building on windows (#4618) 13e2ef1d - devops: suppport WK_CHECKOUT_PATH variable (#4617) 71b7b488 - chore: use Node.js 14 (new LTS) in Docker image (#4262) 1e0ab79f - feat(selectors): add visible and index engines (#4595) a3a31bc8 - doc: add the mobile.md doc (#4612) 1717cbd3 - doc: describe return value as a part of method (#4608) cdd9fd6b - test(click): add a failing test for click w/ scroll (#4606) 6fe7d9c1 - devops: support FF_CHECKOUT_PATH to customize browser checkout (#4607) 96a1f79e - docs: reformat api-body to allow multiline params documentation (#4604) b6eb8e0a - browser(webkit): fix mac build (#4605) 8218a71a - feat(selectors): add more tests for css selectors (#4596) cdbc96ac - browser(webkit): roll to 12-04 (#4601) aed3d14b - test: unflake "should not result in unhandled rejection" (#4602) bf7dff80 - chore: remove the --only-update-browsers option 20c17d54 - chore: fix the doclint tests 7dc386fa - browser(webkit): produce xcode 12.2 build on Mac 10.15 (#4599) 150d778c - docs: disambiguate events (#4597) 8551fff4 - browser(firefox): disable cross-process navigation (#4594) 761b78ef - docs: generate links based on the method names (#4593) 49a3f943 - feat(selectors): switch to the new engine (#4589) 7213794a - Correct typo in "emulateMedia" call example. (#4592) 2452d07f - docs: generate method signatures in docs (#4590) 0eb6f856 - docs: pretty-print api.md (#4588) 5d47a974 - docs: reformat template parameters (#4587) 016925cd - feat(selectors): implement builtin selectors in new evaluator (#4579) 3121de40 - test: remove tests for SelectorEngine.create (#4580) 7e30669e - fix(binding): catch binding resolution against the closed page (#4583) 5002b83b - test(focus): add a failing focus test (#4581) 5a537413 - fix(lint): property waitForResponse type (#4582) bc701629 - fix(doclint): exit 1 when doclint throws an error (#4572) d2b7e0d1 - fix(types): add typed cb for Page.waitForResponse (#4575) 95c502d2 - docs: use templates to reuse documentation properties (#4578) 31e22dee - devops(win): fix paths to vswhere.exe in 64-bit shells (#4577) 3d6194e8 - feat(selectors): introduce css evaluator (#4573) 52ae218b - fix(fill): allow filling more input types (#4563) 1fa7e86e - docs: generate api.md (#4576) f5c8e1d3 - link: make lint happy 3624e3e3 - chore: add internal method for utility context bindings (#4566) 1ca30fe6 - chore: force lo dpi recording on non-mac (#4557) a45532fd - feat(selectors): update css parser (#4565) 3846d05f - feat(firefox): bump to 1217 (#4560) 9c677f64 - feat(webkit): roll webkit to r1395 (#4550) e8419f85 - browser(firefox): support alertCheck and confirmCheck dialogs (#4553) e98aceb9 - feat(selectors): introduce css parser (#4522) 84dc441a - feat(trace): record traces when PW_TRACE_DIR is set (#4545) d116787a - fix(lint): update check_deps for src/remote (#4547) 512516c9 - browser(webkit): retore changes from #4539 (#4544) 8f70c95d - browser(webkit): roll to 11-30 (#4541) 730f6f87 - browser(firefox): roll Firefox to beta Nov 30, 2020 (#4542) d104591a - devops(flakiness): azure function to store dashboard in a new format (#4540) d96330bb - browser(webkit): override availWidth with screen width (#4539) 884edbb3 - fix(channels): only send protocol methods to connection (#4493) 7d90f5ef - feat(firefox): roll Firefox to r1215 (#4526) 8cc8b777 - docs: fix auth example (#4528) 62f7437a - test: remove the flaky test we are not going to fix (#4527) 51865fe5 - chore: bump WebKit build number to test self-hosted runners (#4525) bab16a5c - devops: remove self-hosted runners (#4524) d06afadb - browser(firefox): send dragend after drop and survive navigations (#4506) c6d5bc30 - test(drag): more tests for drag and drop (#4508) 60103229 - test: unflake some chromium tests (#4521) 566c57ee - fix(lint): remove unused import in resource-timing.spec.ts (#4520) 5976e5dc - feat(firefox): roll Firefox to r1213 (#4514) 2486a4fb - chore: fix lint after #4517 (#4518) 062ec7e4 - test: enable resource-timing test on BigSur (#4517) f916c980 - chore: update WebKit version to 14.1 (#4515) 17bec4f6 - browser(firefox): rebaseline atop of Nov, 23 2020 (#4516) e9060dd6 - fix(launchServer): wait for the server to start before taking its address (#4513) 4f4a7ce5 - test: add test for network interception in web workers (#4490) 06e0aa40 - devops: add source code for flakiness dashboard (#4479) e72d9a41 - chore: add websocket connection mode (#4510) 14a96ca2 - browser(firefox): ensure detachedFromTarget is always sent (#4505) a0587949 - feat(chromium): roll to r828656 (#4503) aea106b2 - chore: simplify server screencast code (#4501) 5e6eed0d - fix(frames): do not start network idle timer after detach (#4502) 240d51f1 - docs: improve boundingBox documentation (#4500) 2d16953e - devops: start Chromium mirroring from GHA (#4492) 95aab3b2 - browser(chromium): prepare r828656 (#4499) de43de7a - test: make test not depend on line endings (#4497) 09f9a351 - fix(protocol): rename websocket error event to socketerror (#4495) 1278c254 - feat(webkit): roll to 1391 (#4494) 6bc45d92 - browser(firefox): browser.version() to return full version (#4491) 1169c5ab - browser(webkit): close on pipe disconnect (#4484) b064f930 - feat(webkit): bump to 1390 (#4483) ce423517 - test(route): test that intercepted XHR is actually paused (#4482) a11be3e9 - browser(webkit): roll to 11-18 (#4481) e2d43794 - devops: use proper tags for self-hosted runner (#4480) 33a168e5 - devops: build firefox on self-hosted ubuntu 18.04 runner (#4478) cb1f2a38 - browser(firefox): roll Firefox to Nov 17,2020 (#4477) 8860d6d1 - chore: try building webkit on github selfhosted runner (#4476) 05bb149d - devops: teach self-hosted runner to install dependencies (#4475) 80446aaf - devops: use labels instead of self-hosted runner name (#4474) 497a99de - devops: try building webkit on a self-hosted ubuntu 18.04 runner (#4473) f9a407f1 - devops: remove bigsur buildbot (#4457) a877c24f - fix(route): throw on attempt to fulfill with redirect in WebKit (#4449) cb21d5dc - feat(chromium): roll to 827767 (#4471) 38fadcad - fix(chromium): use frameDetached reason (#4468) c1a5cd51 - fix(docs): remove extra code in timing docs (#4466) ab4a6279 - feat(webkit): roll to r1388 (#4464) 1f5b7527 - feat(chromium): roll to r827102 (#4462) bbe755c7 - feat(firefox): bump to 1210 (#4459) fc038881 - browser(chromium): pick 827102 for roll (#4460) 93b6faee - test(chromium): disable webgl2 on headful (#4450) 79c592ed - browser(webkit): do not create unique page groups for pages (#4456) 5509e98b - browser(webkit): fix mac build after latest roll (#4455) b9ac9df8 - fix: prevent memory leak when collecting logs from injected script poll (#4448) 39fcf1bc - browser(firefox): do not leak reponses (#4453) bd76e9dd - browser(webkit): roll to 11-16 (#4451) 2f73a45e - browser(chromium): roll to 827767 (#4452) e91140e8 - browser(firefox): force a layout before dispatching a tap (#4428) 31bebc7e - fix(close): allow errors when closing all pages of a context (#4324) 3da1f73f - test(chromium): disable large screenshot test (#4446) 0ae455f4 - test(tap): unflake chromium headful tap tests (#4431) dfe3552b - feat(route): support URL overrides in continue (#4438) dd3d4933 - fix(lock): nicer lockfile error (#4396) 732e83f4 - feat(webkit): bump to 1385 (#4430) 914c6eec - feat(firefox): bump to 1206 (#4425) 0167f8c1 - browser(firefox): allow to override request url (#4436) 2e65f788 - browser(firefox): close browser when pipe disconnects (#4437) 9404d2ab - fix(debug): do not generate source urls for anonymous scripts (#3691) d20e56e1 - feat(state): allow getting / setting context state (#4412) a35d2070 - test: fix resource timing for bigsur test (#4419) e69315f7 - fix(websocket): remove "skip frames" logic (#4435) cd18ddb6 - test: add a test for numerical id selector (#4429) 9e1b26f9 - browser(webkit): close on pipe disconnect (#4421) b0d174fd - revert: lifecycle refactoring, it breaks setContent (#4420) 5d47214e - chore: register frameless listeners separately (#4407) bd7507e1 - chore: unify new page handling across vendors (#4411) 2bfee8dc - chore: fix publishing @next from release branch (#4418) 8f728617 - browser(webkit): roll to 11-12 (#4417) 8488c296 - browser(firefox): allow to override content-type along with post data (#4416) eee82a7f - fix(oopif): store child frame id between frameDetached and attachedToTarget (#4410) 52147b30 - devops: fix flakiness upload on windows (#4415) d8837a80 - fix(docs): add tap to actionability (#4413) 5702eca1 - fix(selectors): make selectOptions work for labels (#4402) 138680f9 - fix(launchServer): stream protocol logs into options.logger (#4403)
Highlights
Minor bugfixes.
Browser Versions
- Chromium 88.0.4324.0
- Mozilla Firefox 83.0b8
- WebKit 14.0
Commits (4)
691c38bf - feat(chromium): roll to r827102 (#4462) a6474d50 - chore: register frameless listeners separately (#4407) d8d4f832 - chore: mark v1.6.2 dcb17980 - fix(websocket): remove "skip frames" logic (#4435)
Highlights
Minor bugfix.
Browser Versions
- Chromium 88.0.4316.0
- Mozilla Firefox 83.0b8
- WebKit 14.0
Commits (1)
6b5c2cf3 - revert: lifecycle refactoring, it breaks setContent (#4420)
Highlights
Touch
- Use
page.tap()to automate native tap events. Like other input events, taps auto-wait for the UI element and actionability checks.
Network
- WebSocket inspection: Use
page.on('websocket')and the new WebSocket class to inspect WebSocket connections. - HAR export: Capture and export all the network activity as a HAR file. Pass
recordHarwhile creating new browser contexts. - Resource timing: Use
request.timing()to retrieve and analyze timing data for the network requests. - Proxy for browser context: Network proxy settings can now be configured per browser contexts with the
proxyoption on the new context.
Playwright CLI
- CLI codegen can now generate C# code. Run
npx playwright-cli codegen --target=csharpto try!
Browser Versions
- Chromium 88.0.4316.0
- Mozilla Firefox 83.0b8
- WebKit 14.0
New APIs
- new class WebSocket
- new option
proxyinbrowser.newContext()andbrowser.newPage() - new option
recordHarinbrowser.newContext()andbrowser.newPage() - new option
recordVideoinbrowser.newContext()andbrowser.newPage() - new
page.on('websocket')event - new
page.tap()method - new
elementHandle.tap()method - new
page.touchscreennamespace to access Touchscreen - new
request.timing()method
Issues Closed (39)
#1655 - [Feature] Custom methods on Page
#2515 - [Feature] networkidle for "idle after action"
#2695 - [Feature] WebSockets supports
#2946 - Not able to detect browser event: disconnected event when close browser is invoked
#2974 - [BUG] Unable to adopt element handle from a different document
#3122 - [QUESTION] Chromium versions are mismatched in docker, leading to launch failures
#3206 - [Feature] Export network as HAR
#3466 - [Feature] Fill input field based on label text
#3476 - [BUG] Firefox focus won't work with more than 1 page
#3499 - [BUG] Playwright does not see iframe element as visible
#3534 - [Feature] Allow set proxy per context
#3693 - [BUG] RPC/Firefox goBack does not return a response (guid)
#3830 - [Feature] Text selector engine normalise whitespaces
#4002 - [BUG] page.waitForSelector fails when called during a redirect
#4021 - [BUG] beforeunload event in headless mode is failing
#4038 - [REGRESSION]: Tall screenshots in chromium get corrupted at bottom
#4134 - [BUG] elementHandle.scrollIntoViewIfNeeded doesn't work properly
#4179 - [BUG] Unable to close page when confirm dialog is open
#4208 - [BUG] Timout Error on firefox for popup
#4232 - [BUG] Group videoPath and videoSize under recordVideo option
#4233 - [BUG] download file not occurs
#4255 - [Question]: Exposing common Playwright types
#4256 - [Question] playwright-electron types might be missing from the release or is there any guide on how to get it to work?
#4265 - [Feature] Multiple text selectors
#4266 - [Question] Exported video quality
#4268 - [Question] Does puppeteer have Redhat Dockerfile support?
#4277 - [BUG] Firefox workers cause frame navigation
#4279 - How to Compare two screenshots? Need code [Question]
#4282 - [Question] is there a way to get element background colour ?
#4284 - [BUG] page.addInitScript doesn't work for large scripts
#4285 - Running WebKit on AWS EC2 Instance [Question]
#4286 - [Question] CDP sessions with other targets
#4293 - [BUG] Bundle dlls with Firefox for Windows
#4302 - [Question] What is the best way to scroll page to the bottom?
#4317 - [Question] drag and drop
#4318 - [Question] Query by text with space
#4319 - [Question] Have the browsers that are downloaded for playwright 1.3.0 changed somehow ?
#4321 - [Feature] pass arguments like proxy to each context not to whole browser
#4326 - [Test] Ubuntu: browsercontext-proxy.spec.ts:128:1 › should exclude patterns crashes webkit
Commits (164)
2158d6d0 - feat(scopes): make page a scope (#4385)
58b5872e - feat(webkit): bump to 1383 (#4394)
508be0d7 - browser(webkit): fix big sur crashes after latest roll (#4391)
c2db8373 - feat(webkit): roll to r1381 (#4388)
775be21d - fix(launchdoctor): fix launch doctor (#4387)
488b256c - feat(firefox): bump to 1205 (#4386)
bd75fb1c - browser(webkit): roll to 11-09 (#4384)
ae738c1f - browser(firefox): ignore WebProgress events coming from workers (#4380)
f7eb845d - feat(firefox): bump to 1204, add a better test for video in popup (#4376)
28f6547d - chore: add adb-based connectivity (#4375)
06c8881d - browser(firefox): fix videoSessionId (#4374)
3db8b23b - fix(chromium): lifecycle events race (#4369)
c83ac444 - api(websocket): do not send websocket frames without a listener (#4361)
d74988e9 - feat(webkit): bump to 1380 (#4368)
d4fb1591 - browser(webkit): fix webcontent startup crash on macos 11 (#4370)
fff36a79 - feat(firefox): roll Firefox to r1203 (#4365)
c522a0df - browser(firefox): force always active docshell (#4363)
49e4d9a3 - browser(webkit): force rebuild with new redistributable dlls (#4364)
354482db - feat(firefox): bump to 1202 (#4362)
040f9b04 - browser(webkit): copy MS VC++ redistributable libs from VS installation (#4360)
5faf6f9e - feat(firefox): switch to use pipe instead of websocket (#3279)
aafcf932 - browser(firefox): bundle VS C++ redistributable dlls (#4359)
bc20bfd4 - browser(webkit): disable cache compiled sandbox (#4357)
c3843130 - feat(fill): allow filling based on the label selector (#4342)
5d39eae5 - devops: actually export secrets into webkit building workflow (#4354)
db8332b8 - devops: checkout, build, and upload webkit-mac-11 (#4353)
b94a7c0e - devops: speedup initial browser checkout (#4352)
bba8c98c - devops: try building webkit on gha (#4351)
4d8ef423 - devops: add instructions to build mac on BigSur (#4350)
3f37d850 - test(focus): add passing test for focusing more than one page (#4347)
e9421389 - fix: do not report errored pages after context closure (#4346)
4cb52144 - test(capabilities): add tests for webgl (#4343)
283bc2c7 - devops: ensure that embedder directory does not exist (#4340)
65009dc8 - feat(chromium): roll Chromium to r823944 (#4341)
14a82928 - feat(webkit): bump to 1378 (#4338)
12afb79e - test: unflake har tests (#4335)
5dc632b8 - chore: mirror Chromium 823944 to our cdn (#4339)
78b15113 - test: try to unflake screenshot tests (#4334)
5c1149f9 - test: try to unflake network idle tests (#4333)
890add98 - browser(webkit): do not hang on close when there is a dialog (#4332)
bc976507 - feat(firefox): roll Firefox to r1201 (#4331)
031f0bf5 - browser(webkit): fix mac build failure caused by touch events (#4330)
c6b4263e - browser(webkit): fix timezone overrides after last roll (#4329)
799604c0 - browser(firefox): roll Firefox to beta @ Nov, 3 (#4327)
eae3d93a - browser(webkit): fix proxy ignore pattern set on context level (#4328)
0a9fdc47 - browser(webkit): roll to 11-03 (#4325)
d57b4396 - fix(har): support har in persistent context (#4322)
924cc989 - feat(text selector): normalize spaces in lax mode (#4312)
8fed0b33 - feat(firefox): roll Firefox to r1200 (#4316)
1c39689d - api(videos): introduce a single recordVideo option bag (#4309)
46e124a9 - fix(api.json): use separate maps for methods and events (#4310)
51f8f23c - devops(flakiness): collect more commit information (#4315)
e3b12b0a - browser(firefox): fix closing browser contexts with beforeunload (#4314)
3d3ce135 - test: co-locate beforeunload tests (#4313)
2b495c97 - browser(firefox): fix SimpleChannel to await initialization (#4311)
f80f8154 - feat(chromium): bump to 823078 (#4308)
ac8ab1e1 - feat(websocket): add WebSocket.waitForEvent and isClosed (#4301)
c446bf62 - chore: cleanup some har code (#4306)
d117d0bb - feat(scopes): make page a scope (#4300)
12552890 - browser(chromium): roll to 823078 (#4307)
9c80cbdf - fix(docs): small docs changes for new apis (#4305)
94cb7c9f - feat(webkit): bump to 1373 (#4299)
7ef1533c - browser(webkit): one more mac build fix after last roll (#4298)
3577e637 - browser(webkit): mac build fix after last roll (#4296)
5a9ba55e - test: remove stale describe
c9fa8c08 - fix(test): unflake web socket test on firefox
5e50fe3d - browser(webkit): roll to 10-30 (#4294)
7fbbd182 - feat(firefox): support WebSockets on Firefox (#4289)
333916a8 - infra: bump to next version on trunk at a branch point (#4288)
18c3efe7 - browser(firefox): instrument websockets (#4287)
914f6372 - feat(proxy): enable per-context http proxy (#4280)
ff7d6a23 - feat(firefox): roll Firefox to r1197 (#4278)
aee9068d - test: mark flake headful chromium test as fixme (#4276)
f384a864 - test(har): uncomment some raw header tests (#4273)
efdb1547 - test: roll folio to 0.3.16 (#4275)
c5d3490b - browser(firefox): roll firefox to beta Oct, 28 (#4274)
7bedbb2d - feat(browser): roll WebKit to r1370 (#4257)
ece84ecc - fix(protocol): annotate file buffer as binary (#4272)
05278b86 - chore: remove committed types.d.ts - we are still generating it at build time (#4271)
41d514df - browser(webkit): disable gamepad on GTK (#4264)
6cafdc5a - infra: fix the headful bit on the bots (#4261)
05fd5727 - docs(api): remove * from permissions (#4260)
0b8c33ee - fix(ECONRESET): fix it once and for all (#4258)
dcbdb4a6 - test: fixed executable path test if ran in Docker (#4219)
1ef090c3 - fix(screenshot): prioritize passed type over the extension mime (#4251)
e62f27ac - chore: eliminate dead code (#4253)
aa219c65 - chore: roll folio to v0.3.15 (#4252)
be842847 - feat(websocket): implement Web Sockets for Chromium & WebKit (#4234)
00d6313f - browser(webkit): report raw request headers from didReceiveResponse (#4250)
b08d3dc9 - devops: always ensure linux deps when building webkit (#4249)
39637a4a - browser(webkit): build fix (#4247)
163cf1be - devops: collect test reports for all bots (#4246)
1feb0410 - browser(webkit): fix mac build after last roll (#4245)
c1a64eee - browser(webkit): serialize set-cookie \n-separated (#4243)
86e1e3f3 - devops: collect host os name and version (#4244)
7fc4b797 - feat(har): allow saving har for context (#4214)
d5fbe3a6 - devops: start uploading test reports to flakiness dashboard (#4239)
4b2a29e2 - browser(webkit): roll to 10-26 (#4241)
ccf68ec2 - chore: roll folio to 0.3.14 (#4240)
f5fbea94 - feat(debug): allow using timeout for rafs for throttling debugging
0337928a - fix(env): respect =true/false as env values for boolean flags (#4228)
ba794935 - chore: roll folio to 0.3.13 (#4215)
14f069ea - test(timing): relax mac/webkit expectations (#4217)
b3b46db5 - test(firefox): add a failing slow test (#4216)
ea910a4c - fix: update getFromEnv logic to validate that value is undefined (instead of falsey) before redefining it (#4226)
c97af3ee - fix(listeners): avoid "too many listeners" problem safely (#4223)
50a6ba7f - feat: bump webkit version to include screencast fixes (#4200)
c4fbc643 - Revert "fix(listeners): avoid "too many listeners" problem (#3931)" (#4222)
8f3c0d54 - fix(docker): add pwuser to Docker focal image (#4201)
72320275 - fix(headers): report raw request headers on Chromium (#4207)
8a42cdad - feat(timing): introduce resource timing (#4204)
bed304b1 - doc: update playwright-sharp link (#4202)
437fe178 - browser(firefox): expose resource timing info (#4205)
7d28dfdb - feat(firefox): roll Firefox to r1194 (#4183)
06cafff3 - feat(winldd): upload r1003 build (#4199)
45bb984c - test: skip 'should play video' on macOS Big Sur (#4198)
920ea85b - fix(winldd): make linker set checksum to make antiviruses happy (#4197)
092c9905 - browser(firefox): fix screencast timescale precision (#4196)
54e05ac8 - browser(webkit): fix screencast timescale precision (#4195)
3cceb14e - test(beforeunload): add failing beforeunload test (#4188)
7433ae27 - test: follow up to an encoding test (#4187)
7f76d44f - test: add a test for page.close w/ dialogs (#4184)
5e7eb7a3 - test(encoding): add a test for main resource raw body (#4186)
efac7436 - test(proxy): add a test for a second page against same proxy (#4185)
9c160f2c - feat(webkit): bump to 1363 (#4178)
5d997ed2 - fix(video): make video path available in persistent profiles (#4182)
bf491f12 - browser(webkit): fix pointer media query on windows (#4176)
92dda698 - feat: tap (#4097)
ebf207b7 - chore: add support for macOS Big Sur (11.0) (#4149)
92cde6cd - browser(webkit): roll to 10-19 (#4177)
86ef956b - feat(webkit): bump to 1357 (#4154)
347dd240 - browser(webkit): fix pointer media query on mac (#4155)
4f7d65fe - browser(firefox): report pageerrors without stack properties (#4166)
ef3d3ca5 - doc(overrides): remove "one of" that was misleading (#4168)
7103887b - add type for selector engine (#4174)
bbdba42d - chore(screencast): respect i/o backpressure when writing into ffmpeg (#4164)
26442c56 - browser(webkit): fix the datastore leak (#4163)
305d209e - browser(firefox): always send focus events (#4150)
97cb51f3 - browser(webkit): fix windows compilation after last roll (#4162)
6fb6929e - browser(webkit): roll to 10-15 (#4161)
fec37adf - test: use custom header when testing header removal (#4157)
8f8bebb6 - browser(firefox): roll Firefox to tip-of-tree Oct, 12 (#4158)
7e6f2af6 - test: disable failing test "should be able to remove headers" (#4152)
a61d07a8 - browser(webkit): report correct pointer type to css (#3936)
180aa011 - test: make "remove header" test actually test be havior (#4092)
3c32c168 - browser(firefox): use 16-byte long uid instead of ordinal as screencast id (#4147)
e9f5477d - fix(screencast): await for the first video frame on Chromium (#4145)
46a49d08 - fix(screencast): bump chromium video quality (#4146)
bb981fc0 - fix(screencast): correctly process videos with 1 frame (#4144)
25cb649e - docs: fix Video.path() type (#4141)
a169cb63 - browser(webkit): fix mac compilation errors (#4139)
c7b23599 - feat(firefox): roll to r1190 (#4133)
8c6a2e19 - browser(webkit): Input.dispatchTapEvent (#4102)
381f49a0 - chore: roll folio to 0.3.11 (#4130)
5a768566 - api(video): restore the missing video path accessor (#4132)
9daedaca - chore: roll test fixtures, replace trace w/ video (#4129)
a4474f67 - browser(firefox): Page.dispatchTapEvent (#4101)
5804131c - chore: bump folio to 0.3.9, use fixture timeout (#4118)
71c444c5 - browser(webkit): revert changes to WebAutomationSession.h (#4128)
d6240a34 - docs(showcase): remove codex from users
331bb818 - docs: add note about videos saving on context closure (#4126)
fdff5a15 - feat(webkit): bump to 1353 (#4119)
58285f61 - browser(firefox): await browser initialization when closing browser (#4121)
8ad34047 - fix(test): update path for screenshots on failure (#4120)
Highlights
- Chromium 88.0.4287.0
- Mozilla Firefox 82.0b9
- WebKit 14.0
Bug fixes:
- #4148 - [BUG] browserContext.close takes too long when recording videos
- #4218 - [BUG] Playwright-chromium (>1.5.0) does not exit properly (hangs) when started in docker
- #4224 - [BUG] Don't disable nodes maxListeners warning on
- #4225 - [BUG] Cannot override
.npmrcenv varPLAYWRIGHT_SKIP_BROWSER_DOWNLOADfrom true to false - #4238 - [BUG] A png screenshot is produced when a jpeg/jpg screenshot is requested
Issues Closed (5)
#4148 - [BUG] browserContext.close takes too long when recording videos
#4218 - [BUG] Playwright-chromium (>1.5.0) does not exit properly (hangs) when started in docker
#4224 - [BUG] Don't disable nodes maxListeners warning on
#4225 - [BUG] Cannot override .npmrc env var PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD from true to false
#4238 - [BUG] A png screenshot is produced when a jpeg/jpg screenshot is requested
Commits (7)
0f8eccf1 - fix(ECONRESET): fix it once and for all (#4258)
e50d0a27 - fix(screenshot): prioritize passed type over the extension mime (#4251)
3d4e50d6 - fix(env): respect =true/false as env values for boolean flags (#4228)
1df6b92b - fix: update getFromEnv logic to validate that value is undefined (instead of falsey) before redefining it (#4226)
3188d6ec - fix(listeners): avoid "too many listeners" problem safely (#4223)
3201c238 - Revert "fix(listeners): avoid "too many listeners" problem (#3931)" (#4222)
4975cea1 - chore(screencast): respect i/o backpressure when writing into ffmpeg (#4164)
Highlights
New page.video() method to retrieve on-going page video recording.
Browser Versions
- Chromium 88.0.4287.0
- Mozilla Firefox 82.0b9
- WebKit 14.0
New APIs
Issues Closed (2)
#4142 - [BUG] Video Recording Chromium compression is too high
Commits (6)
0b7976a2 - fix(screencast): await for the first video frame on Chromium (#4145) 2cd86045 - fix(screencast): bump chromium video quality (#4146) 5dce2482 - fix(screencast): correctly process videos with 1 frame (#4144) 85ae3ccc - chore: mark v1.5.1 e5743d24 - docs: fix Video.path() type (#4141) 618b50c5 - api(video): restore the missing video path accessor (#4132)
Highlights
- Video screencasts API is now stable: Use the
videosPathoption while creating browser contexts to record videos for all pages within the context. See examples. - Test runner is available in preview: To setup a cross-browser end-to-end testing suite with Playwright, check out playwright-test. Try it out, and tell us what you think!
Playwright CLI
- CLI codegen can now generate Python code. Run
npx playwright-cli codegen --target=pythonto try!
Breaking changes
- Chromium sandboxing is now opt-in. This is to simplify running Playwright tests in CI environments. Learn how to enable sandboxing.
- The Docker image adds
pwuseras an optional user for non-root user environments.
Browser Versions
- Chromium 88.0.4287.0
- Mozilla Firefox 82.0b9
- WebKit 14.0
New APIs
browser.newPage(),browser.newContext()andbrowserType.launchPersistentContext()now supportvideosPathandvideoSizeoption.- New
page.video()method. (v1.5.1) - New
Videoclass. (v1.5.1) - New
browserContext.browser()method. - Both
browserContext.exposeBinding()andpage.exposeBinding()now accepthandleoption to pass handles instead of serialized values.
Issues Closed (29)
#3046 - [BUG] Browser doesnt get installed on Windows Server
#3405 - [BUG] Attach multiple instance of playwright to browser server
#3617 - [Question] Protocol error (Network.getResponseBody): No resource with given identifier foundError
#3695 - [Question] Passing a DOM element to an exposed function
#3705 - [Question] What is the best way to use "goto" in an application that uses long-polling?
#3711 - [Question] Multithreading with playwright
#3727 - [Feature] Get timeout on Page level
#3897 - [BUG] Can't click button in Chromium headless mode
#3905 - [BUG] subtree intercepts pointer events
#3916 - [Question] Video recording: capturing popups
#3918 - [Question]page.frame not referencing url in Chrome Dev Tools for Power BI report
#3920 - [Feature] coverage per frame
#3939 - [BUG] browserContext.newPage() sometimes hangs indefinitely
#3962 - [Question] Why does chromiumBrowserContext.newCDPSession require a page?
#3967 - [BUG] Not working with macos 10.13.6 (17G2208)
#3970 - [Question] Recommendation on Node.js program to work with playwright to access SQL server or Databricks to query to get data values
#3971 - [BUG] Firefox Timeout while waiting for popup
#3976 - [Question] Wait for XHR triggered by action
#3978 - [BUG] typing files and real code are different
#3987 - [Question] Using firefox as browser on test throws: Response body is unavailable for redirect responses
#3991 - [BUG] browserType.connect() promise never resolved after version 1.4.x
#3995 - [Feature] Roll firefox to current beta
#3996 - Review the new video and trace APIs
#3997 - [BUG] Cannot launch compiled electron application
#4013 - [BUG] - I can not access to playwright.dev
#4020 - [Question] When does page.click resolve in the DOM loading lifecycle?
#4022 - Browser launch argument for firefox.
#4033 - [BUG] Failed to launch chromium because executable doesn't exist
#4043 - [Question] Cucumber/Gherkin support for Playwright
Commits (167)
3350db2d - chore: nit test fixes (#4114) c2adc98c - chore: roll folio to 0.3.8 (#4113) 46b14bc7 - chore: roll folio to 0.3.6 (#4110) 80ed4070 - test: add a failing test for the issue 4038 (#4111) 5648eac0 - browser(webkit): fix mac build after last roll (#4108) 3f68713f - chore: locate binaries in case of cli deployment (#4107) db744e28 - browser(webkit): roll to 10/08 (#4106) b85ba622 - browser(webkit): actually fix mac compilation (#4105) 9801be64 - feat(chromium): roll to 815036 (#4099) 80773fa9 - fix: disable chromium sandbox by default (#4090) d6a198a9 - browser(webkit): speculative build fix for Mac (#4104) 8252eb74 - browser(webkit): roll to 09-27 (#4103) c078e98b - chore: update bin/PrintDeps.exe to r1002 (#4096) e2f77455 - browser(chromium): roll to 815036 (#4098) ebb35637 - chore: update package-lock.json e6a1a1c1 - fix(docker): add again pwuser (#3899) b4ad6e79 - devops: playwwright-core installation should not touch browser registry (#4089) ff295d10 - fix(windows): fix dependencies check on windows (#4076) 08024c82 - feat(firefox): roll to r1188 (#4091) 6a7d2446 - devops: fix firefox build (#4088) 1ccce09a - browser(firefox): roll Firefox to beta Oct 7, 2020 (#4087) 09906949 - docs(page): clarify page.close({runBeforeUnload: true}) behavior (#4086) 6bb212ce - feat(firefox): roll Firefox to r1186 (#4085) fd769ec9 - chore: remove test dependency on pw itself (#4078) 6beef551 - browser(firefox): wait for search and addon manager initialization (#4081) 3b423286 - browser(firefox): a different way to emit 'load' event (#4080) aafe5dac - docs: add videos to verification doc (#4071) ad58e492 - Revert "feat(firefox): migrate to the pipe channel (#4068)" (#4073) 1fe3c783 - test: roll test runner 0.9.22 (#4072) ce7aa7a6 - feat(firefox): migrate to the pipe channel (#4068) e6869edf - browser(firefox): fix typo in dispatcher teardown (#4069) 5d129152 - feat(firefox): roll to r1182 (#4067) 4ab66a4f - browser(firefox): follow-up with assorted simplifications (#4066) c8a64b88 - browser(firefox): enable document channel (#4065) e403fd39 - test: update fixtures to new syntax (#4063) 0db09f8e - test: roll test runner to 0.9.20 (#4062) 2df64252 - chore(typo): resolve typo in src/progress.ts (#4041) 857abcfc - browser(firefox): make pipe work on Windows (#4058) a7beaf65 - browser(chromium): roll to 813607 (#4052) d31cbc21 - fix(video): wait for videos when closing persistent context (#4040) fbe0fb29 - fix(api.json): do not copy documentation from base class members (#4048) e214f795 - feat(video): support videos in remote browser (#4042) 133de10a - browser(firefox): start screencast in existing pages upon setScreencastOptions (#4045) 1f16ce26 - test: remove failing expectations from a passing test (#4036) ec36eef3 - feat(firefox): roll Firefox to r1179 (#4044) 2c11b105 - browser(firefox): remove multisession logic (#4039) 5e42029f - api: allow exposeBinding to pass handles (#4030) c2171218 - test: add a test for request interception with redirects (#3994) 81c1daed - test: roll test runner 0.9.17 (#4035) 318ab281 - chore: include api.json in NPM package (#4034) 4a77363a - api: update videos api, hide tracing (#4015) 920cc7c8 - test: run crash tests with chromium wire (#4026) b74a6b78 - browser(firefox): do not double-attach session to the same target (#4027) f885d07c - fix(close): fix a race during context.close and page.close (#4018) b9dcfb99 - test: minor fixes (#4024) 13d48da8 - test: record trace/videos on retries (#4009) 97435844 - browser(firefox): move user agent emulation to browser side (#4016) ab2714ed - test: unflake click-timeout-4 (#4012) ccc827cd - test: add a test for screen.avail{Width,Height} emulation (#4011) e2808397 - browser(firefox): simplify PageTarget lifecycle (#4014) 24bc0e39 - browser(firefox): remove the hack around setting viewport size (#4010) a20c0e0a - roll(firefox): roll Firefox to r1174 (#4005) d658b687 - chore: refactor screencast tests (#4007) 20b83ee0 - fix(electron): do not use --require to throttle startup (#4006) 6dccd273 - fix(wire): fix the wire mode (#4008) 7ccdc517 - chore: include api.json into the Playwright package (#4003) c30b894f - chore: add missing image test expectation (#4004) de1e63df - test: roll test runner 0.9.16 (#3998) 2631e1a8 - browser(firefox): use browsingContextID for frame IDs (#3999) b3497b33 - fix(actions): wait for some time before retrying the action (#4001) 109688a0 - chore: split playwright.fixtures into files (6) (#3988) 423485e0 - chore: split playwright.fixtures into files (5) (#3986) 0ee9050f - chore: split playwright.fixtures into files (4) (#3985) cef27d62 - chore: split playwright.fixtures into files (3) (#3984) 76be9540 - chore: split playwright.fixtures into files (2) (#3983) 5b9f489e - chore: split playwright.fixtures into files (#3982) 59daaab1 - chore: roll @playwright/test-runner to 0.9.14 (#3981) 61020528 - Revert "chore: don't hold sourcemap reference in prod build (#3959)" (#3979) 970b011c - chore: roll @playwright/test to 0.9.6 (#3977) 49bcf6ef - chore: roll test runner to 0.9.1 (#3972) 989709b1 - chore: delete unused screencast hacks (#3964) 76d08cef - chore(types): add return type to advancePosition (#3961) a42cd4b9 - test: mark screencast tests as flaky until ffmpeg migation (#3968) 49779d56 - Update showcase.md (#3969) 1bb44e4c - test: roll test runner to 0.3.29 (#3966) fe41bbd3 - test: enable videos on tracing bots (#3930) e15ac44e - test: roll test runner to 0.3.25 (#3965) 6d5ab534 - chore: don't hold sourcemap reference in prod build (#3959) 967f3b75 - devops(docker): push focal images to CR (#3950) 4aaf3b75 - test: roll test runner to 0.3.20 (#3963) 1d21c1e4 - feat(webkit): bump to 1347 (#3955) 18809b39 - fix(listeners): avoid "too many listeners" problem (#3931) 2d1cabdd - test: roll test runner to 0.3.18 (#3949) 0e76316f - fix(close): fix the browser.close race (#3956) c4a27325 - browser(webkit): another mac fix (#3948) ce51af05 - brower(webkit): add missing override markers (#3947) 7925a511 - feat: support concurrent installation of browsers (#3929) 2fbe7671 - browser(webkit): roll to 09/21 (#3945) f1016c1f - fix(executablePath): throw unexpected platform error upon call (#3943) cd0a123e - feat(chromium): roll to v808777 (#3942) ec262653 - feat(ffmpeg): roll FFMPEG to r1003 (#3944) 2693c162 - devops(ffmpeg): compile zlib dependency that is needed for ffmpeg (#3940) 731560cc - browser(chromium): roll to v808777 (#3941) ee7c6230 - devops: compile ffmpeg with support of video splitting (#3938) cdc6432c - chore: roll winldd to r1001 (#3928) becdccdf - devops(docker): added Dockerfile for Ubuntu 20 focal (#3891) 75edc615 - feat(emulation): emulate a mouse pointer in headless chrome (#3922) c2d9af86 - test: roll test runner to 0.3.17 (#3927) df777344 - api(video): simplify video api (#3924) 4e2d75d9 - test: migrate some helpers to fixtures, use testOutputDir (#3926) 9de39b1e - devops: hardcode build number in winldd executable (#3923) 0ade6af6 - api(trace): introduce artifacts options (#3914) bff9fb21 - devops: fix winldd build 6af0aa67 - devops: notify when winldd is built fda31dfc - devops: build winldd on buildbots (#3917) 53ae8057 - chore: fixed devcontainer Docker usage (#3898) 01a40606 - chore: move action instrumentation per-context (#3908) d4d0239a - test: roll test runner to 0.3.14 (#3913) 10e725b1 - test: roll test runner to 0.3.13 (#3911) 96629304 - test: make platform a parameter (#3910) dc06f0a7 - chore: introduce evaluateInUtility private api (#3907) 36f2420b - chore(trace): remove dependency on handle._previewPromise (#3906) 73db4a45 - docs(api): fix typo 823a7a51 - test: roll test runner to 0.3.12 (#3895) 55075531 - fix(screencast): repeat previous frame instead of current (#3890) 592bae1c - feat(trace): record goto, setContent, goBack, goForward and reload (#3883) 8bc09af4 - fix(firefox): imply default ports for proxy (#3850) f758a09d - test: roll test runner to 0.3.11 (#3885) 430f2bed - devops: stop relying on ubuntu stock ffmpeg (#3882) 459d857b - feat(screencast): add saveAs and createReadableStream (#3879) e4e3f823 - devops: fix ffmpeg linux build (#3884) 2f0d2029 - chore: refactor goBack/goForward/reload (#3859) 2a66f8a0 - devops: build ffmpeg for linux (#3880) 1eb282d1 - test(screencast): save video in test-results (#3876) 0a243c67 - fix(waitTask): remove rerunnable tasks from the context data upon success/failure (#3875) 7ab0c10d - fix(launchServer): do not throw when 'port' option is present (#3877) 01198f8e - fix($$): use utility context when possible (#3870) e5c6b19c - fix(launcher): check for ffmpeg only when starting screencast (#3874) c20cbae5 - chore: remove trace viewer (#3869) dfbd1cea - docs(languages): added Go reference (#3867) 1421ed99 - test: fixed Node.js deprecation warning (#3864) d7f38121 - tests: fixed OS-locale specific failing test (#3863) 1d8d89dc - chore: add devcontainer for GitHub Codespaces (#3862) beceeaf6 - feat(browserContext): add BrowserContext.browser() (#3849) 5314512c - chore: inline page._runAbortableTask (#3861) 02275f24 - test(screencast): use public API for pixel tests (#3858) 40323aa9 - fix(screencast): use viewport as default size (#3844) c4adeb66 - fix(snapshot): do not let a single frame fail the whole snapshot (#3857) c175dad2 - chore: fix compatibility to the domain module (#3851) b8e90a55 - browser(webkit): duplicate each frame duration times (#3856) 263aa06f - feat(trace): trace more actions (#3853) 75e847a6 - docs(pom.md): fix typo in example function name (#3855) 16be3574 - feat(trace): trace page open/close events (#3852) f94df318 - chore: roll test runner to 0.3.9 (#3847) 38ed8de2 - feat(tracing): trace actions (#3825) a5970047 - chore: roll test runner to 0.3.5 (#3832) 9e41518c - feat(rpc): allow sending metadata with rpc calls (#3836) d2771ebf - test(screencast): always use chromium to replay the video (#3841) 2f2ca8f7 - feat(firefox): bump to 1173 (#3843) 1e600cb9 - fix(windows): show details about missing dependencies (#3839) 3495842e - docs(screencast): add a snippet for _videostarted (#3842) 46f91517 - fix(rpc): ensure better error messages when rpc misbehaves (#3838) ed3b00ef - chore: merge BrowserType and BrowserTypeBase, remove logName (#3837) bf9c4a35 - fix(snapshot): properly save textarea content (#3835) 45542a53 - docs: fix table-of-contents generation (#3840) 25b199b4 - browser(firefox): fix screencast start event for popups (#3834)
Highlights
This patch release includes fix for the following bugs:
- #3919 - [BUG] MacOS 10.13 Webkit error
- #3935 - [BUG] browserType.connect() throws on executablePath errors
Browser Versions
- Chromium 86.0.4238.0
- Mozilla Firefox 80.0b8
- WebKit 14.0
Issues Closed (2)
#3919 - [BUG] MacOS 10.13 Webkit error #3935 - [BUG] browserType.connect() throws on executablePath errors
Commits (2)
747e7362 - chore: mark v1.4.2 b05c098f - cherrypick(release-1.4): throw unexpected platform error upon call (#3946)
Highlights
This patch release includes fixes for the following bugs:
- #3845 - [BUG] ffmpeg dependency check fails on Linux
- #3846 - [BUG] ffmpeg dependency check breaks on Linux even if screencast is not used
- #3848 - [BUG] TypeError: domain.enter is not a function/ Browser.close() Promise does not resolve when "domain" package is used
- #3872 - [REGRESSION]: Calling
browserType.launchServerstopped working in 1.4.0
Browser Versions
- Chromium 86.0.4238.0
- Mozilla Firefox 80.0b8
- WebKit 14.0
Issues Closed (4)
#3845 - [BUG] ffmpeg dependency check fails on Linux
#3846 - [BUG] ffmpeg dependency check breaks on Linux even if screencast is not used
#3848 - [BUG] TypeError: domain.enter is not a function/ Browser.close() Promise does not resolve when "domain" package is used
#3872 - [REGRESSION]: Calling browserType.launchServer stopped working in 1.4.0
Commits (6)
e79eada2 - chore: mark v1.4.1 2df39721 - fix(screencast): repeat previous frame instead of current (#3890) (#3904) bf97758c - cherrypick(release-1.4): stop relying on ubuntu stock ffmpeg (#3894) 8bc84ff3 - cherrypick(release-1.4): check for ffmpeg only when starting screencast (#3893) 8795d465 - cherrypick(release-1.4): do not throw when 'port' option is present (#3881) 64947f19 - cherrypick(release-1.4): fix compatibility to the domain module (#3878)
Highlights
🚀 playwright-cli is now public!
Playwright Command Line Interface can:
-
Open pages in Chromium, Firefox and WebKit (Safari) on all platforms
$ npx playwright-cli open wikipedia.org -
Record user interactions and generate Playwright scripts
$ npx playwright-cli codegen wikipedia.org- multi-page scenarios
- text-based selectors
- downloads, uploads
- many more!
-
Emulate devices, color schemes, geolocation, etc
$ npx playwright-cli --device="iPhone 11" open wikipedia.org -
Use DevTools console to inspect Playwright selectors
> playwright.inspect('text=Log in') -
Generate page screenshots and PDFs
$ npx playwright-cli screenshot --help
🎥 Record videos (experimental)
Record videos of your scripts, every page and popup is captured!
const fs = require('fs');
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({
_videosPath: __dirname // save videos here.
});
const context = await browser.newContext({
_recordVideos: { width: 1024, height: 768 }, // downscale
});
const page = await context.newPage();
const video = await page.waitForEvent('_videostarted');
await page.goto('https://github.com/microsoft/playwright');
// ... perform actions
await page.close();
fs.renameSync(await video.path(), 'video.webm');
await browser.close();
})();
☁ New Client / Server Wire protocol
In the last release, we introduced an internal protocol to support Playwright in the none-Node environments. It is already used in the Playwright for Python as well as in third party PlaywrightSharp and Playwright for Go implementations.
With v1.4, we are taking it one step further and migrate Node version of the library along with its client-server mode to be based on this new protocol. So if you are using browserType.connect against cloud services or internally, you need to make sure that the service is also updated to v1.4 before you can use it.
Browser Versions
- Chromium 86.0.4238.0
- Mozilla Firefox 80.0b8
- WebKit 14.0
New APIs
frame.page()elementHandle.waitForElementState(state[, options])elementHandle.waitForSelector(selector[, options])- experimental
_videosPathoption inbrowserType.launch(),browserType.launchPersistentContext()andbrowserType.launchServer(). - experimental
_recordVideosoption inbrowser.newContext(),browser.newPage()andbrowserType.launchPersistentContext() - experimental
page.on('_videostarted')
Breaking changes for Docker and CI users
rootuser is used in the default Docker image https://github.com/microsoft/playwright/commit/5f6441e6dfb5d5ff0795d0b4a9b31c6b7d44d16dffmpegdependency is required when running Chromium
Issues Closed (73)
#632 - [BUG] setInputFiles does fetch that fails due to CSP #1396 - [Question] Performance issues on Firefox? #1400 - [Feature] debugging client script #1568 - [BUG] Playwright cannot talk to Chromium on Heroku #1605 - Parrallel execution[Question] #1626 - [Feature] Playwright Recorder #1654 - [Feature] Command events/hooks #1935 - [BUG] cant create webkit context #2053 - How to use playwrite to log in as various users in another ntlm domain? #2054 - [Feature] page.waitForActionable() #2086 - [BUG] Firefox on Appveyor seems flaky #2124 - [Feature] https://playwright.dev/ should have a link to GitHub #2236 - [Feature] Ability to test printing #2321 - [BUG] Google Cloud Function error (deploy) #2363 - [Feature] Pass timeout in the BrowserContextOptions for newContext #2366 - [Feature] Allow PDF to be returned as a stream. #2450 - [BUG] Error: NS_ERROR_CONNECTION_REFUSED while navigating to http://localhost:8000 #2453 - [BUG] Text selector not found in open shadow root #2526 - [BUG]Wait for navigation with url and wait until network idle fail to respond and time out #2556 - [Question] page.evaluate() issues with xpath #2559 - [Question] Running WebKit GTK on Ubuntu 20.04 #2573 - [BUG] Can't click 2FA duo button. #2587 - How can I call an external function in class inside page.evaluateHandle(...) context #2603 - How to make page bring to front #2616 - [REGRESSION]: Very slow on v1.1 #2623 - [BUG] Firefox does not launch with executablePath set to Firefox inside Applications folder #2657 - [Feature] Consider adding Browser Server to the Core Concepts docs #2660 - [BUG] Cannot find a MiniBrowser.app in neither location #2692 - What is the proper way of handling tests with more that one tab? #2704 - Error: Protocol error (Overlay.highlightNode): Could not find object with given id #2707 - [Question] Unable to load website on Webkit #2718 - [Feature] Simulate mouse movements so you can visually see what is being clicked during a test run #2726 - [Question] Allow cross-site tracking or change your browser #2728 - Is it possible to launch playwright browser "headless:false" in a docker container. #2821 - [Question] Wait for response.ok() #2828 - [BUG] - Multiple calls to launchPersistentContext fail in non-headless mode #2833 - [Question] Is it possible to launch contexts with different proxies? #2846 - [BUG] Disconnect\Reconnect not working in firefox[when using jest-playwright-preset] #2853 - Do Playwright stores a "dev_profile" file?[Question] #2859 - Playwright Firefox browser instances not closing after closing browser context[BUG] #2878 - [REGRESSION]: context.pages() now works differently #2882 - [BUG] Cannot use https or socks5 proxies #2889 - [Feature]release train order #2905 - [BUG] Getting chromium as undefined with playwright-core #2930 - [BUG] page.screenshot doesn't create folder if needed #2942 - [Feature] Switch between tabs in same context #2971 - [Internal] Jest runner limitations / adoption blockers #3001 - [Internal] for the jest portion of the tests, we should handle sigint. #3047 - [BUG] miss export type BrowserTypeConnectOptions #3083 - [Internal] browser roll script should update docs #3084 - [Question] "Cannot read property 'launch' of undefined" #3094 - [Feature] Add list of contributions to release notes #3108 - [Feature] Add yarn to playwright:{bionic:dev} Docker images #3109 - [Question] Add PID to pw logs #3140 - [Feature]make automation life more good! #3142 - [BUG] #3144 - [Question] clarify in docs what click timeout option waits for #3146 - [Question] Deno Integration? #3151 - [BUG] Page.goto() flakiness - seeing TimeoutError sometimes #3192 - [Question] Check if element is stable #3215 - [Feature] Roll Firefox to current beta #3230 - [BUG] FF - launchPersistentContext #3231 - [Question] page.keyboard.press('Enter') not working on Firefox #3232 - [Question] Chorimium is lauched but unable to navigate to url as it just says about:blank #3233 - [BUG] IP:PORT Proxy doesnt work on playwright-firefox #3258 - [Feature] add a webkit/firefox auto-roll bots #3259 - [Feature] serve Chromium from our CDN #3262 - [Question] Channels download.delete and download.createReadStream #3269 - [Question] Mouse smooth scroll #3281 - [BUG] Docs have wrong evaluation argument type #3293 - [Feature] take implicit xpath if selector starts with .. (dot dot) #3310 - [BUG] Website throws exception before rendering #3315 - [BUG] Fails on start - WS url is undefined
Commits (384)
d64d0025 - browser(firefox): fix screencast in first window on mac headful (#3826)
559f30d5 - chore: roll ffmpeg binaries to r1001 (#3824)
3124a1b6 - devops: fine-tune ffmpeg compilation (#3823)
4240e1df - docs: add page on language bindings (#3819)
777689a9 - docs(intro): add cli to getting started (#3821)
29b80988 - devops: fix running docker when executed from cronjob (#3822)
ee98bd0a - docs(selectors): update structure and add best practices (#3817)
245d1001 - devops: produce ffmpeg builds on bots (#3820)
8a339be2 - browser(firefox): roll Firefox to r1171 (#3818)
ff0d6971 - docs(docker): add note how to use chromium sandbox (#3779)
86874006 - refactor: consolidate ffmpeg-related files in third_party/ffmpeg (#3815)
6c832660 - browser(firefox): force firefox devtools to open in a separate window (#3816)
dee73925 - feat(webkit): bump to 1343 (#3814)
5364c6ac - browser(firefox): fix automatic http->https redirect (#3812)
3c69f2a1 - tes(types): use @ts-expect-error in tests where we check for errors (#3794)
e8cf8957 - feat(chromium): roll Chromium to r799411 (#3811)
1791be6d - fix(input): send keypress event for enter key in chromium (#3796)
b28ed214 - chore: remove highlight from PWDEBUG in favor of devtools one (#3800)
355ea73a - feat: actually bundle FFMPEG binaries with NPM packages (#3804)
e9f48438 - chore: use non-fractional revision for chromium revision (#3809)
b8d7f398 - browser(chromium): mirror Chromium r799411 to Azure (#3808)
638c77c8 - devops: stop bundling FFMPEG with Chromium (#3806)
af58c8ac - fix(screencast): ensure that _videostarted is fired after newPage (#3807)
a5a56365 - browser(webkit): fix basic screencast for accelerated compositing on win (#3803)
8f81868b - fix(screencast): tune ffmpeg params for better quality (#3798)
143adc16 - refactor: bake ffmpeg into npm instead of CDN (#3799)
1d4601b4 - browser(webkit): fix screencast scale on Mac headful (#3797)
658b34e3 - fix(lint): fix doclint and preprocessor tests (#3793)
74f1a64e - fix(debug): do not generate source urls for anonymous scripts (#3787)
c83b2da5 - chore: revert isDevMode into isUnderTest (#3785)
fea3ceb3 - chore: expose injectedScript.extend (#3784)
d6cd0224 - test(screencast): mark win/webkit ac as failing (#3783)
f8e1fd7e - test: add a failing test for page.press (#3780)
66985fc5 - feat(screencast): add expreimental public API on context (#3766)
f6aab9e5 - chore: fix minimum node version (#3777)
675ce004 - chore: introduce "instrumentation" that is used for debug and trace (#3775)
25fe1157 - docs: update why-playwright.md (#3761)
bd7cdc34 - feat(webkit): bump to 1341 (#3774)
bcb4944f - devops: auto-detect platform in //browser_patches/chromium/build.sh (#3772)
bbe2233f - feat(chromium): use bundled ffmpeg instead of npm deps (#3771)
f09145e5 - chore: fix typo in build script
3cb3c650 - chore: build Chromium version with ffmpeg (#3770)
a755d100 - devops: encode build number together with Chromium revision (#3769)
dfc0006b - devops: bundle ffmpeg with chromium (#3767)
fa8de996 - Revert "devops: revision Chromium repackaged builds separately (#3698)" (#3763)
b6557b9f - browser(webkit): remove incognito emoji from title (#3765)
fc7b065b - browser(webkit): revert #3360 as it broke many sites (#3764)
921c8d8d - docs: add help section (#3741)
52fd88b1 - fix(screencast): always send at least one frame in wpe (#3760)
190d16da - feat: add browser type to device descriptors (#3731)
8b9be6bb - devops: fix publishing of @next packages to NPM (#3759)
91671f54 - chore: remove unused dev dependencies (#3758)
5364e328 - devops: bake commit SHA inside npm package (#3754)
c1903103 - fix(setInputFiles): make it work with CSP enabled (#3756)
f232f34d - test: create a page in fixture tests to exercise browser processes (#3745)
d3c67779 - browser(webkit): force repaint on screencast start (#3757)
8df1fe47 - test: explicitly require expect (#3755)
7ad5bd90 - test: roll test-runner to 0.2.9 (#3752)
84a0066c - devops: align release publishing of docker image with dev releases (#3725)
42a64048 - test: roll test-runner to 0.2.9 (#3753)
175fc527 - test: roll test-runner to 0.2.8 (#3748)
c5c3c75b - feat(webkit): bump to 1338 (#3751)
6b085a34 - browser(webkit): do not clear existing contexts from map when exiting (#3750)
7671e8e8 - devops: remove warnings when running under root without sandbox (#3749)
2d46cd81 - feat(electron): automatically disable electron sandbox when run as root (#3747)
0976732e - fix(screencast): remove white padding in headless chromium (#3746)
de547d7d - fix(connect): make selectors.register work in connected browser (#3664)
5c3bf5bf - test: add tests for selectors matching root behavior (#3744)
469541a0 - test(screencast): try to unflake tests (#3742)
5f6441e6 - chore(docker): use root user in Docker image (#3739)
b7f6a98d - devops: use a helper script to tag and push docker images (#3737)
a588840d - test(screencast): add auto scale test (#3733)
be5eba0c - fix(rpc): improve internal error for unexpected rpc message (#3734)
df122646 - devops: use ubuntu 20.04 to build & publish docker releases (#3736)
216db2c9 - devops: use microsoft/playwright-github-action@v1 everywhere (#3735)
1e64efca - feat(screencast): autoscale to fit requested size (#3730)
9d999ae1 - devops: push all tags to docker registry (#3732)
a4563a85 - fix(snapshot): remove integrity checksum for css (#3729)
a5881252 - test: call setDevMode in wire tests (#3678)
fc296235 - feat(screencast): use system ffmpeg on linux (#3724)
65901305 - test: roll test runner to 0.2.5 (#3723)
47ea1e07 - devops: another attempt to figure out docker publishing (#3721)
ee1becd8 - browser(firefox): autoscale screencast to fit frame (#3720)
1de4f7fa - devops: trigger docker devrelease when github action itself changes (#3719)
2dc57c5b - chore: fix yaml syntax in the github action (#3718)
1f93fb72 - chore: fix devrelease workflow names (#3717)
d71d2f57 - devops: install ssh in the docker image (#3716)
f8408cb8 - fix(launcher): check libs required for playing h.264 (#3715)
76ab82fa - browser(webkit): prepend http:// to the schema-less URLs (#3713)
ba7093cb - devops: try to use azure/docker-login instead of manual login (#3714)
fad840d8 - browser(webkit): fit screencast to frame if no scale is specified (#3707)
ef5c87cc - devops: switch docker publishing to a bash script (#3704)
db9b8a00 - fix(screencast): dont throw from frameAck if target is closed (#3702)
1877c298 - devops: remove autoroll (#3684)
a17dd98c - feat(screencast): auto recording for new pages in chromium (#3701)
f23dbfb0 - test(screencast): more tests on Chromium, new seek impl (#3699)
fcc1680f - devops: revision Chromium repackaged builds separately (#3698)
8f37d78f - Add Applitools SDK to the showcase (#3694)
8ec55e1f - feat(screencast): use ffmpeg to produce webm in chromium (#3668)
3cc91093 - chore(testrunner): move out of the repo (#3687)
555a8d0d - fix(testrunner): include fixture teardown into timeout, add global timeout (#3685)
c47af2d4 - fix(testrunner): report unhandled rejection ones, allow retry (#3686)
abb50a79 - browser(firefox): fix request frame attribution (#3657)
6a93cb97 - fix(types): don't show types that we don't export (#3185)
4e5007ae - fix(rpc): nice error stacks when running tests (#3507)
c2cd9634 - chore: added envinfo to the bug issue template (#2237)
657cc9b6 - feat(test): use metafunc in describes (#3682)
fb6d1ad5 - docs(docker): add link to mcr status ui (#3679)
45e178f8 - fix: support IP:PORT short notation to specify proxy server (#3568)
97e4561e - feat(test): introduce metafunc for skip (#3676)
e5ff283a - fix(trace): only enable on separate tracing bots (#3677)
63a0e0c1 - chore: bump dev dependencies (#3659)
7b1fac90 - test: mark all crash tests as flaky on firefox win (#3675)
3d6051ad - test: mark "should work for webgl" as fixme on webkit linux (#3674)
90408aa4 - test: Remove "request interception" from oopif tests (#3671)
b34d9aba - feat(trace): experimental traces for our tests (#3567)
19f21b1b - browser(webkit): use webkit generate-bundle tool to generate the bundles (#3563)
4386cd4e - test: mark "headless should be able to read cookies written by headful" as flaky on firefox (#3673)
744af78d - feat(rpc): simplify browser name detection on the client side (#3670)
eec92630 - test: make some tests as flaky (#3672)
2edd6f28 - docs: introduce why-playwright.md (#3666)
e2057fb8 - chore(test): run eslint on tests (#3638)
6ffdd4df - feat(testrunner): allow unexpected passes (#3665)
5c0f9330 - test: always setUnderTest in index.js, rename to setDevMode (#3662)
7444de4b - docs: update navigation and loading page (#3655)
cfbec442 - feat(testrunner): allow annotating tests as flaky (#3663)
6a0f587f - fix(testrunner): report suite-level errors (#3661)
2b7d79d7 - fix(testrunner): fix windows bots (#3660)
efd45f8b - fix(testrunner): report tests as passed in the trial-run mode (#3654)
06154060 - feat(testrunner): support repeat-each (#3652)
3ea3cf03 - devops: add yarn and git in the docker container (#3651)
15ec87db - feat(testrunner): support --retries, flaky tests (#3649)
254238cd - enh: bake browser revisions and api into driver (#3514)
c96ea4b6 - chore: remove docker image size computation scripts (#3650)
5f9407a0 - feat(webkit): bump to 1334 (#3643)
1a5f22d3 - fix(test): import playwright types with import type (#3647)
a20bb949 - chore(testrunner): introduce test result, reuse it in ipc (#3644)
9e2e8706 - test: switch browserType.connect tests to use remoteServer (#3646)
8d7ec3ac - fix(downloads): make path/saveAs work when connected remotely (#3634)
a87614a2 - feat(test): shrink api to run only, rename pending to skipped (#3636)
9b50a6d2 - test: Fix Chromium JSCoverage reportAnonumousScripts test (#3641)
4249a11d - chore(types): upgrade to TypeScript 4.0.2 (#3637)
80cf7e9f - browser(webkit): do not crash when opening web inspector (#3631)
f9eeb298 - fix playwright being imported before toImpl could be registered (#3632)
a6b9922e - fix(testrunner): console.log in color (#3633)
5f86253a - docs: add more detail to waitForNavigation API method (#3635)
25381cfa - test: add some tests for remote connect (#3614)
db0fa073 - fix(screencast): replace ScreencastStopped with async path() (#3626)
1a37f8ba - browser(webkit): remove browserContextId from some events (#3628)
22b92466 - chore(context): unify browser context id handling (#3629)
a2a96198 - fix(devops): fix firefox protocol.ts location (#3630)
adc2a441 - infra: simplify test results collection (#3623)
17077fd9 - browser(firefox): introduce browser level screencastFinished event (#3625)
a0bd8def - browser(chromium): package r799610 (#3624)
a38564b7 - fix(screencast): replace ScreencastStopped event with async path() (#3612)
aaff8456 - test: collect stdout/stderr in tests (#3615)
0af3d8e2 - docs(showcases): added example for Heroku (#3414)
aeab0fa3 - docs(docker): add note about how to list all tags (#3596)
72b3147d - docs(example): simplified overwriting of requests (#3621)
c25dfba8 - infra: pull chromium 801321 (#3620)
14abee2b - browser(webkit): fix compilation on mac (#3619)
e2154618 - chore: split tests for faster execution (#3613)
db7bec36 - browser(webkit): introduce screencastFinished event on Context (#3611)
06dcf967 - feat(testrunner): allow external reporters (#3603)
e89de7e6 - fix(testrunner): allow worker fixture to throw/timeout (#3610)
3b2f14fc - test: fix wire tests (#3609)
b9d6324d - feat(screencast): fire start evet for popups (#3600)
22e2bf12 - chore: use channels as a namespace in client code (#3608)
bdbcae16 - chore: remove injected -> types dependency (#3606)
3bdf0e80 - fix(testrunner): pass error into test fixtures (#3605)
a099e941 - chore: move last rpc files to their place (#3604)
59a439e0 - feat(webkit): bump to 1330 (#3602)
1c696826 - browser(webkit): avoid use after free on page close (#3599)
a2dc8525 - feat(testrunner): introduce pytest-style reporter (#3594)
4f1f9721 - browser(webkit): fix mac compilation (#3598)
2b3a1ae9 - docs: add theheadless.dev to showcase (#3597)
cd220daa - chore: move src files to server (#3593)
43893cc0 - chore: improve check-deps (#3592)
73e53b21 - chore: move injected and debug to src/server (#3591)
baa6b64e - feat(testrunner): convert reporter to an interface (#3588)
847201b1 - chore: move firefox to src/server/firefox (#3590)
6a53b205 - chore: move webkit to src/server/webkit (#3589)
77f80314 - fix(electron): fix electron types, move source to src/server/electron (#3583)
53ac35a6 - chore(testrunner): complete ts migration (#3587)
224d3df8 - chore(testrunner): extract runtime api and use it from cli (#3585)
2e1493a5 - chore: move browserPaths to utils, enforce more deps (#3584)
4025f9f1 - feat(testrunner): expose test and runner config to fixtures (#3580)
f4e8f34c - chore: move chromium to src/server/chromium, enfore installer deps (#3582)
9fca63f8 - chore: move src/rpc/client to src/client (#3581)
72f11fdb - test: Remove duplicated expect (#3579)
e5dae0da - test: move reporters off mocha (#3577)
655013d0 - chore: move shared utilities to src/utils (#3575)
b909924a - test: remove mocha dependency (#3576)
93d88399 - browser(webkit): explicitly track pages reported for context (#3574)
6fe1cd98 - chore: move protocol files to src/protocol (#3571)
398bd477 - test: translate tests into ts, extract mocha (#3565)
57e86174 - chore: refactor impl-side events to be per-class (#3569)
d4dac042 - chore(testrunner): add exit code tests (#3562)
de5ecc02 - browser(webkit): roll to r266002 08/21/2020 (#3561)
8ae3c4be - feat(testrunner): delete types.d.ts (#3551)
1f0e9db0 - feat(firefox): support context-level screencast api (#3555)
7a492831 - fix(test): fix the popup test on Windows (#3558)
83f39953 - test: take a screenshot upon failure example (#3556)
071931eb - feat(firefox): bump to 1166 (#3557)
e2bb6a07 - fix(click): allow clicking 1x1 sized elements (#3538)
012f9425 - chore(test-runner): move into its own folder and typescript project (#3548)
4c563543 - fix(permissions): browserContext.grantPermissions to respect the origin (#3542)
9f3a1b51 - browser(firefox): send screencastStarted after attachedToTarget (#3554)
5ba0254c - browser(firefox): make sure response is sent when context is closed (#3553)
db2e66aa - test: introduce global setup (#3544)
eab5ff4e - chore(rpc): use channels types in dispatchers (#3549)
e32a496e - devops(browser-roll): fix fixture tests (#3547)
854d755d - browser(firefox): make context close wait for sessions to finish (#3550)
0d03cc0f - feat(utils): add a script for watching various builds (#3545)
86815d70 - test: convert rename options to parameters, remove options magic (#3543)
30f4c0c9 - test runner: remove dependencies on playwright (#3539)
18292325 - api: add waitForElementState('disabled') (#3537)
0a22e275 - fix(chromium): disable lazy loading iframes (#3535)
f13cebc6 - browser(firefox): remove redundant checks for PageTarget._browserContext (#3541)
e679b823 - fix(devops): auto roll tests (#3536)
a78d83e8 - docs: clarify response and requestfinished events (#3532)
a65b0bba - test: merge test options into options (#3531)
9ac1bbc2 - chore: remove more paths and url matches from the server side (#3528)
df506604 - browser(firefox): make tab close listener sync again (#3533)
83de0071 - feat(screencast): add start/stop events on context (#3483)
73cd6ece - browser(firefox): add screencast control methods to context (#3530)
745dc339 - chore: merge Browser{Context,}Base into Browser{Context,} (#3524)
56da4bb0 - devops: make sure rust toolchain is installed (#3485)
8989d66b - test: introduce options (#3525)
63a2c673 - chore: align SerializedAXNode with rpc protocol AXNode (#3522)
97157520 - feat(slowmo): only slowmo once per user action (#3012)
b0667e8b - test: fix fit, do not rely upon mocha suite (#3520)
e54195cc - chore: align page.pdf options to the rpc protocol (#3521)
e7e8524e - chore: remove screenshot path from the server side (#3519)
20c6b851 - chore: remove route/unroute from the server side (#3518)
3cf48f9b - chore: simplify conversions around setInputFiles (#3516)
ecf4cd39 - chore: simplify conversions around selectOption (#3517)
aeadf501 - chore: use HeadersArray instead of Headers object on the server side (#3512)
77cab8be - test: introduce test collector (#3515)
510182f0 - test: use isChromium, etc fixtures for browser name sniffing (#3508)
b2228a66 - fix(test): disable more screenshot tests on headful firefox (#3513)
5a964f7f - tests: fix should get the same headers as the server (#3510)
9790ea5b - chore: align more server-side options with rpc protocol (#3506)
7a77faf1 - fix(testrunner): do not override debug.log (#3505)
dfa1f103 - feat(screenshot): create directories for screenshot file
0e9793c4 - api: ElementHandle.waitForElementState (#3501)
58fc6b40 - chore: align some server-side methods with rpc calls (#3504)
59e3326f - tests: add test for page.focus() in Firefox (#3478)
141a255a - chore: remove unused methods from server side (#3502)
1e9c0eb7 - chore: remove logger infrastructure from server side (#3487)
f3c2584d - feat: added rpc driver (#3500)
8ea28009 - devops: first implementation of browser auto-roll bot (#3455)
5aa41162 - docs: sort all enums in doclint (#3488)
3aae8c6b - test: run tests by ordinals, not ranges (#3497)
262e8869 - test: organize golden files under snapshots folder (#3494)
c0b9cecc - feat(types): export ConnectOptions (#3147)
d516f81e - fix(rpc): add a custom toJSON to help jest's expect library (#3489)
f9834325 - feat(firefox): roll firefox to r1160 (#3468)
c9003958 - test: restart worker upon any test failure (#3492)
c44f841f - test: reverse dumpio into quiet, serialize output (#3491)
73d2dc11 - test: encapsulate mocha into test runner (#3490)
5410c309 - chore(test): fix tests when using browser path overwrites (#3453)
35fbd588 - test: implement in-process debug mode (#3486)
bc233248 - chore: remove apiName plumbing and some unused methods from server side (#3481)
244c2f37 - feat(rpc): make sure filechooser is only intercepted when needed (#3482)
0c798f05 - fix(testrunner): properly run tests when the first arg is a file (#3472)
69e1e713 - feat(click): provide preview of the element intercepting pointer events (#3449)
85c93e91 - api: introduce ElementHandle.waitForSelector (#3452)
a03c7612 - test: unconditionally plumb debug to parent process (#3479)
d537088a - test: deliver colorful debug messages, do not pipe stdio (#3477)
ae4280a1 - chore: cleanup more non-rpc code (#3471)
dec8fb78 - fix(hover): do not require the element to be enabled before hovering (#3445)
c1de95f9 - feat(testrunner): pretty error messages (#3469)
2f5a0a6c - test: slowly removing testOptions (#3464)
036cd5ca - feat(testrunner): use ring character for skips (#3454)
f45791dd - feat(testrunner): support sourcemaps (#3459)
4dde2882 - browser(firefox): roll Firefox to August 14 beta (#3465)
ee027022 - test: allow overriding test fixtures, add some test runner tests (#3463)
a64cdcc9 - feat(webkit): bump to 1326 (#3462)
31fac377 - test: allow overriding the worker fixtures (#3460)
737bfa26 - test(screencast): skip test that depends on accelerated compositing (#3458)
6abc3524 - test: remove output and golden directory notions (#3456)
ae5700b3 - browser(webkit): do not crop video on Mac headless (#3457)
9b52ca86 - chore: remove unused non-rpc code, test options, infra, bots (#3444)
17622754 - feat(testrunner): cache transformed files (#3451)
84441f8f - chore(test): run doclint tests with mocha, delete testrunner again (#3447)
e2cfb057 - test: print stderr upon test failure (#3448)
18b2cf5e - feat(rpc): use rpc protocol for browserType.connect (#3380)
a4eb86c3 - browser(firefox): update styles when changing color scheme (#3407)
5498ed10 - test: introduce --trial-run mode to capture test model (#3436)
51566590 - chore: add comment to clarify /sbin
c99acd03 - feat(firefox): rollback to 1157 (#3438)
c27e809a - chore: suppress trailing whitespace warning in prepare_checkout (#3441)
4bad89fa - test(screencast): do print actual pixels on failure (#3442)
d9727c62 - Typo fix (#3430)
4f050399 - devops: do not fail check when refusing to publish TOT revision (#3443)
84ca0120 - test: upload output from headful bots (#3439)
68e6ab88 - test(screencast): test that css animations are recorded (#3427)
4bb2658e - test: fix create output folder (#3431)
51bd3709 - Revert "chore(test): run doclint tests with mocha, delete utils/testrunner (#3428)" (#3432)
15fa27e1 - feat(firefox): roll firefox to r1158 (#3426)
33785eba - chore: add npm i changes (#3413)
061ff257 - chore(test): run doclint tests with mocha, delete utils/testrunner (#3428)
d3677357 - feat(testrunner): take the first argument as the test root dir (#3423)
f2088e06 - devops: fix Chromium repackaging to respect symlinks (#3424)
ec24516e - chore(test): remove try/finally pattern from fixtures (#3409)
23f5ed89 - fix(launcher): default to ubuntu20.04 for newer releases (#3400)
f4e65f6d - test: implement spec builder (#3422)
f0fcdc8f - test(firefox): make headful screencast tests work under xvfb (#3421)
06ddacd7 - docs: introduce doc on authentication (#3404)
eb67c862 - test: fix it.fail().slow is not a function (#3420)
40f68522 - devops: migrate //utils/check_availability.js off browser fetcher (#3418)
884cef73 - browser(chromium): roll Chromium to r796653 (#3419)
a4a07c46 - test: support --grep, --forbid-only (#3417)
a574fa6e - api: add Frame.page() getter (#3392)
3a6b5cab - test: add sanity test for playwright-electron (#3387)
adfeaa49 - feat(firefox): bump to 1157 (#3395)
22d1be32 - docs: add showcase how to use allure-report and jest-circus with playwright (#3408)
be7db4d2 - docs(ci): add sample config for jenkins (#3398)
962ddc09 - test: consolidate runner files (#3415)
7e07634c - test: use mocha in ci/cd (#3406)
079b6e0a - docs: add getting help section (#3410)
16b471fa - test(screencast): video recording during cros-process navigation (#3396)
915902c8 - browser(firefox): roll Firefox to roughly July, 15 (#3411)
1ef199f5 - fix(launchDoctor): add sudo to install missing packages hint (#3402)
c0355603 - fix: full path to ldconfig in linux (#3401)
4061bc69 - test: make fit run single test (#3394)
da95b73b - browser(firefox): emit iframe lifecycle when initial navigation fails (#3389)
6054f147 - chore(tests): convert all tests to typescript (#3384)
9375cc62 - docs: introduce docs for page object models (#3391)
55a78482 - fix(types): fix type generation to make ts tests work (#3385)
812d7eef - feat(webkit): bump to 1325 (#3388)
2db97e3b - feat(firefox): migrate to protocol-based proxy implementation (#3362)
bfdb59ea - test: make mocha runner work in parallel (#3383)
9697ad63 - fix(chromium): handle the case when new pending comes before old commit (#3370)
ff2c2b29 - test: Fix insertText test title (#3386)
77e75b44 - chore(test): move electron tests to typescript (#3379)
d8d845af - feat(screencast): add private recording APIs and basic test (#3296)
8bb6d73b - feat(rpc): keep non-rpc linux bots for now (#3381)
823ef864 - test: add support for mocha (#3376)
7580360f - feat(firefox): bump to 1156 (#3378)
f2544989 - browser(webkit): align GTK implementation with Win (#3377)
d76166be - chore(test): require playwright fixtures from userland (#3355)
82c6843c - feat(webkit): bump to 1324 (#3373)
538daf33 - browser(firefox): exclude frame from screencast video (#3372)
6c68435e - docs: make api docs around pointer actions more explicit (#3374)
8f30d15a - devops: re-packge chromium on windows without interactive_ui_tests.exe (#3375)
3179e719 - feat(rpc): in-process rpc on by default (#3104)
1b8128eb - installer: start downloading Chromium archives from our CDN (#3361)
ef76f5b9 - feat(rpc): introduce JSON type in the protocol for arbitrary blobs (#3367)
6f3f608d - docs(showcase.md): add Accessibilty Insights to community showcase (#3368)
89ae8e0f - browser(webkit): disable accelerated compositing on Windows (#3360)
6f09590c - test: restore nojest runner (#3359)
c6acc328 - docs(api): explicit nulls, use Serializable and EvaluationArgument more (#3358)
6a19bf5b - docs(showcase): add expected-condtion-playwright library (#3356)
2a0cbda8 - devops: mirror chromium builds to our CDN (#3357)
69c88d80 - feat(rpc): handle screenshot path on the client (#3352)
7e2cc775 - test: add a test for newCDPSession rejecting on non-pages (#3353)
83f56285 - feat(rpc): misc fixes (#3351)
a2254476 - browser(firefox): introduce global proxy (#3335)
ddd483bd - browser(webkit): correctly record video in headless mode Windows (#3354)
f6d321fb - test: do not inherit from the Node environment (#3348)
b3091deb - fix(cors): allow routing the cors request with credentials (#3336)
eac8aeed - chore(types): convert tests to typescript part 3 (#3340)
1bcbf19e - test(video): mark test as failing in WebKit Linux (#3344)
3665bb0a - docs(api): remove extra closing square bracket, add an opening square bracket. (#3342)
9d543f94 - docs: fix typo in Core Concepts doc page (#3343)
4ec3290d - docs(api): replace select-all note with example (#3328)
411c7380 - feat(firefox): roll to r1154 (#3333)
434b9e10 - devops: support EXPORT_COMPILE_COMMANDS env variable in webkit build.sh (#3334)
c9409bf1 - fix(types): add missing properties to DeviceDescriptor (#3332)
83ac3f43 - chore(test): convert some more tests to typescript (#3329)
ca3bd5e2 - browser(firefox): roll Firefox to June, 24 (#3327)
4b3fb6dc - chore(test): convert tests to typescript (1) (#3307)
8716a546 - docs: fix for documentation link in the README.md (#3324)
cdfe73fe - api(console): make ConsoleMessageLocation properties required (#3290)
5c0b88fb - feat(test): add dot report for aslushnikov (#3317)
0a5d340e - test: print failed tests upon interrupt (#3316)
5f7b5469 - test: overridden timezone does not change default in another context (#3313)
9effb326 - browser(firefox): always create new process rather than reuse one (#3312)
c45f7afe - feat(firefox): bump to 1152 (#3302)
4956054a - test: bump jest to 26.2 - per-test progress, slow thresholds (#3314)
aa2ec09e - test: default and overriden locale isolation between contexts (#3308)
e582cc67 - fix(launcher): make PrintDeps.exe path configurable (#3311)
Highlights
- Python support: Official Playwright for Python is ready for preview!
- Use the Pytest plugin to write your end-to-end tests in Python.
- Validate system dependencies: Playwright now automatically checks for browser dependencies on Linux and Windows systems.
- Ubuntu 20.04: Playwright now provides browser builds for Ubuntu 20.04.
Browser Versions
- Chromium 86.0.4217.0
- Mozilla Firefox 78.0b5
- WebKit 14.0
New APIs
browser.version()page.bringToFront()download.saveAs()request.postDataBuffer()- new
chromiumSandboxoption inbrowserType.launch(),browserType.launchPersistentContext()andbrowserType.launchServer()
Thank You
- Special thanks to Max Schmitt for the massive contribution to playwright-python, for leading the playwright-pytest effort and other contributions on playwright.
- Thanks to Ross Wollman for his contributions on the new
download.saveAs()API and tests across playwright-python and playwright. - A big thank you to all contributors who helped us with this release: Darío Kondratiuk, Paul, Yevhen, Anish Karandikar, Tapajyoti Bose, Carlos Alberto Lopez Perez, Lars den Bakker, and Tierney Cyren.
Issues Closed (31)
#657 - Cannot choose page to be visible in headful mode #2269 - [Feature] Support ES module syntax #2298 - [Bug] Firefox fails with STATUS_DLL_NOT_FOUND on some Win 10 setups #2358 - [BUG] route.fulfill failed with TimeoutError if the response headers contains newline #2386 - [Question] Run playwright from docker container running express server - sandbox issues #2449 - [BUG] Linux Playwright Webkit engine doesn't allow video.play() #2523 - [Question] download file deleted while copying #2547 - [BUG] unable to launch firefox on virtual box windows #2548 - [BUG] unable to launch webkit on virtual box windows #2588 - [BUG] corrupted post data on application/x-protobuffer (probably other non-string postData formats) #2604 - [Feature] Browser.version() #2621 - [BUG] Webkit problem with libwebp-1.1.0-1, error while loading shared libraries: libwebp.so.6 #2622 - [BUG] page.waitForResponse is not working for Firefox #2624 - [Question] When running two or more browser instance for running test cases, all the test cases fails with in Docker #2626 - [BUG] Webkit font rendering (spacing / icon fonts) #2645 - [BUG]Once test execution is completed, error in closing chromium browser #2663 - [BUG] Getting Error: Protocol error (Target.setAutoAttach): Target closed. #2702 - [BUG] Webkit clears on page.type – Chromium/Firefox don't #2730 - [BUG] - TypeError: Cannot read property 'push' of undefined - When restarting tests #2745 - [Feature] Launch doctor #2787 - How to test mobile devices in Firefox? #2864 - WebGL Renderer on WebKit Browser #2901 - [BUG] Chromium not launching on Windows #2906 - [BUG] Coverage types incorrect #2921 - [BUG] selectOption Bug #2940 - Parallel load #2943 - [BUG] Docs for v1.2.1 are broken #2972 - [Question] how to run playwright script in docker #2975 - [Question] Can releases specifically indicate the MacOS version compatibility #2978 - [Question] Playwright and TypeScript #2979 - [BUG] FF - launchPersistentContext
Commits (287)
d01f63b8 - chore: mark v1.3.0
83539d1a - chore: cut v1.3.0-post (#3309)
49560411 - fix(validation): error typo "unknown" (#3304)
9280037d - chore(test): add blank lines (#3303)
b03b4a55 - chore: doc type nits (#3283)
90819fa3 - browser(firefox): always create image buffer in headless mode (#3299)
7e28c26f - browser(firefox): do not complain about SnapshotListener being cleared on Destroy (#3298)
9ec02673 - chore(test): use pathToFileURL (#3292)
3c2fcb7f - feat(webkit): bump to 1322 (#3297)
57490b74 - test: remove describes (6) (#3295)
4cbfa09c - test: remove describes (5) (#3294)
1673e627 - docs: update table of contents for docs sidebar (#3291)
2e65b0af - test: remove describes (4) (#3286)
028dd081 - docs: update documentation for evaluation argument (#3287)
8881a521 - browser(webkit): roll to 8/4 (#3289)
25089760 - devops: fix typo in rustup detection (#3282)
d3a40be4 - browser(firefox): reliably close the pipe (#3280)
573f580f - test: remove describes (3) (#3278)
de55fa64 - fix(webkit): ensure WebKit can play h264 video (#3272)
402d1a6a - browser(firefox): fix win compile 2 (#3277)
bb267356 - test: remove describes (2) (#3276)
e481f378 - browser(firefox): fix win compile (#3275)
5c4f0670 - test: remove describes (#3274)
1148f0b9 - browser(firefox): implement RemoteDebuggingPipe (#3273)
bad4005d - chore(devops): do not copy pw_run.sh to subfolders (#3271)
b52d2597 - feat(webkit): bump to 1321 (#3270)
126b1f79 - feat(rpc): run doclint against rpc client (#3260)
f62e9b5d - browser(webkit): kick-off 1321 build to pick up new WebKitLibraries/win (#3263)
776f0192 - fix(chromium): remove Debugger.paused event listener on coverage stop (#3252)
7e8d03b0 - fix(launcher): extend list of known missing DLLs (#3256)
8709ad7b - chore(tools): update PrintDeps license header (#3254)
cbd33f96 - devops: avoid running publish on external contrib (#3257)
ba9030e6 - docs: update api.md with more references to actionability (#3255)
928a1769 - docs: update docs (#3253)
3edfb2a9 - test: add REPORT_ONLY mode for test collection (#3225)
9b3c90e7 - feat(webkit): bump version to 1320 (#3248)
70b92e17 - docs(README): Point to hosted docs (#3208)
4e5aa3c9 - feat(rpc): support chromiumSandbox option (#3251)
ce0ddd27 - feat(download): create directories for saveAs (#3249)
93056ed8 - chore(rpc): more protocol nits (#3246)
421f6f48 - devops: use playwright-github-action@v1 (#3221)
cbfdca73 - feat(launcher): check dependencies before launch on Windows (#3240)
21eafbcd - test: unflake screenshot test (#3245)
2f95b6e3 - feat(selectors): auto-detect xpath starting with ".." (#3239)
235c5df8 - docs: add readme file for PrintDepsWindows (#3241)
6297f86c - feat(rpc): run generate-channels during lint (#3238)
9103ce00 - devops: fix firefox build (#3237)
e7ddf868 - devops: rename docker image tag for tip-of-tree images (#3222)
08916781 - fix(test): display correct error when golden files mismatch (#3234)
19e8c0fe - chore(deps): bump elliptic from 6.5.2 to 6.5.3 (#3235)
1728a3df - chore: minor protocol fixes (#3226)
88938669 - devops(windows): add tool for printing library dependencies on Windows (#3224)
cefb1b97 - feat(rpc): run fixtures.jest.js with channel (#3227)
4961c2dd - devops(firefox): fixate rust and cbindgen version (#3223)
e0913252 - fix: a pretty error when browser executable is not found (#3220)
ae0c3a6d - docs(devops): update docs for buildbots (#3218)
52eb6c60 - fix(rpc): protocol Route.fulfill (#3200)
3bd97776 - feat(rpc): do not use server types and events in rpc/client (#3219)
7dd9f2c2 - test(iframes): add x-frame-options display test (#3217)
9132d23b - fix(screenshot): wait for stable position before taking element screenshot (#3216)
c6180edb - browser(webkit): print missing dll error to the console (#3214)
10225d19 - test: fix a race in the oopif test (#3211)
487bc589 - devops: re-factor list-dependencies script to output per-browser results (#3194)
84a17f27 - fix(rpc): Frame.dblclick is missing notWaitAfter (#3210)
77b1c4b8 - devops: enable Ubuntu 20.04 tests (#3178)
f111ad74 - fix: add missing libgles2 package to launch doctor (#3209)
21b1be73 - docs(selectors): fixed selector register example (#3169)
6bc02f8f - feat(launchdoctor): detect missing libraries for dlopen (#3202)
a700a7a9 - feat(chromium): roll to 07/29 (#3207)
bdfde5cd - fix(firefox): roll firefox for postdata fix (#3196)
fab5eba6 - fix(oopifs): translate coordinates to viewport (#3201)
6cb1e037 - feat(rpc): disallow deps into rpc client from outside (#3199)
3e023f6c - Revert "browser(firefox): fix color scheme not updating until reload" (#3198)
d27f97ed - devops: include protocol and api.md in NPM package (#3195)
14c68819 - browser(firefox): properly rewrite intercepted request (#3188)
a59220b0 - test: prepare fixtures test to run with rpc (#3190)
da25a5b5 - browser(firefox): do not capture cursor in screencast (#3118)
576e2c52 - fix(webkit): correctly report outerWidth/Height on Mac (#3133)
101dd3b1 - fix(test): make video test pass on Mac (#3121)
97c10002 - api: introduce Browser.version() (#3177)
e406119f - chore: add check_deps script (#3182)
20b7cff9 - fix: update jpeg-js version (#3179)
6fa7547c - fix(launchDoctor): add package mapping for libvpx.so.5 (#3180)
51ce47f3 - docs: use "Node.js" instead of "Node" (#3176)
b2179193 - feat(rpc): replace implicit scopes with explicit dispose (#3173)
9b502af4 - fix(launchDoctor): support existing LD_LIBRARY_PATH (#3165)
f4e584ea - feat(rpc): align class names with api docs (#3164)
d0b758a8 - test: improve autowaiting tests (#3168)
98cc9db8 - chore: simplify doclint (#3162)
fd2e65b7 - api: export all browsers from every package (#3128)
c8c92c50 - fix(utils): fix check-availability script (#3158)
d9890f11 - feat(rpc): make ElectronApplication a scope (#3159)
90ff6671 - browser(webkit): disable high DPI support in Web Process on Windows (#3160)
86b64a23 - feat(launchDoctor): package mappings for Ubuntu 20.04 (#3155)
d4b70786 - feat: validate Ubuntu version if launching firefox (#3156)
549a37b9 - browser(firefox): fix color scheme not updating until reload (#3157)
415e94f4 - feat(rpc): server-side validator (#3150)
1455cae9 - test(emulation): add failing test for setting dark theme in firefox (#3149)
0a57c2b3 - support typescript in jest files (#3132)
6a4195fd - fix(require): allow requiring internals (#3153)
3162c06f - browser(webkit): outerWidth/Height on Windows (#3154)
e7cca867 - fix(postData): allow overriding binary post data (#3120)
bec34db6 - feat(firefox,webkit): roll both Firefox and WebKit (#3145)
deccddba - feat(rpc): update BrowserServer (#3112)
0f0e2acf - fix(type): unify selection behavior when typing (#3141)
678d1645 - devops: normalize blob names on the CDN (#3136)
79ab07bd - devops: install Media Pack on Windows bot (#3137)
bbe7dbe9 - feat(installer): start downloadinb Ubuntu 20.04 builds (#3126)
0b9c6473 - devops: detect completion status (#3135)
ae574b30 - devops: fix webkit build on ubuntu (#3134)
059004b1 - fix(test): don't leave so many zombies on sigint (#3130)
74941340 - browser(webkit): correctly report outerWidth/Height on Mac (#3131)
c1032ae4 - devops: simplify building webkit on linux bots (#3127)
d234dac7 - chore: support esm imports (#3125)
21581a4e - devops: fix buildbot names
cb77d33a - devops: add script for ubuntu 20.04 buildbot (#3123)
d2f24e88 - integrate toBeGolden with jest's snapshot system (#3124)
e5afd927 - chore(tests): resuse tmp file helpers from utils (#3119)
63689e36 - devops: prepare buildbots to the introduction of Ubuntu 20.04 builder (#3116)
2bed3129 - fix(electron): emit close events in the correct order (#3111)
30e21e0b - test: fix api coverage (#3114)
244ce457 - test: add a test for mouse.dblclick (#3115)
c895c972 - browser(webkit): kick-off build for #3100 (#3113)
08b0dc6b - feat(webkit,firefox): bump versions (#3110)
1cfba7f5 - browser(webkit): periodically capture frames on mac regardless of updates
26c57846 - Rebase (#3096)
3d37e458 - browser(firefox): pass actual frame duration to the codec (#3101)
b271624f - browser(webkit): hardcode woff enabled on win (#3103)
68c4f79b - feat(rpc): convert protocol to yaml (#3102)
b1a5a021 - feat(rpc): client-side parameters validation (#3069)
e56e1485 - test(postData): add a failing firefox test (#3098)
65002a0a - feat(rpc): support firefox user prefs (#3093)
80c0711d - feat(firefox): roll firefox to r1137 (#3095)
2a08883e - chore(download): follow up to remove the redundant checks (#3097)
baa09569 - Revert "test: screenshot on failure (#3053)" (#3091)
d8a17fb0 - api(download): Add saveAs helper (#2872)
4db035df - chore: roll_browser to also update docs (#3088)
ea5dfdbe - fix: re-write Chromium startup error with clear instructions (#3070)
1aee8dfc - feat(rpc): align types/guids in the protocol with their pdl definition (#3079)
f50f228a - browser(chromium): roll chromium to r790602 (#3082)
773ee08e - chore(test): restore api coverage checks (#3068)
6e75533c - chore: respect jest params in npm run wtest (#3085)
2b0b0a91 - fix(misc): assorted fixes (#3031)
ced0bc2d - api: make clear the use of null in page.emulateMedia (#3078)
f751ab17 - browser(webkit): write screencast video to .webm instead of .ivf (#3081)
c0d9ccfe - docs: update documentation on Chromium sandbox (#3077)
f4b7ed55 - fix(chromium): reland support selectAll on macos (#3038)
3c151d8f - fix(test): don't output babel's debug info on the bots (#3073)
db4e856a - feat(rpc): use SerializedValue for CDPSession (#3076)
1553f19b - chore: update error messages to match future rpc validator (#3075)
18cb1c01 - feat(rpc): inline selectors.register options in the protocol (#3072)
3dd61629 - feat(rpc): update Response.finished to return string instead of Error (#3071)
47e30f04 - feat: introduce chromiumSandbox launch option (#3067)
af20d270 - fix: auto-add --no-sandbox when running Chromium under root (#3064)
2120a236 - docs(readme): add link to system requirements (#3057)
3dead4c8 - feat(rpc): remove last union types from the protocol (#3059)
de9570ee - browser(webkit): roll to ToT 07/21/2020 (#3066)
babd0cbc - browser(firefox): fix Windows build (#3065)
7f29275a - browser(firefox): use base64 to deliver post data (#3063)
99658c2d - feat(bringToFront): enable on all browsers (#3052)
a03f1dd1 - test: screenshot on failure (#3053)
a5cb9837 - browser(firefox): write video to .webm instead of .ivf (#3062)
2d59a8f9 - feat(rpc): remove some union types (#3058)
5848ed8f - feat(rpc): introduce protocol.pdl (#3054)
726f636b - browser(firefox): implement Page.bringToFront (#3051)
eb14c471 - browser(webkit): do not mask WebGL vendor/renderer info (#3050)
6db89621 - browser(firefox): smooth resize in headless (#3043)
23f506b3 - fix(test): write after end in proxy test (#3039)
d1f937d6 - browser(firefox): stop video recording if page closed (#3040)
37740444 - devops: add script to generate shared object => package mapping (#3022)
cfe3aa3d - test: add a few tests for null values (#3035)
29504c08 - feat(rpc): make SerializedValue format pdl-friendly (#3007)
79d5991a - doc: Improve unroute documentation (#3026)
6199ba28 - devops: remove travis, appveyor, circle for now (#3029)
b5f9985d - devops: make headful a matrix, collect test results (#3027)
13c3f724 - test: restart worker fixtures after test failure (#3021)
562e1e64 - browser(firefox): wait for file write to finish in stopVideoRecording (#3020)
c45b5797 - test: support slow marker (#3018)
7d2078ef - devops: bake browsers into Docker image (#2990)
9a2245d3 - devops: show package names instead of missing libs on Ubuntu 18.04 (#3013)
ef2a6522 - feat: support atomic browser installation - attempt 2 (#3008)
a75835e0 - chore(jest): halve the max workers (#3017)
68ef90d2 - test(click): split into several files (#3016)
f2239b5b - test: respect CR/FF/WK/PATH env (#3015)
91e1a25f - feat(rpc): gracefully close browsers in server process on disconnect (#3005)
9d980119 - test: wire test commands to jest (#3014)
8904f401 - chore(jest): defaultbrowsercontext.jest.js (#3003)
a8216339 - Revert "fix(chromium): select all on macos should work again (#3006)" (#3011)
096ec4c4 - test: move fixtures to jest (#3010)
24f6d19e - test: move remaining tests to jest (#3009)
9790cf22 - feat(webkit): bump to 1308 (#2991)
631fbce7 - fix(chromium): select all on macos should work again (#3006)
9140063c - fix(accessibility): don't filter everything when the page has a title (#2909)
d8bedd85 - chore: explicitly type SerializedArgument, fix rpc dispatchEvent (#2988)
070a2576 - test: move all generic page tests to jest (#3002)
5cf3e4f0 - feat(rpc): switch Env to use an array, split ignoreDefaultArgs (#2984)
df8b2706 - chore(jest): convert browser tests to jest (#3000)
1c0504ae - test: respect fixtures in describe, match image snapshots (#2989)
fe95ee00 - test: group browserType.launchServer tests (#2944)
16e3776a - fix(JSCoverageEntry): added scriptId and isBlockCoverage (#2955)
424f11d1 - test: convert some tests to the jest+fixtures (#2983)
1896e8ed - browser(webkit): send Playwright.pageProxyDestroyed for crashed tabs when deleting context (#2986)
89ccf99b - browser(firefox): screencast for Mac headful (#2985)
056f0e29 - feat(rpc): ensure that error stack traces point to the user code (#2961)
b890569a - feat(rpc): move leftover extraHTTPHeaders to HeadersArray (#2980)
439e048a - feat(rpc): migrate DeviceDescriptors payload to an array (#2981)
4c8ba3ed - chore: remove cli (#2976)
513899a3 - test: add a test for arbitrary options (#2977)
ecc130c6 - test: convert evaluation.spec to jest+fixtures (#2968)
7080767f - devops: move CircleCI to run against dev version of Docker container (#2969)
a802b4a6 - feat(ff,wk): bump revisions (#2967)
198ecee8 - api(exposeBinding): allow handles in the binding result (#2970)
aa4c893b - feat(rpc): implement waitForNavigation on the client (#2949)
824f6491 - devops(docker): fix docker for chromium (#2966)
177873e3 - chore(deps): bump lodash from 4.17.15 to 4.17.19 (#2964)
d750ba38 - fix(docker): add missing dependencies to docker image (#2963)
b7f7ba92 - browser(firefox): screencast support for Windows headful (#2965)
19cd96c4 - test: add the jest-circus experimental runner (#2962)
0b921814 - feat: validate browser dependencies before launching on Linux (#2960)
c51ea0af - feat(rpc): remove PageAttribution from the protocol, attribute on the client side (#2957)
7f617157 - feat(rpc): use headers array in the protocol (#2959)
31893036 - browser(webkit): close crashed pages on exit (#2958)
0aff9bef - browser(firefox): screencast for headless mac (#2956)
4a00e5c4 - test: remove flaky test for binding on error pages (#2952)
2d5c0328 - feat(rpc): return objects for every protocol command (#2950)
46a625dc - feat(firefox): bump to 1127 (#2951)
1b84ec90 - fix(binding): dispatch binding after the page has been initialized (#2938)
89ca2db3 - browser(firefox): kick off new build after last commit (#2948)
de403291 - browser(firefox): add new files for headless screencast (#2947)
bf6f22d8 - browser(firefox): basic screencast for headless (#2931)
d5bd4599 - chore(rpc): remove some paths from the channel (#2934)
cc8fe5a7 - feat(rpc): support electron (#2933)
9fdb3e23 - feat(rpc): support selectors (#2936)
6c75cbe5 - docs: fix link to github workflow in releasing doc
a06ba1c7 - devops: add utility to count compressed docker image size (#2920)
d58a57c4 - devops: fix docker publishing (#2939)
b7d68d1c - devops: automate Docker image publishing (#2937)
65d45c18 - feat(rpc): introduce Waiter for various waitFor implementations (#2935)
b2d820a1 - docs(emulation): separate section for dark mode (#2915)
9fd30e58 - feat(rpc): ensure feature-detection works as before (#2898)
21517576 - feat(rpc): run rpc tests in-process and out-of-process (#2929)
0346c3a1 - chore: update release notes draft gen (#2932)
6d94c920 - feat(rpc): support no-serialization mode, run hook tests (#2925)
66744584 - feat(rpc): log api calls into LoggerSink (#2904)
c63b706a - fix(events): avoid firing events after close/detach (#2919)
fc686141 - feat(rpc): merge DispatcherScope and Dispatcher (#2918)
ebb4c332 - test: mark 2 chromium not important win tests as failed (#2914)
982e5e35 - devops: collect artifacts from browser locations (#2913)
21807bcd - feat(webkit): roll WebKit to r1306 (#2899)
a403d4be - fix(firefox): fix launching firefox without dependencies (#2900)
1cebf875 - chore(docker): skip "recommended" dependencies (#2917)
bce4b1ae - chore(docker): trim some of the gstreamer dependencies (#2897)
631f76df - chore(rpc): remove union types from page and handles (#2912)
b6fd4dc5 - feat(rpc): merge ChannelOwner and ConnectionScope (#2911)
54f9a0dd - test: update headfull chromium expectations after a recent roll (#2908)
d5614652 - devops: use matrix in GHA, add non-linux rpc (#2907)
c89c30e3 - fix(popup): do not report frameless pages (#2910)
c21b6373 - feat(webkit): bump to 1305 (#2893)
a91ec9a1 - feat(rpc): pass more tests (#2896)
70394093 - test: skip devtools test with USES_HOOKS (#2895)
cb8b1bca - browser(webkit): Reduce binary size of WebKit Linux build bundles (GTK and WPE) (#2880)
e90ba262 - fix(context): fire close event for persistent contexts (#2891)
8fe29feb - feat(rpc): support more chromium-specific apis (#2883)
b3ca4afd - chore: misc test fixes (#2857)
6209d14f - chore: misc test fixes (#2888)
c3ac0371 - test: add test to validate user-agent sanity (#2887)
b93e0994 - browser(webkit, firefox): bump versions (#2866)
458aaa50 - feat(chromium): roll Chromium to r786218 (#2879)
71713c95 - fix(webkit): Fix default User-Agent (#2886)
f5911de9 - browser(webkit): release GTK app only if it has been referenced (#2885)
83bba08c - browser(webkit): fix touch events on mac after last roll (#2884)
040c6a6a - chore(jest): run tests with jest (#2754)
6a1bd3ae - docs: add debugging docs page (#2865)
8611ee8d - chore(testrunner): typescript test files (#2751)
e97badcc - docs(CONTRIBUTING.md): Add build step (#2869)
760283ea - testrunner: fix default environment name (#2870)
0c80c227 - feat(rpc): plumb CDPSession (#2862)
2a86ead0 - chore: replace FrameTask with internal events on Frame (#2856)
35cb20d5 - test: unflake recorder tests (#2808)
baaa6549 - browser(firefox): resize window when changing viewport (#2861)
64f57216 - browser(webkit): roll to 07-07-2020 (#2863)
6ed8b5fc - chore(eslint): lint for copyrights on files (#2858)
de7969f0 - docs(api/input): fix typo (#2837)
9640dbf2 - browser(firefox): exclude browser controls from screencast (#2855)
39144dd5 - feat(webkit): bump to 1302 (#2852)
0380400d - chore: refactor waiting for lifecycle events (#2851)
db3439d4 - chore: introduce DocumentInfo (#2765)
Highlights
- This patch release fixes WebKit user-agent.
Browser Versions
- Chromium 85.0.4182.0
- Mozilla Firefox 78.0b5
- WebKit 14.0
Commits (3)
a00f0d4e - chore: mark v1.2.1 c30eca94 - docs: add debugging docs page (#2865) 8c3ad058 - fix(webkit): Fix default User-Agent (#2886)
Highlights

- New debug mode: Use the
playwrightobject in browser dev tools to inspect selectors. Learn about Playwright debugging tools. - Playwright Docker image: The official Playwright docker image is now available on Docker Hub:
docker pull mcr.microsoft.com/playwright:bionic
Browser Versions
- Chromium 85.0.4182.0
- Mozilla Firefox 78.0b5
- WebKit 14.0
New API methods
page.screenshot() method now supports timeout option
page.selectOption() method now accepts null as values
page.scrollIntoViewIfNeeded() now accepts options to configure actionability checks
page.selectText() now accepts options to configure actionability checks
New Environment variables
PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST host to specify Chromium downloads
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST host to specify Firefox downloads
PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST host to specify WebKit downloads
Troubleshooting
- ⚠️ WebKit now requires a new set of dependencies to launch on Ubuntu Bionic.
issues closed (54)
#810 - [Feature] Proxy options support?
#1050 - [BUG] Calling waitForNavigation twice doesn't work
#1067 - [BUG] Keyboard shortcuts on mac do not work
#1124 - [Question] How to update firefox default prefs
#1131 - [Feature] firefox: instrument file:// process in firefox
#1140 - [REGRESSION]: getting "Protocol error (Target.setDiscoverTargets): Target closed" after upgrading from v0.10 on CentOS7
#1235 - [BUG] Frames show up wrong on Firefox after navigating
#1245 - [BUG]: Failed to launch browser
#1289 - [BUG] Overriding Location Problem
#1292 - [BUG] Service Workers are flaky
#1330 - [Feature] Accessor for browser type from context
#1336 - Any way to have playwright use our own set of browsers by default?
#1349 - [Question] Modify Context Options with launchPersistent
#1421 - [BUG] Protocol error (DOM.describeNode): Cannot find context with specified id
#1426 - [Feature] Debugging devtools panels
#1482 - [Feature] official Docker image on Docker Hub
#1523 - [Feature] launchPersistentServer Launches persistent storage browser server
#1552 - [BUG] firefox's node.scrollIntoView({behavior: 'instant'}) is not instant :(
#1639 - [Feature] support 'private mode' In Firefox
#1686 - [Feature] request.postData to return json string instead of urlsearchparams
#1730 - [Question]Playwright in Kerberos environment
#1848 - Playwright works locally but fails on CI
#1914 - Playwright: Roadmap
#1941 - [BUG] Doesn't work with mac10.13
#1959 - [BUG] dumpio no longer seems to be an option when launching
#1967 - [BUG] Possible issue with downloads
#1985 - [Question] Attaching playwright to an existing browser window?
#1997 - [Feature] Better output from failure with headless=false
#2061 - [BUG] Firefox doesnt open
#2131 - [Question] Socks5 Support
#2134 - [Feature] page.setDeviceScaleFactor
#2146 - [Question] Debugging Failed Browser Start-up in Docker Container
#2182 - [Test] Firefox 'ElementHandle.boundingBox' fails in HEADFUL on bots
#2196 - [BUG] context.setHTTPCredentials(null); does not clear credentials
#2200 - [BUG] Click operation doesn't timeout when there is an alert
#2244 - [BUG] Throwing unhandled rejection errors when Firefox navigates to neterr page
#2261 - [Feature] Auto close browser when launcher process exits
#2270 - [Feature] Add Playwright to DevDocs.io
#2292 - [BUG] Unable to switch frames when using chromium
#2316 - [BUG] Bypass CSP bit can be cached on Firefox
#2344 - [Feature] Chromium does not show file chooser dialog
#2354 - [Feature] Make browser binaries available for manual installations
#2379 - [BUG] Firefox cross-page promises are not resolved
#2429 - [BUG] run-workers not working with docker container
#2437 - [BUG] The official Docker image doesn't work with non root user
#2451 - [BUG] Firefox page.goto broken for sites with service worker
#2510 - [BUG] incorrect focus behavior for webcomponents with delegate focus option
#2527 - [BUG]Waitforselector fail to read the element in execution but works when debugging.
#2528 - [Question] - How can you obtain the current HTML content of the page you are on?
#2537 - [BUG] addInitScript and exposeFunction/Binding don't work for new OOPIFs
#2539 - [BUG] Firefox doesn't install when using a installler made with electron-builder.
#2540 - [BUG] playwright-core has no main entry
#2560 - [Question] Succint list of pro and cons versus Cypress
#2563 - [Question] How to access Print dialog?
commits (188)
15ddb5d3 - chore: update webkit version (#2804)
ef125e13 - chore: cut v1.2 (#2850)
ea9b82d2 - browser(webkit): properly disconnect signal handlers when closing browser (#2849)
fc18f2f3 - browser(firefox): support screencast frame size and scale configuration (#2847)
ac2185a9 - test: update http credentials tests (#2806)
06957e8e - feat(firefox): bump to 1122 (#2844)
6bbe7eb0 - chore(rpc): inline options parameter in all rpc channels (#2842)
8d111a88 - docs(readme): add locale to geo example (#2845)
241d39f9 - chore(rpc): exit server upon pipe disconnect (#2836)
2540805b - chore(rpc): misc serializer improvements (#2832)
7f60c4df - feat(webkit): roll webkit to r1301 (#2827)
3dd09f04 - browser(webkit): close context menu on Windows when closing page (#2825)
6aef045f - browser(firefox): create new window for each new page (#2823)
b1b6d3f5 - devops: add signature to BUILD_NUMBER to force rebaseline (#2810)
605257b1 - browser(firefox): Win build fix (#2822)
05b019f1 - reland: testrunner: make environment a simple class (#2812)
024cb1dd - browser(firefox): basic screencast implementation for GTK (#2818)
6329cbbb - chore: remove dead code from test (#2819)
3d403cb2 - browser(webkit): force wpe to use the complex text path (#2801)
756d5373 - feat(webkit): roll WebKit to r1298 (#2813)
f484b20e - fix(recorder): allow node to close gracefully (#2817)
cb0c037e - test(chromium): enable selectall test on mac (#2788)
f9f3aeb0 - test: add failing test for context menus that prevent browser close (#2811)
5484217c - chore: make //utils/roll_browser.js executable
43cdb3ba - browser(webkit): revert #2755 (#2809)
19abc9bd - fix(dialogs): let click timeout, log information about dialogs (#2781)
0d16b16e - fix(firefox): unskip worker error test (#2805)
e12e2451 - test: disable flaky test on chromium mac (#2807)
9d6eaadb - fix(navigation): ensure that goBack/goForward work with file urls (#2792)
c15dc94f - chore(rpc): explicitly create page dispatcher (#2799)
d484e04a - test(route): add another route test (#2800)
14162f89 - browser(webkit): let web page close when it has open context menu (#2802)
c188118d - browser(webkit): do not show popup menu in mac headless (#2803)
e8e45e84 - feat(dom): migrate innerText, innerHTML and getAttribute to tasks (#2782)
ff1fe3ac - fix(close): actually mark the page as closing (#2798)
5c4751d5 - chore: generate protocol during browser roll (#2719)
991e8d42 - browser(firefox): report errors from workers (#2797)
c25fc495 - chore(rpc): scope client-side handles (#2796)
c4e3ed85 - browser(firefox): handle the case when inner window is restored from history (#2791)
e467ea57 - revert: testrunner: make environment a simple class (#2769) (#2790)
bd8e0a7b - feat(webkit): roll webkit to r1295 (#2785)
e480ec3f - feat(chromium): roll to r782078 (#2714)
cd180474 - browser(webkit): don't show context menus for headless windows (#2755)
6afb38d3 - devops: remove folder creation in github actions (#2779)
95538e73 - chore(rpc): move classes around, fix tests, respect dispatcher scopes (#2784)
87516cb3 - chore(rpc): make dispatcher creation and lookup explicit (#2783)
10a9eef8 - chore(rpc): add a channel bot (#2773)
922cbe67 - chore: roll https-proxy-agent to v5 (#2777)
d6338b0c - docs(webkit): update core dump analisys instructions (#2778)
f00fc076 - chore: fix utils/check_availability.js
1605cb45 - testrunner: make environment a simple class (#2769)
c6df8fd5 - browser(webkit): abort interception if loader reached termial state (#2776)
55a07dbf - fix: follow-up with offline comments on implementation of deprecation (#2770)
e29f7b9f - chore(rpc): support workers, file chooser, browser server (#2766)
5bb018e0 - chore(rpc): attribute calles to page, ignore USES_HOOKS (#2764)
3a7d629c - chore(rpc): pass more network tests (#2762)
0963c197 - chore: deprecate method context.setHTTPCredentials() (#2763)
38236b4f - fix(close): ensure close() can be called twice (#2744)
1fa9d309 - fix(evaluate): awaitPromise when Promise is overwritten (#2759)
e154e083 - docs(ci): fix gitlab setup
c8076121 - docs: add new doc for multi-page scenarios (#2737)
69127ad8 - docs(docker): update to use official image (#2760)
28a9f55a - chore(devops): use official docker image on circleci (#2756)
18f9b4a2 - test: add failing test for navigation corner cases (#2746)
e920fde9 - chore(rpc): bootstrap demo for rpc (#2741)
4e94bdab - chore(rpc): serialize rpc into actual wire string (#2740)
3e33523e - chore(rpc): clear the browsercontext test spec (#2739)
db12ddeb - chore(rpc): clear the page test spec (#2736)
aad6301a - docs(ci): update intro, caching section, add gitlab (#2735)
0cb5e95b - docs(frames): improve snippet to get frame (#2734)
6393407a - chore(rpc): support downloads, dialogs, persistent context (#2733)
b54303a3 - fix(textContent): make page.textContent(selector) atomic (#2717)
43f70ab9 - test: add more failing tests with react recycle (#2731)
02f75017 - chore(rpc): strongly-type the initializer, remove init phase (#2729)
18d6140d - chore(rpc): support routes and bindings (#2725)
064a0a11 - fix(webkit): do not swallow errors when returning by value (#2723)
71618a9e - chore(rpc): implement input, a11y, console (#2722)
ab6a6c9b - chore: run most actions through page._runAbortableTask (#2721)
bab68332 - chore: introduce the experimental rpc implementation (#2720)
5d5cf26a - fix(logs): streaming logs from InjectedScriptPoll without exception (#2712)
807dc1f3 - fix(crash): improve documentation for crash, reject waitForEvent (#2694)
bc305077 - chore: prepare library types for rpc (#2706)
1865c568 - testrunner: support globalSetup and globalTeardown hooks. (#2686)
f111974a - chore: prepare parsed selectors to more tasks (#2696)
39ce35e1 - fix(errors): strict error handling around element operations (#2567)
8fbd6470 - fix(playwright-core): bring back index.js in playwright-core (#2691)
355305d3 - feat(screenshot): accept timeout, migrate to Progress, wait for visible (#2679)
924a8841 - docs: linux core dump instructions (#2690)
4af8c683 - docs: improve snippets for console logs (#2684)
07dbd0ba - testrunner: teach runHook to accept hook arguments (#2682)
22b4a6bd - devops: enable coredumps for headful tests (#2678)
c61e2d6c - testrunner: drop nested test environments (#2681)
fca514d7 - chore: move non-trivial types out of types.ts (#2680)
d0a6e1a6 - fix(dom): make selectText and scrollIntoViewIfNeeded wait for visible (#2628)
a8eaee31 - docs: add Moon to showcase.md (#2677)
5a525db0 - feat(firefox): bump firefox to 1116 (#2668)
6cec2dfb - docs: add assertions doc (#2585)
68706783 - browser(firefox): do not fail when decoding large responses (#2671)
3d49af25 - browser(firefox): fix redirect interception (#2672)
bb344180 - devops: do cache busting for APT (#2656)
40b1a146 - browser(webkit): support screencast scale on Mac (#2655)
9000ccb3 - fix(click): don't timeout when innerWidth is modified (#2669)
98011351 - browser(webkit): screencast on windows with accelerated compositing (#2670)
7af20162 - chore(webkit): add libvpx Windows build instructions (#2649)
2fa32f7e - browser(firefox): rewrite network instrumentation (#2638)
eac7dab8 - fix(cors): allow intercepting cors requests on chromium (#2643)
2251f9be - feat(webkit): bump to 1290 (#2652)
e0ac11c0 - browser(webkit): fix loader after terminal state access (#2654)
2bfb675c - browser(webkit): make material icons render on Windows (#2650)
5043a36f - browser(webkit): exclude gstreamer, its plugins and libdrm from webkit distribution (#2541)
c8a963d2 - feat(webkit): bump to 1289 (#2639)
5c6c6591 - fix(webkit): update Docker file to include gstreamer (#2636)
53f7f4e4 - test: add redirect+extraHTTPHeaders test (#2637)
d0336ea5 - fix(network): disallow intercepting redirects (#2617)
2511cb4c - devops: drop playwright-electron dependency on playwright-core (#2634)
636e2744 - browser(webkit): revert WebCore agent and frame-based implementation (#2635)
20b23cd2 - docs: fixed various typos (#2633)
38089aba - browser(webkit): support screencast on Mac (#2631)
05863bff - feat(firefox): roll to r1112 (#2629)
f61e8529 - docs: update docs for per-browser download hosts (#2630)
fb84e19b - feat(types): autocomplete for default devices (#2198)
b88fabab - test: add another test for browserContext.addInitScript (#2285)
63924d9a - feat(install/download-hosts): allow multiple per browser (#2452)
971bd889 - fix(chromium): do not bring page to front before screenshot (#2614)
c544bffe - browser(firefox): stop faking intercepting redirects (#2618)
02704e08 - Update upstream_status.md
f581e848 - fix(css selector): handle missing spaces between [] and > (#2612)
082bb3c3 - browser(firefox): rely on upstream permission separation per contexts (#2613)
090d4506 - docs(core-concepts.md): fix typos (#2608)
cc84506c - feat(electron): add a test for clipboard access (#2606)
4834e565 - fix(firefox): bump firefox and fix network with service worker (#2610)
f9633ea9 - fix(scrollIntoView): ensure similar behavior across browsers, handle errors (#2599)
7ba72ce3 - browser(webkit): support screencast on Windows (#2590)
277d50e3 - feat(webkit): roll WebKit to 1286 - interception (#2601)
dab715b1 - browser(webkit): follow-up to the roll, fix the merge (#2600)
ab5f5c8b - browser(firefox): another way to report elements without layout object (#2597)
03690627 - browser(webkit): roll to Tot 6/16/2020 (#2596)
9bc7139c - browser(webkit): fix windows and mac unified builds after roll (#2595)
f2af30cf - browser(firefox): properly instrument requests intercepted by service worker (#2594)
c220fc7f - chore(logs): rework logs for simplicity (#2592)
4b2efd6e - browser(webkit): reference GApplication to keep browser alive on GTK (#2593)
898f1157 - browser(webkit): print context leaks when closing browser (#2591)
e6a4cff0 - browser(webkit): roll to 06/15 (#2581)
59d0f872 - test(recorder): add recorder sanity tests (#2582)
9e7ea3ff - browser(firefox): Page.scrollIntoViewIfNeeded throws for invisible elements (#2584)
1bc04a08 - docs: using DEBUG=pw:api (#2578)
1c7a8952 - chore(cli): add recording mode (#2579)
fd9b1031 - docs: add actionability doc (#2577)
f2c47b1d - feat(cli): introduce basic playwright CLI tool (#2571)
456c865f - docs(playwright-electron/README.md): fix comment mistake (#2568)
61b11252 - chore(debug): various debug mode improvements (#2561)
2659910b - docs: make environment vars snippets cross-platform (#2564)
6530c18a - docs: improvements to ci provider configs (#2565)
98544381 - test: disable flaky cookie test on Chromium Win (#2562)
d4c46686 - chore: explicitly plumb various errors through the retries (#2554)
39019e88 - test: unflake interception test (#2558)
c4e8720e - feat(debug): generate preview for ElementHandle (#2549)
defeeb9c - test: await all promises in upload test (#2557)
1bf9e65e - fix(log): include log name in progress recording (#2550)
fb0b910e - Bump to 1280 (#2544)
49cb96c4 - devops: enable core dumps in the subshell (#2555)
bda6203a - browser(webkit): configure video scale (#2553)
894826de - chore: form the debug script for authoring hints / helpers (#2551)
48088222 - devops: enable core dumps on Linux CI (#2552)
7ddf6641 - test: add a failing test with React rerender (#2545)
dadfe3e8 - browser(webkit): add more missing libraries to WPE build (#2546)
e287f194 - feat(debug): add basic recording helper infra (#2533)
5e97acde - fix(oopif): make Page.addInitScript and Page.exposeBinding work for oopifs (#2542)
0e62d727 - browser(webkit): add missing wayland library to WPE build (#2543)
969803fa - feat(browser): roll Firefox to r1108 (#2532)
855ffa46 - browser(webkit): fix windows build (#2536)
17433d18 - chore: verify launch options (#2530)
de893c65 - browser(webkit): speculative downloads-related crash fix (#2535)
6f048438 - browser(webkit): preserve compositing mode in WPE web process (#2508)
89d1b52f - chore: revert atomic install (#2534)
c99f0d1f - feat(debug): more logs while waiting for stable, enabled, etc. (#2531)
903de258 - chore(websocket): extract common socket part (#2506)
1bb33650 - chore: remove ExtendedEventEmitter and inline waitForEvent (#2529)
8ee19d53 - feature(webkit): roll WebKit to 1273 (#2514)
d7f867db - browser(webkit): screencast for WPE (#2516)
e3f34f6a - fix(selectOption): allow passing null to unselect all (#2405)
24316ad2 - chore: fix emojis for CR and FF in Dockerfile (#2522)
3bff1368 - chore: bump firefox build number
31da3d37 - browser(firefox): roll Firefox to TOT beta branch as of Jun 9, 2020 (#2520)
4d069dda - feat: avoid side effects after progress aborts (#2518)
4faa1306 - test: dump all logs in DEBUGP mode (#2517)
6d8f39b3 - browser(webkit): return proper error upon missing page proxy (#2519)
80705ff5 - chore: simplify logging a bit (#2512)
Browser Versions
- Chromium 85.0.4165.0
- Mozilla Firefox 77.0b3
- WebKit 13.2
Highlights
- Revert "atomic install" since it was causing problems in some environments.
commits (2)
cbfc954f - chore: mark v1.1.1 391915e3 - chore: revert atomic install (#2534)
Browser Versions
- Chromium 85.0.4165.0
- Mozilla Firefox 77.0b3
- WebKit 13.2
Highlights
- First-class proxy support using
proxyoption inbrowserType.launch(),browserType.launchPersistentContext()andbrowserType.launchServer() browserType.launchPersistentContext()now supports a wide variety of browser context options.
New APIs
browserContext.exposeBinding()page.exposeBinding()page.getAttribute()page.innerHTML()page.innerText()page.textContent()download.suggestedFilename()request.postDataJSON()browserType.connect()now accepts atimeoutoption- new option
firefoxUserPrefsinbrowserType.launch(),browserType.launchPersistentContext()andbrowserType.launchServer()allows to specify firefox preferences. - new option
proxyinbrowserType.launch(),browserType.launchPersistentContext()andbrowserType.launchServer()allows to specify browser proxy. - new option
downloadsPathinbrowser.newContext()andbrowserType.launchPersistentContext(). browserType.launchPersistentContext()now supports almost all context creation options.
Changes
browserServer.kill()now returns a promise that fulfills when browser exits.
issuses closed (42)
#584 - Electron support #977 - Memory and performance tests for our browsers #1439 - Be careful to avoid breaking changes in with the typescript types. #1607 - [Question] Removing routes from page._routes #1638 - Accessibility Testing[Question] #1678 - [Feature] Browser event "context" #1709 - [Feature] Allow reconnecting to page in a separate processes #1755 - [Feature] Add waitFor in ElementHandle #1775 - [Question] Modify Headers to Response #1872 - [Question] - Screenshot on lazyload sites #1904 - [QUESTION] Call close() on BrowserContext closes chromium when used with --single-process option #1906 - [BUG] Click flakes without waitFor #1938 - [Feature] Better error reporting if not all dependencies are installed #1991 - [BUG] - Protocol error (Target.getBrowserContexts): Target closed. #2072 - [Feature] Disable "ImprovedCookieControls" feature in Chromium by default #2113 - [API] No way to change the DPR when using a persistent context. #2143 - [Feature] expose textContent, innerText, getAttribute on page/frame #2175 - [BUG] Page.click() doesn't work when pointer-events: none is toggled off #2187 - [Feature] A friendly RESTful mocking API #2189 - [BUG] Firefox and WebKit request.resourceType() incorrect with EventSource connection #2201 - [BUG] Mocking the server in chromium only works if server is reachable #2216 - [Feature] download browsers in parallel #2245 - [Question] WebKit 13.1+ Support #2247 - [BUG] page.url() does not include hash #2256 - [BUG] page.close() never finished on Firefox persistent context. #2257 - [BUG] page.waitForLoadState(networkidle times out with nested iframes #2258 - [BUG] page.waitForLoadState('networkidle') fails with nested cross origin iframes #2264 - [BUG] Error: Failed to launch browser: Error: spawn ...chrome.exe ENOENT #2265 - npm install / yarn add playwright takes forever #2268 - [BUG] Types don't work in WebStorm ("Unresolved function or method") #2271 - [BUG] Exception has occurred: TypeError TypeError: Cannot read property 'split' of undefined #2272 - [BUG] Header not persisted on request #2275 - [Feature] Expose JSHandle _remoteObject #2276 - [BUG] Page.click throws "Node is either not visible or not an HTMLElement" if element animates from outside the viewport #2278 - [BUG] broken link in docs #2280 - [Question] How to query element by containing text #2282 - [BUG] page.frames() is not accurate #2283 - [BUG] issue with waitForSelector #2287 - [BUG] Can't connect to browser on websocket port #2288 - [Question] how to get values from XML File (XML File in Browser) #2296 - [BUG] Page is missing type declaration for removeListener #2297 - [Question]How to enter text in div tag in playwright test tool?
commits (240)
492a65f9 - browser(webkit): include browserContextId in all Playwright* events (#2513)
8c6c571f - test: add iframe screenshot tests (#2495)
9aa9d6bc - feat(downloads): accept downloads in persistent, allow specifying the downloadsPath (#2503)
ee3379a8 - browser(firefox): remove non-existing files from build (#2507)
55cfff38 - fix(waitForFunction): handle predicate that throws (#2488)
ac88f989 - browser(firefox): properly hide scrollbars in all frames (#2505)
4ec215a8 - browser(firefox): allow setting download behavior of default context (#2502)
2250e960 - browser(webkit): fix wpe build (#2501)
946b4efa - fix(installer): create tmp directory inside browserPath (#2498)
bb4e959d - feat(debug): add note about DEBUG=pw:api to errors (#2496)
4cac74f8 - browser(webkit): continue screecast after cross-process navigation (#2499)
5c3a2752 - feat(debug): improve api logs (#2481)
d5c55749 - chore: cut v1.1.0-post version (#2491)
b77a4b58 - test: increase total timeout when running multiple browsers (#2490)
54f07f9b - test(capabilities): test that video tag can play video (#2477)
3de0c087 - feat: support atomic installation of browsers (#2489)
28e0ce1b - feat(webkit): roll to 1269 (#2486)
3ec79e17 - chore: simplify timeout handling in progress (#2487)
30009973 - chore: migrate waitForEvent to Progress (#2483)
fb058ffe - feat(proxy): allow specifying proxy (#2485)
71dd9c2f - Revert "browser(webkit): exclude gstreamer, its plugins and libdrm fr… (#2482)
87e0c96e - chore: inverse FrameTask callbacks/promises (#2478)
c08da50b - chore: introduce session.sendMayFail to ease error logging (#2480)
fc2432a2 - browser(webkit): exclude gstreamer, its plugins and libdrm from webkit distribution (#2476)
616ae504 - browser(webkit): support bypass list on Mac (#2479)
1d37a105 - chore: migrate navigations to Progress (#2463)
724d73c0 - feat(debug): chromium debugging port (#2246)
a26311a1 - browser(firefox): support proxy bypass (#2467)
58e2ffc9 - test: add more tests for text selectors in shadow dom (#2473)
53f6caf5 - browser(webkit): manually reencode image as multiple frames (#2470)
95ef71c4 - devops: support --juggler argument for firefox/build.sh script (#2472)
c03b39a3 - browser(webkit): roll back to using same proxy for http & https (#2471)
601eddfa - browser(webkit): fix scrolling with mobile viewport (#2468)
3dd1e401 - feat(all): roll CR:775089 FF:1101 WK: 1263 (#2465)
3c9699dc - browser(firefox): support Browser.setProxy method in juggler (#2464)
d5c992e1 - chore: unify evaluations across browsers even more (#2459)
1392dcd6 - browser(webkit): add injected bundle to webkit distribution on linux (#2461)
18aafc36 - fix(build): respect relative path in archive.sh (#2462)
8149e1d9 - build(webkit): inlcude libvpx.so.5 into the .zip (#2458)
a55687d5 - browser(webkit): pass proxy url as is for https support (#2460)
8e6375f5 - chore: reduce the number of evaluate methods, improve types (#2454)
9158ca19 - browser(webkit): roll to 06/03/20 (#2457)
fcc5f75b - Revert "browser(webkit): roll to 06/03/20 (#2455)" (#2456)
09b277c3 - browser(webkit): roll to 06/03/20 (#2455)
1accb514 - chore: convert more actions to Progress (#2444)
f188b0a1 - chore: migrate most actions to Progress (#2439)
abfd2784 - browser(webkit): allow setting proxy per browser context (#2445)
a82139bc - browser(webkit): fix windows and wpe builds (#2443)
7edb6b94 - browser(webkit): configure video frame size over the protocol (#2442)
a3f34fb4 - chore: export juggler as a standalone folder for browser build (#2432)
8e8f9786 - browser(webkit): scale screencast frames on resize (#2441)
c02a862b - browser(webkit): implement support for proxy (#2436)
a644f0a8 - feat(fill): wait for the element to be enabled/writable/visible (#2435)
bf67245d - feat(debug): stream logs from waitForSelector (#2434)
0a34d05b - browser(webkit): encode screencast frames on a dedicated thread (#2433)
45441106 - fix(oopif): race between detachedFromTarget and frameAttached (#2419)
de0bbd30 - chore: remove page pause support (#2431)
e5875310 - fix(webkit): report event source (#2430)
b7df4d57 - chore: migrate wait tasks to Progress (#2422)
721d56a8 - browser(webkit): report 'eventsource' as resource type (#2423)
c001facf - feat(firefox): allow passing user prefs at launch time (#2417)
3cad8576 - browser(webkit): record screenast for non-accelerated compositing (#2418)
8f350e4f - chore: make polling in page cancelable from node (#2399)
acf059fe - fix(click): wait for button, input and select to be enabled before clicking (#2414)
fdd8df60 - Revert "browser(firefox): allow passing user preferences at launch time (#2416)"
a247f7d2 - browser(firefox): allow passing user preferences at launch time (#2416)
8e4a1e7c - fix(text selector): do not match text inside (#2413)
084d5ff4 - browser(webkit): revert all changes and hacks to Page.navigate (#2411)
fc11b59c - chore: update WebKit upstream status
d980ed7e - chore: introduce Progress concept (#2350)
4bd9b303 - test: add a test for clicking a label with pointer-events: none (#2412)
767f6bfe - browser(webkit): report codec init errors to the client (#2410)
1722dcb8 - docs: link to wk upstream status
59a0451b - docs: fix spell mistake on api.md (#2408)
fdd48f89 - chore: remove confusing logging from registry (#2397)
4ac30f35 - feat(webkit): roll WebKit to 1246 (#2400)
4e8a03cd - browser(webkit): roll to ToT 5-28-2020 (#2398)
5277fb94 - test: fix the CSP capability test (#2394)
47ded05c - feat(chromium): roll Chromium to r772575 (#2395)
b62a6558 - chore: add webkit upstream status md (proper folder)
0ca80657 - chore: add webkit upstream status md
7a785ac2 - fix: properly rewrite error message (#2392)
91a102b1 - browser(webkit): fix copyright header (#2393)
fdbd4fe1 - fix(selectors): fix selector parsing for css attributes and quotes (#2389)
7981e4e3 - fix: support event source type in firefox (#2390)
2b21a5f6 - browser(webkit): fix Windows compilation (#2391)
9bf6348a - browser(webkit): GTK screencast recoder based on vp8 (#2388)
0ed052f9 - browser(firefox): expose internal request cause along with external one (#2383)
3f97a9fb - test: add failing test for event source (#2382)
6620008d - chore: follow up to address evaluation review comments (#2380)
46508c6b - test: try to unflake one more cookie test (#2381)
ece47891 - feat(debug): expose playwright object in console (#2365)
0753c2d5 - test: hack in output directory cleanup for parallel runs (#2378)
4413138c - fix(fill): allow to clear number input (#2376)
11d53ad5 - test: disable flaky CSP test on Firefox (#2374)
057ae14a - feat: make browserServer.kill() wait for the process to exit (#2375)
9dfe9348 - feat: Request.postDataJSON (#2368)
e168fdda - fix(evaluate): consistently serialize json values (#2377)
609bc4cf - chore: add stack trace utilities and tests (#2371)
1e2b4643 - feat(debug): when debugging, use zero as default timeout (#2362)
37ec3a6a - fix(types): properly export typescript types from packages (#2364)
415b1148 - feat(webkit): roll webkit to r1242 (#2361)
8f0f32b5 - chore: move debug-related code to src/debug (#2309)
4e86d398 - docs: recommend a dev install of Playwright in the docs. (#2355)
d532cd5d - test: fix cookie tests on WebKit (#2359)
43eed027 - chore: rename root index-for-dev.js into index.js (#2337)
79ec3c91 - test: unflake more cookie tests (#2346)
27d30fe1 - chore: encapsulate more launching logic in BrowserType (#2339)
aac5bf24 - fix(popups): do not override popup size from window features (#2139)
e2972ad5 - feat(click): retry when the element it outside of the viewport (#2330)
55d47fd4 - chore: unify launching server between browser types (#2338)
3aca21c1 - chore: simplify launch routine a bit more (#2336)
3c84e9ec - devops: enable canary publishing (#2335)
5ee64940 - feat(evaluate): return user-readable error from evaluate (#2329)
0a8fa6e4 - test: unflake more cookies tests (#2333)
aae3f1e7 - feat(default context): support selected options for default context (#2177)
2f993018 - test: disable flaky test on win firefox (#2332)
505d94ab - chore: drop dependency on playwright-core in all our packages (#2318)
2ede4bce - chore: further unify launching and connection (#2320)
9154f4b6 - feat(webktt): explicitly enable Playwright domain on start (#2315)
b1c15e45 - test: add failing PageDown test (#2326)
2f345c78 - browser(webkit): fix crash when commands are handled in the UIProcess (#2327)
9ef7e130 - browser(webkit): fix mac compilation (#2319)
f9b437a4 - chore: pull common functionality into the BrowserTypeBase (#2312)
aa0d844c - chore: introduce utility script for evaluate helpers (#2306)
d99ebc92 - browser(webkit): fix mac compilation (#2317)
48440f7e - test: unflake fixtures test (#2313)
9808d8bc - browser(webkit): add Playwright enable/disable commands (#2314)
b17a73c1 - test: try to unflake cookie test (#2310)
8e396fda - fix(types): add missing types for removing event listeners (#2307)
e558f051 - chore: print the launch error message to console (#2304)
e658a3e4 - docs(click.md): update click.md documentation (#2303)
e312845b - fix: less confusing error message (#2305)
545c43d2 - fix: better hittarget testing for clicking (#2217)
b8410bd1 - test: unflake headful window features test (#2302)
de606b95 - fix(chromium): handle various exception values in pageerror (#2293)
7efc22c0 - fix(chromium): websocket wrapper leaks child sessions (#2291)
48164340 - feat(debug): persist devtools preferences in Chromium (#2266)
fbccd328 - test: disable firefox crash tests (#2301)
a010fcd6 - feat(webkit): bump revision to 1238 (#2299)
5d0b5625 - browser(firefox): set initial page url to about:blank (#2300)
8957c868 - feat(debug): add source maps to evaluates in debug mode (#2267)
0bc49061 - browser(webkit): use unsigned long instead of size_t to fix Win (#2295)
96f9bbee - browser(webkit): fix windows build (#2294)
82cab094 - feat(logging): add logging to websocket transport (#2289)
5a6973fe - browser(webkit): support jpeg screencast frames on WPE and Win (#2290)
f24696be - feat: add page convenience methods for textContent and getAttribute (#2235)
359cb3a7 - fix(oopif): adopt main requests into oopifs (#2284)
2bd427ad - feat(exposeBinding): a more powerful exposeFunction with source attribution (#2263)
40ea0dd2 - browser(firefox): make default viewport work in default context (#2277)
9e2733d5 - docs(test-runners.md): add WebStorm comment (#2279)
125312f7 - docs(core-concepts.md): fix typo (#2273)
74ba03b1 - feat(webkit): bump revision to 1235 (#2262)
4bf5742d - fix(chromium): abort fetch requests that lack networkId (#2254)
99b7aaac - chore: refactor injected script harness (#2259)
9c7e43a8 - browser(webkit): roll to 05/15/20 (#2260)
73a26127 - docs: fix webkit badge
04aae1c0 - chore(electron): mark version 0.3.0 (#2255)
5a883a58 - browser(firefox): support internal drag and drop (#2243)
a38ac3fb - fix: report hash in page.url() (#2252)
e035bf3b - fix: update webkit version (#2250)
4d27aadb - browser(webkit): fix compilation on Mac (#2253)
8fb2c7e8 - browser(webkit): fix compilation on Win (#2251)
2073bcb8 - browser(webkit): fix compilation on Mac (#2249)
f743cd97 - browser(webkit): introduce screencast agent in web process (#2248)
63cc1268 - fix(webkit): do not swallow init errors (#2242)
e8e761f7 - chore: use internal BrowserOptions to unify browsers (#2230)
696b40a5 - docs: update click.md
919659a6 - browser(webkit): roll to r1230 (#2241)
17286ab7 - feat(webkit): roll to r1228 (#2232)
62ae0790 - browser(webkit): destroy main window after the view (#2233)
76e10660 - fix(screenshot): use innerW/H instead of offsetW/H to determine viewport size (#2229)
dbef7de4 - feat(electron): types (#2231)
5c43fb4a - browser(webkit): unfork windows bits (#2228)
2bca64a0 - test: mark failing headful tests as such (#2226)
a4b67046 - test: update download test failure expectation (#2225)
34373b3a - browser(webkit): compute non-header suggested name on windows (#2227)
650d7344 - fix(actions): do not wait for the created popups (#2219)
884860b8 - test: unflake launcher test (#2224)
03cae92f - browser(webkit): remove BackendDispatcher::Mode (#2223)
e081ba72 - chore: improve error message (#2222)
d611ca92 - browser(webkit): do not transform about:blank to about:///blank (#2221)
e96e471e - docs: draft for the various click scenarios doc (#2218)
f63ea3ff - feat(downloads): expose suggested filename (#2062)
84f966c3 - docs: fix typo
072dcba9 - api(viewport): do not allow isMobile and deviceScaleFactor for null viewports (#2190)
6361e07a - fix(docs): clarify repeating calls to setHTTPCredentials (#2212)
1f3f42a9 - devops: remove custom caching on travis (#2215)
f10e8c4d - chore(chromium): nicer error when running as root without --no-sandbox (#2214)
5d49c5d6 - docs: refer to "working with selectors" from all 'selector' arguments (#2213)
8b5e4398 - docs: update electron docs
b4acc56d - docs(api.md): elaborate on visibility options in waitForSelector (#2208)
624ca4d8 - chore: restore copyright for SerializedAXNode type
414ae002 - fix(electron): handle in-event await errors (#2207)
ebceaf43 - chore: make prepare_checkaout update browser_upstream/master (#2209)
28845e5c - feat(firefox): bump and use context setters (#2194)
cb465bc6 - fix(abort): abort waiting with error upon disconnect (#2204)
54b056bd - chore: make electron permanently depend on playwright-core@next
3f8dfed6 - feat(electron): add app.firstWindow convenience method (#2195)
fdc9ce8e - browser(firefox): move context settings from creation to setters (#2193)
054ee639 - docs(ci): elaborate ci caching docs (#2192)
e447e9aa - docs: update README.md for playwright-electorn
ffe70846 - feat(electron): experimental electron support (#2166)
a2bee2ca - fix(launch): handle timeout and exceptions during launch (#2185)
9895cd0a - chore: optionally create downloads folder (#2188)
8c083486 - fix(launch): handle websocket connect exceptions (#2184)
0c51a2e8 - docs: add mockiavelli library to Showcase (#2181)
617a00d4 - test(webkit): mark strict cookie tests as passing on linux (#2164)
b88c1a87 - feat(chromium): roll to r767256 (#2183)
2510edc3 - docs(ci): update docs for caching and troubleshooting (#2176)
c5b0baac - chore: remove main index.js from playwright-core (#2178)
d487a315 - doc: fix the route docs (#2174)
437d1b62 - test: fix should poll on interval test (#2180)
ae8d97cd - feat(persistent context): ensure initial about:blank (#2161)
dd6308cc - docs(CONTRIBUTING.md): fix typo in doc (#2169)
5b57303c - browser(webkit): expose Playwright.windowOpen signal (#2163)
8e590310 - chore: introduce debugAssert (#2160)
55a067f5 - docs(readme): update capabilities
83aff38c - feat(webkit): roll to 1124 (#2156)
85bfba52 - browser(webkit): properly specifiy keyIdentifier (#2149)
436bc5ca - test: update golden values in keyIdentifier test (#2155)
1b547167 - test(webkit): add failing keyIdentifier test (#2150)
9885ba20 - feat(firefox): roll to r1093 - 77.0b3 (#2152)
fde2b729 - browser(webkit): rewite Playwright CMakeLists.txt (#2153)
95b84953 - browser(webkit): roll to ToT 5/7/2020 (#2147)
59e9b5c0 - browser(firefox): kick bots
e2475061 - browser(firefox): roll ff to ToT 5/7/2020 (#2148)
755ef116 - test: add focus traversal test (#2141)
7a8dd2c3 - feat(console): allow page.on('console', console.log) (#2145)
51fe8492 - fix(css selector): support comma-separated selector lists (#2120)
4c4fa8d3 - docs: some syntax fixes (#2116)
d39ec35c - chore: Add "homepage" to package.json (#2127)
f86ddacb - docs: mention click(force) and dispatchEvent(click) in the click docs (#2136)
c49a6d74 - test: add a test for response coming from service worker (#2138)
98d32c5d - browser(firefox): do not fail when decoding large responses (#2130)
7a01bb1f - chore: bump package.json version to v1.0.0-post (#2128)
793a2bf7 - fix(firefox): do not run firefox as a part of the installation process (#2125)
10cca041 - browser(firefox): ensure rendering update before taking quads and scrolling (#2123)
41de5bc3 - Revert "chore: mark v0.18.0 (#2122)" (should go only into branch) This reverts commit 19e8c327ba049f248c028ac3f44c37e06d1484a6.
19e8c327 - chore: mark v0.18.0 (#2122)
Browser Versions
- Chromium 84.0.4135.0
- Mozilla Firefox 76.0b5
- WebKit 13.0.4
Raw Notes
ead8b3be - fix(abort): abort waiting with error upon disconnect (#2204) 0ede0535 - chore: introduce debugAssert (#2160)
Browser Versions
- Chromium 84.0.4135.0
- Mozilla Firefox 76.0b5
- WebKit 13.0.4
Raw Notes
73410537 - chore: mark v1.0.1 cd7b3954 - fix(firefox): do not run firefox as a part of the installation process (#2125)
Browser Versions
- Chromium 84.0.4135.0
- Mozilla Firefox 76.0b5
- WebKit 13.0.4
Raw Notes
56efbaba - chore: mark v1.0.0
Browser Versions
- Chromium 84.0.4135.0
- Mozilla Firefox 76.0b5
- WebKit 13.0.4
Raw Notes
27b4fb63 - chore: mark v0.18.0 da903cb5 - chore: cut v0.18.0-post version 7521f69d - browser(webkit): do a full rendering update before accessing layout information (#2121) b56ba083 - feat(webkit): roll webkit to r1219 (#2119) 840e4209 - browser(webkit): support jpeg frames in screencast (#2107) 38a78bf9 - browser(webkit): install page group preferences to new pages (#2118)
Browser Versions
- Chromium 84.0.4135.0
- Mozilla Firefox 76.0b5
- WebKit 13.0.4
Highlights
- Check out our new https://playwright.dev for Playwright documentation and API search!
Breaking API Changes
'waitFor'option ofpage.waitForSelectorgot renamed into'state'
Bug Fixes
#1990 - [page.click] Node is either not visible or not an HTMLElement #2059 - [Question] What versions of Node.js does Playwright support? #2078 - [Question] Does page.click automatically page.waitForNavigation? #2079 - [BUG] Opening links with target="_blank" crashes WebKit #2082 - [Question]why not eat dog food? #2090 - [Question] waitForSelector default - attached vs visible #2093 - [Meta bug] Cross-checking w/ puppeteer to collect and fix more bugs #2110 - [BUG] Unable to launch firefox on playwright@next
Raw Notes
24b777a8 - chore: mark v0.17.0 193924f4 - chore: add script to generate release notes (#2099) d95891eb - fix(install): only install browsers needed by this revision (#2112) 33ebe66a - fix(webkit): allow contenttype with charset in interception (#2108) 1c17929b - chore: add input logging and timeout debugging hints (#2109) 0bb1ba17 - feat(firefox): roll to r1089 (#2106) 52aa9299 - docs(api.md): emulateMedia syntax fixes (#2104) f6210ae9 - fix(webkit): click moving targets on windows (#2101) 7e9a8dd4 - browser(firefox): bump the version 963dc72d - devops: add headful linux bot (#2060) ef9eed87 - docs(api.md): emulateMedia example fix (#2100) 932d6ba6 - feat(chromium): roll to 764964 (Canary) (#2098) 710c156d - fix(chromium): disable same site by default and improved controls (#2097) 142e5859 - browser(webkit): GTK build fix (#2096) 6eabb95b - chore: cut v0.17.0-post (#2095) 4a4e610a - browser(webkit): basic screencast support for GTK and Mac (#2094) bcce4836 - api(waitForSelector): make "state: visible" default, includes rename to state (#2091) 1f021798 - feat(firefox): cache firefox pre-compiled scripts (#2087) 08d71397 - test: add third party cookies test (#2073) c62cb78c - browser(webkit): block 3rd party cookies by default (#2088) bb13a329 - docs: better intro toc 5bc62a0e - docs: add anchors for toc topics eed2bac4 - docs: added overview links 22e75132 - docs(verification): fixed unclosed code tag (#2085) c38f26ea - docs(installation.md): update cache path on linux (#2084) 3979d4f4 - docs: bring snippets higher up in the docs 03ca2978 - fix(webkit): make click work with cross-process _blank target (#2083) f2fcb2b0 - test(webkit): test cross-process nav w/ _blank target (#2080) 0e44589b - devops: attempt to add mac 10.14 (#2076) f8bea85c - feat(webkit): disable pause on click (#2077) bba1cff0 - chore: bump webkit build to kick bots de32d399 - Revert "devops: teach buildbots to run sanity check script (#2064)" (#2075) a9f0c40a - feat(testrunner): improvements to testrunner (#2070) 60eb1bf2 - browser(webkit): provide suggested file name for downloads (#2063) 995c3eb4 - devops: run install tests on common node versions (#2069) d7a1e013 - fix(chromium): do not wait forever for navigations that target another tab/download (#2068) 32514656 - chore: add script to fetch closed bugs since git commit (#2066) 4c2c4855 - devops: teach buildbots to run sanity check script (#2064) 7051c0bf - docs(installation): update windows location
Browser Versions
- Chromium 84.0.4131.0
- Mozilla Firefox 76.0b5
- WebKit 13.0.4
Highlights
- Playwright now uses a single location on your machine to install all browsers. See documentation for details.
Breaking API Changes
- Method
page.waitForis removed. Use explicitly named methods such aspage.waitForSelector,page.waitForFunctionandpage.waitForTimeout. - The
'mutation'polling option for methods likepage.waitForSelectoris removed since it didn't work properly with Shadow DOM.
New APIs
Resolved Issues
#1810 - Improved docs
#1867 - How to close the browser in case of an error (click element not found.)
#1946 - [REGRESSION]: Lots of Navigation timeout errors in 0.14.0
#1950 - [BUG] Logger sink with name browser skips browser:err
#1962 - [BUG] 0.15 Cannot launch new chromium context after closing old one
#1968 - [REGRESSION]: Out of memory errors on 0.15.0
#1973 - [Question] Playwright-Docker help needed
#1977 - What's the actual danger with --no-sandbox and --disable-setuid-sandbox
#1981 - [Question] Documentation for page.waitForSelector() and visibility
#1982 - [BUG] Documentation in regards to text selector engine and single and double quotes
#1983 - [Feature] Add 'attribute' selector to the list of id, data-testid, ...
#1986 - [Question] Alpine Linux Support
#1987 - [BUG] A page.click() that initiates a navigation requires a waitFor() before a page.goto()
#1988 - [BUG] Browsers not installing on Node 14
#1992 - [BUG] install fail
#1993 - [Feature] waitFor() with string for selectorOrFunctionOrTimeout - return of JSHandle or ElementHandle
#1996 - [BUG] CSS attribute selector not working with a value with spaces
#2003 - [BUG] Problem resubmitting form in headful chromium
#2012 - [Feature] page.$ and page.$$ should pierce shadow DOM
#2024 - [Question] Issue with selecting text on the DOM
#2025 - [Question] different behavior in headful and headless mode?
#2026 - [BUG] page.waitForSelector() and waitFor: 'attached' not working properly
#2029 - How can i accept this pop up?
#2030 - [Question] Playwright-chromium is freezing
#2034 - [Question] Iteration over a table's tags to click and remove them
#2037 - [BUG] Element is not found for click
#2052 - [Question] Logo?
#2055 - [Feature] Removal of .$ functions
Raw notes
9c67ce52 - test: simplify pausing tests (#2056) 671e4654 - docs(testrunners): brush up testrunners doc 12edf4f0 - doc: test runner examples (#2057) 06273ef9 - docs(api.md): Fix wording of javaScriptEnabled description (#2050) 848ea69a - test: unflake launcher test (#2049) 953dd36d - feat(api): remove 'mutation' polling option (#2048) 4afd3911 - fix(waitForSelector): use raf polling instead of mutation (#2047) 9f62f299 - feat(install): use shared installation folder by default (#2044) c55db6d3 - browser(webkit): roll webkit to 1213 (#2045) 78b44ed2 - fix: report new window downloads (#2019) 5993a6a0 - fix: throw from eval methods if >1 argument is passed (#2043) 0228ba49 - feat(registry): implement download registry (#1979) 062a8361 - test: cleanup installation tests from top-level env variables (#2022) cccf3f72 - chore: bringing back paused=true c01e554e - test: add more pausing tests (#2040) 67deffe1 - browser(webkit): follow up to satisfy mac linter 3fefa7b7 - docs: fix docs for $foo methods that assumed css selectors (#2039) b94f9108 - browser(webkit): introduce Page.setActivityPaused (#2041) c921cc19 - chore: use xvfb from newer github action (#2035) 4652b9e2 - docs: Recommend using --ipc=host in docker (#2038) 3a29631e - docs: improve docs around actionability and visibility (#2036) 53485726 - fix(console): respect repeat count in webkit (#2032) b11d7f15 - feat(input): retry when hit target check fails, prepare for page pause (#2020) 6c94f604 - feat(chromium): roll to r763809 (#2028) 2cdf2972 - chore: remove uncompiled download-browser (#2018) c7b2c87f - test: add failing test for creating two headful contexts (#1994) b6d1cbf4 - browser(firefox): report new window downloads (#2014) 7f5d8900 - test(click): add a test for 'Element has moved' exception (#2017) 910469cd - chore: do not run git fetch in export.sh (#2015) 62966ba9 - test(permissions): add chromium test for clipboard permissions (#2016) d52bd929 - chore: read browser revisions off browsers.json (#2009) c866c665 - chore: update issue templates 2b5ff83e - test: add failing headful test (#2013) e5345687 - feat(chromium): roll back to r760827 to make headful happy (#2010) f662686f - chore(css selector): temporarily remove light dom shortcut (#2008) 8aab7258 - fix(css selector): properly parse quoted attributes when querying in shadow (#2007) d8cccbdb - test: add goto after click test (#1999) 031587a9 - fix(visibility): unify visibilty checks (#1998) 4b0d9774 - fix(docs): clarify the single/double quotes usage in text selector (#2002) 030c217a - test: add a test for selectors with spaces in css attributes (#2001) 7f8aa703 - api(waitFor): remove waitFor, use specialized wait functions (#1995) f9f5fd03 - feat(selectors): allow to capture intermediate result (#1978) f58d909d - fix(firefox): use separate processes for pages in different contexts (#1976) df7338c2 - Revert "chore: cut v1.0.0-post (#1966)" a2664b15 - docs: update ci section in getting started f386fa94 - test: add failing test for new page downloads (#1984) 9f099731 - chore: update vuln dep (acorn) (#1980) f9bd1d07 - fix(webkit): fix blob downloads on mac (#1972) 7ecf252d - feat(text selector): concat sibling text nodes when calculating text (#1969) b60c006c - chore: simplify and restructure downloads (#1974) a43eac38 - browser(firefox): use separate web processes for different contexts (#1975) b498a3f2 - browser(webkit): make blob downloads work on Mac (#1971) 242c3667 - browser(webkit): fix compilation when orientation events are disabled (#1970) 7afceeb5 - chore: cut v1.0.0-post (#1966) 87a2f655 - docs(readme): fix typo 158e592f - docs(installation): adds requirements and renames the doc (#1965) 8ceba1ee - docs(ci): update ci docs to emphasize gh action (#1964) 28f98ac2 - docs(readme): update readme and intro docs (#1963) 4b263d63 - docs(releasing): update releasing docs according to new process (#1958) 3c71125d - Fix typo (#1961)
Browser Versions
- Chromium 84.0.4125.0
- Mozilla Firefox 76.0b5
- WebKit 13.0.4
New APIs
page.dispatchEvent(selector, type[, eventInit, options])frame.dispatchEvent(selector, type[, eventInit, options])elementHandle.dispatchEvent(type[, eventInit])
Bug Fixes
#1622 - [BUG] Example Dockerfile browser Dependencies #1882 - [Feature] Support single quotes in text selector engine #1936 - [BUG] Firefox cannot download Blobs
Raw notes
906d117 - chore: mark v0.15.0 5146dfc - chore: cut v0.15.0 (#1957) 9415dc2 - feat(chromium): roll Chromium to r762211 (#1956) 7c9762f - fix: support blob downloads (#1954) 21dc346 - devops: auto-correct links in our documentation (#1955) 6296614 - test: mark test as flaky on FFOX 5ac7f0e - fix(text selector): allow single quoted text (#1952) e6c2cad - browser(webkit): add frame id to download info (#1953) d354e9c - docs(contributing): clean up headings c1c0237 - api(dispatchEvent): page, frame and handle versions added (#1932) 671cfa0 - fix(types): support objects with typed keys and values (#1752) 793586e - fix(click): throw instead of timing out when the element has moved (#1942) f11113f - feat(firefox): roll to 1085 (#1951) fd17cfb - docs(contributing): add info about skip and fail (#1944) 05f0797 - browser(firefox): support blob downloads (#1945) 2637805 - feat(webkit): roll to 1208 (#1948) 97a1aa5 - docs: update version table 40bed0f - docs: fix typos (#1947) dc23c56 - tests(downloads): add a test for Blob downloads (#1936) (#1939) 471ccc7 - browser(webkit): roll to ToT 4/23/2020 (#1943) 2fcc2b5 - chore(chromium): resize browser frame when emulating viewport (#1924) fa59372 - browser(webkit): roll to ToT 4/22/2020 (#1940) 51ed5c5 - fix(examples): closes #1916 (#1934) b516ac4 - fix: Dockerfile for Firefox (#1937) bf7430f - docs(readme): remove FAQ link 0b7f789 - devops: try using another Github Actions event to trigger releases (#1931) 70d727d - browser(webkit): ensure autorelease pools are drained on mac (#1933)
Browser Versions
- Chromium 84.0.4117.0
- Mozilla Firefox 76.0b5
- WebKit 13.0.4
Highlights
- Common areas such as working with elements, filling a form and many more are now covered in the documentation section.
- Built-in
cssandtextselectors now pierce open shadow roots. page.press(selector, key[, options])now supports shortcuts such asControl+Shift+T.- Many input actions like
page.click(selector[, options])now automatically retry when the target element has been detached, for example if it was replaced at the end of an animation. - Playwright now provides API for capturing logs, see the
Loggerclass.
Breaking API Changes
dumpio parameter is gone. Debug logging is now configured via the environment:
DEBUG=pw:browser* node test.js
There are more loggers, use pw:* to pick the ones you like.
For more complex scenarios you can use the logger sink in the launch / create context apis.
page.on('filechooser')event now dispatches instances of aFileChooserclass.- Actions that automatically wait for the navigation like
page.click(selector[, options])no longer have an optionwaitUntilto specify a load state. In the rare cases when this is needed, consider usingpage.waitForLoadState([state[, options]])method. networkidle2option is removed.networkidle0is an alias tonetworkidle.
New API
class: FileChooserclass: LoggerbrowserContext.unroute(url[, handler])page.on('crash')page.setInputFiles(selector, files[, options])page.unroute(url[, handler])elementHandle.getAttribute(name)elementHandle.innerHTML()elementHandle.innerText()elementHandle.selectText()elementHandle.textContent()
Bug Fixes
#1240 - [BUG] Click misbehaviour for Chromium in visible area #1731 - [BUG] Installation of playwright is successful even if fetching browser binaries fails #1735 - [REGRESSION]: Unclear error message when undefined is passed to page.click() #1762 - [BUG] When clicking on a link navigating away from the website, playwright throws a removeFrameSession failure #1798 - [BUG] npm says ""Unable to find a readme for playwright@0.13.0"
Raw Notes
cf1fd79 - chore: mark v0.14.0 (#1918)
9bd55e9 - docs(readme.md): drop FAQ (#1930)
e318ee5 - docs(readme): fix chromium version
a147d3f - chore: sync versions across packages (#1929)
511883d - devops: fix checking if branch is tip-of-tree when publishing @next (#1926)
53c78a8 - fix(downloads): fix acceptDownloads complaint (#1777) (#1923)
00e8d88 - fix: do not auto wait for downloads (#1921)
fa6f738 - feat(browser): roll webkit to r1205 (#1922)
b7afbf8 - fix(webkit): ignore WebSocket certificate errors on Mac (#1900)
91c0631 - browser(webkit): extract webkit embedders into webkit/src (#1919)
6ecac8c - chore: restore networkidle0 alias (#1920)
95b8f61 - test: add more download tests (#1917)
136173a - chore: cut v0.14.0 (#1913)
f8f3b88 - docs(verification.md): fix typo
2926d33 - test: disable flaky firefox tests (#1912)
89007c8 - devops: make README.md to always reflect tip-of-tree (#1911)
2313ceb - browser(webkit): fix leaking popup windows (#1908)
c474c54 - devops: run CI against release branches too (#1910)
48cbee1 - browser(firefox): disable the extension blocklist (#1909)
0815ff3 - docs(browsers.md): fix nit
fa18c41 - docs(browsers.md): updates and nits
1865058 - docs(browsers.md): updates and nits
2d68830 - feat(testrunner): support --file to filter tests by test file name. (#1903)
89b2fe5 - feat: introduce PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD env variable (#1892)
0935144 - docs(browsers): add documentation describing managing browsers (#1907)
88366f3 - docs: adds introduction.md (#1905)
0f338ec - devops: introduce release publishing workflow (#1894)
e9914cc - docs: fix formatting
18fb7f9 - browser(webkit): ignore WebSocket HTTPS errors on Mac (#1899)
74ce041 - browser(webkit): roll to ToT 4/20/2020 (#1898)
96331de - devops: start actually publishing @next versions for tip-of-tree commits (#1893)
5b085fd - feat(logger): introduce context-level logger (#1896)
2320d9c - feat(webkit): roll to r1201 (#1897)
5d98631 - test: add a test for non-navigation downloads (#1895)
47c3841 - chore: bring back DEBUG= logging (#1891)
068e1e0 - devops: fix next version generation
ac8a30c - devops: start releasing from Github Actions (#1890)
80a7fcd - docs(verification): nits and typos
948d51d - fix(types): export selected types (#1881)
1935824 - devops: add package-lock.json (#1859) (#1889)
c2fe55e - docs: add verification guide (#1885)
37ad552 - browser(webkit): allow windows larger than display on Win (#1888)
0656771 - api(networkidle): remove networkidle2 (#1883)
1dff8e8 - chore: bump minimist dependency (#1866)
8ca120f - fix(tests): fix DEBUGP when running in parallel (#1886)
fb45c75 - feat(webkit): simulate device orientation events (#1852)
93c9083 - tests(firefox): unskip "should report shiftKey" on Linux&Win (#1833)
3485ffb - fix(docs): fix snippets, integrate navigations to ToC and core concepts (#1884)
d1a9551 - chore: remove old TODOs, add a test (#1879)
a000335 - test: add a test for sourceURL in exception stacks (#1880)
649f37f - fix(pageerror): report correct error message and stack (#1862)
4d8c057 - docs(selectors&ci): brush up respective sections
621df5d - docs: fix cross references (#1877)
ed89c37 - docs: fix API references
5406b77 - docs: add a note about string quoting
effeaaf - fix(click): force any hover effects before waiting for hit target (#1869)
6231d50 - docs(core-concepts): follow up on object handles
39b37be - docs(core-concepts.md): add section regarding object & element handles (#1871)
26c7b30 - browser(webkit): bump version to kick off next build on bot (#1875)
c0ce6c7 - browser(webkit): fix win compilation (#1874)
1f43ae6 - feat(logging): introduce logger sink api (#1861)
b825983 - devops: disable previews on telegram bot messages
e0d3e48 - devops: use node.js to gzip logs
ea95a91 - devops: start uploading build logs to bots (#1870)
ef7815e - doc(network): reorder items in network docs
f6fec27 - docs(core-concepts): add selectors and auto-wait sections
92a4c70 - docs(input): include clicks and files sections (#1868)
92b6bc0 - Revert "devops: add package-lock.json (#1859)"
75f35e4 - devops: add package-lock.json (#1859)
c359116 - fix: create _defaultContext only in persistent mode (#1854)
022bc67 - chore(chromium): allow passing --remote-debugging-port for debugging (#1857)
55b4bc9 - feat(actions): requery the element when it was detached during the action (#1853)
e466508 - browser(webkit): fix mac&win compilation (#1856)
cf82e2c - fix(testrunner): await terminations before reporting test results (#1855)
1912fbf - browser(webkit): simulate device orientation events (#1851)
cf415bb - test: add failing popup tests (#1849)
39c9a45 - feat(firefox): roll to r1084 (#1850)
2a866d6 - test(network): rebaseline request failed test on win
2b96b85 - fix(firefox): throw error when added script blocked by CSP (#1841)
e8bf5fd - Update pngjs and jpeg-js dependencies (#1845)
a248430 - reapply api(waitUntil): remove waitUntil options from the actions (#1842)
3151ea2 - test: disable flaky fixtures test (#1839)
31460b1 - Revert "api(waitUntil): remove waitUntil options from the actions (#1834)" (#1840)
846af74 - browser(firefox): do not use system colors for controls (#1838)
51b8685 - feat(testrunner): support --repeat CLI flag to repeat tests (#1828)
d0b8710 - api(waitUntil): remove waitUntil options from the actions (#1834)
af2340c - fix(click): explicitly fail when element detached during click (#1835)
629b772 - docs(loading): nits and fixes
04ed683 - tests(firefox): unskip network idle tests (#1832)
e67603d - docs(emulation): review, fix nits
42eefa6 - docs: emulation guide (#1831)
55c01da - fix(firefox): fire "requestfailed" event on network errors (#1817)
f594229 - feat(api): wait for popups and downloads when performing actions (#1744)
67cd569 - docs: typo fix
036f9e5 - fix(webkit): allow fufilling requests to redirects (#1830)
5ec2c58 - test(selectText): restore firefox tests (#1829)
da24fe1 - docs: rename to upload-download.md
ae6b1ba - docs(uploads): fix typo
77f1a70 - browser(firefox): send requestFailed on network error (#1816)
0d4f73f - docs(core-concepts): some nits (#1827)
5e18378 - fix(webkit): do not access mainFrame when initialization has failed (#1825)
08c8a74 - docs(network): polish network docs (#1826)
858f643 - docs(concepts): introduce core concepts doc (#1824)
2280126 - api(setInputFiles): introduce page/frame helpers, document, break compat (#1818)
58bb874 - docs(network): introduce network docs (#1822)
26018aa - feat(chromium): roll Chromium to r759486 (#1823)
69a9867 - feat(webkit): roll to 1197 (#1820)
1b0467f - fix(chromium): get headers from browser process when intercepting (#1809)
ba36860 - feat(api): page.unroute to remove routes (#1813)
0426354 - feat(firefox): roll to r1082 (#1819)
041406a - fix(firefox): enable remaining focus tests (#1803)
167d265 - fix(testrunner): make .repeat() retain test order (#1814)
a46a324 - browser(firefox): roll to ToT 4/15/2020 (#1815)
56aa4c2 - fix(selectors): do not automatically enter shadow roots with >> (#1812)
f3451d9 - browser(firefox): focus all top frames by default (#1811)
88054e3 - feat(docs): initial version of the loading explainer (#1800)
f05a8bd - browser(firefox): override document.hasFocus() in main frames (#1802)
b2de970 - browser(webkit): events informing about popup windows being open (#1794)
abb87f2 - devops: always get BUILD_NUMBER from upstream (#1805)
cbad583 - browser(firefox): prepare to collect signals during actions (#1772)
8c40b92 - fix: set non-0 exit code for install scripts if there are problems (#1739)
9efc663 - chore: generate README.md for playwright package on prepublish (#1801)
762dfe1 - browser(webkit): fix intercepting with a redirect (#1787)
60eb3cd - docs(input): minor edits 3
089a9dd - docs(input): minor edits 2
438d276 - docs(input): minor edits
50680de - docs(input): start crafting the input cheat sheet (#1804)
b0d79d5 - feat(shadow): make css pierce shadow by default (#1784)
0ba823d - feat: introduce page.on('crash') event (#1782)
aeabf9d - test: mark cookies test as flaky on win (#1796)
e9b4700 - chore: assert selector is a string (#1795)
d07105a - fix: do not capture exceptions while emitting events (#1790)
52fe02e - devops: enforce strict treatment of unhandled rejections (#1789)
3167f2d - fix(chromium): prevent errors when frame does not exist when detaching from oopif (#1767)
451a6b7 - test: add more focus() tests (#1793)
b232e00 - fix(firefox): make ElementHandle.scrollIntoViewIfNeeded pass (#1786)
da683b2 - feat(selectAll): allow selecting all in the inputs and in the plain dom (#1783)
b2c65db - test: mark permissions tests as flaky on Linux & Firefox (#1791)
ea7aadb - devops: bump total tests timeout to 30 minutes
d5e75d8 - browser(firefox): avoid clobbering scroll requests after scrollIntoViewIfNeeded (#1785)
24d51cb - test: delete "Node.constructor.name in utility context" (#1788)
9d05038 - feat(hints): hint at how waitFor(time) is bad for production (#1781)
2e6f544 - chore(webkit): stop using windowOpen signal to determine initial empty page (#1776)
c2fc403 - doc(keyboard): document Shift+ArrowLeft notation (#1771)
274c6c1 - test(chromium): add more oopif tests (#1685)
bb0b6cd - Update api.md (#1773)
cd5a48f - test(geolocation): test context isolation (#1770)
32ff5a7 - devops(circleci): properly run all tests
abf1219 - docs(api.md): string values should be quoted (#1766)
1c1d81c - fix(firefox): make scroll&click tests pass (#1760)
f36973f - browser(webkit): propagate language change to site processes (#1769)
b95fcae - browser(webkit): move context instrumentation from pool to dataStore (#1763)
a3571c2 - fix(testrunner): respect timeout=0 in hooks (#1764)
29a6cdf - fix(tests): fix a race with golden setup (#1757)
9542f47 - feat(selectors): deep selector which pierces open shadow roots (#1738)
126b54f - browser(firefox): implement Page.scrollIntoViewIfNeeded (#1759)
3b23041 - devops: use node 10 on appveyor (#1714)
62a493e - chore(test): move more test options to state (#1761)
a7572c7 - feat: nicer error message for page.addScriptTag (#1754)
8536fa8 - test(interception): add redirect test, failing in webkit and firefox (#1753)
97c4054 - test(websockets): add web sockets tests (#1758)
277c7d8 - test: close extra browser (#1756)
368e1cc - chore(input): refactor keyboard layout, extract pure layout (#1681)
9249f33 - feat(webkit): roll WebKit, migrate to Playwright.exe (#1749)
bf656ea - fix(tests): accomodate isplaywrightready (#1746)
cd2ecb2 - fix(types): allow explicit subtypes for unwrapped handles (#1747)
383332c - browser(webkit): trim down the win embedder (#1748)
909dd74 - browser(webkit): roll to r259720 (#1708)
a1ffed6 - fix(firefox): do not create first window on start (#1727)
99c3f2b - browser(webkit): fork windows minibrowser (#1743)
1838405 - docs(ci): update link to github action (#1742)
d0c19e5 - feat(firefox): update to 1076 (#1734)
f282400 - fix(firefox): disable captive portal service (#1737)
3584205 - fix(chromium): associate navigation requests with navigations (#1724)
42beb37 - feat(test): introduce test.config.js (#1725)
7189d19 - feat(ci): upload test output folder from github actions (#1733)
78abf5c - feat(api): add getAttribute, innerText, innerHTML, textContent (#1717)
775604d - feat(webkit): update to 1190 (#1728)
db34d43 - browser(firefox): make juggler web socket work in -silent mode (#1726)
1b366b0 - fix(test): properly handle custom executable path (#1723)
b385ea8 - chore: bump version to v0.13.0-post (#1721)
Current Status
- Chromium 83.0.4101.0. Tests: 983 passing, 7 failing.
- Webkit 13.0.4. Tests: 916 passing, 6 failing.
- Firefox 75.0b8. Tests: 908 passing, 13 failing.
Detailed status can be found at IsPlaywrightReady?
Highlights
- New downloads API to track downloads
- Playwright now ships new typescript types with better support for evaluates, events, and many other parts of the API
- Out-of-process iframes are now supported in chromium! 🎉(more info: https://github.com/puppeteer/puppeteer/issues/2548 and https://bugs.chromium.org/p/chromium/issues/detail?id=746266)
- Running Playwright on Github Actions is easy now with playwright-github-action
New API
- new
Downloadsclass - new
colorSchemeoption in abrowser.newContext()method - new
acceptDownloadsoption in abrowser.newContext()method - new
contentScriptoption in aselectors.register()method - new
waitUntilandtimeoutoptions inelementHandle.setInputFilesmethod
Bug Fixes
#1316 - Allow custom selector engines to run in the main world
#1427 - [Feature] text= selector to match
#1440 - [Feature] Warning, instead of error, on devtools: true
#1442 - [BUG] Fill throws "Element is not visible" despite waiting for visibility
#1510 - [BUG] extract-zip fails npm audit
#1518 - [BUG] establish a bot to validate install flow
#1535 - [BUG][0.12.1] Unable to install on mac10.13
#1553 - [BUG] OOPIFs cannot read property 'xxx' of undefined for iframes in non-headless mode
#1589 - [Question] Could you please update the link to e2e Boilerplates ?
#1592 - [Question] $eval vs getProperties
#1613 - [BUG] Documentation regarding video playback in Playwright
#1651 - [BUG] PLAYWRIGHT_BROWSERS_PATH throws error on subsequent installs
#1674 - [Feature] Overload waitForEvent to return specific type
Raw Notes
17e645a - chore: mark version v0.13.0 (#1720)
3a1ffea - fix(types): add types for waitForEvent (#1715)
2fd7f4e - devops: fix update_version.js script
2d57fff - fix(tests): fix multiple browsers tests (#1718)
6723254 - docs: remove stale file (#1719)
d5a746a - chore(ci): use playwright github action (#1712)
ade9d23 - test: remove module.export.describe wrapper (#1716)
2ef8e26 - test: structure tests to use environments, closer to end user (#1713)
be06bb0 - test: mark headful test as slow (#1710)
22a7636 - browser(webkit): always open local Web Inspector on "Inspect element" (#1711)
4d4e856 - browser(webkit): open inspector undocked by default (#1706)
5b4d32d - fix(chromium): fix a race in persistent context launch (#1702)
685f14d - feat(firefox): update to 1075 (#1705)
aff2ffa - browser(firefox): manage network activity per page (#1700)
20ff327 - feat(testrunner): catch delegate errors (#1704)
0ff2e6a - test: move api coverage to a spec file (#1703)
af01d15 - test: slim down test utils (#1701)
d21e2c9 - docs(api.md): clarify downloads lifetime (#1698)
118333a - test: fix event coverage on Chromium (#1693)
222d01c - devops(docker): Install ffmpeg dependency, adding codecs necessary for video playback in Firefox (#1627)
39e06f0 - feat(testrunner): improve reporting of unhandled errors/rejections (#1697)
a7ae205 - feat(firefox): support downloads (#1689)
949dc7b - chore: bump extract-zip dependency (#1696)
c6f580f - chore: migrate from timeouts to deadlines internally (#1695)
362b72c - docs(docker): fix tag in docker run command (#1694)
e683c08 - fix(fill): make fill work with date/time inputs (#1676)
e0c8fbf - test: put test runner api on global, remove unused parameters (#1684)
e15fc08 - chore: migrate node types to 10.17.17 (#1690)
becf97f - browser(firefox): report navigation request failure for downloads (#1688)
4cf5cf6 - docs(api.md): fix link to download class
7b2736b - browser(firefox): support downloads (#1683)
889cf8f - fix(input): climb dom for pointer-events:none targets (#1666)
3dc14ed - fix(colorScheme): make light scheme default on all browsers (#1668)
cd39053 - feat(testrunner): make it easier to setup golden matcher (#1682)
e519a3d - fix(testrunner): better capture Location for hooks (#1680)
f2b13c0 - chore(testrunner): split TestRunner into parts (#1679)
aeeac55 - feat(chromium): support oopifs (#1664)
56fbfc2 - fix(firefox): do not make stray network requests (#1673)
11ad172 - browser(firefox): allow setting colorScheme on the context level (#1672)
5673fd7 - feat(firefox): bump to 1071 (#1670)
2eba79b - fix: permissions in mobile and geolocation example (#1667)
65ca87c - fix: fix PLAYWRIGHT_BROWSERS_PATH treatment (#1662)
17039f1 - fix(webkit): fix non-mac screenshots w/ dsf (#1665)
a91304a - feat(selectors): attribute selectors pierce open shadow roots (#1656)
e9428b6 - devops: fixate diff algorithm to not rely on dev settings (#1663)
3c01bf6 - browser(webkit): account for non-Mac device scale factor (#1661)
b7d0c32 - fix(browser): wait for the pipe to disconnect in browser.close (#1652)
b89df07 - test: add device scale factor screenshot tests (#1660)
823f961 - feat(testrunner): migrate from events to a delegate (#1647)
f216ab9 - chore(chromium): small improvement with updating touch (#1659)
fc73d54 - browser(firefox): instrument all browser windows early enough (#1645)
270206e - feat(text selector): match button input by value (#1657)
f8ecdff - fix: typo in input.ts (#1653)
bebce8f - feat(webkit): bump version to 1187 (#1646)
1f2803b - feat(testrunner): removeEnvironment (#1650)
ea16e55 - fix(lint): import errors (#1649)
a9be3c5 - feat(text selector): pierce shadow roots (#1619)
75571e8 - feat(downloads): support downloads on cr and wk (#1632)
3d6d9db - fix: wait for the process to close when closing the browser (#1629)
b1580a3 - browser(webkit): roll to r259389 (#1643)
d38baae - feat(testrunner): nested environments (#1635)
f3f10ae - browser(webkit): support downloads on windows (#1642)
692f4db - devops(ci): added job for testing package installations (#1572)
a1f22aa - chore: upgrade typescript to 3.8.3 (#1641)
2ac6967 - docs(api.md): remove dead link to FAQ section (#1640)
7c2ddc2 - feat(firefox): support timezone override (#1578)
e76f8de - browser(firefox): reland "instrument all windows, support silent mode" with Linux fix (#1634)
c345cfe - test: disable one flaky test on Chromium (#1633)
14dbf4a - chore(tests): meaningful split between test.js and playwright.spec.js (#1630)
9d04dcc - docs(examples): working with selectors (#1624)
e241c1b - chore: remove web mode (#1625)
cf49a9e - browser(firefox): make timezone override work on Win (#1628)
1f0b7bf - docs(api): update ordering for $eval and $$eval (#1623)
c218d8c - fix(firefox): isolate ignoreHTTPSErrors setting between contexts (#1617)
c2617c0 - Update README.md
f87e645 - feat(testrunner): introduce environments (#1593)
a7b61a0 - fix(text selector): by default, do a substring match (#1618)
1da2141 - browser(firefox): delete Browser.setIgnoreHTTPSErrors (#1616)
4ac98da - browser(firefox): set ignoreHTTPSErrors per context (#1614)
2ce85f9 - Revert "browser(firefox): instrument all windows, support silent mode… (#1615)
6053784 - feat: add missing slowMo to launchPersistentContext (#1597)
a853690 - fix(types): don't export derived types (#1598)
9e85f8d - chore(waitForEvent): refactor waitForEvent into a single implementation (#1602)
314eb40 - browser(firefox): instrument all windows, support silent mode (#1612)
34610f2 - chore(tests): use public types for the tests (#1600)
2402aad - docs(api): elaborate on fill vs type (#1608)
dd4fe90 - feat(webkit): roll WebKit to r1185 (#1611)
d0073ef - chore(firefox): update cheatsheet with logging instructions (#1609)
307b33a - feat(chromium): roll to r754895 (#1610)
92c5ab3 - fix(types): correctly infer type in $eval and $$eval (#1603)
08aebc7 - fix(types): add types for waitForEvent (#1601)
13a6c89 - fix(test): actually test if page.waitFor accepts arguments (#1599)
a2e1d4c - browser(webkit): implement support for downloads (#1596)
950d427 - fix: catch websocket error events (#1595)
eabba56 - docs(api.md): clarify jshandle.getProperties() method (#1594)
43b91e6 - browser(firefox): implelemt timezone overrides (#1577)
d130479 - feat(webkit): roll webkit to 1184 (#1570)
fdc3612 - browser(firefox): refactor targets/contexts/dispatching (#1590)
1f08b72 - test: add web socket leak test coverage (#1586)
31f186c - fix(browserFetcher): support macos 10.13 for firefox and chromium (#1549)
d9c064b - docs(showcases): fixed dead link to e2e boilerplates (#1591)
a007cae - Fixed small typos (#1588)
b6166c9 - chore(testrunner): introduce Location class (#1585)
c49b856 - chore(testrunner): remove setup() helper (#1584)
a41836b - chore(testrunner): introduce TestRun (#1582)
5499b18 - feat(websocket): wrap firefox web socket too (#1580)
b85ab89 - chore(testrunner): make most modifiers external (#1581)
4bd46ba - feat(testurnner): allow multiple hooks isntances and per-test hooks (#1571)
6503c83 - fix(install): speculative fix for generateChromiumProtocol (#1583)
f72b6b4 - test: try to unflake fixtures tests (#1574)
b4a2014 - test: add failing FF test around ignore https (#1576)
6903496 - fix(build): generate protocol in chromium (#1579)
a042466 - chore(testrunner): remove effectiveMode and effectiveExpectation (#1569)
48516ed - feat(websocket): use proxy web socket on chromium (#1573)
4e89939 - chore: do not try/catch buffer.concat (#1575)
e796bfd - browser(webkit): do not apply platform filters to accessibility snapshot (#1528)
00cb4e3 - chore: move transport to object messages (#1567)
af7a16c - chore(testrunner): merge test spec with test, suite spec with suite (#1566)
72ae3a9 - feat(firefox): emulate device size (#1565)
3535a82 - browser(firefox): emulate device size (#1561)
f503672 - test(firefox): enable configurable args test (#1564)
59fa2cb - test(firefox): enable locale tests (#1562)
4826b3a - browser(firefox): make locale override apply to Number/Date formatting (#1560)
b473d9d - chore(firefox): remove FFPage._initialize to ensure early initialization (#1554)
f420cbb - test: fix race in 'should respect routes from browser context' test (#1559)
9d0f465 - browser(firefox): make call argument properties configurable (#1558)
aad82e0 - chore(testrunner): decouple UserCallback from location and timeout (#1557)
5d03be7 - feat(webkit): roll WebKit to r258828 (#1517) (#1556)
8f8b75c - devops(webkit): force JHBUILD on GTK/WPE for now (#1555)
b24262b - feat(browser): roll Firefox to r1059 (#1551)
b1c156f - browser(firefox): fix user gesture in evaluation (#1550)
f2d72b3 - test: enable flaky worker tests on Firefox (#1548)
81bd8de - feat(testrunner): composable and bindable attributes and modifiers (#1547)
c468e92 - chore: speedup npm install from a github checkout (#1545)
ece43ae - test: mark 100mb evaluate test as slow (#1546)
bce8fc1 - feat(selectors): allow running selectors in main world (#1533)
89e123b - test(firefox): enable CSP tests that use new Function() (#1542)
09cbf33 - browser(firefox): wait for script to be evaluated in Worker (#1543)
7e75cef - devops: restore publishing @next version (#1540)
2203e9c - browser(firefox): bypass CSP when calling functions from debugger (#1541)
b611984 - feat(testrunner): modifiers and attributes (#1538)
c01ad84 - fix(fill): use isVisible to be consistent with waitForSelector (#1539)
60942d0 - chore(selectors): move selectors logic to selectors.ts (#1536)
1e007b2 - devops: temporary disable @next deployment on travis
6ee7852 - chore: update release guide and helper script (#1521)
ef9e04d - fix(permissions): fix notifications permissions on firefox (#1531)
6be3634 - browser(firefox): fix permissions check and notifications name (#1530)
2d5b701 - test(firefox): fix should close browser with beforeunload page (#1532)
aba670d - browser(firefox): roll Firefox (#1534)
5bde0b5 - feat(auth): fix firefox auth flake (#1525)
8af21d1 - browser(firefox): fix authentication (#1524)
1f48efe - browser(firefox): ignore beforeunload handlers in Browser.close() (#1526)
c7b3744 - docs(api.md): fix typo (#1529)
4b1fa2f - feat: show warning on ff & wk if devtools was given (#1463)
a2ee7a1 - fix(testrunner): do not spam output after termination (#1511)
3e8a6ac - devops: update docs regarding bubblewrap on linux
7943e00 - Revert "feat(webkit): roll WebKit to r258828 (#1517)" (#1522)
231c878 - devops: support browser aliases in export.sh and prepare_checkout.sh (#1520)
e14efd5 - feat(webkit): roll WebKit to r258828 (#1517)
dc7d221 - chore: bump version to v0.12.1-post (#1516)
Current Status
- Chromium 83.0.4090.0. Tests: 972 passing, 4 failing.
- Webkit 13.0.4. Tests: 905 passing, 6 failing.
- Firefox 74.0b10. Tests: 873 passing, 36 failing.
Detailed status can be found at IsPlaywrightReady?
Bug Fixes
#1513 - [REGRESSION] npm install playwright@0.12.0
Raw notes:
a7ca2fe - chore: mark version v0.12.1 (#1515) ed746d9 - fix: fix all packages installation (#1514) 1084008 - chore: update release guide a4dca79 - chore: update release guide ed6e0d5 - chore: bump version to v0.12.0-post (#1512)
Current Status
- Chromium 83.0.4090.0. Tests: 972 passing, 4 failing.
- Webkit 13.0.4. Tests: 905 passing, 6 failing.
- Firefox 74.0b10. Tests: 873 passing, 36 failing.
Detailed status can be found at IsPlaywrightReady?
Highlights
-
There is no extra window when launching in headful mode.
-
Default viewport has been changed from 800x600 to 1280x720.
-
Published recipes for popular CI environments.
-
Playwright now includes a carefully crafted
index.d.tsfile with documentation inlined from api.md. Any type-related issues are welcome. -
Many APIs are now available on browser context, for example
browserContext.route(url, handler). This makes it easier to setup context once and ensure that all pages and popups behave consistently. -
Many actions (for example,
page.click(selector[, options])orpage.evaluate(pageFunction[, arg])) by default wait before and after performing an action to facilitate linear workflow.- Before action: input actions like
clickorfillwait for the element to be present in the dom, displayed, stop moving and receive pointer events. This behavior can be disabled by passing{force: true}option. - After action: many actions wait for any triggered navigations to finish. Option
waitUntildetermines the "navigation finished" condition, for exampleloadordomcontentloaded.
This change eliminates the need for explicit waits:
// Waits for the link to be present and clickable, // clicks it and waits for the navigation to finish. await page.click('a'); // Ready to use. console.log(await page.title());Previously, it was necessary to wait for preconditions and postconditions to avoid flakiness:
// Waits for the link to be present. // Not needed anymore. await page.waitForSelector('a'); await Promise.all([ // Waits for the triggered navigation to finish. // Not needed anymore. page.waitForNavigation(), // Clicks the link. page.click('a'), ]); // Ready to use. console.log(await page.title()); - Before action: input actions like
-
Evaluation functions (for example,
page.evaluate(pageFunction[, arg])) now accept nested handles inside objects/arrays, but only take a single argument.const x = await page.evaluateHandle(() => window.scrollX); const y = await page.evaluateHandle(() => window.scrollY); // Old style, does not work anymore: await page.evaluate((x, y) => x + y, x, y); // New style, passing an object: await page.evaluate(({x, y}) => x + y, {x, y}); // New style, passing an array: await page.evaluate(([x, y]) => x + y, [x, y]); // New style, passing arbitrary object structure with handles inside: await page.evaluate(({ scrollOffset }) => scrollOffset.x + scrollOffset.y, { scrollOffset: { x, y }});
Breaking API Changes
-
BrowserContext
browserContext.setCookies()is renamed tobrowserContext.addCookies(cookies).browserContext.setPermissions()is renamed tobrowserContext.grantPermissions(permissions[, options])and grants additional permissions instead of overriding entire permissions list.
-
BrowserType
browserType.devicesis removed.browserType.downloadBrowserIfNeeded()is removed.browserType.errorsis removed.browserType.launchPersistent()is renamed tobrowserType.launchPersistentContext(userDataDir[, options]).
-
ChromiumTarget
ChromiumTarget, related events and methods are removed. UsebrowserContext.on('page'),chromiumBrowserContext.on('backgroundpage')andchromiumBrowserContext.on('serviceworker').chromiumTarget.createCDPSessionis moved tochromiumBrowserContext.newCDPSession(page).
-
ElementHandle
elementHandle.click({relativePoint})-relativePointis renamed toposition.elementHandle.click({clickCount})-clickCountnow clicks multiple times, instead of producing a single event with aclickCountproperty.elementHandle.select()is renamed toelementHandle.selectOption(values[, options]).elementHandle.tripleclick()is removed.elementHandle.visibleRatio()is removed.
-
Frame
frame.click(selector, {relativePoint})-relativePointis renamed toposition.frame.click(selector, {clickCount})-clickCountnow clicks multiple times, instead of producing a single event with aclickCountproperty.frame.select()is renamed toframe.selectOption(selector, values[, options]).frame.tripleclick()is removed.frame.waitForLoadState([state[, options]])now takes a separatestateparameter.
-
Keyboard
keyboard.sendCharacters()is renamed tokeyboard.insertText(text).
-
Page
page.on('workercreated')is renamed topage.on('worker').page.on('workerdestroyed')is moved toworker.on('close').page.click(selector, {relativePoint})-relativePointis renamed toposition.page.click(selector, {clickCount})-clickCountnow clicks multiple times, instead of producing a single event with aclickCountproperty.page.evaluateOnNewDocument()is renamed topage.addInitScript(script[, arg]).page.route(url, handler)handler function now accepts two parameters:RouteandRequest. Routing methodsabort,continueandfulfillare only available on theRouteclass.page.select()is renamed topage.selectOption(selector, values[, options]).page.tripleclick()is removed.page.waitForLoadState([state[, options]])now takes a separatestateparameter.
-
Request
request.redirectChain()is replaced withrequest.redirectedFrom()andrequest.redirectedTo().
-
Response
response.buffer()is renamed toresponse.body().
-
Selectors
selectors.register(name, script)now requires anameparameter.
New APIs
-
BrowserContext
browserContext.setExtraHTTPHeaders(headers)allows to specify additional HTTP headers to be sent with every request in every page in the browser context.browserContext.setHTTPCredentials(httpCredentials)allows to handle HTTP authentication.browserContext.addInitScript(script[, arg])allows to add a script to be evaluated in all frames of all pages in the browser context before the frame loads.browserContext.exposeFunction(name, playwrightFunction)allows to expose a function which can be called from any page in the browser context.browserContext.route(url, handler)allows to intercept certain network requests from all pages in the browser context.browserContext.setOffline(offline)emulates being offline.browserContext.grantPermissions(permissions[, options])andbrowser.newContext([options])permissionsoption can omitoriginto grant permissions to all origins.browserContext.on('page')event is emitted when a new page is opened in the browser context. This allows to handle popups originated by link clicks orwindow.open()calls.
-
Page
page.frame(options)finds a frame based on itsnameorsrc.page.press(selector, key[, options])is a shortcut toelementHandle.press(key[, options]).
Bug Fixes
#8 - INTERNAL: run all the tests with npm test
#720 - Setting permissions are flaky in firefox
#813 - [BUG] website does not extend to full size
#822 - [BUG] Cannot open file:// URLs with Firefox
#844 - [BUG] WebKit scrollbars are not hidden
#914 - [BUG and temporary fix] Open Firefox as the frontmost window (macOS-specific)
#950 - [BUG] Chromium prints 'Connection terminated while reading from pipe' when closing browser
#1030 - [BUG] chromium and webkit screenshot ignoring screenshot: clip: height option property
#1078 - [BUG] Always launch 2 tabs or 2 windows
#1085 - [BUG] Playwright requires manual install of browsers
#1120 - [Question] text= selector does not match case-insensitive by default
#1169 - [BUG] combined selector does not continue matching after first failure
#1184 - [BUG] NPM proxy configuration is not respected
#1212 - [BUG] Documentation ambiguous for browser.contexts()
#1214 - [BUG] Setting slowMo to 250 ms to examples in README.md times out the test cases with headless: false
#1258 - [REGRESSION]: Chromium page will not close after opening session
#1265 - [BUG][WebKit] fill/type/press do not work in iframes
#1269 - [BUG] Cannot set cookie in juggler
#1288 - [BUG] bundle c:\windows\system32\msvcp140_2.dll on webkit win
Raw Notes
08b94ee - chore: mark version v0.12.0 (#1497)
2225608 - chore: add logging to the testing server (#1505)
8bf8339 - docs(showcase): updated showcase (#1481)
8d5433c - fix(screenshotter) validateScreeshotOptions typo (#1509)
4f89e40 - test: fix flaky interception test (#1508)
b778789 - feat: re-make global browser installation (#1506)
7ef394b - chore(chromium): remove CRTarget, use CRPage and CRServiceWorker instead (#1436)
5a93872 - docs: add upload keyword to filechooser (#1496)
bfb24e6 - chore: update releasing guide (#1503)
7efff97 - fix(chromium): properly handle failures to set override (#1498)
5bf9f22 - fix(docs): consider argument to be optional in evaluate (#1500)
c28c5a6 - browser(firefox): make Runtime a global object shared between sessions (#1458)
c0c9b7f - test: make debugp collect IO (take 2) (#1493)
afbc2f2 - test(firefox): enable passing "userDataDir option should restore cookies" (#1487)
05dc89b - chore: update release guide (#1495)
e139d4c - feat(firefox): roll to 1051 (#1494)
1a25a4e - fix(doclint): support lists in comments (#1492)
6390645 - fix(testrunner): attribute unhandle promise reject to a single worker (#1491)
de0a2d1 - api(waitForLoadState): move waitUntil to be a first parameter (#1490)
45a175d - fix(chromium): ignore lifecycle events for the initial empty page (#1486)
1ddf051 - Revert "test: make debugp collect IO (#1485)"
b1bebda - test: make debugp collect IO (#1485)
a74e23a - feat: support PLAYWRIGHT_GLOBAL_INSTALL=1 env variable (#1470)
15fddb5 - api(click): rename offset to position (#1488)
a570290 - docs(examples): update main readme to point to examples + add a file uploads example (#1484)
9826fd6 - browser(firefox): disable update, setting sync and other non-testing features (#1480)
15ebe1c - feat(exposeFunction): implement context-level expose on firefox (#1478)
23e5d80 - test: uncomment slow ff tests (#1479)
049fdf7 - browser(firefox): implement Browser.addBinding (#1477)
c68cee9 - feat(offline): implement offline in firefox (#1476)
ac5852f - browser(firefox): implement offline emulation (#1475)
6e8895f - fix(firefox): make interception, locale and geolocation work on browser context level (#1472)
93954fe - chore: fix .local-browsers path into .gitignore (#1464)
fb7b919 - browser(firefox): make interception, locale and geolocation work on browser context level (#1469)
3f90c09 - tests: mark popup tests as passing on Firefox (#1466)
1b08797 - tests(ff): uncomment a couple of firefox tests (#1465)
9e95844 - docs(troubleshooting): add dependencies for firefox and webkit (#1461)
ac02a6b - browser(firefox): issue Page.ready at the right time (#1462)
670ce7a - chore: remove various watchers, use FrameTask directly (#1460)
00c27ea - docs(readme): fix link to examples
6df17c6 - docs(examples): setup get started with examples guide (#1441)
60a248e - test: add test for Map as eval argument (#1457)
34cc358 - tests(webkit): reenable should await promise from popup (#1447)
e115e8e - tests: mark tests that launch() twice or use fixtures as slow (#1455)
5a42cbd - fix(permissions): manage permissions on the proxy level in webkit (#1451)
96c9c81 - browser(firefox): fix bug in Juggler with clashing method names (#1456)
e210e56 - feat(lang): emulate language on firefox (#1453)
21630d6 - devops: strictly configure build folder for Firefox builds (#1454)
c539325 - feat(geo): implement geo override in ff (#1438)
840e69b - browser(firefox): emulate language (#1452)
5fc1a04 - browser(webkit): manager permissions on the proxy level (#1450)
bae56ea - fix(chromium): support main resource request interception for popups (#1449)
053bab1 - browser(webkit): correctly detect Promise created in another window (#1446)
4320d4b - test: fix link navigation test so that it passes in Chromium (#1448)
16c7a5b - api(eval): accept zero or one arguments in all evaluation functions (#1431)
fcdfa9c - browser(firefox): implement geolocation overrides (#1437)
fa02b84 - test(types): add test for types (#1445)
825555c - types: better types (#1166)
f1d97b0 - chore(docs): remove remaining mentions of Chromium targets (#1435)
535b484 - api(context): get rid of PageEvent (#1433)
3ed9970 - api(chromium): add ChromiumBrowserContext.serviceWorkers() (#1416)
c669674 - feat(chromium): roll Chromium to 751710 (#1434)
ea99908 - fix(eval): adopt nested handles (#1430)
f5ecbff - devops: remake downloading logic (#1419)
2af07ce - chore: rework disposers into a frame task (#1413)
7bd9246 - fix(PageEvent): properly wait for initial navigation in chromium and webkit (#1412)
b0749e3 - fix(docs): fixup and lint optionals and return values in api.md (#1376)
741e2d1 - fix(docs): lint and fix all internal links in api.md
a1929e2 - feat(types): better types for nested handles (#1424)
bfcffbb - browser(webkit): introduce Playwright.windowOpen protocol event (#1420)
dd850ad - api(eval): allow non-toplevel handles as eval arguments (#1404)
045277d - docs(chore): fix link in troubleshooting (#1422)
b8e79e6 - chore(chromium): remove obsolete target related code (#1417)
049b336 - api(devices): extract isMobile/hasTouch from viewport (#1415)
39e5eb7 - feat(devices): remove name from device objects (#1414)
e4225ad - feat(permissions): make origin optional (#1406)
8401462 - test(web): Remove unused variable (#1410)
a9ab9b0 - fix(testrunner): sourcemapify stack traces for test errors (#1409)
edd2fee - browser(firefox): grant permissions to all origins (#1405)
3960b17 - fix(testrunner): fit.fail should run the test (#1407)
aa32d35 - fix(tests): remove flaky load event from auto-waiting tests (#1399)
64b175c - api(waitForLoadState): restore it (#1390)
6731d37 - api(network): replace redirectChain with redirectedFrom/redirectedTo (#1401)
6dcd6a6 - fix(types): jsHandle.getProperty should never resolve to null (#1402)
5816ec5 - fix(testrunner): dedup focused tests and suites by id (#1393)
e7eeefe - chore(testrunner): separate expectations from run mode (#1395)
951126a - feat(chromium): roll Chromium to r750417 (#1398)
e4991a1 - tests: add some failing page event tests (#1394)
e692dd6 - api(cdp): rename ChromiumSession to CDPSession (#1380)
19dd233 - devops: remove verbose on WebKit Win on Github Actions
a96dec5 - fix(webkit): emit close on pages before clearing them (#1386)
69be12a - api(route): pass Route object instead of Request to route handlers (#1385)
2647911 - fix(setContent): handle inner _waitForLoadState rejection (#1382)
601d57a - test: add a test for popup with window features (#1381)
9b86c63 - api: make BrowserContext.pages() synchronous (#1369)
8aba111 - api(cdp): rename createSession to newCDPSession (#1378)
b1a3b23 - api(request): make request.response a promise (#1377)
24d4fb1 - api(click): remove tripleclick, respect clickCount (#1373)
8c532bd - api(press): remove text option (#1372)
e1d3196 - api(*.selectOption): renamed from *.select (#1371)
064099a - api(keyboard.insertText): renamed from sendCharaters (#1370)
a11e8f0 - devops(circleci): run all tests on all browsers
9aa56a6 - api(browserType): remove devices, errors (#1368)
0d7cb29 - test: continue running tests after crash, report crashes separately (#1362)
cfd3ae2 - api(addCookies): setCookies -> addCookies (#1367)
3fa4255 - api: make request.postData() return null instead of undefined (#1366)
be83cba - fix(doclint): correctly get versions on windows (#1350)
245c1fa - fix(docs): a typo in showcase (#1361)
e382bb3 - api: remove 'commit' phase, actions to wait until 'domcontentloaded' by default (#1358)
7c59f9c - fix: do not wait for navigations while evaluating injected source (#1347)
11c3c11 - feat(webkit): roll webkit to r1179
f92c95c - feat(firefox): roll Firefox to r1042 (#1357)
704fe6d - fix(testrunner): fix reporting focused tests
1cd00bd - feat(testrunner): allow filtering by name and show all focused tests (#1354)
b43f33f - api(review): misc changes to API. (#1356)
7fe5656 - browser(webkit): fix win cookies expires (#1355)
b3f87e8 - docs(api.md): Fix incorrect link to PageEvent (#1353)
c1ef683 - api: remove waitForLoadState() in favor of PageEvent.page(options) (#1323)
9b8f4a2 - test(webkit): uncomment fixed viewport screenshot tests (#1346)
7e8ab8a - test: await setInputFiles in flaky input tests (#1345)
823fffa - test: declare setInterval click test as undefined behavior (#1343)
5d4fdd0 - feat(webkit): roll webkit to 1178 (#1339)
3b85bf9 - browser(firefox): handle message manager error event without error (#1344)
6b50c8f - browser(webkit): follow up 3 (#1342)
13c2f65 - docs(selectors): clarify selector conversions
c044227 - browser(webkit): follow up 2 (#1340)
2da705d - browser(webkit): follow up to roll (#1337)
4a18f0f - browser(webkit): roll to ToT 3/11/2020 (#1335)
128157d - browser(webkit): rename Browser domain to Playwright (#1333)
401a916 - test(webkit): uncomment clearCookies test w/ right expectations
d08a0f0 - browser(webkit): account for page scale when screenshotting (#1332)
3dd4945 - fix(chromium): install binding function during initialization (#1320)
65d10a5 - fix: re-implement slow-mo transport without message serialization (#1328)
a24cce8 - devops: fix protocol generation with root on Linux (#1327)
6b711f5 - test(webkit): unblock and uncomment sync window.stop test
16d5a9c - tests(runner): support DEBUGP for timing out tests (#1324)
0d2ae91 - fix(test): enable presssing in frames test (#1326)
0cff9df - test: add failing test for clicking and oopifs (#1325)
0077b42 - feat(webkit): emulate device size (#1318)
044f774 - test: unflake should fail when frame detaches
59f2e88 - test: mark test as flaky on Firefox (#1321)
ac5b518 - test: mark as flaky according to the new policy (#1322)
23cf3be - api: make request.frame() non-null (#1319)
0ce8efa - test: rework testrunner workers (#1296)
a9b7bcf - test(webkit): expect cookies to be deleted after reload
d542ef8 - fix(testrunner): handle uncaught errors (#1317)
e2616e4 - browser(webkit): override global permissions (#1315)
92aa4f3 - test: stop sourceServer as well (#1314)
38c3837 - test: remove test which is inherently racy (#1313)
d5a2781 - fix(chromium): do not await extra promises in initialize() to attach early enough (#1311)
008e0b2 - browser(webkit): emulate screen size (#1310)
ea6978a - api(popups): expose BrowserContext.route() (#1295)
adee9a9 - test: mark worker.url() API coverage as missing
e2a0d61 - docs(showcase): Add playwright-test to showcase (#1283)
72ae5c8 - test: remove stray test (#1302)
27d039a - browser(webkit): mark user gesture in frames (#1304)
9bd3711 - fix(context): reliably fire BrowserContext.Close event when browser is closing (#1277)
27eb25a - test: disable flaky test on Firefox Linux
eb2ca70 - api(route): allow fulfilling with a file path (#1301)
cf46f1b - test(chromium): mark passing popup tests as passing (#1297)
ca5ce7d - test: disable flaky worker tests on firefox
0fbc7af - chore(targets): create page targets only when attached to them (#1278)
e650628 - fix(chromium): fix device-related media queries (#1299)
a61d066 - test: add failing test for min-device-width media queries (#1298)
c43de22 - chore(wk, ff): simplify target management (#1279)
c8bbf88 - devops: bundle mvscp140_2.dll with windows webkit (#1293)
2fa2421 - fix(webkit): fail the 204 navigations (#1260)
3dc48f9 - chore: output both received value and diff for string expected results (#1287)
c881248 - docs(contributing.md): update CONTRIBUTING.md (#1286)
071ee06 - chore: normalize NPM scripts (#1285)
e78f0f7 - feat(firefox): roll Firefox to r1041 (#1281)
d1ef0c8 - fix(wk,ff): properly support getting and setting non-session cookies (#1280)
bfd32fe - doc: fix typos (#1284)
78bd29d - fix(click): work around input alignment on chromium (#1282)
996f97a - browser(firefox): roll Firefox to current beta (#1276)
68b4079 - chore: remove WKPage._sessions (#1270)
aee6324 - feat(firefox): roll firefox (#1273)
3c35d7b - api(waitFor): click(waitFor) -> click(force) (#1275)
578880c - test: mark test as slow
a0e12e0 - feat(testrunner): support .slow() for slow tests (#1274)
e604acd - test: disable flaky test on WebKit
8211287 - fix(session): use isolated root session for client page sessions (#1271)
3fa000f - api(waitForSelector): bring it back (#1272)
29f2430 - browser(firefox): merge Target domain into Browser, rework default context attach (#1259)
119df5a - feat(nowait): allow waitUntil:nowait for actions (#1264)
c494944 - api(popups): move Page.authenticate to BrowserContext.setHTTPCredentials (#1267)
ca6faf2 - chore: properly mark failint tests
cf820b5 - test: mark failing tests on WebKit
8cc7d43 - tests: disable failing test on chromium
d114620 - chore: remove WKPageProxy, use WKPage instead (#1256)
677ebf8 - test: mark "clicking anchor should await navigation" as failing on chromium
f3734c3 - test: mark "should await navigating specified target" as failing on chromium
3288057 - test(webkit): disable failing wk test
a802b00 - test: oops - fdescribe
5c9ebfa - chore(ci): bump checkout action to v2 (#1263)
49c1161 - api(press): bump .press to the page/frame level (#1262)
2724157 - feat(waitUntil): allow waiting for navigation from clicks, etc (#1255)
9c80c9e - browser(webkit): don't leak pages on window.open (#1261)
1d770af - api: waitForElement accepts waitFor: attached|detached|visible|hidden (#1244)
9bc6dce - feat(api): introduce BrowserContext.waitForEvent (#1252)
8c9933e - browser(firefox): move Juggler to top-level (#1254)
9d3bff1 - browser(firefox): implement Browser.setHTTPCredentials (#1251)
e5f82af - api(popups): emit PageEvent immediately, and resolve page() once initialized (#1229)
c734b4b - feat(click): start wire auto-waiting click in firefox (#1233)
e770d70 - fix(chromium): do not create default page and context in headless (#1247)
b0d037e - browser(firefox): fix flaky permissions in Firefox (#1249)
cd8714d - tests: skip failing waitForNavigation test in Chromium (#1248)
20c3263 - browser(firefox): follow-up with SimpleChannel unification (#1246)
2cd727f - browser(firefox): signal link click (#1236)
665888d - feat(popups): auto-attach to all pages in Chromium (#1226)
aabdac8 - api: remove Page.setCacheEnabled (#1231)
1bf5b61 - browser(firefox): move workers to use SimpleChannel (#1232)
4fd2312 - chore: introduce webkit cheatsheet
a69c85f - chore: added ff cheat sheet
11f68ba - feat(cr, wk): make clicks, input and evaluate await scheduled navigations (#1200)
7f9df94 - api(popups): move Page.setOfflineMode -> BrowserContext.setOffline (#1223)
3bedc60 - fix(dispose): do not await inner handle dispose (#1230)
5ee744c - api(page.frame): allow looking up frames by name (#1228)
6fb5168 - feat(chromium): roll Chromium to v747023 (#1227)
5ff660d - feat(navigation): waitForNavigation/goto should not wait until response finished (#1225)
3127840 - browser(firefox): introduce SimpleChannel (#1209)
82baf61 - feat(webkit): roll webKit to r1168 (#1224)
56e25c2 - docs: create development dir for non-user related docs (#1217)
dbfeda2 - feat(webkit): roll to 1167 (#1221)
2d4317d - docs: fix browser.contexts() description (#1220)
f5a530e - docs(showcase): Add headlesstesting.com (#1218)
262ee7c - browser(webkit): fix the pool leaks on mac (#1219)
d6e265f - docs(readme): add network interception example (#1216)
14a7d1c - chore: bump proxy-from-env dependency (#1210)
7787624 - browser(webkit): fix delete context stall, emit schedule load (#1211)
771793f - test(context): test that context.close() works for empty context (#1205)
8aa88d5 - fix(doc): check and update optional types in the api (#1206)
f4e9b50 - api: declare not supporting isMobile on Firefox (#1207)
33f3e57 - test: skip flaky 'Page.goto extraHttpHeaders should be pushed to provisional page' (#1203)
1c4619e - fix(chromium/webkit): fix a race between Page.enable and Page.getResourceTree (#1201)
15c70c9 - fix(click): timing out in page while waiting for interactable should have proper error (#1199)
23790f7 - browser(webkit): send reply to deleteContext even if there are no pages in it (#1204)
fcfe887 - feat(select): don't accept undefined as a value (#1202)
4556513 - chore(test): test cleanup (#1198)
6c6cdc0 - api(popup): introduce BrowserContext.exposeFunction (#1176)
1b863c2 - fix(screenshots): simplify implementation, allow fullPage + clip, add tests (#1194)
2ec9e6d - test: cleanup some test files (#1195)
9f3ccb4 - browser(webkit): wait for all pages to close in deleteContext (#1197)
4a9a155 - test: enable page opener test on WebKit (#1193)
3eec2d0 - docs(ci): list sample configurations for ci (#1196)
ce3398b - browser(webkit): allow scripts in inspected pages to create popups (#1192)
a3ed301 - fix(docs): page.coverage type (#1189)
42aa70f - chore(ci): run all browser tests on Travis again
2711891 - chore(ci): use bionic image on circle ci
019eaa4 - chore(ci): different attempt to publish on Travis
ec3ee66 - chore(docs): optionally install XVFB in docker
0188889 - chore(ci): fix publish_all_packages.sh on travis
64e5e21 - chore(ci): forcefully login NPM on CI if NPM_AUTH_TOKEN is set
a40f562 - chore(ci): add debug info for publish_all_packages
bccdaec - chore(ci): add circle ci (#1188)
31e26a2 - fix(api): fire BrowserContext.Page event in WebKit and Firefox (#1186)
497a74d - chore(ci): fix publishing @next on travis
ed2de2c - chore(ci): test if travis can publish packages
62e2570 - chore: fix utils/apply_next_version.js
57c45f0 - fix: properly publish all packages on travis (#1187)
342a2cf - fix(selectors): continue matching after first fail for combined selectors (#1185)
342e79c - test: mark some tests as skipped (3)
2f98b5e - test: mark some tests as skipped (2)
ba06fb2 - test: mark some tests as skipped
1186998 - fix(click): wait for element to be displayed before scrolling into view (#1182)
db9a243 - docs(showcase): rename playwright-controller to playwright-fluent (#1183)
a57978a - api(chromium): remove Target from public API (#1163)
f242e0c - fix: make Transport.send() synchronous (#1177)
5bd6e49 - test: it.skip skips and it.fail expects to fail now (#1178)
08fbc92 - feat: support PLAYWRIGHT_DOWNLOAD_HOST (#1179)
d5951b4 - fix: properly download browsers (#1173)
cbf65a9 - test: chain test modifiers (#1175)
e3ec6b2 - docs(showcase): add playwright-controller (#1171)
eb1a9eb - chore: rename prepare.js into install-from-github.js
eeceda4 - chore(ci): re-enable browser tests on travis
b20b323 - chore(ci): another attempt to program in .travis.yml
8fc519d - chore(ci): another try to publish edge version
96e7132 - chore(ci): try to publish new @next
ac2f04f - api(selectors): pass selector name when registering, allow file path (#1162)
d511d7d - chore(ci): use TRAVIS_NEXT_NUMBER instead of Date.now()
583f7a0 - chore(ci): publish all packages
b5da5f1 - chore(ci): another attempt to publish 2 packages
66799af - chore(ci): try to publish 2 things with travis
7843c29 - feat(selectors): auto-detect each selector part (#1160)
c4f55bf - chore: guide for producing release notes (#1165)
1781ae7 - feat: add a playwright-ready docker image (#1161)
4af4557 - chore(ci): regenerate key with travis --pro
67a8485 - chore(ci): another attempt to fix travis
ea11a77 - docs(showcase): add new tools to showcase (#1164)
ea0539f - chore: remove unused docker images
400e55d - chore(ci): attempt to publish @next from travis
9b51feb - feat: setup continuous deployment (#1159)
82a4ede - chore: roll Chromium to 745253 (#1156)
041b8c6 - chore: fix typo on sepcified -> specified (#1153)
823bf38 - api: evaluateOnNewDocument -> addInitScript (#1152)
9478bf3 - docs(readme): add link to changelog (#1148)
857ffd8 - fix: text selector should be case insensitive without quotes (#1151)
de542c0 - docs(api): unify selector references to include xpath (#1150)
7682865 - feat(popups): add BrowserContext.evaluateOnNewDocument (#1136)
dc161df - fix(launch): throw upon page argument when non-persistent (#1144)
9d6aa96 - chore(workers): align worker lifecycle evens with other APIs (#1147)
c6fde22 - chore(webkit): always attach to all pages, simplify initialization (#1139)
6b6a671 - fix(webkit): pass popup tests (#1138)
d41342f - browser(webkit): mac build fix (#1137)
ee9c7f1 - browser(firefox): support BrowserContext.evaluateOnNewDocument (#1135)
4ebf419 - fix(yarn): download browsers to package directories (#1133)
22c28b6 - test(firefox): support loading of file URLs (#1132)
7a75754 - browser(webkit): pause in popup until Target.resume is received (#1134)
5cfe68d - test: uncomment webkit fix
4ab8801 - chore: fix lint
d20f3ca - feat(webkit): no start window, healthy pipe (#1113)
b8c6069 - browser(webkit): trim down mac embedder (#1130)
672f3f9 - feat(popups): introduce BrowserContext.setDefaultHTTPHeaders (#1116)
4f69930 - fix(chromium): make locale overrides work (#1108)
3afaeef - feat(socket): destroy contexts upon disconnect (#1119)
72fa945 - Update request.respond to request.fulfill (#1123)
1d02c2d - browser(webkit): --no-startup-window for mac (#1118)
51d1b63 - browser(webkit): no_startup_window on linux (#1117)
facf2c2 - browser(firefox): support BrowserContext.setExtraHTTPHeaders (#1111)
de63534 - browser(webkit): happy pipe on win, no startup windows (#1112)
e3b2f2b - browser(firefox): allow loading file URLs in web process (#1110)
dcdc7db - feat(chromium): use no-startup-window to not create default context (#1106)
c7ade1a - browser(webkit): revert unused Target.oldTargetId (#1096)
30a4d0e - feat(webkit): roll to v1155 (#1104)
ebcaade - feat(log): log only user api calls with DEBUG=pw:api (#1029)
d97ea70 - chore: move more injected code to injected to reduce evaluation size (#1093)
8c57358 - browser(webkit): fix null pointer access (#1099)
ba29470 - fix(api): rename relativePoint to offset, remove unused parameters from input (#1092)
fdfec8e - fix(platform) instanceof bug between execution contexts of RegExp object (#1048)
a6c3735 - test: add failing drag and drop test (#1095)
b50e8b3 - chore: fix doclint tests (#1098)
6acc439 - feat(api): move targets from CRBrowser to CRBrowserContext (#1089)
de03f37 - browser(webkit): follow up to roll, fix Win (#1091)
971ab77 - chore(docs): update win buildbot setup docs
6821c9e - browser(webkit): roll to ToT 2/24/2020 (#1088)
69fe6f7 - docs: added community example project (#1084)
a43b409 - chore: make BrowserContext an interface, with 3 implementations (#1075)
3677818 - fix(api): browser.serviceWorker -> target.serviceWorker (#1076)
1f8508d - feat(waitFor): update various waitFor options to be a single boolean (#1066)
88e3109 - test: fix test on Firefox Linux (#1079)
f305d65 - chore: remove focused test
66362a5 - chore: update appveyour config
0ded511 - feat(testrunner): better matchers (#1077)
53a7e34 - fix(testrunner): support throwing non-errors
05a1e1c - test: remove newContext and newPage test helpers (#1070)
2fabaaf - browser(webkit): force overlay scrollbars on mac, ignoring system setting (#1071)
4016429 - api: remove ElementHandle.visibleRatio (#1069)
568c6cb - test(navigation): fix flaky networkidle tests (#1058)
84ee297 - test: add a test for bounding box on partially visible element (#1011)
4be48a6 - chore: disable DEBUGP on bots
33824aa - feat(click): waitForInteractable option, defaults to true (#934) (#1052)
9f1edad - fix(navigation): do not count random failures as navigation cancel (#1055)
223685e - chore: strip out injected script from protocol logs (#1054)
1805acd - test: update animation click test (#1053)
1ee6578 - feat(viewport): update defaults to 1280x720, fix Firefox (#1038)
f2b2d72 - fix(input): emit change events upon page.setInputFiles (#1028)
8a7728d - docs: document LaunchOptions.dumpio (#1051)
010c274 - Docs: fix return type of launchPersistent (#1047)
e658978 - test: add screenshot test that fails on Chromium (#1039)
cfeaecb - test(keyboard): Remove duplicated test (#1031)
8071225 - Add xterm.js to showcase (#1034)
8cfdeb9 - chore: mark v0.11.1-post (#1027)
Current Status
- 82.0.4057.0. Passes 99% (793/803) tests
- Webkit 13.0.4. Passes 99% (793/803) tests
- Firefox 73.0b13. Passes 95% (764/803) tests
Detailed status can be found at IsPlayWrightReady?
Bug Fixes
#1009 - [REGRESSION] Firefox keyboard doesn't type any more #1016 - [REGRESSION]: webkit tests fails on travis
Raw Notes
2037e01 - chore: mark v0.11.1 (#1025) b1520f7 - feat(webkit): roll webkit to r1151 (#1021) 9caa61a - devops: upload logs for test runs (#1015) 3656403 - fix(keyboard): Add mac editing commands for NumpadEnter (#1026) 21acb36 - fix(keyboard): correctly press enter on firefox (#1023) df8de20 - browser(webkit): do not leak contexts on windows (#1020) 5695ade - test: add failing test for Firefox (#1019) bb8d435 - chore(docs): add community showcase (#1018) bd139e4 - chore(travis): install libvpx on travis for webkit (#1017) 8487ef2 - feat(testrunner): add DEBUG to testrunner (#1014) 2e9e0b7 - devops: rename bots to feature browser first dbb45d4 - Revert "feat(click): waitForInteractable option, defaults to true (#934)" (#1013) 9413351 - feat(click): waitForInteractable option, defaults to true (#934) 39c580a - chore: bump version to 0.11.0-post (#1001)
Current Status
- Chromium 82.0.4057.0. Passes 99% (792/802) tests
- Webkit 13.0.4. Passes 99% (792/802) tests
- Firefox 73.0b13. Passes 95% (763/802) tests
Detailed status can be found at IsPlayWrightReady?
Breaking API Changes
-
browserType.launchhas changed. Playwright now launches in 3 modes:-
browserType.launch- default mode for testing. Each test should start withbrowser.newContextto obtain a clean environment. All new contexts are ephemeral, not persisted into the profile directory. It no longer acceptsuserDataDiroption. There is no notion of thedefaultContextanymore. (Note: you will still see an empty default context window when you run playwright in the headful mode. This is a side-effect of running the stock browsers. We are working on changing this behavior upstream so that clear Playwright run in this mode has no open windows on launch.) -
browserType.launchPersistent- default mode for headful operations and those reusing the user profile. Instead of returning theBrowser, it returns theBrowserContextloaded from the user data dir right away. It requiresuserDataDirto be passed as the first parameter. -
browserType.launchServer- returns aBrowserServer(formerly known asBrowserApp) that can be connected to via thebrowserType.connect. Multiple clients can connect to the same server. Closing theBrowserdisconnects from the server. This mode is useful for certain test runner setups.
-
-
Request interception
page.setRequestInterceptionis replaced with thepage.route. New method accepts the pattern of the urls to be intercepted and handles interception in place, instead of using thepage.on('request')event. Note that we intend to move this method into theBrowserContextover time to make sure it affects popup windows. -
Viewport
-
page.setViewportis renamed topage.setViewportSize. It only allows resizing the viewport, does not allow changing it from mobile to desktop on the fly. Old method was making an implicit reload when switching device type and we did not want that to happen. -
page.viewport()is renamed topage.viewportSize()
-
New APIs
-
new
browser.newPage- convenience method that creates a new context and a page inside that context. Closing the page closes the context. Useful when you only run single-page tests in your contexts. -
new
page.check()andpage.uncheck()- toggle your checkboxes. -
new
browserContext.on('close')event - tells when the context is destroyed (disconnected from the server). -
new
browserType.downloadBrowserIfNeeded()- when you useplaywright-corenpm that does not download browser by default, you can use this method to fetch them on demand. -
new
frame.frameElement()method -
new
page.route- substituted thepage.setRequestInterceptionapi. -
new
page.viewportSize()- used instead ofpage.viewport.
In addition to this, all playwright packages now expose the same API and are only different in the set of browsers they download:
playwright- downloads all 3 browsers (chromium, webkit & firefox)playwright-core- does not download any browsers. Handy together withbrowserType.downloadBrowserIfNeeded()playwright-chromium- downloads only chromiumplaywright-firefox- downloads only firefoxplaywright-webkit- downloads only webkit
Bug Fixes
#808 - [BUG] rimraf causes failure with multiple browsers on Windows #814 - [BUG] playwright- and playwright have different export signatures #817 - [Feature] XPath staring with "(//" should be detected as such #823 - [Feature] Allow skipping specific browser downloads #839 - [Feature] Frame.frameElement #857 - [BUG] Firefox: bundle ff-specific preferences with binary #887 - [BUG] Cannot read property 'width' of null for Webkit screenshot #914 - [BUG and temporary fix] Open Firefox as the frontmost window (macOS-specific) #942 - [BUG] WebKit under debug crashes on Windows #955 - [Feature] Expose Rawer V8 coverage information #979 - [BUG] Missing blur and focus events
Raw Notes
d29625c - chore: generate browser versions when doing release (#999)
1eabd18 - test(firefox): unskip passing url hash test (#998)
b041ce6 - devops: enable debugging on WK Windows
4d7e531 - fix(webkit): wait for the pipe ready on windows (#997)
cd4e9da - feat(coverage): export raw v8 coverage (#976)
7ec3bf4 - test: fix locale tests on mac
b181b34 - test: attempt to normalize locale tests
b96d985 - test: fix locale expectations on non-Mac (#994)
25022e4 - feat(api): introduce default timeouts on BrowserContext (#992)
e744c53 - chore(webkit): bump webkit version to 1150 (#991)
f7fb35b - fix(windows): wait for pipe available again (#993)
f8f818f - Revert "Revert "feat: do not wait for first page in non-persistent mode (#939)""
71892b4 - Revert "feat: do not wait for first page in non-persistent mode (#939)"
c15534f - fix(locale): document locale parameter (#990)
cb63021 - test: add test for navigator.userAgent in popups (#985)
05f8d00 - test: fix service worker test (#988)
2e0d89e - fix(firefox): roll to 1029 and unskip passing tests (#984)
d790b4c - fix(test): default DEBUGP to false (#989)
8ed88c9 - feat(webkit): introduce BrowserContext({language}) (#972)
8006b2c - fix(webkit): avoid UnhandledPromiseRejection (#986)
991b89f - browser(webkit): rebase WebKit on r256488 (#973)
53fa629 - fix(): emit focus events in headful (#982)
a567123 - feat: do not wait for first page in non-persistent mode (#939)
c2ab1e3 - browser(firefox): misc fixes (#983)
d367a2e - chore(tests): log protocol messages when a test fails on the bots (#963)
8abf35c - feat(webkit): roll webkit to 1148 (#971)
d735de5 - feat: do not let users pass userDataDir to browserType.launch() (#974)
b7f48f4 - browser(webkit): layout before returning DOM.getContentQuads (#970)
b188f39 - devops: do not assume that checkout exists
5dbc880 - browser(webkit): print friendly tz names (#969)
c19a7be - chore: remove stub types definition
012bf67 - feat(webkit): emulate timezone on webkit (#968)
d26f47b - fix(platform): properly handle websocket error events (#967)
fbce290 - test: unskip passing Firefox tests (#966)
aa60a7c - docs(api.md): fix nit
bfaf191 - test: add missing tests (#965)
1d84f38 - fix(input): ensure input works as expected with page scale (#962)
ee9748b - feat(): roll chromium to r740847 (#964)
7ce49c2 - chore: remove WebSocket implementation (#961)
b0c0598 - fix(api): small-case all api event names (#959)
44941ad - browser(webkit): emulate time zone (#960)
1945ed7 - devops: run API coverage tests on linux (#958)
211cba4 - browser(webkit): use css (not dip) coordinates for input and content quads (#957)
79c4763 - feat(webkit): roll to r1145 (#954)
5956df5 - devops: re-factor github workflow internal structure (#956)
5f24205 - test: add a test for interception + service worker (#951)
a4d0187 - chore: mac build bots (#734)
1f29930 - devops: add docs & lint github workflow (#953)
0de625d - Revert "devops: add docs & lint github workflow"
7ec7f72 - devops: add docs & lint github workflow
9bbaa32 - browser(webkit): remove assert (#952)
3007541 - browser(webkit): do not intercept requests on the way to service worker (#948)
c8c4356 - test: add setInputFiles input event test (#944)
d05feec - feat(active): emulate active state on webkit (#941)
0d16d14 - fix(firefox): rely on bundled firefox preferences (#943)
da30847 - feat(firefox): apply emulation to all pages in the browser context (#931)
90367c1 - browser(webkit): emulate active and focused state (#940)
f25a27a - test: add a test for bounding box with page scale (#935)
ce38213 - browser(webkit): disregard dpi on windows (#938)
d37b67a - browser(firefox): do not wait for initial navigation in default context (#937)
efa567d - devops: fix firefox preferences build on mac
451ec72 - feat(): roll Chromium to r740289 (#936)
20e2bac - test: fix flaky page event test
5323700 - feat($wait): make $wait a shortcut for waitForSelector (#932)
3a32b14 - devops: bundle firefox preferences alongside with build.
6105d8a - fix(tests): fix test that was leaking a context (#933)
aae5fca - feat(api): make browser.newPage own the created context (#930)
ad9d6cc - feat: introduce browserType.downloadBrowserIfNeeded() (#834)
9ea8f49 - browser(firefox): attach to all pages in the browser context (#928)
8a35f40 - fix(events): deliver page.close upon disconnect in FF (#929)
c69dccf - feat(click): use browser-provided scrollIntoViewIfNeeded (#893)
72b9cf0 - feat(context): introduce BrowserContext close event (#918)
5fee93a - test: fix expect in jshandle spec (#927)
7802354 - fix(firefox): bring headful window to front on launch (#923)
49eea19 - feat(webkit): roll webkit to 1141 (#922)
29f4f18 - browser(webkit): allow beforeunload override when headful (#921)
251ad38 - fix(navigations): remove LifecycleWatcher, fix flakes (#882)
c03e8b7 - chore(tests): add types for tests (#915)
9da0229 - chore: bump rimraf to 3.0.2 (#916)
4fcc63f - chore: remove usages of mime module from infrastructure
84f5700 - feat(api): rename browserContext() to context() in the apis, remove url from newPage (#906)
4d84e35 - fix(upload): detect mime type from file extension (#911)
79b7a84 - fix(screenshot): be careful w/ default viewport, extract common logic (#913)
2dd11ea - docs: remove browser.newPage from README
50f96eb - docs: update readme to address browser changes questions
e9c1477 - fix(webkit): fix remaining tests on windows (#905)
f4734ef - feat(testrunner): show workerId in verbose mode
d71c9e0 - feat(webkit): roll webkit to r1140 (#904)
e2710de - browser(webkit): do not activate headless window on browser start (#900)
36344de - tests: consistently use platform constants (#899)
3acc65d - devops: teach //browser_patches/webkit/build.sh to build both GTK & WPE
73148fd - chore(lint): add @typescript-eslint/no-unnecessary-type-assertion rule (#898)
487d394 - chore(lint): add @typescript-eslint/type-annotation-spacing rule (#897)
8712359 - devops: prettify telegram messages
42c2cfc - fix(pipe): sort out pipes on platforms (#895)
0ed43e8 - feat(webkit) await the reading from pipe message (#894)
cdbfc4c - browser(webkit): report inspector pipe is listening via stdout (#892)
8c2302d - browser(webkit): do not navigate popups to about:blank on Win (#886)
d397bb1 - feat(): roll chromium to r739261 (#885)
fe2431e - feat(webkit): roll webkit to r1137 (#884)
fee83b1 - fix(api): page.viewport -> page.viewportSize (#878)
c33a12d - feat(firefox): ensure that new pages get browser context userAgent option (#872)
bc91259 - browser(webkit): use random ephemeral session ids on Mac (#881)
06a7d7e - docs(api.md): missing arguments for functions in page.route (#880)
f15690d - browser(webkit): roll WebKit to tip-of-tree 2/6/2020 (#877)
ffc1022 - fix(doclint): fix doclint for new typescript (#879)
ffc8f96 - browser(firefox): bump build number to r1025
9f0bbff - browser(firefox): pause page on creation to handle emulation messages (#871)
75340f3 - chore: Note that (code) coverage is only available for (#867)
8c6faab - browser(firefox): roll firefox to upstream's beta (#876)
99d0689 - tests: explicitly close contexts for browser.newPage (#875)
126eb50 - fix(transport): dispatch messages in separate tasks (#841)
6202ff1 - browser(firefox): use guids for browser contexts, delete contexts on disconnect (#866)
a547aa7 - feat(connect): allow multiple webkit connections over web socket (#863)
f49d63f - test: remove fdescribe
5152540 - test(cookies): add more isolation tests (#869)
a72784a - fix(test): properly clean input field (#860)
fa6a5ed - chore: fix typo in aliases
177a1d4 - chore: add "unit", "wunit" and "funit" aliases (#859)
6318ba6 - feat(frame): introduce frame.frameElement (#856)
4be39f8 - chore(types): upgrade to typescript 3.7.5 (#855)
4aa155e - docs(api.md): fix link
cd68619 - chore: fix protocol-types-generator to work with new API
55b6fe2 - feat(launch): introduce client, server & persistent launch modes (3) (#854)
28c4a16 - fix(): ensure we resume service worker before detaching from it (#850)
a4c40ff - test: make sure page.fill actually clears an input (#851)
1b1ed08 - browser(webkit): introduce DOM.scrollIntoViewIfNeeded (#847)
0cc26c0 - browser(firefox): introduce Page.scrollIntoViewIfNeeded (#848)
a2ab645 - feat(launch): introduce client, server & persistent launch modes (2) (#840)
0f1a42a - docs(readme): fix API link to always point to last released API
f114255 - devops: attempt to fix linux bot
2e0f3e3 - docs: split docs to npm version and latest (#846)
0518625 - feat(launch): introduce client, server & persistent launch modes (1) (#838)
bdf8e39 - feat(goto): assume http:// for localhost navigations (#825)
8f1df5e - fix(): pause workers on start to not miss any events (#832)
4b761f4 - test: expect current behavior for cross-frame js handles (#833)
6dc88bc - feat(webkit): roll WebKit to r1134 (#835)
0c2a2e1 - fix: properly nullify error stacks (#836)
e3e2da3 - feat(check): introduce page.check/uncheck (#826)
2ba5e84 - docs: we are Playwright, not PlayWright
3ef2313 - docs: fix dead link for element handle (#827)
05d4746 - feat(selectors): temporarily remove zs engine (#824)
1059e22 - fix(fill): make fill work for input[type=number] (#819)
b82bc5f - feat: treat selectors with leading '(//' as xpath (#821)
cea036a - feat: change vendor package exports (#818)
8028fb0 - feat(route): migrate from request interception w/ events to page.route (#809)
84edefd - browser(webkit): follow up to Browser.setLanguage, fan out changes (#801)
387b895 - browser(webkit): build more wk features (#807)
0a16b60 - browser(webkit): fix crash when a worker is terminated while logging (#797)
0007439 - doc(api.md): Fix setPermissions link (#806)
fce3842 - chore: bump version to 0.10.0-post (#796)
Current Status
- Chromium 81.0.4044.0. Passes 99% (837/845) tests
- Webkit 13.0.4. Passes 98% (746/758) tests
- Firefox 73.0b3. Passes 94% (726/776) tests
Detailed status can be found at IsPlayWrightReady?
Bug Fixes
#560 - Default profile for does not save data into specified folder #565 - WebKit build flags #583 - troubleshooting.md is missing #606 - Missing a few device defs for landscape variants #627 - Types exported from playwright-core, but not playwright #658 - Strip the browser binaries #661 - Typo in docs: dedault #668 - request.continue() override with post data #669 - Error 404 minibrowser-mac-10.13.zip #696 - playwright-core@0.9.23 types will not build #705 - Firefox's WebSocket has no unguessable token suffix #764 - File upload doesn't work #783 - [Feature] Expose page.target()
Raw Notes
25f2a32 - feat: add Page.opener() to the API (#790)
1489fbd - fix: do not recommend yarn (#794)
b8199c0 - chore(webkit): use async/await to make eval more readable (#789)
0f305e0 - test(cookies): Rename clearCookies describe (#791)
84c93d2 - browser(webkit): plumb stderr from the web process to the main process (#792)
ef1d2fb - Revert "fix: move offline/cache/interception switches to BrowserContext (#748)" (#793)
9438136 - browser(webkit): enable some build features on win (#788)
4904459 - browser(webkit): introduce Browser.setLanguage (#781)
c57fd22 - fix(webkit): unflake Page.setContent (#786)
2bf88fd - test: start adding capability smoke tests (#784)
5cb19c6 - test: extract common headful tests (#785)
9a00e1d - docs: update webkit.md features
d054490 - docs: update readme
1f8e6e6 - doc: update readme
1c7db46 - doc: update readme
8a40fd0 - docs: update the readme intro sentence
76c22b7 - docs: bump Chromium version (#778)
adc5e3b - browser(webkit): bump WebKit to r1128 to check binary stripping
b77b31c - devops: strip linux binaries
24c5df6 - docs: add webkit build flags table (#777)
e33e403 - chore: nits to issues template
293fc6f - chore: remove bad issue templates
902580b - chore: update issues template
b289bb7 - fix(filechooser): intercept file choosers lazily (#776)
985faeb - fix: avoid unhandled promise rejection in WKSession.send (#770)
fd3a930 - fix(webkit): roll webkit to 1127 (#775)
735c5e6 - browser(webkit): fix compilation on Mac (#774)
e131fe0 - fix(chromium): install libgbm (#773)
83b5d89 - fix(firefox): roll firefox to 1021 (#769)
adc91c9 - chore(docs): fix broken link for downloaded browsers (#772)
ca49d50 - test: disable firefox popup tests that rely on waitForLoadState (#768)
1344596 - feat(chromium): roll to r737027 (#771)
6c58f93 - browser(webkit): simplify isolated world handling (#766)
2b231c9 - fix(test): unflake waitForSelector when browser closes test (#767)
1ad6134 - browser(webkit): ensure user worlds created when attaching to new pages (#765)
f4640d1 - Revert "tests(accessibility): Remove unused browser goldens (#758)" (#763)
d590ab9 - tests(accessibility): Remove unused browser goldens (#758)
1b012e5 - fix: do actually catch worker initialization exceptions (#762)
603b9f5 - fix: make contentFrame cross-frame handles test pass (#761)
eb56804 - test: unflake owner frame test (#760)
c9544b9 - docs: add documentation for selector engines (#752)
f44d660 - feat(webkit): use consistent user agent for headful and headless (#756)
ce72198 - feat(webkit): roll webkit to 1124 (#736)
44829d6 - browser(firefox): wait for pending accessibility updates (#755)
bcc920c - browser(webkit): follow-up to update inspector file locations (#754)
0e6b44d - feat(selectors): selectors.register accepts function (#753)
87abfe0 - browser(webkit): roll to WebKit ToT 1/29/2020 (#737)
afc0222 - browser(webkit): do not crash when opening inspector on mac (#751)
6faf74b - fix: move offline/cache/interception switches to BrowserContext (#748)
9a126da - feat: lower the engine requirement to node 10.15.0 (#750)
7ea4110 - browser(webkit): expose worker's owner frame (#694)
e64fd17 - devops: fix firefox building script on Mac 10.15.1
fc93b88 - fix: typo (#740)
a65bf41 - test(browsercontext): cookies() is a BrowserContext function (#741)
492304b - feat(firefox): roll firefox to r1020 (#735)
b68a88a - test: enable passing modifiers test (#733)
ce7c8d7 - feat: introduce BrowserType.name() (#732)
184b25f - chore: windows bots via github actions (#678)
4a3bd60 - fix(test): fix race in confusing confuse with previous navigation test (#730)
89a9311 - chore(webkit): bump webkit revision to 1120 (#727)
5e5d193 - test: don't ignore random arguments (#726)
4c25180 - chore(webkit): do not call setPauseOnStart for each target (#725)
4b0ce1d - browser(webkit-wpe): do not preload about:blank into popups (#724)
09e97af - feat(wk,ff): amend method & postData upon continue (#703)
c35c65b - docs(api.md) Rename page to context in newContext (#723)
75f7ff3 - docs(api.md) Fix USKeyboardLayout link (#719)
7af1d12 - browser(firefox): use unguessable web socket address (#722)
460527d - fix(webkit): do not poll readyState if target is paused before first navigation (#721)
9d34f28 - docs(api.md) Rename page to context in newContext (#718)
62f4ed6 - feat(unit): add click test on animated target (#655)
c04ad14 - feat(launcher): gracefully close browser on sigint (#650)
3248749 - fix(webkit): make frames detect their initial load state (#690)
19da86b - browser(firefox): amend method & postData upon continue (#716)
38b5f76 - fix(test): wait for load state before checking opener of popup (#714)
2bef4ae - feat(api): introduce selectors.register method (#701)
9cd6157 - devops: add auto-rebase github action
2ddc987 - fix(webkit): initialize popups on start (#693)
a64fc0e - chore: fix missing device definitions (#708)
9554ef4 - docs: make individual FAQ items linkable (#712)
90d84e8 - docs(api): fix cdp session creation example (#709)
ff30235 - chore: fix package typo in packages README (#707)
53cdbc5 - docs: clarify relationship to Puppeteer (#711)
45e88f7 - browser(webkit): amend method & postData upon continue (#702)
023fa01 - fix: playwright-core types (#699)
e276430 - doc: require webSocket:true for endpoint availability (#706)
79ea30c - docs: sort classes by use (#700)
bd726ee - chore: bump version to v0.9.24-post
3e40b4e - chore: mark version 0.9.24
54f442e - fix: properly expose top-level devices (#698)
e9515f4 - browser(webkit): pause popups on start (#691)
89b5d2f - fix(setContent): manually reset lifecycyle for all browsers at the right moment (#679)
aa2ecde - browser(webkit): make popups functional in mac embedder (#689)
ee9c2b0 - chore: bump version to v0.9.23-post
03e2754 - chore: mark version 0.9.23
d7beaa7 - chore: bump version to 0.9.22-post (#684)
0a7005e - chore: mark version v0.9.22 (#682)
7128628 - feat(testrunner): ability to repeat test suites (#681)
541fa95 - fix(ownerFrame): correctly handle adopted node usecase (#677)
b3cd7a4 - browser(webkit): remove URL from TargetInfo (#676)
5a5016f - docs: inline superclass toc into classes for convenience (#663)
c850430 - docs(api.md): remove browser downloads section (#675)
6e4bf95 - fix(install): check macOS version to be 10.14 or higher (#671)
e65cc77 - fix(pw_run): Allow running from paths with spaces (#674)
1b8cfff - browser(webkit): fix GTK build (#673)
a779efe - browser(webkit): always dispose persistent context before exiting (#649)
9e0cf72 - docs(api.md): add missing docs (#664)
99414b0 - doc(page): Improve Page description (#665)
4b84973 - docs: api.md typos
7f46a09 - feat(webkit): roll to r1011 (#659)
d2bfe00 - browser(webkit): fix setOfflineMode (#656)
f03b648 - chore: removed build labels from readme
b4b7c5e - feat(webkit): enable user-data-dir tests for all platforms (#646)
63d5a73 - fix(types): export playwright-core types from playwright (#628)
5fdb3e2 - chore(webkit): roll to 1111 (#644)
2ae6466 - browser(webkit): support user-data-dir on win (#642)
b64604c - chore: replace pptr with pw (#643)
be19ae5 - feat(browserApp): kill and onclose (#641)
f1d1dfb - fix(webkit): rewrite global object retrieval errors (#640)
fb9ec96 - browser(webkit): support --user-data-dir on Linux (#610)
a4f27c1 - browser(webkit): fix compilation on Mac 10.15 (#638)
c453851 - api: introduce BrowserType with a single interface, update top-level api (#636)
199d094 - fix: make launch options in ffPlaywright optional (#637)
834698c - docs(readme): update hero snippet to illustrate single API (#631)
3abaced - chore(webkit): build wpe and gtk to different folders (#616)
f463d06 - browser(webkit): fix WPE compilation (#635)
12a4354 - browser(webkit): roll to r255078 (#633)
2b44d75 - test: move most launcher tests to common (#621)
ff87701 - doc(troubleshooting): add note about lack of node 8 support (#623)
03f37bc - doc(readme): add test status badges (#617)
69c5b2a - docs: clarify Puppeteer active status (#619)
060fbf7 - fix(workers): emit workerdestroyed event when clearing workers (#618)
056fbbd - fix(api): make pipe connection the default, expose webSocket launch option (#562)
b4b81ba - chore: move downloads to Azure CDN (#615)
6b8c40e - browser(webkit): respect --user-data-dir on MacOS (#579)
3b2993f - fix(docs): add back troubleshooting.md (#605)
866c602 - fix(firefox): disable ICC color correction based on OS display (#614)
c1cca19 - test: extract tests for webkit provisional page (#609)
4cf2180 - fix(docs): add docs for the websocket event (#612)
b8e2bba - chore: run lint on travis (#613)
74e9859 - feat(firefox): roll to 1018 (#604)
044ebd7 - fix: delete contexts from the map on navigation (#602)
ac2ba3c - fix(api): BrowserServer -> BrowserApp, resuse it between browsers (#599)
b4209e9 - test: move user-data-dir tests into shared location (#603)
a5019ea - fix(api): remove remoteAddress from api (#601)
23a668e - feat(firefox): support request interception (#571)
68d51a3 - test: add a test for usage after disconnecting (#595)
24f5f1f - fix(wk websocket): do not send messages to a closing websocket (#593)
5a67d78 - docs(readme): add support for Edge (#597)
cc1891e - syntax alignment (#596)
fa2f321 - fix(api): remove BrowserServer.connect (#574)
a6042e4 - docs: removed semicolon from code doc as it not required (#580)
7e8bce7 - chore: bump version to v0.9.21-post
372a88f - chore: mark version v0.9.21
3b26ae7 - fix: prepublishOnly ran in the wrong order
ef2286c - chore: mark version v0.9.20 (#578)
b1de6ce - fix: clean lib folder before publishing (#577)
7171590 - browser(firefox): wait for startup before closing the browser (#575)
06e48f2 - test: skip failing wk test
3269358 - feat(webkit): covert pipe to websocket when asked (#570)
bb4ae87 - feat(webkit): roll webkit to 1106 (#573)
1c96d42 - browser(firefox): support request interception (#572)
869ffc8 - chore(webkit): remove _disconnectFromTarget (#567)
05cb267 - browser(webkit): do not require DRAG_SUPPORT for simple drag selection (#569)
710554b - feat(testrunner): add it.repeat to repeat test multiple times (#568)
0e361c9 - devops(ci): drop debug output from travis.yml
d7fde0c - devops(ci): resurrecting travis
6308dbe - fix(webkit): always push state changes to the provisional page (#564)
27bdc66 - docs(readme.md): fix typos (#566)
eab8f92 - docs: create a single top-level TOC for api.md (#561)
f887797 - docs(readme): add browsers table to README.md











