โ ๏ธ Breaking Change
Impact Score: 7/10
Playwright v0.16.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 API Changes - Method [`page.waitFor`](https://github.com/microsoft/playwright/blob/v0.15.0/docs/api.md#pagewaitforselectororfunctionortimeout-options-arg) is removed. Use explicitly named methods such as [`page.waitForSelector`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pageselector), [`page.waitForFunction`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pagewaitforfunctionpagefunction-arg-options) and [`page.waitForTimeout`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pagewaitfortimeouttimeout).
โก Executive Summary (TL;DR)
Playwright v0.16.0. Source highlight: Chromium 84.0.4131.0
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 API Changes - Method [`page.waitFor`](https://github.com/microsoft/playwright/blob/v0.15.0/docs/api.md#pagewaitforselectororfunctionortimeout-options-arg) is removed. Use explicitly named methods such as [`page.waitForSelector`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pageselector), [`page.waitForFunction`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pagewaitforfunctionpagefunction-arg-options) and [`page.waitForTimeout`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pagewaitfortimeouttimeout).
๐ View Raw Release Notes (Original Developer Log)
## Browser Versions
- Chromium 84.0.4131.0
- Mozilla Firefox 76.0b5
- WebKit 13.0.4
## Highlights
- Playwright now uses a single location on your machine to install all browsers. See [documentation](https://github.com/microsoft/playwright/blob/v0.16.0/docs/installation.md) for details.
## Breaking API Changes
- Method [`page.waitFor`](https://github.com/microsoft/playwright/blob/v0.15.0/docs/api.md#pagewaitforselectororfunctionortimeout-options-arg) is removed. Use explicitly named methods such as [`page.waitForSelector`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pageselector), [`page.waitForFunction`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pagewaitforfunctionpagefunction-arg-options) and [`page.waitForTimeout`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pagewaitfortimeouttimeout).
- The `'mutation'` polling option for methods like [`page.waitForSelector`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pageselector) is removed since it didn't work properly with Shadow DOM.
## New APIs
- [`page.waitForTimeout`](https://github.com/microsoft/playwright/blob/v0.16.0/docs/api.md#pagewaitfortimeouttimeout)
## Resolved Issues
#1810 - Improved docs
#1867 - How to close the browser in case of an error (click element not found.)
#1946 - [REGRESSION]: Lots of Navigation timeout errors in 0.14.0
#1950 - [BUG] Logger sink with name `browser` skips `browser:err`
#1962 - [BUG] 0.15 Cannot launch new chromium context after closing old one
#1968 - [REGRESSION]: Out of memory errors on 0.15.0
#1973 - [Question] Playwright-Docker help needed
#1977 - What's the actual danger with --no-sandbox and --disable-setuid-sandbox
#1981 - [Question] Documentation for page.waitForSelector() and visibility
#1982 - [BUG] Documentation in regards to text selector engine and single and double quotes
#1983 - [Feature] Add 'attribute' selector to the list of id, data-testid, ...
#1986 - [Question] Alpine Linux Support
#1987 - [BUG] A page.click() that initiates a navigation requires a waitFor() before a page.goto()
#1988 - [BUG] Browsers not installing on Node 14
#1992 - [BUG] install fail
#1993 - [Feature] waitFor() with string for selectorOrFunctionOrTimeout - return of JSHandle or ElementHandle
#1996 - [BUG] CSS attribute selector not working with a value with spaces
#2003 - [BUG] Problem resubmitting form in headful chromium
#2012 - [Feature] page.$ and page.$$ should pierce shadow DOM
#2024 - [Question] Issue with selecting text on the DOM
#2025 - [Question] different behavior in headful and headless mode?
#2026 - [BUG] page.waitForSelector() and waitFor: 'attached' not working properly
#2029 - How can i accept this pop up?
#2030 - [Question] Playwright-chromium is freezing
#2034 - [Question] Iteration over a table's <tr> tags to click and remove them
#2037 - [BUG] Element is not found for click
#2052 - [Question] Logo?
#2055 - [Feature] Removal of .$ functions
## Raw notes
9c67ce52 - test: simplify pausing tests (#2056)
671e4654 - docs(testrunners): brush up testrunners doc
12edf4f0 - doc: test runner examples (#2057)
06273ef9 - docs(api.md): Fix wording of javaScriptEnabled description (#2050)
848ea69a - test: unflake launcher test (#2049)
953dd36d - feat(api): remove 'mutation' polling option (#2048)
4afd3911 - fix(waitForSelector): use raf polling instead of mutation (#2047)
9f62f299 - feat(install): use shared installation folder by default (#2044)
c55db6d3 - browser(webkit): roll webkit to 1213 (#2045)
78b44ed2 - fix: report new window downloads (#2019)
5993a6a0 - fix: throw from eval methods if >1 argument is passed (#2043)
0228ba49 - feat(registry): implement download registry (#1979)
062a8361 - test: cleanup installation tests from top-level env variables (#2022)
cccf3f72 - chore: bringing back paused=true
c01e554e - test: add more pausing tests (#2040)
67deffe1 - browser(webkit): follow up to satisfy mac linter
3fefa7b7 - docs: fix docs for $foo methods that assumed css selectors (#2039)
b94f9108 - browser(webkit): introduce Page.setActivityPaused (#2041)
c921cc19 - chore: use xvfb from newer github action (#2035)
4652b9e2 - docs: Recommend using --ipc=host in docker (#2038)
3a29631e - docs: improve docs around actionability and visibility (#2036)
53485726 - fix(console): respect repeat count in webkit (#2032)
b11d7f15 - feat(input): retry when hit target check fails, prepare for page pause (#2020)
6c94f604 - feat(chromium): roll to r763809 (#2028)
2cdf2972 - chore: remove uncompiled download-browser (#2018)
c7b2c87f - test: add failing test for creating two headful contexts (#1994)
b6d1cbf4 - browser(firefox): report new window downloads (#2014)
7f5d8900 - test(click): add a test for 'Element has moved' exception (#2017)
910469cd - chore: do not run git fetch in export.sh (#2015)
62966ba9 - test(permissions): add chromium test for clipboard permissions (#2016)
d52bd929 - chore: read browser revisions off browsers.json (#2009)
c866c665 - chore: update issue templates
2b5ff83e - test: add failing headful test (#2013)
e5345687 - feat(chromium): roll back to r760827 to make headful happy (#2010)
f662686f - chore(css selector): temporarily remove light dom shortcut (#2008)
8aab7258 - fix(css selector): properly parse quoted attributes when querying in shadow (#2007)
d8cccbdb - test: add goto after click test (#1999)
031587a9 - fix(visibility): unify visibilty checks (#1998)
4b0d9774 - fix(docs): clarify the single/double quotes usage in text selector (#2002)
030c217a - test: add a test for selectors with spaces in css attributes (#2001)
7f8aa703 - api(waitFor): remove waitFor, use specialized wait functions (#1995)
f9f5fd03 - feat(selectors): allow to capture intermediate result (#1978)
f58d909d - fix(firefox): use separate processes for pages in different contexts (#1976)
df7338c2 - Revert "chore: cut v1.0.0-post (#1966)"
a2664b15 - docs: update ci section in getting started
f386fa94 - test: add failing test for new page downloads (#1984)
9f099731 - chore: update vuln dep (acorn) (#1980)
f9bd1d07 - fix(webkit): fix blob downloads on mac (#1972)
7ecf252d - feat(text selector): concat sibling text nodes when calculating text (#1969)
b60c006c - chore: simplify and restructure downloads (#1974)
a43eac38 - browser(firefox): use separate web processes for different contexts (#1975)
b498a3f2 - browser(webkit): make blob downloads work on Mac (#1971)
242c3667 - browser(webkit): fix compilation when orientation events are disabled (#1970)
7afceeb5 - chore: cut v1.0.0-post (#1966)
87a2f655 - docs(readme): fix typo
158e592f - docs(installation): adds requirements and renames the doc (#1965)
8ceba1ee - docs(ci): update ci docs to emphasize gh action (#1964)
28f98ac2 - docs(readme): update readme and intro docs (#1963)
4b263d63 - docs(releasing): update releasing docs according to new process (#1958)
3c71125d - Fix typo (#1961)