Playwright v0.11.0 Release Notes
Release Date: 2020-02-14 // about 4 years ago-
Current Status
- Chromium 82.0.4057.0. Passes 99% (792/802) tests
- Webkit 13.0.4. Passes 99% (792/802) tests
- Firefox 73.0b13. Passes 95% (763/802) tests
Detailed status can be found at IsPlayWrightReady?
๐ฅ Breaking API Changes
๐ป
browserType.launch
has changed. Playwright now launches in 3 modes:โ
browserType.launch
- default mode for testing. Each test should start withbrowser.newContext
to obtain a clean environment. All new contexts are ephemeral, not persisted into the profile directory. It no longer acceptsuserDataDir
option. There is no notion of thedefaultContext
anymore.
๐ (Note: you will still see an empty default context window when you run playwright in the headful mode. This is a side-effect of running the stock browsers. We are working on changing this behavior upstream so that clear Playwright run in this mode has no open windows on launch.)0๏ธโฃ
browserType.launchPersistent
- default mode for headful operations and those reusing the user profile. Instead of returning theBrowser
, it returns theBrowserContext
loaded from the user data dir right away. It requiresuserDataDir
to be passed as the first parameter.โ
browserType.launchServer
- returns aBrowserServer
(formerly known asBrowserApp
) that can be connected to via thebrowserType.connect
. Multiple clients can connect to the same server. Closing theBrowser
disconnects from the server. This mode is useful for certain test runner setups.Request interception
๐
page.setRequestInterception
is replaced with thepage.route
. New method accepts the pattern of the urls to be intercepted and handles interception in place, instead of using thepage.on('request')
event. Note that we intend to move this method into theBrowserContext
over time to make sure it affects popup windows.Viewport
๐
page.setViewport
is renamed topage.setViewportSize
. It only allows resizing the viewport, does not allow changing it from mobile to desktop on the fly. Old method was making an implicit reload when switching device type and we did not want that to happen.๐
page.viewport()
is renamed topage.viewportSize()
๐ New APIs
๐ new
browser.newPage
- convenience method that creates a new context and a page inside that context. Closing the page closes the context. Useful when you only run single-page tests in your contexts.๐ new
page.check()
andpage.uncheck()
- toggle your checkboxes.๐ new
browserContext.on('close')
event - tells when the context is destroyed (disconnected from the server).๐ new
browserType.downloadBrowserIfNeeded()
- when you useplaywright-core
npm that does not download browser by default, you can use this method to fetch them on demand.๐ new
frame.frameElement()
method๐ new
page.route
- substituted thepage.setRequestInterception
api.๐ new
page.viewportSize()
- used instead ofpage.viewport
.๐ฆ In addition to this, all playwright packages now expose the same API and are only different in
๐ป the set of browsers they download:- ๐ฆ
playwright
- downloads all 3 browsers (chromium, webkit & firefox) - ๐ฆ
playwright-core
- does not download any browsers. Handy together withbrowserType.downloadBrowserIfNeeded()
- ๐ฆ
playwright-chromium
- downloads only chromium - ๐ฆ
playwright-firefox
- downloads only firefox - ๐ฆ
playwright-webkit
- downloads only webkit
๐ Bug Fixes
๐ #808 - [BUG] rimraf causes failure with multiple browsers on Windows
#814 - [BUG] playwright- and playwright have different export signatures
#817 - [Feature] XPath staring with "(//" should be detected as such
๐ป #823 - [Feature] Allow skipping specific browser downloads
#839 - [Feature] Frame.frameElement
#857 - [BUG] Firefox: bundle ff-specific preferences with binary
#887 - [BUG] Cannot read property 'width' of null for Webkit screenshot
๐ #914 - [BUG and temporary fix] Open Firefox as the frontmost window (macOS-specific)
๐ #942 - [BUG] WebKit under debug crashes on Windows
#955 - [Feature] Expose Rawer V8 coverage information
#979 - [BUG] Missing blur and focus eventsRaw Notes
๐ d29625c - chore: generate browser versions when doing release (#999)
โ 1eabd18 - test(firefox): unskip passing url hash test (#998)
๐ b041ce6 - devops: enable debugging on WK Windows
๐ 4d7e531 - fix(webkit): wait for the pipe ready on windows (#997)
cd4e9da - feat(coverage): export raw v8 coverage (#976)
โ 7ec3bf4 - test: fix locale tests on mac
โ b181b34 - test: attempt to normalize locale tests
โ b96d985 - test: fix locale expectations on non-Mac (#994)
0๏ธโฃ 25022e4 - feat(api): introduce default timeouts on BrowserContext (#992)
e744c53 - chore(webkit): bump webkit version to 1150 (#991)
๐ f7fb35b - fix(windows): wait for pipe available again (#993)
โช f8f818f - Revert "Revert "feat: do not wait for first page in non-persistent mode (#939)""
โช 71892b4 - Revert "feat: do not wait for first page in non-persistent mode (#939)"
c15534f - fix(locale): document locale parameter (#990)
โ cb63021 - test: add test for navigator.userAgent in popups (#985)
โ 05f8d00 - test: fix service worker test (#988)
โ 2e0d89e - fix(firefox): roll to 1029 and unskip passing tests (#984)
โ d790b4c - fix(test): default DEBUGP to false (#989)
๐ป 8ed88c9 - feat(webkit): introduce BrowserContext({language}) (#972)
8006b2c - fix(webkit): avoid UnhandledPromiseRejection (#986)
๐ป 991b89f - browser(webkit): rebase WebKit on r256488 (#973)
53fa629 - fix(): emit focus events in headful (#982)
a567123 - feat: do not wait for first page in non-persistent mode (#939)
๐ป c2ab1e3 - browser(firefox): misc fixes (#983)
โ d367a2e - chore(tests): log protocol messages when a test fails on the bots (#963)
8abf35c - feat(webkit): roll webkit to 1148 (#971)
๐ป d735de5 - feat: do not let users passuserDataDir
tobrowserType.launch()
(#974)
๐ป b7f48f4 - browser(webkit): layout before returning DOM.getContentQuads (#970)
b188f39 - devops: do not assume that checkout exists
๐จ 5dbc880 - browser(webkit): print friendly tz names (#969)
๐ c19a7be - chore: remove stub types definition
012bf67 - feat(webkit): emulate timezone on webkit (#968)
d26f47b - fix(platform): properly handle websocket error events (#967)
โ fbce290 - test: unskip passing Firefox tests (#966)
๐ aa60a7c - docs(api.md): fix nit
โ bfaf191 - test: add missing tests (#965)
1d84f38 - fix(input): ensure input works as expected with page scale (#962)
ee9748b - feat(): roll chromium to r740847 (#964)
๐ 7ce49c2 - chore: remove WebSocket implementation (#961)
b0c0598 - fix(api): small-case all api event names (#959)
๐ป 44941ad - browser(webkit): emulate time zone (#960)
๐ง 1945ed7 - devops: run API coverage tests on linux (#958)
๐ป 211cba4 - browser(webkit): use css (not dip) coordinates for input and content quads (#957)
79c4763 - feat(webkit): roll to r1145 (#954)
5956df5 - devops: re-factor github workflow internal structure (#956)
โ 5f24205 - test: add a test for interception + service worker (#951)
๐ a4d0187 - chore: mac build bots (#734)
๐ 1f29930 - devops: add docs & lint github workflow (#953)
๐ 0de625d - Revert "devops: add docs & lint github workflow"
๐ 7ec7f72 - devops: add docs & lint github workflow
๐ 9bbaa32 - browser(webkit): remove assert (#952)
๐ท 3007541 - browser(webkit): do not intercept requests on the way to service worker (#948)
โ c8c4356 - test: add setInputFiles input event test (#944)
d05feec - feat(active): emulate active state on webkit (#941)
0d16d14 - fix(firefox): rely on bundled firefox preferences (#943)
๐ป da30847 - feat(firefox): apply emulation to all pages in the browser context (#931)
๐ป 90367c1 - browser(webkit): emulate active and focused state (#940)
โ f25a27a - test: add a test for bounding box with page scale (#935)
๐ ce38213 - browser(webkit): disregard dpi on windows (#938)
0๏ธโฃ d37b67a - browser(firefox): do not wait for initial navigation in default context (#937)
๐ efa567d - devops: fix firefox preferences build on mac
451ec72 - feat(): roll Chromium to r740289 (#936)
โ 20e2bac - test: fix flaky page event test
5323700 - feat($wait): make $wait a shortcut for waitForSelector (#932)
๐ 3a32b14 - devops: bundle firefox preferences alongside with build.
โ 6105d8a - fix(tests): fix test that was leaking a context (#933)
๐ป aae5fca - feat(api): make browser.newPage own the created context (#930)
๐ป ad9d6cc - feat: introduce browserType.downloadBrowserIfNeeded() (#834)
๐ป 9ea8f49 - browser(firefox): attach to all pages in the browser context (#928)
8a35f40 - fix(events): deliver page.close upon disconnect in FF (#929)
๐ c69dccf - feat(click): use browser-provided scrollIntoViewIfNeeded (#893)
๐ป 72b9cf0 - feat(context): introduce BrowserContext close event (#918)
โ 5fee93a - test: fix expect in jshandle spec (#927)
7802354 - fix(firefox): bring headful window to front on launch (#923)
49eea19 - feat(webkit): roll webkit to 1141 (#922)
๐ป 29f4f18 - browser(webkit): allow beforeunload override when headful (#921)
๐ 251ad38 - fix(navigations): remove LifecycleWatcher, fix flakes (#882)
โ c03e8b7 - chore(tests): add types for tests (#915)
9da0229 - chore: bump rimraf to 3.0.2 (#916)
๐ 4fcc63f - chore: remove usages ofmime
module from infrastructure
๐ 84f5700 - feat(api): rename browserContext() to context() in the apis, remove url from newPage (#906)
4d84e35 - fix(upload): detect mime type from file extension (#911)
0๏ธโฃ 79b7a84 - fix(screenshot): be careful w/ default viewport, extract common logic (#913)
๐ 2dd11ea - docs: remove browser.newPage from README
โก๏ธ 50f96eb - docs: update readme to address browser changes questions
๐ e9c1477 - fix(webkit): fix remaining tests on windows (#905)
โ f4734ef - feat(testrunner): show workerId in verbose mode
d71c9e0 - feat(webkit): roll webkit to r1140 (#904)
๐ป e2710de - browser(webkit): do not activate headless window on browser start (#900)
โ 36344de - tests: consistently use platform constants (#899)
๐ 3acc65d - devops: teach //browser_patches/webkit/build.sh to build both GTK & WPE
๐ 73148fd - chore(lint): add @typescript-eslint/no-unnecessary-type-assertion rule (#898)
๐ 487d394 - chore(lint): add @typescript-eslint/type-annotation-spacing rule (#897)
8712359 - devops: prettify telegram messages
42c2cfc - fix(pipe): sort out pipes on platforms (#895)
0ed43e8 - feat(webkit) await the reading from pipe message (#894)
๐ป cdbfc4c - browser(webkit): report inspector pipe is listening via stdout (#892)
๐ป 8c2302d - browser(webkit): do not navigate popups to about:blank on Win (#886)
d397bb1 - feat(): roll chromium to r739261 (#885)
fe2431e - feat(webkit): roll webkit to r1137 (#884)
fee83b1 - fix(api): page.viewport -> page.viewportSize (#878)
๐ป c33a12d - feat(firefox): ensure that new pages get browser context userAgent option (#872)
๐ป bc91259 - browser(webkit): use random ephemeral session ids on Mac (#881)
๐ 06a7d7e - docs(api.md): missing arguments for functions in page.route (#880)
๐ป f15690d - browser(webkit): roll WebKit to tip-of-tree 2/6/2020 (#877)
๐ ffc1022 - fix(doclint): fix doclint for new typescript (#879)
๐ ffc8f96 - browser(firefox): bump build number to r1025
๐ป 9f0bbff - browser(firefox): pause page on creation to handle emulation messages (#871)
75340f3 - chore: Note that (code) coverage is only available for (#867)
๐ป 8c6faab - browser(firefox): roll firefox to upstream's beta (#876)
โ 99d0689 - tests: explicitly close contexts for browser.newPage (#875)
126eb50 - fix(transport): dispatch messages in separate tasks (#841)
๐ป 6202ff1 - browser(firefox): use guids for browser contexts, delete contexts on disconnect (#866)
๐ a547aa7 - feat(connect): allow multiple webkit connections over web socket (#863)
๐ f49d63f - test: remove fdescribe
โ 5152540 - test(cookies): add more isolation tests (#869)
โ a72784a - fix(test): properly clean input field (#860)
fa6a5ed - chore: fix typo in aliases
177a1d4 - chore: add "unit", "wunit" and "funit" aliases (#859)
6318ba6 - feat(frame): introduce frame.frameElement (#856)
โฌ๏ธ 4be39f8 - chore(types): upgrade to typescript 3.7.5 (#855)
๐ 4aa155e - docs(api.md): fix link
cd68619 - chore: fix protocol-types-generator to work with new API
55b6fe2 - feat(launch): introduce client, server & persistent launch modes (3) (#854)
๐ท 28c4a16 - fix(): ensure we resume service worker before detaching from it (#850)
โ a4c40ff - test: make surepage.fill
actually clears an input (#851)
๐ 1b1ed08 - browser(webkit): introduce DOM.scrollIntoViewIfNeeded (#847)
๐ 0cc26c0 - browser(firefox): introduce Page.scrollIntoViewIfNeeded (#848)
a2ab645 - feat(launch): introduce client, server & persistent launch modes (2) (#840)
๐ 0f1a42a - docs(readme): fix API link to always point to last released API
๐ง f114255 - devops: attempt to fix linux bot
โ 2e0f3e3 - docs: split docs to npm version and latest (#846)
0518625 - feat(launch): introduce client, server & persistent launch modes (1) (#838)
bdf8e39 - feat(goto): assume http:// for localhost navigations (#825)
๐ท 8f1df5e - fix(): pause workers on start to not miss any events (#832)
โ 4b761f4 - test: expect current behavior for cross-frame js handles (#833)
6dc88bc - feat(webkit): roll WebKit to r1134 (#835)
0c2a2e1 - fix: properly nullify error stacks (#836)
e3e2da3 - feat(check): introduce page.check/uncheck (#826)
๐ 2ba5e84 - docs: we are Playwright, not PlayWright
๐ 3ef2313 - docs: fix dead link for element handle (#827)
๐ 05d4746 - feat(selectors): temporarily remove zs engine (#824)
1059e22 - fix(fill): make fill work for input[type=number] (#819)
b82bc5f - feat: treat selectors with leading '(//' as xpath (#821)
๐ฆ cea036a - feat: change vendor package exports (#818)
8028fb0 - feat(route): migrate from request interception w/ events to page.route (#809)
๐ป 84edefd - browser(webkit): follow up to Browser.setLanguage, fan out changes (#801)
๐ 387b895 - browser(webkit): build more wk features (#807)
๐ท 0a16b60 - browser(webkit): fix crash when a worker is terminated while logging (#797)
0007439 - doc(api.md): Fix setPermissions link (#806)
fce3842 - chore: bump version to 0.10.0-post (#796)