playwright
v1.65.1Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.
- Maintenance
- Active688 commits in 3 months · bus factor 3
- License
- Apache-2.0Permissive · OSI-approved
- Security
- No advisories publishedScorecard 6.5/10
- Supported versions
- No scheduleendoflife.date does not track this project
100k stars · 6.9k forks · 43 open issues · last release 1 day ago · data checked 56 minutes ago
Breaking changes
What to check before upgrading, taken from the notes of the last 30 releases.
- v1.65.0Nov 5, 2026
- ## Notable Changes ⚠️
- ⚠️ Playwright no longer tests on Node.js 20. Use Node.js 22, 24 or 26, as listed in the system requirements.
- v1.64.0Oct 7, 2026
Breaking changes ⚠️
screenproperty is now forwarded from the device descriptors. If you use...devices['Desktop Chrome']and alike,window.screenand media queries now see the emulated screen size. You can opt-out by explicitly settingscreentoundefined:
// playwright.config.ts export default defineConfig({ use: { ...devices['Desktop Chrome'], screen: undefined, }, });- JSX in your test files now follows your
tsconfig.json. Playwright compiles JSX in test files according to thejsx,jsxFactory,jsxFragmentFactoryandjsxImportSourcetsconfig options, and defaults to the automatic runtime fromreact/jsx-runtime. --update-snapshots=missingnow passes the test run. Tests that only create missing snapshots now pass in the'missing'mode of testConfig.updateSnapshots, so that CI can generate new snapshots and verify the existing ones in a single run. The mode used when the option is not specified is now called'default'and behaves as before: missing snapshots are written and the test fails.- Elements inside hidden iframes are considered hidden. Elements inside an iframe that is not visible, for example with
visibility: hidden, are now considered hidden by actions, locator.isVisible() and expect(locator).toBeVisible().
- v1.63.0Sep 4, 2026
- ⚠️ The experimental
@playwright/experimental-ct-react,@playwright/experimental-ct-react17and@playwright/experimental-ct-vuepackages will no longer be updated. Follow the migration guide to move to the stories model introduced in 1.62. Story ids passed to fixtures.mount() can now be typed through the generatedStoriesregistry. - ⚠️ Ubuntu 20.04 is not supported anymore.
- ⚠️ The experimental
- v1.62.0Jul 24, 2026
- ⚠️ Debian 11 is not supported anymore.
- v1.60.0May 11, 2026
Breaking Changes ⚠️
- Removed long-deprecated APIs:
Locator.ariaRef()— use the standard locator.ariaSnapshot() pipeline.handleoption onBrowserContext.exposeBindingandPage.exposeBinding.loggeroption onBrowserType.connectandBrowserType.connectOverCDP— use tracing instead.- Context options
videosPath/videoSize— userecordVideoinstead.
- v1.59.0Apr 1, 2026
- ## Known Issues ⚠️⚠️
Breaking Changes ⚠️
- Removed macOS 14 support for WebKit. We recommend upgrading your macOS version, or keeping an older Playwright version.
- Removed
@playwright/experimental-ct-sveltepackage. junittest reporter now differentiates between types of errors, so some of the previous `s are now reported as`s.
- v1.58.0Jan 23, 2026
Breaking Changes ⚠️
- Removed
_reactand_vueselectors. See locators guide for alternatives. - Removed
:lightselector engine suffix. Use standard CSS selectors instead. - Option
devtoolsfrom browserType.launch() has been removed. Useargs: ['--auto-open-devtools-for-tabs']instead. - Removed macOS 13 support for WebKit. We recommend to upgrade your macOS version, or keep using an older Playwright version.
- Removed
- v1.57.0Nov 25, 2025
Release history
All releases on GitHubAtom feed/feed/microsoft/playwright
Badge
[](/p/microsoft/playwright)
Bug Fixes
- #43936 [Regression]: decorated class with a static field fails to load in 1.65 ("_initClass is not a function") with useDefineForClassFields: false
- #43934 [Bug]: Test locations are one column off under Bun 1.4.4+
Browser Versions
- Chromium 159.0.8154.6
- Mozilla Firefox 159.0
- WebKit 27.2