Highlights
- **Video screencasts API is now stable**: Use the `videosPath` option while creating browser contexts to record videos for all pages within the context. [See examples](https://playwright.dev/#path=docs%2Fverification.md&q=videos).
- **Test runner is available in preview**: To setup a cross-browser end-to-end testing suite with Playwright, check out [playwright-test](https://github.com/microsoft/playwright-test). Try it out, and tell us what you think!
Playwright CLI
- [CLI codegen](https://github.com/microsoft/playwright-cli) can now generate [Python code](https://github.com/microsoft/playwright-python). Run `npx playwright-cli codegen --target=python` to try!
Breaking changes
- Chromium sandboxing is now opt-in. This is to simplify running Playwright tests in CI environments. Learn how to [enable sandboxing](https://playwright.dev/#path=docs%2Fdocker%2FREADME.md&q=run-the-image).
- The Docker image adds `pwuser` as 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()`] and [`browserType.launchPersistentContext()`] now support `videosPath` and `videoSize` option.
- New [`page.video()`] method. (v1.5.1)
- New [`Video`] class. (v1.5.1)
- New [`browserContext.browser()`] method.
- Both [`browserContext.exposeBinding()`] and [`page.exposeBinding()`] now accept `handle` option to pass handles instead of serialized values.
<details>
<summary><b>Issues Closed (29)</b></summary>
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
</details>
<details>
<summary><b>Commits (167)</b></summary>
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)
</details>
[`browser.newPage()`]: ./docs/api.mdbrowsernewpageoptions
[`browser.newContext()`]: ./docs/api.mdbrowsernewcontextoptions
[`browserType.launchPersistentContext()`]: ./docs/api.mdbrowsertypelaunchpersistentcontextuserdatadir-options
[`browserContext.exposeBinding()`]: ./docs/api.mdbrowsercontextexposebindingname-playwrightbinding-options
[`page.exposeBinding()`]: ./docs/api.mdpageexposebindingname-playwrightbinding-options
[`browserContext.browser()`]: ./docs/api.mdbrowsercontextbrowser
[`page.video()`]: ./docs/api.mdpagevideo
[`Video`]: ./docs/api.mdclass-video