NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1294 most downloaded on npm
A high-level API to automate web browsers
Last release today
06 Oct 2026
Ships on a steady schedule
a new release about every 8 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
5717 releases · first in 2017
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
0f8eccf1 - fix(ECONRESET): fix it once and for all (#4258) e50d0a27 - fix(screenshot): prioritize passed type over the extension mime (#4251) 3d4e50d6
Bug fixes:
.npmrc env var PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD from true to false<details> <summary><b>Issues Closed (5)</b></summary>
#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
</details> <details> <summary><b>Commits (7)</b></summary>
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)
</details>
Nothing published for this version
New [page.video()] method to retrieve on-going page video recording.
New page.video() method to retrieve on-going page video recording.
<details> <summary><b>Issues Closed (2)</b></summary>
#4142 - [BUG] Video Recording Chromium compression is too high
</details> <details> <summary><b>Commits (6)</b></summary>
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)
</details>
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
…reference (#3867) 1421ed99 - test: fixed Node.js deprecation warning (#3864) d7f38121 - tests: fixed OS-locale specific failing test (#3863) 1d8d89dc…
videosPath option while creating browser contexts to record videos for all pages within the context. See examples.npx playwright-cli codegen --target=python to try!pwuser as an optional user for non-root user environments.browser.newPage(), browser.newContext() and browserType.launchPersistentContext() now support videosPath and videoSize option.page.video() method. (v1.5.1)Video class. (v1.5.1)browserContext.browser() method.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>
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →