Playwright v1.4.0stable Released Sep 10, 2020
โš ๏ธ 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
Read the original context โ†—
Source flags breaking changes โ€” review applicability
๐Ÿ“„ .MD
โšก 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>