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
07 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
5722 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
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
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Revert "atomic install" since it was causing problems in some environments.
<details> <summary><b>commits (2)</b></summary>
cbfc954f - chore: mark v1.1.1 391915e3 - chore: revert atomic install (#2534) </details>
Nothing published for this version
First-class proxy support using proxy option in `browserType.launch()`, `browserType.launchPersistentContext()` and `browserType.launchServer()`
proxy option in browserType.launch(), browserType.launchPersistentContext() and browserType.launchServer()browserType.launchPersistentContext() now supports a wide variety of browser context options.browserContext.exposeBinding()page.exposeBinding()page.getAttribute()page.innerHTML()page.innerText()page.textContent()download.suggestedFilename()request.postDataJSON()browserType.connect() now accepts a timeout optionfirefoxUserPrefs in browserType.launch(), browserType.launchPersistentContext() and browserType.launchServer() allows to specify firefox preferences.proxy in browserType.launch(), browserType.launchPersistentContext() and browserType.launchServer() allows to specify browser proxy.downloadsPath in browser.newContext() and browserType.launchPersistentContext().browserType.launchPersistentContext() now supports almost all context creation options.browserServer.kill() now returns a promise that fulfills when browser exits.<details> <summary><b>issuses closed (42)</b></summary>
#584 - Electron support #977 - Memory and performance tests for our browsers #1439 - Be careful to avoid breaking changes in with the typescript types. #1607 - [Question] Removing routes from page._routes #1638 - Accessibility Testing[Question] #1678 - [Feature] Browser event "context" #1709 - [Feature] Allow reconnecting to page in a separate processes #1755 - [Feature] Add waitFor in ElementHandle #1775 - [Question] Modify Headers to Response #1872 - [Question] - Screenshot on lazyload sites #1904 - [QUESTION] Call close() on BrowserContext closes chromium when used with --single-process option #1906 - [BUG] Click flakes without waitFor #1938 - [Feature] Better error reporting if not all dependencies are installed #1991 - [BUG] - Protocol error (Target.getBrowserContexts): Target closed. #2072 - [Feature] Disable "ImprovedCookieControls" feature in Chromium by default #2113 - [API] No way to change the DPR when using a persistent context. #2143 - [Feature] expose textContent, innerText, getAttribute on page/frame #2175 - [BUG] Page.click() doesn't work when pointer-events: none is toggled off #2187 - [Feature] A friendly RESTful mocking API #2189 - [BUG] Firefox and WebKit request.resourceType() incorrect with EventSource connection #2201 - [BUG] Mocking the server in chromium only works if server is reachable #2216 - [Feature] download browsers in parallel #2245 - [Question] WebKit 13.1+ Support #2247 - [BUG] page.url() does not include hash #2256 - [BUG] page.close() never finished on Firefox persistent context. #2257 - [BUG] page.waitForLoadState(networkidle times out with nested iframes #2258 - [BUG] page.waitForLoadState('networkidle') fails with nested cross origin iframes #2264 - [BUG] Error: Failed to launch browser: Error: spawn ...chrome.exe ENOENT #2265 - npm install / yarn add playwright takes forever #2268 - [BUG] Types don't work in WebStorm ("Unresolved function or method") #2271 - [BUG] Exception has occurred: TypeError TypeError: Cannot read property 'split' of undefined #2272 - [BUG] Header not persisted on request #2275 - [Feature] Expose JSHandle _remoteObject #2276 - [BUG] Page.click throws "Node is either not visible or not an HTMLElement" if element animates from outside the viewport #2278 - [BUG] broken link in docs #2280 - [Question] How to query element by containing text #2282 - [BUG] page.frames() is not accurate #2283 - [BUG] issue with waitForSelector #2287 - [BUG] Can't connect to browser on websocket port #2288 - [Question] how to get values from XML File (XML File in Browser) #2296 - [BUG] Page is missing type declaration for removeListener #2297 - [Question]How to enter text in div tag in playwright test tool? </details>
<details> <summary><b>commits (240)</b></summary>
492a65f9 - browser(webkit): include browserContextId in all Playwright* events (#2513)
8c6c571f - test: add iframe screenshot tests (#2495)
9aa9d6bc - feat(downloads): accept downloads in persistent, allow specifying the downloadsPath (#2503)
ee3379a8 - browser(firefox): remove non-existing files from build (#2507)
55cfff38 - fix(waitForFunction): handle predicate that throws (#2488)
ac88f989 - browser(firefox): properly hide scrollbars in all frames (#2505)
4ec215a8 - browser(firefox): allow setting download behavior of default context (#2502)
2250e960 - browser(webkit): fix wpe build (#2501)
946b4efa - fix(installer): create tmp directory inside browserPath (#2498)
bb4e959d - feat(debug): add note about DEBUG=pw:api to errors (#2496)
4cac74f8 - browser(webkit): continue screecast after cross-process navigation (#2499)
5c3a2752 - feat(debug): improve api logs (#2481)
d5c55749 - chore: cut v1.1.0-post version (#2491)
b77a4b58 - test: increase total timeout when running multiple browsers (#2490)
54f07f9b - test(capabilities): test that video tag can play video (#2477)
3de0c087 - feat: support atomic installation of browsers (#2489)
28e0ce1b - feat(webkit): roll to 1269 (#2486)
3ec79e17 - chore: simplify timeout handling in progress (#2487)
30009973 - chore: migrate waitForEvent to Progress (#2483)
fb058ffe - feat(proxy): allow specifying proxy (#2485)
71dd9c2f - Revert "browser(webkit): exclude gstreamer, its plugins and libdrm fr… (#2482)
87e0c96e - chore: inverse FrameTask callbacks/promises (#2478)
c08da50b - chore: introduce session.sendMayFail to ease error logging (#2480)
fc2432a2 - browser(webkit): exclude gstreamer, its plugins and libdrm from webkit distribution (#2476)
616ae504 - browser(webkit): support bypass list on Mac (#2479)
1d37a105 - chore: migrate navigations to Progress (#2463)
724d73c0 - feat(debug): chromium debugging port (#2246)
a26311a1 - browser(firefox): support proxy bypass (#2467)
58e2ffc9 - test: add more tests for text selectors in shadow dom (#2473)
53f6caf5 - browser(webkit): manually reencode image as multiple frames (#2470)
95ef71c4 - devops: support --juggler argument for firefox/build.sh script (#2472)
c03b39a3 - browser(webkit): roll back to using same proxy for http & https (#2471)
601eddfa - browser(webkit): fix scrolling with mobile viewport (#2468)
3dd1e401 - feat(all): roll CR:775089 FF:1101 WK: 1263 (#2465)
3c9699dc - browser(firefox): support Browser.setProxy method in juggler (#2464)
d5c992e1 - chore: unify evaluations across browsers even more (#2459)
1392dcd6 - browser(webkit): add injected bundle to webkit distribution on linux (#2461)
18aafc36 - fix(build): respect relative path in archive.sh (#2462)
8149e1d9 - build(webkit): inlcude libvpx.so.5 into the .zip (#2458)
a55687d5 - browser(webkit): pass proxy url as is for https support (#2460)
8e6375f5 - chore: reduce the number of evaluate methods, improve types (#2454)
9158ca19 - browser(webkit): roll to 06/03/20 (#2457)
fcc5f75b - Revert "browser(webkit): roll to 06/03/20 (#2455)" (#2456)
09b277c3 - browser(webkit): roll to 06/03/20 (#2455)
1accb514 - chore: convert more actions to Progress (#2444)
f188b0a1 - chore: migrate most actions to Progress (#2439)
abfd2784 - browser(webkit): allow setting proxy per browser context (#2445)
a82139bc - browser(webkit): fix windows and wpe builds (#2443)
7edb6b94 - browser(webkit): configure video frame size over the protocol (#2442)
a3f34fb4 - chore: export juggler as a standalone folder for browser build (#2432)
8e8f9786 - browser(webkit): scale screencast frames on resize (#2441)
c02a862b - browser(webkit): implement support for proxy (#2436)
a644f0a8 - feat(fill): wait for the element to be enabled/writable/visible (#2435)
bf67245d - feat(debug): stream logs from waitForSelector (#2434)
0a34d05b - browser(webkit): encode screencast frames on a dedicated thread (#2433)
45441106 - fix(oopif): race between detachedFromTarget and frameAttached (#2419)
de0bbd30 - chore: remove page pause support (#2431)
e5875310 - fix(webkit): report event source (#2430)
b7df4d57 - chore: migrate wait tasks to Progress (#2422)
721d56a8 - browser(webkit): report 'eventsource' as resource type (#2423)
c001facf - feat(firefox): allow passing user prefs at launch time (#2417)
3cad8576 - browser(webkit): record screenast for non-accelerated compositing (#2418)
8f350e4f - chore: make polling in page cancelable from node (#2399)
acf059fe - fix(click): wait for button, input and select to be enabled before clicking (#2414)
fdd8df60 - Revert "browser(firefox): allow passing user preferences at launch time (#2416)"
a247f7d2 - browser(firefox): allow passing user preferences at launch time (#2416)
8e4a1e7c - fix(text selector): do not match text inside <head> (#2413)
084d5ff4 - browser(webkit): revert all changes and hacks to Page.navigate (#2411)
fc11b59c - chore: update WebKit upstream status
d980ed7e - chore: introduce Progress concept (#2350)
4bd9b303 - test: add a test for clicking a label with pointer-events: none (#2412)
767f6bfe - browser(webkit): report codec init errors to the client (#2410)
1722dcb8 - docs: link to wk upstream status
59a0451b - docs: fix spell mistake on api.md (#2408)
fdd48f89 - chore: remove confusing logging from registry (#2397)
4ac30f35 - feat(webkit): roll WebKit to 1246 (#2400)
4e8a03cd - browser(webkit): roll to ToT 5-28-2020 (#2398)
5277fb94 - test: fix the CSP capability test (#2394)
47ded05c - feat(chromium): roll Chromium to r772575 (#2395)
b62a6558 - chore: add webkit upstream status md (proper folder)
0ca80657 - chore: add webkit upstream status md
7a785ac2 - fix: properly rewrite error message (#2392)
91a102b1 - browser(webkit): fix copyright header (#2393)
fdbd4fe1 - fix(selectors): fix selector parsing for css attributes and quotes (#2389)
7981e4e3 - fix: support event source type in firefox (#2390)
2b21a5f6 - browser(webkit): fix Windows compilation (#2391)
9bf6348a - browser(webkit): GTK screencast recoder based on vp8 (#2388)
0ed052f9 - browser(firefox): expose internal request cause along with external one (#2383)
3f97a9fb - test: add failing test for event source (#2382)
6620008d - chore: follow up to address evaluation review comments (#2380)
46508c6b - test: try to unflake one more cookie test (#2381)
ece47891 - feat(debug): expose playwright object in console (#2365)
0753c2d5 - test: hack in output directory cleanup for parallel runs (#2378)
4413138c - fix(fill): allow to clear number input (#2376)
11d53ad5 - test: disable flaky CSP test on Firefox (#2374)
057ae14a - feat: make browserServer.kill() wait for the process to exit (#2375)
9dfe9348 - feat: Request.postDataJSON (#2368)
e168fdda - fix(evaluate): consistently serialize json values (#2377)
609bc4cf - chore: add stack trace utilities and tests (#2371)
1e2b4643 - feat(debug): when debugging, use zero as default timeout (#2362)
37ec3a6a - fix(types): properly export typescript types from packages (#2364)
415b1148 - feat(webkit): roll webkit to r1242 (#2361)
8f0f32b5 - chore: move debug-related code to src/debug (#2309)
4e86d398 - docs: recommend a dev install of Playwright in the docs. (#2355)
d532cd5d - test: fix cookie tests on WebKit (#2359)
43eed027 - chore: rename root index-for-dev.js into index.js (#2337)
79ec3c91 - test: unflake more cookie tests (#2346)
27d30fe1 - chore: encapsulate more launching logic in BrowserType (#2339)
aac5bf24 - fix(popups): do not override popup size from window features (#2139)
e2972ad5 - feat(click): retry when the element it outside of the viewport (#2330)
55d47fd4 - chore: unify launching server between browser types (#2338)
3aca21c1 - chore: simplify launch routine a bit more (#2336)
3c84e9ec - devops: enable canary publishing (#2335)
5ee64940 - feat(evaluate): return user-readable error from evaluate (#2329)
0a8fa6e4 - test: unflake more cookies tests (#2333)
aae3f1e7 - feat(default context): support selected options for default context (#2177)
2f993018 - test: disable flaky test on win firefox (#2332)
505d94ab - chore: drop dependency on playwright-core in all our packages (#2318)
2ede4bce - chore: further unify launching and connection (#2320)
9154f4b6 - feat(webktt): explicitly enable Playwright domain on start (#2315)
b1c15e45 - test: add failing PageDown test (#2326)
2f345c78 - browser(webkit): fix crash when commands are handled in the UIProcess (#2327)
9ef7e130 - browser(webkit): fix mac compilation (#2319)
f9b437a4 - chore: pull common functionality into the BrowserTypeBase (#2312)
aa0d844c - chore: introduce utility script for evaluate helpers (#2306)
d99ebc92 - browser(webkit): fix mac compilation (#2317)
48440f7e - test: unflake fixtures test (#2313)
9808d8bc - browser(webkit): add Playwright enable/disable commands (#2314)
b17a73c1 - test: try to unflake cookie test (#2310)
8e396fda - fix(types): add missing types for removing event listeners (#2307)
e558f051 - chore: print the launch error message to console (#2304)
e658a3e4 - docs(click.md): update click.md documentation (#2303)
e312845b - fix: less confusing error message (#2305)
545c43d2 - fix: better hittarget testing for clicking (#2217)
b8410bd1 - test: unflake headful window features test (#2302)
de606b95 - fix(chromium): handle various exception values in pageerror (#2293)
7efc22c0 - fix(chromium): websocket wrapper leaks child sessions (#2291)
48164340 - feat(debug): persist devtools preferences in Chromium (#2266)
fbccd328 - test: disable firefox crash tests (#2301)
a010fcd6 - feat(webkit): bump revision to 1238 (#2299)
5d0b5625 - browser(firefox): set initial page url to about:blank (#2300)
8957c868 - feat(debug): add source maps to evaluates in debug mode (#2267)
0bc49061 - browser(webkit): use unsigned long instead of size_t to fix Win (#2295)
96f9bbee - browser(webkit): fix windows build (#2294)
82cab094 - feat(logging): add logging to websocket transport (#2289)
5a6973fe - browser(webkit): support jpeg screencast frames on WPE and Win (#2290)
f24696be - feat: add page convenience methods for textContent and getAttribute (#2235)
359cb3a7 - fix(oopif): adopt main requests into oopifs (#2284)
2bd427ad - feat(exposeBinding): a more powerful exposeFunction with source attribution (#2263)
40ea0dd2 - browser(firefox): make default viewport work in default context (#2277)
9e2733d5 - docs(test-runners.md): add WebStorm comment (#2279)
125312f7 - docs(core-concepts.md): fix typo (#2273)
74ba03b1 - feat(webkit): bump revision to 1235 (#2262)
4bf5742d - fix(chromium): abort fetch requests that lack networkId (#2254)
99b7aaac - chore: refactor injected script harness (#2259)
9c7e43a8 - browser(webkit): roll to 05/15/20 (#2260)
73a26127 - docs: fix webkit badge
04aae1c0 - chore(electron): mark version 0.3.0 (#2255)
5a883a58 - browser(firefox): support internal drag and drop (#2243)
a38ac3fb - fix: report hash in page.url() (#2252)
e035bf3b - fix: update webkit version (#2250)
4d27aadb - browser(webkit): fix compilation on Mac (#2253)
8fb2c7e8 - browser(webkit): fix compilation on Win (#2251)
2073bcb8 - browser(webkit): fix compilation on Mac (#2249)
f743cd97 - browser(webkit): introduce screencast agent in web process (#2248)
63cc1268 - fix(webkit): do not swallow init errors (#2242)
e8e761f7 - chore: use internal BrowserOptions to unify browsers (#2230)
696b40a5 - docs: update click.md
919659a6 - browser(webkit): roll to r1230 (#2241)
17286ab7 - feat(webkit): roll to r1228 (#2232)
62ae0790 - browser(webkit): destroy main window after the view (#2233)
76e10660 - fix(screenshot): use innerW/H instead of offsetW/H to determine viewport size (#2229)
dbef7de4 - feat(electron): types (#2231)
5c43fb4a - browser(webkit): unfork windows bits (#2228)
2bca64a0 - test: mark failing headful tests as such (#2226)
a4b67046 - test: update download test failure expectation (#2225)
34373b3a - browser(webkit): compute non-header suggested name on windows (#2227)
650d7344 - fix(actions): do not wait for the created popups (#2219)
884860b8 - test: unflake launcher test (#2224)
03cae92f - browser(webkit): remove BackendDispatcher::Mode (#2223)
e081ba72 - chore: improve error message (#2222)
d611ca92 - browser(webkit): do not transform about:blank to about:///blank (#2221)
e96e471e - docs: draft for the various click scenarios doc (#2218)
f63ea3ff - feat(downloads): expose suggested filename (#2062)
84f966c3 - docs: fix typo
072dcba9 - api(viewport): do not allow isMobile and deviceScaleFactor for null viewports (#2190)
6361e07a - fix(docs): clarify repeating calls to setHTTPCredentials (#2212)
1f3f42a9 - devops: remove custom caching on travis (#2215)
f10e8c4d - chore(chromium): nicer error when running as root without --no-sandbox (#2214)
5d49c5d6 - docs: refer to "working with selectors" from all 'selector' arguments (#2213)
8b5e4398 - docs: update electron docs
b4acc56d - docs(api.md): elaborate on visibility options in waitForSelector (#2208)
624ca4d8 - chore: restore copyright for SerializedAXNode type
414ae002 - fix(electron): handle in-event await errors (#2207)
ebceaf43 - chore: make prepare_checkaout update browser_upstream/master (#2209)
28845e5c - feat(firefox): bump and use context setters (#2194)
cb465bc6 - fix(abort): abort waiting with error upon disconnect (#2204)
54b056bd - chore: make electron permanently depend on playwright-core@next
3f8dfed6 - feat(electron): add app.firstWindow convenience method (#2195)
fdc9ce8e - browser(firefox): move context settings from creation to setters (#2193)
054ee639 - docs(ci): elaborate ci caching docs (#2192)
e447e9aa - docs: update README.md for playwright-electorn
ffe70846 - feat(electron): experimental electron support (#2166)
a2bee2ca - fix(launch): handle timeout and exceptions during launch (#2185)
9895cd0a - chore: optionally create downloads folder (#2188)
8c083486 - fix(launch): handle websocket connect exceptions (#2184)
0c51a2e8 - docs: add mockiavelli library to Showcase (#2181)
617a00d4 - test(webkit): mark strict cookie tests as passing on linux (#2164)
b88c1a87 - feat(chromium): roll to r767256 (#2183)
2510edc3 - docs(ci): update docs for caching and troubleshooting (#2176)
c5b0baac - chore: remove main index.js from playwright-core (#2178)
d487a315 - doc: fix the route docs (#2174)
437d1b62 - test: fix should poll on interval test (#2180)
ae8d97cd - feat(persistent context): ensure initial about:blank (#2161)
dd6308cc - docs(CONTRIBUTING.md): fix typo in doc (#2169)
5b57303c - browser(webkit): expose Playwright.windowOpen signal (#2163)
8e590310 - chore: introduce debugAssert (#2160)
55a067f5 - docs(readme): update capabilities
83aff38c - feat(webkit): roll to 1124 (#2156)
85bfba52 - browser(webkit): properly specifiy keyIdentifier (#2149)
436bc5ca - test: update golden values in keyIdentifier test (#2155)
1b547167 - test(webkit): add failing keyIdentifier test (#2150)
9885ba20 - feat(firefox): roll to r1093 - 77.0b3 (#2152)
fde2b729 - browser(webkit): rewite Playwright CMakeLists.txt (#2153)
95b84953 - browser(webkit): roll to ToT 5/7/2020 (#2147)
59e9b5c0 - browser(firefox): kick bots
e2475061 - browser(firefox): roll ff to ToT 5/7/2020 (#2148)
755ef116 - test: add focus traversal test (#2141)
7a8dd2c3 - feat(console): allow page.on('console', console.log) (#2145)
51fe8492 - fix(css selector): support comma-separated selector lists (#2120)
4c4fa8d3 - docs: some syntax fixes (#2116)
d39ec35c - chore: Add "homepage" to package.json (#2127)
f86ddacb - docs: mention click(force) and dispatchEvent(click) in the click docs (#2136)
c49a6d74 - test: add a test for response coming from service worker (#2138)
98d32c5d - browser(firefox): do not fail when decoding large responses (#2130)
7a01bb1f - chore: bump package.json version to v1.0.0-post (#2128)
793a2bf7 - fix(firefox): do not run firefox as a part of the installation process (#2125)
10cca041 - browser(firefox): ensure rendering update before taking quads and scrolling (#2123)
41de5bc3 - Revert "chore: mark v0.18.0 (#2122)" (should go only into branch) This reverts commit 19e8c327ba049f248c028ac3f44c37e06d1484a6.
19e8c327 - chore: mark v0.18.0 (#2122)
</details>
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 →