Releases: microsoft/playwright
v1.6.2
Highlights
Minor bugfixes.
Browser Versions
- Chromium 88.0.4324.0
- Mozilla Firefox 83.0b8
- WebKit 14.0
v1.6.1
v1.6.0
Highlights
Touch
- Use [
page.tap()
] to automate native tap events. Like other input events, taps auto-wait for the UI element and [actionability] checks.
Network
- WebSocket inspection: Use [
page.on('websocket')
] and the new [WebSocket] class to inspect WebSocket connections. - HAR export: Capture and export all the network activity as a HAR file. Pass
recordHar
while creating new browser contexts. - Resource timing: Use [
request.timing()
] to retrieve and analyze timing data for the network requests. - Proxy for browser context: Network proxy settings can now be configured per browser contexts with the
proxy
option on the new context.
Playwright CLI
- CLI codegen can now generate C# code. Run
npx playwright-cli codegen --target=csharp
to try!
Browser Versions
- Chromium 88.0.4316.0
- Mozilla Firefox 83.0b8
- WebKit 14.0
New APIs
- new class [WebSocket]
- new option
proxy
in [browser.newContext()
] and [browser.newPage()
] - new option
recordHar
in [browser.newContext()
] and [browser.newPage()
] - new option
recordVideo
in [browser.newContext()
] and [browser.newPage()
] - new [
page.on('websocket')
] event - new [
page.tap()
] method - new [
elementHandle.tap()
] method - new [
page.touchscreen
] namespace to access [Touchscreen] - new [
request.timing()
] method
Issues Closed (39)
#1655 - [Feature] Custom methods on Page
#2515 - [Feature] networkidle for "idle after action"
#2695 - [Feature] WebSockets supports
#2946 - Not able to detect browser event: disconnected event when close browser is invoked
#2974 - [BUG] Unable to adopt element handle from a different document
#3122 - [QUESTION] Chromium versions are mismatched in docker, leading to launch failures
#3206 - [Feature] Export network as HAR
#3466 - [Feature] Fill input field based on label text
#3476 - [BUG] Firefox focus won't work with more than 1 page
#3499 - [BUG] Playwright does not see iframe element as visible
#3534 - [Feature] Allow set proxy per context
#3693 - [BUG] RPC/Firefox goBack does not return a response (guid)
#3830 - [Feature] Text selector engine normalise whitespaces
#4002 - [BUG] page.waitForSelector fails when called during a redirect
#4021 - [BUG] beforeunload event in headless mode is failing
#4038 - [REGRESSION]: Tall screenshots in chromium get corrupted at bottom
#4134 - [BUG] elementHandle.scrollIntoViewIfNeeded doesn't work properly
#4179 - [BUG] Unable to close page when confirm dialog is open
#4208 - [BUG] Timout Error on firefox for popup
#4232 - [BUG] Group videoPath and videoSize under recordVideo option
#4233 - [BUG] download file not occurs
#4255 - [Question]: Exposing common Playwright types
#4256 - [Question] playwright-electron types might be missing from the release or is there any guide on how to get it to work?
#4265 - [Feature] Multiple text selectors
#4266 - [Question] Exported video quality
#4268 - [Question] Does puppeteer have Redhat Dockerfile support?
#4277 - [BUG] Firefox workers cause frame navigation
#4279 - How to Compare two screenshots? Need code [Question]
#4282 - [Question] is there a way to get element background colour ?
#4284 - [BUG] page.addInitScript doesn't work for large scripts
#4285 - Running WebKit on AWS EC2 Instance [Question]
#4286 - [Question] CDP sessions with other targets
#4293 - [BUG] Bundle dlls with Firefox for Windows
#4302 - [Question] What is the best way to scroll page to the bottom?
#4317 - [Question] drag and drop
#4318 - [Question] Query by text with space
#4319 - [Question] Have the browsers that are downloaded for playwright 1.3.0 changed somehow ?
#4321 - [Feature] pass arguments like proxy to each context not to whole browser
#4326 - [Test] Ubuntu: browsercontext-proxy.spec.ts:128:1 › should exclude patterns crashes webkit
Commits (164)
2158d6d - feat(scopes): make page a scope (#4385)
58b5872 - feat(webkit): bump to 1383 (#4394)
508be0d - browser(webkit): fix big sur crashes after latest roll (#4391)
c2db837 - feat(webkit): roll to r1381 (#4388)
775be21 - fix(launchdoctor): fix launch doctor (#4387)
488b256 - feat(firefox): bump to 1205 (#4386)
bd75fb1 - browser(webkit): roll to 11-09 (#4384)
ae738c1 - browser(firefox): ignore WebProgress events coming from workers (#4380)
f7eb845 - feat(firefox): bump to 1204, add a better test for video in popup (#4376)
28f6547 - chore: add adb-based connectivity (#4375)
06c8881 - browser(firefox): fix videoSessionId (#4374)
3db8b23 - fix(chromium): lifecycle events race (#4369)
c83ac44 - api(websocket): do not send websocket frames without a listener (#4361)
d74988e - feat(webkit): bump to 1380 (#4368)
d4fb159 - browser(webkit): fix webcontent startup crash on macos 11 (#4370)
fff36a7 - feat(firefox): roll Firefox to r1203 (#4365)
c522a0d - browser(firefox): force always active docshell (#4363)
49e4d9a - browser(webkit): force rebuild with new redistributable dlls (#4364)
354482d - feat(firefox): bump to 1202 (#4362)
040f9b0 - browser(webkit): copy MS VC++ redistributable libs from VS installation (#4360)
5faf6f9 - feat(firefox): switch to use pipe instead of websocket (#3279)
aafcf93 - browser(firefox): bundle VS C++ redistributable dlls (#4359)
bc20bfd - browser(webkit): disable cache compiled sandbox (#4357)
c384313 - feat(fill): allow filling based on the label selector (#4342)
5d39eae - devops: actually export secrets into webkit building workflow (#4354)
db8332b - devops: checkout, build, and upload webkit-mac-11 (#4353)
b94a7c0 - devops: speedup initial browser checkout (#4352)
bba8c98 - devops: try building webkit on gha (#4351)
4d8ef42 - devops: add instructions to build mac on BigSur (#4350)
3f37d85 - test(focus): add passing test for focusing more than one page (#4347)
e942138 - fix: do not report errored pages after context closure (#4346)
4cb5214 - test(capabilities): add tests for webgl (#4343)
283bc2c - devops: ensure that embedder directory does not exist (#4340)
65009dc - feat(chromium): roll Chromium to r823944 (#4341)
14a8292 - feat(webkit): bump to 1378 (#4338)
12afb79 - test: unflake har tests (#4335)
5dc632b - chore: mirror Chromium 823944 to our cdn (#4339)
78b1511 - test: try to unflake screenshot tests (#4334)
5c1149f - test: try to unflake network idle tests (#4333)
890add9 - browser(webkit): do not hang on close when there is a dialog (#4332)
bc97650 - feat(firefox): roll Firefox to r1201 (#4331)
031f0bf - browser(webkit): fix mac build failure caused by touch events (#4330)
c6b4263 - browser(webkit): fix timezone overrides after last roll (#4329)
799604c - browser(firefox): roll Firefox to beta @ Nov, 3 (#4327)
eae3d93 - browser(webkit): fix proxy ignore pattern set on context level (#4328)
0a9fdc4 - browser(webkit): roll to 11-03 (#4325)
d57b439 - fix(har): support har in persistent context (#4322)
924cc98 - feat(text selector): normalize spaces in lax mode (#4312)
8fed0b3 - feat(firefox): roll Firefox to r1200 (#4316)
1c39689 - api(videos): introduce a single recordVideo option bag (#4309)
46e124a - fix(api.json): use separate maps for methods and events (#4310)
51f8f23 - devops(flakiness): collect more commit information (#4315)
e3b12b0 - browser(firefox): fix closing browser contexts with beforeunload (#4314)
3d3ce13 - test: co-locate beforeunload tests (#4313)
2b495c9 - browser(firefox): fix SimpleChannel to await initialization (#4311)
f80f815 - feat(chromium): bump to 823078 (#4308)
ac8ab1e - feat(websocket): add WebSocket.waitForEvent and isClosed (#4301)
c446bf6 - chore: cleanup some har code (#4306)
d117d0b - feat(scopes): make page a scope (#4300)
1255289 - browser(chromium): roll to 823078 (#4307)
9c80cbd - fix(docs): small docs changes for new apis (#4305)
94cb7c9 - feat(webkit): bump to 1373 (#4299)
7ef1533 - browser(webkit): one more mac build fix after last roll (#4298)
3577e63 - browser(webkit): mac build fix after last roll (#4296)
5a9ba55 - test: remove stale describe
c9fa8c0 - fix(test): unflake web socket test on firefox
5e50fe3 - browser(webkit): roll to 10-30 (#4294)
7fbbd18 - feat(firefox): support WebSockets on Firefox (#4289)
333916a - infra: bump to next version on trunk at a branch point (#4288)
18c3efe - browser(firefox): instrument websockets (#4287)
914f637 - feat(proxy): enable per-context http proxy (#4280)
ff7d6a2 - feat(firefox): roll Firefox to r1197 (#4278)
aee9068 - test: mark flake headful chromium test as fixme (#4276)
f384a86 - test(har): uncomment some raw header tests (#4273)
efdb154 - test: roll folio to 0.3.16 (#4275)
c5d3490 - browser(firefox): roll firefox to beta Oct, 28 (#4274)
7bedbb2 - feat(browser): roll WebKit to r1370 (#4257)
ece84ec - fix(protocol): annotate file buffer as binary (#4272)
05278b8 - chore: remove committed types.d.ts - we are still generating it at build time (#4271)
41d514d - browser(webkit): disable gamepad on GTK (#4264)
6cafdc5 - infra: fix the headful bit on the bots (#4261)
05fd572 - docs(api): remove * from permissions (#4260)
0b8c33e - fix(ECONRESET): fix it once and for all (#4258)
dcbdb4a - test: fixed executable path test if ran in Docker (#4219)
1ef090c - fix(screenshot): prioritize passed type over the extension mime (#4251)
e62f27a - chore: eliminate dead code (#4253)
aa219c6 - chore: roll folio to v0.3.15 (#4252)
be84284 - feat(websocket): implement Web Sockets for Chromium & WebKit (#4234)
00d6313 - browser(webkit): report raw request headers from didReceiveResponse (#4250)
b08d3dc - devops: always ensure linux deps when building webkit (#4249)
39637a4 - browser(webkit): build fix (#4247)
163cf1b - d...
v1.5.2
Highlights
- Chromium 88.0.4287.0
- Mozilla Firefox 82.0b9
- WebKit 14.0
Bug fixes:
- #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 varPLAYWRIGHT_SKIP_BROWSER_DOWNLOAD
from true to false - #4238 - [BUG] A png screenshot is produced when a jpeg/jpg screenshot is requested
Issues Closed (5)
#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
Commits (7)
0f8eccf - fix(ECONRESET): fix it once and for all (#4258)
e50d0a2 - fix(screenshot): prioritize passed type over the extension mime (#4251)
3d4e50d - fix(env): respect =true/false as env values for boolean flags (#4228)
1df6b92 - fix: update getFromEnv
logic to validate that value is undefined (instead of falsey) before redefining it (#4226)
3188d6e - fix(listeners): avoid "too many listeners" problem safely (#4223)
3201c23 - Revert "fix(listeners): avoid "too many listeners" problem (#3931)" (#4222)
4975cea - chore(screencast): respect i/o backpressure when writing into ffmpeg (#4164)
v1.5.1
Highlights
New page.video()
method to retrieve on-going page video recording.
Browser Versions
- Chromium 88.0.4287.0
- Mozilla Firefox 82.0b9
- WebKit 14.0
New APIs
Issues Closed (2)
#4142 - [BUG] Video Recording Chromium compression is too high
Commits (6)
0b7976a - fix(screencast): await for the first video frame on Chromium (#4145)
2cd8604 - fix(screencast): bump chromium video quality (#4146)
5dce248 - fix(screencast): correctly process videos with 1 frame (#4144)
85ae3cc - chore: mark v1.5.1
e5743d2 - docs: fix Video.path() type (#4141)
618b50c - api(video): restore the missing video path accessor (#4132)
v1.5.0
Highlights
- Video screencasts API is now stable: Use the
videosPath
option while creating browser contexts to record videos for all pages within the context. See examples. - Test runner is available in preview: To setup a cross-browser end-to-end testing suite with Playwright, check out playwright-test. Try it out, and tell us what you think!
Playwright CLI
- CLI codegen can now generate Python code. Run
npx playwright-cli codegen --target=python
to try!
Breaking changes
- Chromium sandboxing is now opt-in. This is to simplify running Playwright tests in CI environments. Learn how to enable sandboxing.
- The Docker image adds
pwuser
as an optional user for non-root user environments.
Browser Versions
- Chromium 88.0.4287.0
- Mozilla Firefox 82.0b9
- WebKit 14.0
New APIs
- [
browser.newPage()
], [browser.newContext()
] and [browserType.launchPersistentContext()
] now supportvideosPath
andvideoSize
option. - New [
page.video()
] method. (v1.5.1) - New [
Video
] class. (v1.5.1) - New [
browserContext.browser()
] method. - Both [
browserContext.exposeBinding()
] and [page.exposeBinding()
] now accepthandle
option to pass handles instead of serialized values.
Issues Closed (29)
#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
Commits (167)
3350db2 - chore: nit test fixes (#4114)
c2adc98 - chore: roll folio to 0.3.8 (#4113)
46b14bc - chore: roll folio to 0.3.6 (#4110)
80ed407 - test: add a failing test for the issue 4038 (#4111)
5648eac - browser(webkit): fix mac build after last roll (#4108)
3f68713 - chore: locate binaries in case of cli deployment (#4107)
db744e2 - browser(webkit): roll to 10/08 (#4106)
b85ba62 - browser(webkit): actually fix mac compilation (#4105)
9801be6 - feat(chromium): roll to 815036 (#4099)
80773fa - fix: disable chromium sandbox by default (#4090)
d6a198a - browser(webkit): speculative build fix for Mac (#4104)
8252eb7 - browser(webkit): roll to 09-27 (#4103)
c078e98 - chore: update bin/PrintDeps.exe to r1002 (#4096)
e2f7745 - browser(chromium): roll to 815036 (#4098)
ebb3563 - chore: update package-lock.json
e6a1a1c - fix(docker): add again pwuser (#3899)
b4ad6e7 - devops: playwwright-core installation should not touch browser registry (#4089)
ff295d1 - fix(windows): fix dependencies check on windows (#4076)
08024c8 - feat(firefox): roll to r1188 (#4091)
6a7d244 - devops: fix firefox build (#4088)
1ccce09 - browser(firefox): roll Firefox to beta Oct 7, 2020 (#4087)
0990694 - docs(page): clarify page.close({runBeforeUnload: true}) behavior (#4086)
6bb212c - feat(firefox): roll Firefox to r1186 (#4085)
fd769ec - chore: remove test dependency on pw itself (#4078)
6beef55 - browser(firefox): wait for search and addon manager initialization (#4081)
3b42328 - browser(firefox): a different way to emit 'load' event (#4080)
aafe5da - docs: add videos to verification doc (#4071)
ad58e49 - Revert "feat(firefox): migrate to the pipe channel (#4068)" (#4073)
1fe3c78 - test: roll test runner 0.9.22 (#4072)
ce7aa7a - feat(firefox): migrate to the pipe channel (#4068)
e6869ed - browser(firefox): fix typo in dispatcher teardown (#4069)
5d12915 - feat(firefox): roll to r1182 (#4067)
4ab66a4 - browser(firefox): follow-up with assorted simplifications (#4066)
c8a64b8 - browser(firefox): enable document channel (#4065)
e403fd3 - test: update fixtures to new syntax (#4063)
0db09f8 - test: roll test runner to 0.9.20 (#4062)
2df6425 - chore(typo): resolve typo in src/progress.ts (#4041)
857abcf - browser(firefox): make pipe work on Windows (#4058)
a7beaf6 - browser(chromium): roll to 813607 (#4052)
d31cbc2 - fix(video): wait for videos when closing persistent context (#4040)
fbe0fb2 - fix(api.json): do not copy documentation from base class members (#4048)
e214f79 - feat(video): support videos in remote browser (#4042)
133de10 - browser(firefox): start screencast in existing pages upon setScreencastOptions (#4045)
1f16ce2 - test: remove failing expectations from a passing test (#4036)
ec36eef - feat(firefox): roll Firefox to r1179 (#4044)
2c11b10 - browser(firefox): remove multisession logic (#4039)
5e42029 - api: allow exposeBinding to pass handles (#4030)
c217121 - test: add a test for request interception with redirects (#3994)
81c1dae - test: roll test runner 0.9.17 (#4035)
318ab28 - chore: include api.json in NPM package (#4034)
4a77363 - api: update videos api, hide tracing (#4015)
920cc7c - test: run crash tests with chromium wire (#4026)
b74a6b7 - browser(firefox): do not double-attach session to the same target (#4027)
f885d07 - fix(close): fix a race during context.close and page.close (#4018)
b9dcfb9 - test: minor fixes (#4024)
13d48da - test: record trace/videos on retries (#4009)
9743584 - browser(firefox): move user agent emulation to browser side (#4016)
ab2714e - test: unflake click-timeout-4 (#4012)
ccc827c - test: add a test for screen.avail{Width,Height} emulation (#4011)
e280839 - browser(firefox): simplify PageTarget lifecycle (#4014)
24bc0e3 - browser(firefox): remove the hack around setting viewport size (#4010)
a20c0e0 - roll(firefox): roll Firefox to r1174 (#4005)
d658b68 - chore: refactor screencast tests (#4007)
20b83ee - fix(electron): do not use --require to throttle startup (#4006)
6dccd27 - fix(wire): fix the wire mode (#4008)
7ccdc51 - chore: include api.json into the Playwright package (#4003)
c30b894 - chore: add missing image test expectation (#4004)
de1e63d - test: roll test runner 0.9.16 (#3998)
2631e1a - browser(firefox): use browsingContextID for frame IDs (#3999)
b3497b3 - fix(actions): wait for some time before retrying the action (#4001)
109688a - chore: split playwright.fixtures into files (6) (#3988)
423485e - chore: split playwright.fixtures into files (5) (#3986)
0ee9050 - chore: split playwright.fixtures into files (4) (#3985)
cef27d6 - chore: split playwright.fixtures into files (3) (#3984)
76be954 - chore: split playwright.fixtures into files (2) (#3983)
5b9f489 - chore: split playwright.fixtures into files (#3982)
59daaab - chore: roll @playwright/test-runner to 0.9.14 (#3981)
6102052 - Revert "chore: don't hold sourcemap reference in prod build (#3959)" (#3979)
970b011 - chore: roll @playwright/test to 0.9.6 (#3977)
49bcf6e - chore: roll test runner to 0.9.1 (#3972)
989709b - chore: delete unused screencast hacks (#3964)
76d08ce - chore(types): add return type to advancePosition (#3961)
a42cd4b - test: mark screencast tests as flaky until ffmpeg migation (#3968)
49779d5 - Update showcase.md (#3969)
1bb44e4 - test: roll test runner to 0.3.29 (#3966)
fe41bbd - test: enable videos on tracing bots (#3930)
e15ac44e - test: roll test runner to 0.3.25 (#3965)
6d5ab53 - chore: don't hold sourcemap reference in prod build (#3959)
967f3b7 - devops(docker): push focal images to CR (#3950)
4aaf3b7 - test: roll test runner to 0.3.20 (#3963)
1d21c1e - feat(webkit): bump to 1347 (#3955)
18809b3 - fix(listeners): avoid "too many listeners" problem (#3931)
2d1cabd - test: roll test runner to 0.3.18 (#3949)
0e76316 - fix(close): fix the browser.close race (#3956)
c4a2732 - browser(webkit): another mac fix (#3948)
ce51af0 - brower(webkit): add missing override markers (#3947)
7925a51 - feat: support concurrent installation of browsers (#3929)
2fbe767 - browser(webkit): roll to 09/21 (#3945)
f1016c1 - fix(executablePath): throw unexpected platform error upon call (#3943)
cd0a123 - feat(chromium): roll to v808777 (#3942)
ec26265 - feat(ffmpeg): roll FFMPEG...
v1.4.2
Highlights
This patch release includes fix for the following bugs:
- #3919 - [BUG] MacOS 10.13 Webkit error
- #3935 - [BUG] browserType.connect() throws on executablePath errors
Browser Versions
- Chromium 86.0.4238.0
- Mozilla Firefox 80.0b8
- WebKit 14.0
v1.4.1
Highlights
This patch release includes fixes for the following bugs:
- #3845 - [BUG] ffmpeg dependency check fails on Linux
- #3846 - [BUG] ffmpeg dependency check breaks on Linux even if screencast is not used
- #3848 - [BUG] TypeError: domain.enter is not a function/ Browser.close() Promise does not resolve when "domain" package is used
- #3872 - [REGRESSION]: Calling
browserType.launchServer
stopped working in 1.4.0
Browser Versions
- Chromium 86.0.4238.0
- Mozilla Firefox 80.0b8
- WebKit 14.0
Issues Closed (4)
#3845 - [BUG] ffmpeg dependency check fails on Linux
#3846 - [BUG] ffmpeg dependency check breaks on Linux even if screencast is not used
#3848 - [BUG] TypeError: domain.enter is not a function/ Browser.close() Promise does not resolve when "domain" package is used
#3872 - [REGRESSION]: Calling browserType.launchServer
stopped working in 1.4.0
Commits (6)
e79eada - chore: mark v1.4.1
2df3972 - fix(screencast): repeat previous frame instead of current (#3890) (#3904)
bf97758 - cherrypick(release-1.4): stop relying on ubuntu stock ffmpeg (#3894)
8bc84ff - cherrypick(release-1.4): check for ffmpeg only when starting screencast (#3893)
8795d46 - cherrypick(release-1.4): do not throw when 'port' option is present (#3881)
64947f1 - cherrypick(release-1.4): fix compatibility to the domain module (#3878)
v1.4.0
Highlights
🚀 playwright-cli
is now public!
Playwright Command Line Interface can:
-
Open pages in Chromium, Firefox and WebKit (Safari) on all platforms
$ npx playwright-cli open wikipedia.org
-
Record user interactions and generate Playwright scripts
$ npx playwright-cli codegen wikipedia.org
- multi-page scenarios
- text-based selectors
- downloads, uploads
- many more!
-
Emulate devices, color schemes, geolocation, etc
$ npx playwright-cli --device="iPhone 11" open wikipedia.org
-
Use DevTools console to inspect Playwright selectors
> playwright.inspect('text=Log in')
-
Generate page screenshots and PDFs
$ npx playwright-cli screenshot --help
🎥 Record videos (experimental)
Record videos of your scripts, every page and popup is captured!
const fs = require('fs');
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({
_videosPath: __dirname // save videos here.
});
const context = await browser.newContext({
_recordVideos: { width: 1024, height: 768 }, // downscale
});
const page = await context.newPage();
const video = await page.waitForEvent('_videostarted');
await page.goto('https://github.com/microsoft/playwright');
// ... perform actions
await page.close();
fs.renameSync(await video.path(), 'video.webm');
await browser.close();
})();
☁ New Client / Server Wire protocol
In the last release, we introduced an internal protocol to support Playwright in the none-Node environments. It is already used in the Playwright for Python as well as in third party PlaywrightSharp and Playwright for Go implementations.
With v1.4, we are taking it one step further and migrate Node version of the library along with its client-server mode to be based on this new protocol. So if you are using browserType.connect
against cloud services or internally, you need to make sure that the service is also updated to v1.4 before you can use it.
Browser Versions
- Chromium 86.0.4238.0
- Mozilla Firefox 80.0b8
- WebKit 14.0
New APIs
frame.page()
elementHandle.waitForElementState(state[, options])
elementHandle.waitForSelector(selector[, options])
- experimental
_videosPath
option inbrowserType.launch()
,browserType.launchPersistentContext()
andbrowserType.launchServer()
. - experimental
_recordVideos
option inbrowser.newContext()
,browser.newPage()
andbrowserType.launchPersistentContext()
- experimental
page.on('_videostarted')
Breaking changes for Docker and CI users
root
user is used in the default Docker image 5f6441effmpeg
dependency is required when running Chromium
Issues Closed (73)
#632 - [BUG] setInputFiles does fetch that fails due to CSP
#1396 - [Question] Performance issues on Firefox?
#1400 - [Feature] debugging client script
#1568 - [BUG] Playwright cannot talk to Chromium on Heroku
#1605 - Parrallel execution[Question]
#1626 - [Feature] Playwright Recorder
#1654 - [Feature] Command events/hooks
#1935 - [BUG] cant create webkit context
#2053 - How to use playwrite to log in as various users in another ntlm domain?
#2054 - [Feature] page.waitForActionable()
#2086 - [BUG] Firefox on Appveyor seems flaky
#2124 - [Feature] https://playwright.dev/ should have a link to GitHub
#2236 - [Feature] Ability to test printing
#2321 - [BUG] Google Cloud Function error (deploy)
#2363 - [Feature] Pass timeout in the BrowserContextOptions for newContext
#2366 - [Feature] Allow PDF to be returned as a stream.
#2450 - [BUG] Error: NS_ERROR_CONNECTION_REFUSED while navigating to http://localhost:8000
#2453 - [BUG] Text selector not found in open shadow root
#2526 - [BUG]Wait for navigation with url and wait until network idle fail to respond and time out
#2556 - [Question] page.evaluate() issues with xpath
#2559 - [Question] Running WebKit GTK on Ubuntu 20.04
#2573 - [BUG] Can't click 2FA duo button.
#2587 - How can I call an external function in class inside page.evaluateHandle(...) context
#2603 - How to make page bring to front
#2616 - [REGRESSION]: Very slow on v1.1
#2623 - [BUG] Firefox does not launch with executablePath set to Firefox inside Applications folder
#2657 - [Feature] Consider adding Browser Server to the Core Concepts docs
#2660 - [BUG] Cannot find a MiniBrowser.app in neither location
#2692 - What is the proper way of handling tests with more that one tab?
#2704 - Error: Protocol error (Overlay.highlightNode): Could not find object with given id
#2707 - [Question] Unable to load website on Webkit
#2718 - [Feature] Simulate mouse movements so you can visually see what is being clicked during a test run
#2726 - [Question] Allow cross-site tracking or change your browser
#2728 - Is it possible to launch playwright browser "headless:false" in a docker container.
#2821 - [Question] Wait for response.ok()
#2828 - [BUG] - Multiple calls to launchPersistentContext fail in non-headless mode
#2833 - [Question] Is it possible to launch contexts with different proxies?
#2846 - [BUG] Disconnect\Reconnect not working in firefox[when using jest-playwright-preset]
#2853 - Do Playwright stores a "dev_profile" file?[Question]
#2859 - Playwright Firefox browser instances not closing after closing browser context[BUG]
#2878 - [REGRESSION]: context.pages() now works differently
#2882 - [BUG] Cannot use https or socks5 proxies
#2889 - [Feature]release train order
#2905 - [BUG] Getting chromium as undefined with playwright-core
#2930 - [BUG] page.screenshot doesn't create folder if needed
#2942 - [Feature] Switch between tabs in same context
#2971 - [Internal] Jest runner limitations / adoption blockers
#3001 - [Internal] for the jest portion of the tests, we should handle sigint.
#3047 - [BUG] miss export type BrowserTypeConnectOptions
#3083 - [Internal] browser roll script should update docs
#3084 - [Question] "Cannot read property 'launch' of undefined"
#3094 - [Feature] Add list of contributions to release notes
#3108 - [Feature] Add yarn to playwright:{bionic:dev} Docker images
#3109 - [Question] Add PID to pw logs
#3140 - [Feature]make automation life more good!
#3142 - [BUG]
#3144 - [Question] clarify in docs what click timeout option waits for
#3146 - [Question] Deno Integration?
#3151 - [BUG] Page.goto() flakiness - seeing TimeoutError sometimes
#3192 - [Question] Check if element is stable
#3215 - [Feature] Roll Firefox to current beta
#3230 - [BUG] FF - launchPersistentContext
#3231 - [Question] page.keyboard.press('Enter') not working on Firefox
#3232 - [Question] Chorimium is lauched but unable to navigate to url as it just says about:blank
#3233 - [BUG] IP:PORT Proxy doesnt work on playwright-firefox
#3258 - [Feature] add a webkit/firefox auto-roll bots
#3259 - [Feature] serve Chromium from our CDN
#3262 - [Question] Channels download.delete and download.createReadStream
#3269 - [Question] Mouse smooth scroll
#3281 - [BUG] Docs have wrong evaluation argument type
#3293 - [Feature] take implicit xpath if selector starts with .. (dot dot)
#3310 - [BUG] Website throws exception before rendering
#3315 - [BUG] Fails on start - WS url is undefined
Commits (384)
d64d002 - browser(firefox): fix screencast in first window on mac headful (#3826)
559f30d - chore: roll ffmpeg binaries to r1001 (#3824)
3124a1b - devops: fine-tune ffmpeg compilation (#3823)
4240e1d - docs: add page on language bindings (#3819)
777689a - docs(intro): add cli to getting started (#3821)
29b8098 - devops: fix running docker when executed from cronjob (#3822)
ee98bd0 - docs(selectors): update structure and add best practices (#3817)
245d100 - devops: produce ffmpeg builds on bots (#3820)
8a339be - browser(firefox): roll Firefox to r1171 (#3818)
ff0d697 - docs(docker): add note how to use chromium sandbox (#3779)
8687400 - refactor: consolidate ffmpeg-related files in third_party/ffmpeg (#3815)
6c83266 - browser(firefox): force firefox devtools to open in a separate window (#3816)
dee7392 - feat(webkit): bump to 1343 (#3814)
5364c6a - browser(firefox): fix automatic http->https redirect (#3812)
3c69f2a - tes(types): use @ts-expect-error in tests where we check for errors (#3794)
e8cf895...
v1.3.0
Highlights
- Python support: Official Playwright for Python is ready for preview!
- Use the Pytest plugin to write your end-to-end tests in Python.
- Validate system dependencies: Playwright now automatically checks for browser dependencies on Linux and Windows systems.
- Ubuntu 20.04: Playwright now provides browser builds for Ubuntu 20.04.
Browser Versions
- Chromium 86.0.4217.0
- Mozilla Firefox 78.0b5
- WebKit 14.0
New APIs
browser.version()
page.bringToFront()
download.saveAs()
request.postDataBuffer()
- new
chromiumSandbox
option inbrowserType.launch()
,browserType.launchPersistentContext()
andbrowserType.launchServer()
Thank You
- Special thanks to Max Schmitt for the massive contribution to playwright-python, for leading the playwright-pytest effort and other contributions on playwright.
- Thanks to Ross Wollman for his contributions on the new
download.saveAs()
API and tests across playwright-python and playwright. - A big thank you to all contributors who helped us with this release: Darío Kondratiuk, Paul, Yevhen, Anish Karandikar, Tapajyoti Bose, Carlos Alberto Lopez Perez, Lars den Bakker, and Tierney Cyren.
Issues Closed (31)
#657 - Cannot choose page to be visible in headful mode
#2269 - [Feature] Support ES module syntax
#2298 - [Bug] Firefox fails with STATUS_DLL_NOT_FOUND on some Win 10 setups
#2358 - [BUG] route.fulfill failed with TimeoutError if the response headers contains newline
#2386 - [Question] Run playwright from docker container running express server - sandbox issues
#2449 - [BUG] Linux Playwright Webkit engine doesn't allow video.play()
#2523 - [Question] download file deleted while copying
#2547 - [BUG] unable to launch firefox on virtual box windows
#2548 - [BUG] unable to launch webkit on virtual box windows
#2588 - [BUG] corrupted post data on application/x-protobuffer (probably other non-string postData formats)
#2604 - [Feature] Browser.version()
#2621 - [BUG] Webkit problem with libwebp-1.1.0-1, error while loading shared libraries: libwebp.so.6
#2622 - [BUG] page.waitForResponse is not working for Firefox
#2624 - [Question] When running two or more browser instance for running test cases, all the test cases fails with in Docker
#2626 - [BUG] Webkit font rendering (spacing / icon fonts)
#2645 - [BUG]Once test execution is completed, error in closing chromium browser
#2663 - [BUG] Getting Error: Protocol error (Target.setAutoAttach): Target closed.
#2702 - [BUG] Webkit clears on page.type – Chromium/Firefox don't
#2730 - [BUG] - TypeError: Cannot read property 'push' of undefined - When restarting tests
#2745 - [Feature] Launch doctor
#2787 - How to test mobile devices in Firefox?
#2864 - WebGL Renderer on WebKit Browser
#2901 - [BUG] Chromium not launching on Windows
#2906 - [BUG] Coverage types incorrect
#2921 - [BUG] selectOption Bug
#2940 - Parallel load
#2943 - [BUG] Docs for v1.2.1 are broken
#2972 - [Question] how to run playwright script in docker
#2975 - [Question] Can releases specifically indicate the MacOS version compatibility
#2978 - [Question] Playwright and TypeScript
#2979 - [BUG] FF - launchPersistentContext
Commits (287)
d01f63b - chore: mark v1.3.0
83539d1 - chore: cut v1.3.0-post (#3309)
4956041 - fix(validation): error typo "unknown" (#3304)
9280037 - chore(test): add blank lines (#3303)
b03b4a5 - chore: doc type nits (#3283)
90819fa - browser(firefox): always create image buffer in headless mode (#3299)
7e28c26 - browser(firefox): do not complain about SnapshotListener being cleared on Destroy (#3298)
9ec02673 - chore(test): use pathToFileURL (#3292)
3c2fcb7 - feat(webkit): bump to 1322 (#3297)
57490b7 - test: remove describes (6) (#3295)
4cbfa09 - test: remove describes (5) (#3294)
1673e62 - docs: update table of contents for docs sidebar (#3291)
2e65b0a - test: remove describes (4) (#3286)
028dd08 - docs: update documentation for evaluation argument (#3287)
8881a52 - browser(webkit): roll to 8/4 (#3289)
2508976 - devops: fix typo in rustup detection (#3282)
d3a40be - browser(firefox): reliably close the pipe (#3280)
573f580 - test: remove describes (3) (#3278)
de55fa6 - fix(webkit): ensure WebKit can play h264 video (#3272)
402d1a6 - browser(firefox): fix win compile 2 (#3277)
bb26735 - test: remove describes (2) (#3276)
e481f37 - browser(firefox): fix win compile (#3275)
5c4f067 - test: remove describes (#3274)
1148f0b - browser(firefox): implement RemoteDebuggingPipe (#3273)
bad4005 - chore(devops): do not copy pw_run.sh to subfolders (#3271)
b52d259 - feat(webkit): bump to 1321 (#3270)
126b1f7 - feat(rpc): run doclint against rpc client (#3260)
f62e9b5 - browser(webkit): kick-off 1321 build to pick up new WebKitLibraries/win (#3263)
776f019 - fix(chromium): remove Debugger.paused event listener on coverage stop (#3252)
7e8d03b - fix(launcher): extend list of known missing DLLs (#3256)
8709ad7 - chore(tools): update PrintDeps license header (#3254)
cbd33f9 - devops: avoid running publish on external contrib (#3257)
ba9030e - docs: update api.md with more references to actionability (#3255)
928a176 - docs: update docs (#3253)
3edfb2a - test: add REPORT_ONLY mode for test collection (#3225)
9b3c90e - feat(webkit): bump version to 1320 (#3248)
70b92e1 - docs(README): Point to hosted docs (#3208)
4e5aa3c - feat(rpc): support chromiumSandbox option (#3251)
ce0ddd2 - feat(download): create directories for saveAs (#3249)
93056ed - chore(rpc): more protocol nits (#3246)
421f6f4 - devops: use playwright-github-action@v1 (#3221)
cbfdca7 - feat(launcher): check dependencies before launch on Windows (#3240)
21eafbc - test: unflake screenshot test (#3245)
2f95b6e - feat(selectors): auto-detect xpath starting with ".." (#3239)
235c5df - docs: add readme file for PrintDepsWindows (#3241)
6297f86 - feat(rpc): run generate-channels during lint (#3238)
9103ce0 - devops: fix firefox build (#3237)
e7ddf86 - devops: rename docker image tag for tip-of-tree images (#3222)
0891678 - fix(test): display correct error when golden files mismatch (#3234)
19e8c0f - chore(deps): bump elliptic from 6.5.2 to 6.5.3 (#3235)
1728a3d - chore: minor protocol fixes (#3226)
8893866 - devops(windows): add tool for printing library dependencies on Windows (#3224)
cefb1b9 - feat(rpc): run fixtures.jest.js with channel (#3227)
4961c2d - devops(firefox): fixate rust and cbindgen version (#3223)
e091325 - fix: a pretty error when browser executable is not found (#3220)
ae0c3a6 - docs(devops): update docs for buildbots (#3218)
52eb6c6 - fix(rpc): protocol Route.fulfill (#3200)
3bd9777 - feat(rpc): do not use server types and events in rpc/client (#3219)
7dd9f2c - test(iframes): add x-frame-options display test (#3217)
9132d23 - fix(screenshot): wait for stable position before taking element screenshot (#3216)
c6180ed - browser(webkit): print missing dll error to the console (#3214)
10225d1 - test: fix a race in the oopif test (#3211)
487bc58 - devops: re-factor list-dependencies script to output per-browser results (#3194)
84a17f2 - fix(rpc): Frame.dblclick is missing notWaitAfter (#3210)
77b1c4b - devops: enable Ubuntu 20.04 tests (#3178)
f111ad7 - fix: add missing libgles2
package to launch doctor (#3209)
21b1be7 - docs(selectors): fixed selector register example (#3169)
6bc02f8 - feat(launchdoctor): detect missing libraries for dlopen
(#3202)
a700a7a - feat(chromium): roll to 07/29 (#3207)
bdfde5c - fix(firefox): roll firefox for postdata fix (#3196)
fab5eba - fix(oopifs): translate coordinates to viewport (#3201)
6cb1e03 - feat(rpc): disallow deps into rpc client from outside (#3199)
3e023f6 - Revert "browser(firefox): fix color scheme not updating until reload" (#3198)
d27f97e - devops: include protocol and api.md in NPM package (#3195)
14c6881 - browser(firefox): properly rewrite intercepted request (#3188)
a59220b - test: prepare fixtures test to run with rpc (#3190)
da25a5b - browser(firefox): do not capture cursor in screencast (#3118)
576e2c5 - fix(webkit): correctly report outerWidth/Height on Mac (#3133)
101dd3b - fix(test): make video test pass on Mac (#3121)
97c1000 - api: introduce Browser.version() (#3177)
e406119 - chore: add check_deps script (#3182)
20b7cff - fix: update jpeg-js version (#3179)
6fa7547 - fix(launchDoctor): add package mapping for libvpx.so.5
(#3180)
51ce47f - docs: use "Node.js" instead of "Node" (#3176)
b217919 - feat(rpc)...