โ ๏ธ Breaking Change
Impact Score: 7/10
Playwright v1.4.0 โ Release Notes & Engineering Impact
Source available โ automated, not human-reviewed
Component: playwright ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
Breaking-change evidence from the source
Breaking changes for Docker and CI users - `root` user is used in the default Docker image https://github.com/microsoft/playwright/commit/5f6441e6dfb5d5ff0795d0b4a9b31c6b7d44d16d
โก Executive Summary (TL;DR)
Playwright v1.4.0. Source highlight: ๐ `playwright-cli` is now public!
Who Does This Impact? (Role-Based Analysis)
๐ป Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
๐ Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
โ๏ธ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
โ ๏ธ Breaking Changes & Deprecations (1)
- Breaking changes for Docker and CI users - `root` user is used in the default Docker image https://github.com/microsoft/playwright/commit/5f6441e6dfb5d5ff0795d0b4a9b31c6b7d44d16d
๐ View Raw Release Notes (Original Developer Log)
## Highlights
### ๐ [`playwright-cli`](https://github.com/microsoft/playwright-cli) is now public!
Playwright **C**ommand **L**ine **I**nterface can:
- Open pages in Chromium, Firefox and WebKit (Safari) on all platforms
```sh
$ npx playwright-cli open wikipedia.org
```
- Record user interactions and generate Playwright scripts
```sh
$ npx playwright-cli codegen wikipedia.org
```
- multi-page scenarios
- text-based selectors
- downloads, uploads
- many more!
- Emulate devices, color schemes, geolocation, etc
```sh
$ 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
```sh
$ npx playwright-cli screenshot --help
```
<img src="https://user-images.githubusercontent.com/284612/92536033-7e7ebe00-f1ed-11ea-9e1a-7cbd912e3391.gif">
### ๐ฅ Record videos (**experimental**)
Record videos of your scripts, every page and popup is captured!
```js
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](https://github.com/microsoft/playwright-python) as well as in third party [PlaywrightSharp](https://github.com/hardkoded/playwright-sharp) and [Playwright for Go](https://github.com/mxschmitt/playwright-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()`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#framepage)
- [`elementHandle.waitForElementState(state[, options])`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#elementhandlewaitforelementstatestate-options)
- [`elementHandle.waitForSelector(selector[, options])`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#elementhandlewaitforselectorselector-options)
- **experimental** `_videosPath` option in [`browserType.launch()`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#browsertypelaunchoptions), [`browserType.launchPersistentContext()`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#browsertypelaunchpersistentcontextuserdatadir-options) and [`browserType.launchServer()`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#browsertypelaunchserveroptions).
- **experimental** `_recordVideos` option in [`browser.newContext()`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#browsernewcontextoptions), [`browser.newPage()`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#browsernewpageoptions) and [`browserType.launchPersistentContext()`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#browsertypelaunchpersistentcontextuserdatadir-options)
- **experimental** [`page.on('_videostarted')`](https://github.com/microsoft/playwright/blob/v1.4.0/docs/api.md#event-_videostarted)
## Breaking changes for Docker and CI users
- `root` user is used in the default Docker image https://github.com/microsoft/playwright/commit/5f6441e6dfb5d5ff0795d0b4a9b31c6b7d44d16d
- `ffmpeg` dependency is required when running Chromium
<details>
<summary><b>Issues Closed (73)</b></summary>
#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
</details>
<details>
<summary><b>Commits (384)</b></summary>
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)
</details>