v0.12.0
Current Status
- Chromium 83.0.4090.0. Tests: 972 passing, 4 failing.
- Webkit 13.0.4. Tests: 905 passing, 6 failing.
- Firefox 74.0b10. Tests: 873 passing, 36 failing.
Detailed status can be found at IsPlaywrightReady?
Highlights
-
There is no extra window when launching in headful mode.
-
Default viewport has been changed from 800x600 to 1280x720.
-
Published recipes for popular CI environments.
-
Playwright now includes a carefully crafted
index.d.ts
file with documentation inlined from api.md. Any type-related issues are welcome. -
Many APIs are now available on browser context, for example
browserContext.route(url, handler)
. This makes it easier to setup context once and ensure that all pages and popups behave consistently. -
Many actions (for example,
page.click(selector[, options])
orpage.evaluate(pageFunction[, arg])
) by default wait before and after performing an action to facilitate linear workflow.- Before action: input actions like
click
orfill
wait for the element to be present in the dom, displayed, stop moving and receive pointer events. This behavior can be disabled by passing{force: true}
option. - After action: many actions wait for any triggered navigations to finish. Option
waitUntil
determines the "navigation finished" condition, for exampleload
ordomcontentloaded
.
This change eliminates the need for explicit waits:
// Waits for the link to be present and clickable, // clicks it and waits for the navigation to finish. await page.click('a'); // Ready to use. console.log(await page.title());
Previously, it was necessary to wait for preconditions and postconditions to avoid flakiness:
// Waits for the link to be present. // Not needed anymore. await page.waitForSelector('a'); await Promise.all([ // Waits for the triggered navigation to finish. // Not needed anymore. page.waitForNavigation(), // Clicks the link. page.click('a'), ]); // Ready to use. console.log(await page.title());
- Before action: input actions like
-
Evaluation functions (for example,
page.evaluate(pageFunction[, arg])
) now accept nested handles inside objects/arrays, but only take a single argument.const x = await page.evaluateHandle(() => window.scrollX); const y = await page.evaluateHandle(() => window.scrollY); // Old style, does not work anymore: await page.evaluate((x, y) => x + y, x, y); // New style, passing an object: await page.evaluate(({x, y}) => x + y, {x, y}); // New style, passing an array: await page.evaluate(([x, y]) => x + y, [x, y]); // New style, passing arbitrary object structure with handles inside: await page.evaluate(({ scrollOffset }) => scrollOffset.x + scrollOffset.y, { scrollOffset: { x, y }});
Breaking API Changes
-
BrowserContext
browserContext.setCookies()
is renamed tobrowserContext.addCookies(cookies)
.browserContext.setPermissions()
is renamed tobrowserContext.grantPermissions(permissions[, options])
and grants additional permissions instead of overriding entire permissions list.
-
BrowserType
browserType.devices
is removed.browserType.downloadBrowserIfNeeded()
is removed.browserType.errors
is removed.browserType.launchPersistent()
is renamed tobrowserType.launchPersistentContext(userDataDir[, options])
.
-
ChromiumTarget
ChromiumTarget
, related events and methods are removed. UsebrowserContext.on('page')
,chromiumBrowserContext.on('backgroundpage')
andchromiumBrowserContext.on('serviceworker')
.chromiumTarget.createCDPSession
is moved tochromiumBrowserContext.newCDPSession(page)
.
-
ElementHandle
elementHandle.click({relativePoint})
-relativePoint
is renamed toposition
.elementHandle.click({clickCount})
-clickCount
now clicks multiple times, instead of producing a single event with aclickCount
property.elementHandle.select()
is renamed toelementHandle.selectOption(values[, options])
.elementHandle.tripleclick()
is removed.elementHandle.visibleRatio()
is removed.
-
Frame
frame.click(selector, {relativePoint})
-relativePoint
is renamed toposition
.frame.click(selector, {clickCount})
-clickCount
now clicks multiple times, instead of producing a single event with aclickCount
property.frame.select()
is renamed toframe.selectOption(selector, values[, options])
.frame.tripleclick()
is removed.frame.waitForLoadState([state[, options]])
now takes a separatestate
parameter.
-
Keyboard
keyboard.sendCharacters()
is renamed tokeyboard.insertText(text)
.
-
Page
page.on('workercreated')
is renamed topage.on('worker')
.page.on('workerdestroyed')
is moved toworker.on('close')
.page.click(selector, {relativePoint})
-relativePoint
is renamed toposition
.page.click(selector, {clickCount})
-clickCount
now clicks multiple times, instead of producing a single event with aclickCount
property.page.evaluateOnNewDocument()
is renamed topage.addInitScript(script[, arg])
.page.route(url, handler)
handler function now accepts two parameters:Route
andRequest
. Routing methodsabort
,continue
andfulfill
are only available on theRoute
class.page.select()
is renamed topage.selectOption(selector, values[, options])
.page.tripleclick()
is removed.page.waitForLoadState([state[, options]])
now takes a separatestate
parameter.
-
Request
request.redirectChain()
is replaced withrequest.redirectedFrom()
andrequest.redirectedTo()
.
-
Response
response.buffer()
is renamed toresponse.body()
.
-
Selectors
selectors.register(name, script)
now requires aname
parameter.
New APIs
-
BrowserContext
browserContext.setExtraHTTPHeaders(headers)
allows to specify additional HTTP headers to be sent with every request in every page in the browser context.browserContext.setHTTPCredentials(httpCredentials)
allows to handle HTTP authentication.browserContext.addInitScript(script[, arg])
allows to add a script to be evaluated in all frames of all pages in the browser context before the frame loads.browserContext.exposeFunction(name, playwrightFunction)
allows to expose a function which can be called from any page in the browser context.browserContext.route(url, handler)
allows to intercept certain network requests from all pages in the browser context.browserContext.setOffline(offline)
emulates being offline.browserContext.grantPermissions(permissions[, options])
andbrowser.newContext([options])
permissions
option can omitorigin
to grant permissions to all origins.browserContext.on('page')
event is emitted when a new page is opened in the browser context. This allows to handle popups originated by link clicks orwindow.open()
calls.
-
Page
page.frame(options)
finds a frame based on itsname
orsrc
.page.press(selector, key[, options])
is a shortcut toelementHandle.press(key[, options])
.
Bug Fixes
#8 - INTERNAL: run all the tests with npm test
#720 - Setting permissions are flaky in firefox
#813 - [BUG] website does not extend to full size
#822 - [BUG] Cannot open file:// URLs with Firefox
#844 - [BUG] WebKit scrollbars are not hidden
#914 - [BUG and temporary fix] Open Firefox as the frontmost window (macOS-specific)
#950 - [BUG] Chromium prints 'Connection terminated while reading from pipe' when closing browser
#1030 - [BUG] chromium and webkit screenshot ignoring screenshot: clip: height option property
#1078 - [BUG] Always launch 2 tabs or 2 windows
#1085 - [BUG] Playwright requires manual install of browsers
#1120 - [Question] text=
selector does not match case-insensitive by default
#1169 - [BUG] combined selector does not continue matching after first failure
#1184 - [BUG] NPM proxy configuration is not respected
#1212 - [BUG] Documentation ambiguous for browser.contexts()
#1214 - [BUG] Setting slowMo to 250 ms to examples in README.md times out the test cases with headless: false
#1258 - [REGRESSION]: Chromium page will not close after opening session
#1265 - [BUG][WebKit] fill/type/press do not work in iframes
#1269 - [BUG] Cannot set cookie in juggler
#1288 - [BUG] bundle c:\windows\system32\msvcp140_2.dll
on webkit win
Raw Notes
08b94ee - chore: mark version v0.12.0 (#1497)
2225608 - chore: add logging to the testing server (#1505)
8bf8339 - docs(showcase): updated showcase (#1481)
8d5433c - fix(screenshotter) validateScreeshotOptions typo (#1509)
4f89e40 - test: fix flaky interception test (#1508)
b778789 - feat: re-make global browser installation (#1506)
7ef394b - chore(chromium): remove CRTarget, use CRPage and CRServiceWorker instead (#1436)
5a93872 - docs: add upload keyword to filechooser (#1496)
bfb24e6 - chore: update releasing guide (#1503)
7efff97 - fix(chromium): properly handle failures to set override (#1498)
5bf9f22 - fix(docs): consider argument to be optional in evaluate (#1500)
c28c5a6 - browser(firefox): make Runtime a global object shared between sessions (#1458)
c0c9b7f - test: make debugp collect IO (take 2) (#1493)
afbc2f2 - test(firefox): enable passing "userDataDir option should restore cookies" (#1487)
05dc89b - chore: update release guide (#1495)
e139d4c - feat(firefox): roll to 1051 (#1494)
1a25a4e - fix(doclint): support lists in comments (#1492)
6390645 - fix(testrunner): attribute unhandle promise reject to a single worker (#1491)
de0a2d1 - api(waitForLoadState): move waitUntil to be a first parameter (#1490)
45a175d - fix(chromium): ignore lifecycle events for the initial empty page (#1486)
1ddf051 - Revert "test: make debugp collect IO (#1485)"
b1bebda - test: make debugp collect IO (#1485)
a74e23a - feat: support PLAYWRIGHT_GLOBAL_INSTALL=1
env variable (#1470)
15fddb5 - api(click): rename offset to position (#1488)
a570290 - docs(examples): update main readme to point to examples + add a file uploads example (#1484)
9826fd6 - browser(firefox): disable update, setting sync and other non-testing features (#1480)
15ebe1c - feat(exposeFunction): implement context-level expose on firefox (#1478)
23e5d80 - test: uncomment slow ff tests (#1479)
049fdf7 - browser(firefox): implement Browser.addBinding (#1477)
c68cee9 - feat(offline): implement offline in firefox (#1476)
ac5852f - browser(firefox): implement offline emulation (#1475)
6e8895f - fix(firefox): make interception, locale and geolocation work on browser context level (#1472)
93954fe - chore: fix .local-browsers path into .gitignore (#1464)
fb7b919 - browser(firefox): make interception, locale and geolocation work on browser context level (#1469)
3f90c09 - tests: mark popup tests as passing on Firefox (#1466)
1b08797 - tests(ff): uncomment a couple of firefox tests (#1465)
9e95844 - docs(troubleshooting): add dependencies for firefox and webkit (#1461)
ac02a6b - browser(firefox): issue Page.ready at the right time (#1462)
670ce7a - chore: remove various watchers, use FrameTask directly (#1460)
00c27ea - docs(readme): fix link to examples
6df17c6 - docs(examples): setup get started with examples guide (#1441)
60a248e - test: add test for Map as eval argument (#1457)
34cc358 - tests(webkit): reenable should await promise from popup (#1447)
e115e8e - tests: mark tests that launch() twice or use fixtures as slow (#1455)
5a42cbd - fix(permissions): manage permissions on the proxy level in webkit (#1451)
96c9c81 - browser(firefox): fix bug in Juggler with clashing method names (#1456)
e210e56 - feat(lang): emulate language on firefox (#1453)
21630d6 - devops: strictly configure build folder for Firefox builds (#1454)
c539325 - feat(geo): implement geo override in ff (#1438)
840e69b - browser(firefox): emulate language (#1452)
5fc1a04 - browser(webkit): manager permissions on the proxy level (#1450)
bae56ea - fix(chromium): support main resource request interception for popups (#1449)
053bab1 - browser(webkit): correctly detect Promise created in another window (#1446)
4320d4b - test: fix link navigation test so that it passes in Chromium (#1448)
16c7a5b - api(eval): accept zero or one arguments in all evaluation functions (#1431)
fcdfa9c - browser(firefox): implement geolocation overrides (#1437)
fa02b84 - test(types): add test for types (#1445)
825555c - types: better types (#1166)
f1d97b0 - chore(docs): remove remaining mentions of Chromium targets (#1435)
535b484 - api(context): get rid of PageEvent (#1433)
3ed9970 - api(chromium): add ChromiumBrowserContext.serviceWorkers() (#1416)
c669674 - feat(chromium): roll Chromium to 751710 (#1434)
ea99908 - fix(eval): adopt nested handles (#1430)
f5ecbff - devops: remake downloading logic (#1419)
2af07ce - chore: rework disposers into a frame task (#1413)
7bd9246 - fix(PageEvent): properly wait for initial navigation in chromium and webkit (#1412)
b0749e3 - fix(docs): fixup and lint optionals and return values in api.md (#1376)
741e2d1 - fix(docs): lint and fix all internal links in api.md
a1929e2 - feat(types): better types for nested handles (#1424)
bfcffbb - browser(webkit): introduce Playwright.windowOpen protocol event (#1420)
dd850ad - api(eval): allow non-toplevel handles as eval arguments (#1404)
045277d - docs(chore): fix link in troubleshooting (#1422)
b8e79e6 - chore(chromium): remove obsolete target related code (#1417)
049b336 - api(devices): extract isMobile/hasTouch from viewport (#1415)
39e5eb7 - feat(devices): remove name from device objects (#1414)
e4225ad - feat(permissions): make origin optional (#1406)
8401462 - test(web): Remove unused variable (#1410)
a9ab9b0 - fix(testrunner): sourcemapify stack traces for test errors (#1409)
edd2fee - browser(firefox): grant permissions to all origins (#1405)
3960b17 - fix(testrunner): fit.fail should run the test (#1407)
aa32d35 - fix(tests): remove flaky load event from auto-waiting tests (#1399)
64b175c - api(waitForLoadState): restore it (#1390)
6731d37 - api(network): replace redirectChain with redirectedFrom/redirectedTo (#1401)
6dcd6a6 - fix(types): jsHandle.getProperty should never resolve to null (#1402)
5816ec5 - fix(testrunner): dedup focused tests and suites by id (#1393)
e7eeefe - chore(testrunner): separate expectations from run mode (#1395)
951126a - feat(chromium): roll Chromium to r750417 (#1398)
e4991a1 - tests: add some failing page event tests (#1394)
e692dd6 - api(cdp): rename ChromiumSession to CDPSession (#1380)
19dd233 - devops: remove verbose on WebKit Win on Github Actions
a96dec5 - fix(webkit): emit close on pages before clearing them (#1386)
69be12a - api(route): pass Route object instead of Request to route handlers (#1385)
2647911 - fix(setContent): handle inner _waitForLoadState rejection (#1382)
601d57a - test: add a test for popup with window features (#1381)
9b86c63 - api: make BrowserContext.pages() synchronous (#1369)
8aba111 - api(cdp): rename createSession to newCDPSession (#1378)
b1a3b23 - api(request): make request.response a promise (#1377)
24d4fb1 - api(click): remove tripleclick, respect clickCount (#1373)
8c532bd - api(press): remove text option (#1372)
e1d3196 - api(*.selectOption): renamed from *.select (#1371)
064099a - api(keyboard.insertText): renamed from sendCharaters (#1370)
a11e8f0 - devops(circleci): run all tests on all browsers
9aa56a6 - api(browserType): remove devices, errors (#1368)
0d7cb29 - test: continue running tests after crash, report crashes separately (#1362)
cfd3ae2 - api(addCookies): setCookies -> addCookies (#1367)
3fa4255 - api: make request.postData() return null instead of undefined (#1366)
be83cba - fix(doclint): correctly get versions on windows (#1350)
245c1fa - fix(docs): a typo in showcase (#1361)
e382bb3 - api: remove 'commit' phase, actions to wait until 'domcontentloaded' by default (#1358)
7c59f9c - fix: do not wait for navigations while evaluating injected source (#1347)
11c3c11 - feat(webkit): roll webkit to r1179
f92c95c - feat(firefox): roll Firefox to r1042 (#1357)
704fe6d - fix(testrunner): fix reporting focused tests
1cd00bd - feat(testrunner): allow filtering by name and show all focused tests (#1354)
b43f33f - api(review): misc changes to API. (#1356)
7fe5656 - browser(webkit): fix win cookies expires (#1355)
b3f87e8 - docs(api.md): Fix incorrect link to PageEvent (#1353)
c1ef683 - api: remove waitForLoadState() in favor of PageEvent.page(options) (#1323)
9b8f4a2 - test(webkit): uncomment fixed viewport screenshot tests (#1346)
7e8ab8a - test: await setInputFiles in flaky input tests (#1345)
823fffa - test: declare setInterval click test as undefined behavior (#1343)
5d4fdd0 - feat(webkit): roll webkit to 1178 (#1339)
3b85bf9 - browser(firefox): handle message manager error
event without error (#1344)
6b50c8f - browser(webkit): follow up 3 (#1342)
13c2f65 - docs(selectors): clarify selector conversions
c044227 - browser(webkit): follow up 2 (#1340)
2da705d - browser(webkit): follow up to roll (#1337)
4a18f0f - browser(webkit): roll to ToT 3/11/2020 (#1335)
128157d - browser(webkit): rename Browser domain to Playwright (#1333)
401a916 - test(webkit): uncomment clearCookies test w/ right expectations
d08a0f0 - browser(webkit): account for page scale when screenshotting (#1332)
3dd4945 - fix(chromium): install binding function during initialization (#1320)
65d10a5 - fix: re-implement slow-mo transport without message serialization (#1328)
a24cce8 - devops: fix protocol generation with root on Linux (#1327)
6b711f5 - test(webkit): unblock and uncomment sync window.stop test
16d5a9c - tests(runner): support DEBUGP for timing out tests (#1324)
0d2ae91 - fix(test): enable presssing in frames test (#1326)
0cff9df - test: add failing test for clicking and oopifs (#1325)
0077b42 - feat(webkit): emulate device size (#1318)
044f774 - test: unflake should fail when frame detaches
59f2e88 - test: mark test as flaky on Firefox (#1321)
ac5b518 - test: mark as flaky according to the new policy (#1322)
23cf3be - api: make request.frame() non-null (#1319)
0ce8efa - test: rework testrunner workers (#1296)
a9b7bcf - test(webkit): expect cookies to be deleted after reload
d542ef8 - fix(testrunner): handle uncaught errors (#1317)
e2616e4 - browser(webkit): override global permissions (#1315)
92aa4f3 - test: stop sourceServer as well (#1314)
38c3837 - test: remove test which is inherently racy (#1313)
d5a2781 - fix(chromium): do not await extra promises in initialize() to attach early enough (#1311)
008e0b2 - browser(webkit): emulate screen size (#1310)
ea6978a - api(popups): expose BrowserContext.route() (#1295)
adee9a9 - test: mark worker.url()
API coverage as missing
e2a0d61 - docs(showcase): Add playwright-test to showcase (#1283)
72ae5c8 - test: remove stray test (#1302)
27d039a - browser(webkit): mark user gesture in frames (#1304)
9bd3711 - fix(context): reliably fire BrowserContext.Close event when browser is closing (#1277)
27eb25a - test: disable flaky test on Firefox Linux
eb2ca70 - api(route): allow fulfilling with a file path (#1301)
cf46f1b - test(chromium): mark passing popup tests as passing (#1297)
ca5ce7d - test: disable flaky worker tests on firefox
0fbc7af - chore(targets): create page targets only when attached to them (#1278)
e650628 - fix(chromium): fix device-related media queries (#1299)
a61d066 - test: add failing test for min-device-width media queries (#1298)
c43de22 - chore(wk, ff): simplify target management (#1279)
c8bbf88 - devops: bundle mvscp140_2.dll with windows webkit (#1293)
2fa2421 - fix(webkit): fail the 204 navigations (#1260)
3dc48f9 - chore: output both received value and diff for string expected results (#1287)
c881248 - docs(contributing.md): update CONTRIBUTING.md (#1286)
071ee06 - chore: normalize NPM scripts (#1285)
e78f0f7 - feat(firefox): roll Firefox to r1041 (#1281)
d1ef0c8 - fix(wk,ff): properly support getting and setting non-session cookies (#1280)
bfd32fe - doc: fix typos (#1284)
78bd29d - fix(click): work around input alignment on chromium (#1282)
996f97a - browser(firefox): roll Firefox to current beta (#1276)
68b4079 - chore: remove WKPage._sessions (#1270)
aee6324 - feat(firefox): roll firefox (#1273)
3c35d7b - api(waitFor): click(waitFor) -> click(force) (#1275)
578880c - test: mark test as slow
a0e12e0 - feat(testrunner): support .slow() for slow tests (#1274)
e604acd - test: disable flaky test on WebKit
8211287 - fix(session): use isolated root session for client page sessions (#1271)
3fa000f - api(waitForSelector): bring it back (#1272)
29f2430 - browser(firefox): merge Target domain into Browser, rework default context attach (#1259)
119df5a - feat(nowait): allow waitUntil:nowait for actions (#1264)
c494944 - api(popups): move Page.authenticate to BrowserContext.setHTTPCredentials (#1267)
ca6faf2 - chore: properly mark failint tests
cf820b5 - test: mark failing tests on WebKit
8cc7d43 - tests: disable failing test on chromium
d114620 - chore: remove WKPageProxy, use WKPage instead (#1256)
677ebf8 - test: mark "clicking anchor should await navigation" as failing on chromium
f3734c3 - test: mark "should await navigating specified target" as failing on chromium
3288057 - test(webkit): disable failing wk test
a802b00 - test: oops - fdescribe
5c9ebfa - chore(ci): bump checkout action to v2 (#1263)
49c1161 - api(press): bump .press to the page/frame level (#1262)
2724157 - feat(waitUntil): allow waiting for navigation from clicks, etc (#1255)
9c80c9e - browser(webkit): don't leak pages on window.open (#1261)
1d770af - api: waitForElement accepts waitFor: attached|detached|visible|hidden (#1244)
9bc6dce - feat(api): introduce BrowserContext.waitForEvent (#1252)
8c9933e - browser(firefox): move Juggler to top-level (#1254)
9d3bff1 - browser(firefox): implement Browser.setHTTPCredentials (#1251)
e5f82af - api(popups): emit PageEvent immediately, and resolve page() once initialized (#1229)
c734b4b - feat(click): start wire auto-waiting click in firefox (#1233)
e770d70 - fix(chromium): do not create default page and context in headless (#1247)
b0d037e - browser(firefox): fix flaky permissions in Firefox (#1249)
cd8714d - tests: skip failing waitForNavigation test in Chromium (#1248)
20c3263 - browser(firefox): follow-up with SimpleChannel unification (#1246)
2cd727f - browser(firefox): signal link click (#1236)
665888d - feat(popups): auto-attach to all pages in Chromium (#1226)
aabdac8 - api: remove Page.setCacheEnabled (#1231)
1bf5b61 - browser(firefox): move workers to use SimpleChannel (#1232)
4fd2312 - chore: introduce webkit cheatsheet
a69c85f - chore: added ff cheat sheet
11f68ba - feat(cr, wk): make clicks, input and evaluate await scheduled navigations (#1200)
7f9df94 - api(popups): move Page.setOfflineMode -> BrowserContext.setOffline (#1223)
3bedc60 - fix(dispose): do not await inner handle dispose (#1230)
5ee744c - api(page.frame): allow looking up frames by name (#1228)
6fb5168 - feat(chromium): roll Chromium to v747023 (#1227)
5ff660d - feat(navigation): waitForNavigation/goto should not wait until response finished (#1225)
3127840 - browser(firefox): introduce SimpleChannel (#1209)
82baf61 - feat(webkit): roll webKit to r1168 (#1224)
56e25c2 - docs: create development dir for non-user related docs (#1217)
dbfeda2 - feat(webkit): roll to 1167 (#1221)
2d4317d - docs: fix browser.contexts()
description (#1220)
f5a530e - docs(showcase): Add headlesstesting.com (#1218)
262ee7c - browser(webkit): fix the pool leaks on mac (#1219)
d6e265f - docs(readme): add network interception example (#1216)
14a7d1c - chore: bump proxy-from-env dependency (#1210)
7787624 - browser(webkit): fix delete context stall, emit schedule load (#1211)
771793f - test(context): test that context.close() works for empty context (#1205)
8aa88d5 - fix(doc): check and update optional types in the api (#1206)
f4e9b50 - api: declare not supporting isMobile on Firefox (#1207)
33f3e57 - test: skip flaky 'Page.goto extraHttpHeaders should be pushed to provisional page' (#1203)
1c4619e - fix(chromium/webkit): fix a race between Page.enable and Page.getResourceTree (#1201)
15c70c9 - fix(click): timing out in page while waiting for interactable should have proper error (#1199)
23790f7 - browser(webkit): send reply to deleteContext even if there are no pages in it (#1204)
fcfe887 - feat(select): don't accept undefined as a value (#1202)
4556513 - chore(test): test cleanup (#1198)
6c6cdc0 - api(popup): introduce BrowserContext.exposeFunction (#1176)
1b863c2 - fix(screenshots): simplify implementation, allow fullPage + clip, add tests (#1194)
2ec9e6d - test: cleanup some test files (#1195)
9f3ccb4 - browser(webkit): wait for all pages to close in deleteContext (#1197)
4a9a155 - test: enable page opener test on WebKit (#1193)
3eec2d0 - docs(ci): list sample configurations for ci (#1196)
ce3398b - browser(webkit): allow scripts in inspected pages to create popups (#1192)
a3ed301 - fix(docs): page.coverage type (#1189)
42aa70f - chore(ci): run all browser tests on Travis again
2711891 - chore(ci): use bionic image on circle ci
019eaa4 - chore(ci): different attempt to publish on Travis
ec3ee66 - chore(docs): optionally install XVFB in docker
0188889 - chore(ci): fix publish_all_packages.sh on travis
64e5e21 - chore(ci): forcefully login NPM on CI if NPM_AUTH_TOKEN is set
a40f562 - chore(ci): add debug info for publish_all_packages
bccdaec - chore(ci): add circle ci (#1188)
31e26a2 - fix(api): fire BrowserContext.Page event in WebKit and Firefox (#1186)
497a74d - chore(ci): fix publishing @next on travis
ed2de2c - chore(ci): test if travis can publish packages
62e2570 - chore: fix utils/apply_next_version.js
57c45f0 - fix: properly publish all packages on travis (#1187)
342a2cf - fix(selectors): continue matching after first fail for combined selectors (#1185)
342e79c - test: mark some tests as skipped (3)
2f98b5e - test: mark some tests as skipped (2)
ba06fb2 - test: mark some tests as skipped
1186998 - fix(click): wait for element to be displayed before scrolling into view (#1182)
db9a243 - docs(showcase): rename playwright-controller to playwright-fluent (#1183)
a57978a - api(chromium): remove Target from public API (#1163)
f242e0c - fix: make Transport.send() synchronous (#1177)
5bd6e49 - test: it.skip skips and it.fail expects to fail now (#1178)
08fbc92 - feat: support PLAYWRIGHT_DOWNLOAD_HOST
(#1179)
d5951b4 - fix: properly download browsers (#1173)
cbf65a9 - test: chain test modifiers (#1175)
e3ec6b2 - docs(showcase): add playwright-controller (#1171)
eb1a9eb - chore: rename prepare.js into install-from-github.js
eeceda4 - chore(ci): re-enable browser tests on travis
b20b323 - chore(ci): another attempt to program in .travis.yml
8fc519d - chore(ci): another try to publish edge version
96e7132 - chore(ci): try to publish new @next
ac2f04f - api(selectors): pass selector name when registering, allow file path (#1162)
d511d7d - chore(ci): use TRAVIS_NEXT_NUMBER instead of Date.now()
583f7a0 - chore(ci): publish all packages
b5da5f1 - chore(ci): another attempt to publish 2 packages
66799af - chore(ci): try to publish 2 things with travis
7843c29 - feat(selectors): auto-detect each selector part (#1160)
c4f55bf - chore: guide for producing release notes (#1165)
1781ae7 - feat: add a playwright-ready docker image (#1161)
4af4557 - chore(ci): regenerate key with travis --pro
67a8485 - chore(ci): another attempt to fix travis
ea11a77 - docs(showcase): add new tools to showcase (#1164)
ea0539f - chore: remove unused docker images
400e55d - chore(ci): attempt to publish @next from travis
9b51feb - feat: setup continuous deployment (#1159)
82a4ede - chore: roll Chromium to 745253 (#1156)
041b8c6 - chore: fix typo on sepcified -> specified (#1153)
823bf38 - api: evaluateOnNewDocument -> addInitScript (#1152)
9478bf3 - docs(readme): add link to changelog (#1148)
857ffd8 - fix: text selector should be case insensitive without quotes (#1151)
de542c0 - docs(api): unify selector references to include xpath (#1150)
7682865 - feat(popups): add BrowserContext.evaluateOnNewDocument (#1136)
dc161df - fix(launch): throw upon page argument when non-persistent (#1144)
9d6aa96 - chore(workers): align worker lifecycle evens with other APIs (#1147)
c6fde22 - chore(webkit): always attach to all pages, simplify initialization (#1139)
6b6a671 - fix(webkit): pass popup tests (#1138)
d41342f - browser(webkit): mac build fix (#1137)
ee9c7f1 - browser(firefox): support BrowserContext.evaluateOnNewDocument (#1135)
4ebf419 - fix(yarn): download browsers to package directories (#1133)
22c28b6 - test(firefox): support loading of file URLs (#1132)
7a75754 - browser(webkit): pause in popup until Target.resume is received (#1134)
5cfe68d - test: uncomment webkit fix
4ab8801 - chore: fix lint
d20f3ca - feat(webkit): no start window, healthy pipe (#1113)
b8c6069 - browser(webkit): trim down mac embedder (#1130)
672f3f9 - feat(popups): introduce BrowserContext.setDefaultHTTPHeaders (#1116)
4f69930 - fix(chromium): make locale overrides work (#1108)
3afaeef - feat(socket): destroy contexts upon disconnect (#1119)
72fa945 - Update request.respond to request.fulfill (#1123)
1d02c2d - browser(webkit): --no-startup-window for mac (#1118)
51d1b63 - browser(webkit): no_startup_window on linux (#1117)
facf2c2 - browser(firefox): support BrowserContext.setExtraHTTPHeaders (#1111)
de63534 - browser(webkit): happy pipe on win, no startup windows (#1112)
e3b2f2b - browser(firefox): allow loading file URLs in web process (#1110)
dcdc7db - feat(chromium): use no-startup-window to not create default context (#1106)
c7ade1a - browser(webkit): revert unused Target.oldTargetId (#1096)
30a4d0e - feat(webkit): roll to v1155 (#1104)
ebcaade - feat(log): log only user api calls with DEBUG=pw:api (#1029)
d97ea70 - chore: move more injected code to injected to reduce evaluation size (#1093)
8c57358 - browser(webkit): fix null pointer access (#1099)
ba29470 - fix(api): rename relativePoint to offset, remove unused parameters from input (#1092)
fdfec8e - fix(platform) instanceof bug between execution contexts of RegExp object (#1048)
a6c3735 - test: add failing drag and drop test (#1095)
b50e8b3 - chore: fix doclint tests (#1098)
6acc439 - feat(api): move targets from CRBrowser to CRBrowserContext (#1089)
de03f37 - browser(webkit): follow up to roll, fix Win (#1091)
971ab77 - chore(docs): update win buildbot setup docs
6821c9e - browser(webkit): roll to ToT 2/24/2020 (#1088)
69fe6f7 - docs: added community example project (#1084)
a43b409 - chore: make BrowserContext an interface, with 3 implementations (#1075)
3677818 - fix(api): browser.serviceWorker -> target.serviceWorker (#1076)
1f8508d - feat(waitFor): update various waitFor options to be a single boolean (#1066)
88e3109 - test: fix test on Firefox Linux (#1079)
f305d65 - chore: remove focused test
66362a5 - chore: update appveyour config
0ded511 - feat(testrunner): better matchers (#1077)
53a7e34 - fix(testrunner): support throwing non-errors
05a1e1c - test: remove newContext
and newPage
test helpers (#1070)
2fabaaf - browser(webkit): force overlay scrollbars on mac, ignoring system setting (#1071)
4016429 - api: remove ElementHandle.visibleRatio (#1069)
568c6cb - test(navigation): fix flaky networkidle tests (#1058)
84ee297 - test: add a test for bounding box on partially visible element (#1011)
4be48a6 - chore: disable DEBUGP on bots
33824aa - feat(click): waitForInteractable option, defaults to true (#934) (#1052)
9f1edad - fix(navigation): do not count random failures as navigation cancel (#1055)
223685e - chore: strip out injected script from protocol logs (#1054)
1805acd - test: update animation click test (#1053)
1ee6578 - feat(viewport): update defaults to 1280x720, fix Firefox (#1038)
f2b2d72 - fix(input): emit change events upon page.setInputFiles (#1028)
8a7728d - docs: document LaunchOptions.dumpio (#1051)
010c274 - Docs: fix return type of launchPersistent (#1047)
e658978 - test: add screenshot test that fails on Chromium (#1039)
cfeaecb - test(keyboard): Remove duplicated test (#1031)
8071225 - Add xterm.js to showcase (#1034)
8cfdeb9 - chore: mark v0.11.1-post (#1027)