Skip to content

Releases: puppeteer/puppeteer

v0.13.0

11 Nov 02:26

Choose a tag to compare

Big Changes

  • Chromium 64.0.3264.0 (r515411)
  • browser.pages can be used to access all pages in Chromium, even those created by window.open. (32398d1)
  • browser.close now closes Chromium even if used with pupeteer.connect (2b79514)

Api Changes

Changed:

Added:

Bug Fixes

  • #386 - Support anchor navigation
  • #443 - Request: browser.currentPage() or similar way to access Pages
  • #508 - Recursive $/$$
  • #690 - Expose function doesn't add to frames the first time.
  • #723 - Keyboard API is confusing
  • #733 - Clip rectangles with odd-numbered height and width dimensions produce even-sized images.
  • #805 - Waiting for both load and networkIdle
  • #877 - Adopt plznavigate in puppeteer
  • #894 - Page closes itself silently
  • #901 - Provide reason for failed requests
  • #918 - userDataDir + headless = browser and script (node) hang
  • #946 - Provide 'DOMContentLoaded' option for waitUntil in page.goto()
  • #951 - Add possibility to configure download mirror
  • #955 - coverage script fail on windows
  • #989 - No way to close a browser instance that was opened with connect()
  • #1003 - Strange breaking change in page.evaluate()
  • #1020 - Request Interception enhancements
  • #1044 - LICENSE should be fixed
  • #1061 - Error when clicking on Shadow DOM element
  • #1082 - ElementHandle.click() broken in 0.12
  • #1126 - Click doesn't work as expected in non-Headless
  • #1139 - Missing ElementHandle.select; impossible (?) to make selection in a frame
  • #1163 - Test "Puppeteer.launch should support ignoreHTTPSErrors option" is flaky
  • #1173 - waitForNavigation should wait for all frames instead of only main frame
  • #1179 - Add an option to set data attributes on elements added by the API
  • #1195 - Test Page.goto should fail when navigating to bad SSL is flaky
  • #1218 - page.goto is littered with races
  • #1244 - Add page bringToFront method
  • #1276 - page.select() should error if it can't find an option with requested value
  • #1294 - Broken Click after upgrading to 0.12.0
  • #1315 - elementHandle.screenshot clip object uses wrong y value

Raw Notes

b0b2219 fix(ElementHandle.screenshot): account for scroll (#1323)
2c8f658 fix(Navigation): wait for lifecycle events for the frame subtree (#1356)
f8d19e7 fix(Page.waitForSelector): "visible" option should check parent visibility (#1354)
44d1e83 fix(Navigation): correctly wait for navigation in Page.goto (#1355)
9b907b9 docs(api): javascript -> JavaScript (#1338)
9c1935b feat(Chromium): roll chromium to r515411 (#1346)
7075c4c docs(troubleshooting): fix typo (#1327)
7d18275 Test: add tests to cover clicking checkbox (#1125)
73f5b80 fix(install): support for npm no_proxy (#1314)
b7566c1 docs: document osx keyboard shortcuts not working (#1311)
cbe3dc5 Revert "feat(Page): teach Page.setContent to wait for resources to load (#1152)" (#1312)
b58d319 fix(Page.click): throw a meaningful message for invisible elements (#1309)
3cb0f1a fix: make exposeFunction work for frames (#1295)
8c9332b docs(Readme): add loading extensions example (#1308)
77f5852 feat(Page): introduce Page bringToFront method (#1252)
9de3449 Additional Docker tips (#1235)
a467d35 chore(doclint): do not attempt to lint non-documentation markdown
cc5e8a9 fix(Page.type): Add assertion to page.type() (#1301)
2f7c778 feat: roll chromium to r514418 (#1299)
8e44573 feat(Frame): reject error for addScriptTag/addStyleTag (#1287)
bdd5718 docs(examples): added pupperender (#1293)
5e154dc fix(Page.select): assert all values are of type "string". (#1280)
03fefb5 feat(browser): add browser.disconnected event (#960)
88ba52a refactor: use Page.getFrameTree instead of Page.getResourceTree (#1275)
7bc55ab docs(api.md): fix return values of page.add*Tag() (#1269)
e0f5b93 feat(Frame): addStyleTag and addScriptTag now return ElementHandles.
f08f334 test: validate headless reading cookies written by headful (#1266)
cee3081 docs(api.md): fix return value of frame.select() (#1251)
ac55e69 feat(Chromium): roll chromium to r513435. (#1259)
fede264 feat(Frame): introduce Frame.select
bc7f211 docs(contributing): define semantic commit message rules (#1233)
f5bb333 fix: support PlzNavigate in puppeteer. (#1239)
b9266c7 feat(Page): rename Page.getMetrics into Page.metrics (#1240)
9f071bf fix(Navigation): do not race with security error for navigation (#1237)
e70f98d feat(Page.select): return selected options from Page.select (#1099)
9f19641 chore: Fix typo in comment for Events (#1234)
0bb2157 Explain how to run examples (#1226)
c9a26e1 fix(ElementHandle): teach ElementHandle to work with shadowdom (#1227)
557aa94 chore(license): fix license (#1220)
6dec7cf typo in api.md (#1216)
23382df Adding simple guide to run puppeteer on Heroku (#1199)
3bf18f2 chore(examples): use news.google.com for block-images.js (#1192)
380bb6a docs: use debug namespace instead of all namespaces (#1174)
d9acf1e test: remove irrelevant test (#1172)
e11dbd7 docs: add more keyboard examples for typing (#1176)
f9b017e chore(examples): update search example (#1181)
5ffbd0d feat(ElementHandle): add ElementHandle.$ and ElementHandle.$$ (#1151)
9e39f5f docs(troubleshooting): Add new buildpack url that adds additional fonts (#1161)
655b94d fix(touch): requestAnimationFrame before sending tap (#1142)
d1f044e test: disable ignoreHTTPSErrors test (#1164)
ab9b34c fix(Launcher): force-kill chrome on process exit and interruption (#1155)
b9ab6fe fix(interception): Disable newtork caching when intercepting (#1154)
ce005d4 feat(Chromium): Roll chromium to r511134 (#1153)
80ee469 feat(Page): teach Page.setContent to wait for resources to load (#1152)
f38c8bb feat(Page.goto): support multiple events in waitUntil option (#1147)
ef369e5 feat(Page.goto): add a 'domcontentloaded' option to the Page.goto (#1145)
ce8a952 refactor: migrate NavigatorWatcher to lifecycle events (#1141)
126ab7b feat(keyboard): Accept codes (#1116)
945a826 feat(install): add environment variable to overwrite ...

Read more

v0.12.0

14 Oct 16:58

Choose a tag to compare

Big Changes

API changes

Changed:

Added:

Removed:

  • page.injectFile - page.addScriptTag now should be used. (c310f13)
  • page.plaintText - innerText/textContent could be obtained with page.evaluate. (1fbf2a8)

Bug Fixes

  • #63 - Emulate offline
  • #241 - Add keyboard.type
  • #304 - Add memory heap snapshot API
  • #309 - Is there a way to measure page performance?
  • #324 - evaluate - strange execute sequence
  • #382 - Implement object handles
  • #613 - Hwo can I set HTML select element value?
  • #625 - Introduce page.$eval and page.$$eval
  • #684 - Clicking element inside iFrame does not give any response
  • #734 - Request.resourceType doesnt match DevTools
  • #744 - Feature request: console level
  • #750 - Throw error with stack trace when launching with an invalid executablePath option
  • #782 - Constantly getting Navigation Timeout Error
  • #839 - Chromium is not closed completely gracefully
  • #864 - Is there a way to open DevTools progammaticaly?
  • #869 - URI malformed exception that is not handled
  • #884 - What is the reason of using a sync version of writeFile for pdf save?
  • #892 - Add addStyleTag(url) API
  • #949 - Replace injectFile to injectScript and add injectCSS
  • #1010 - ElementHandle screenshot does not count padding (or add options to count the padding/margin)

Raw notes

b555151 - chore: mark version 0.12.0
6a8865c - feat(keyboard): make keyboard.down generate input event by default (#1016)
a02347e - feat(Page): implement page.setOfflineMode (#1032)
fd88eb5 - feat(chromium): roll chromium to r508693 (#1031)
8511db9 - feat(page): waitForSelector hidden option (#967)
8f430fb - fix(ElementHandle.boundingBox): account for margin, padding, and border in element.boxModel (#1017)
1c52830 - feat: roll to 508367 (#1027)
053534b - chore: update yarn lock #1025
c310f13 - feat(Frame): Support options in addScriptTag and addStyleTag (#996)
0426e3c - Roll chromium to 508268 (#1019)
c893bf3 - fix(input) Send .code with keyboard events (#1015)
23c0ba0 - feat(Page): introduce Page.queryObjects (#1005)
3f9f0f4 - feat(Page.pdf): add 'A6' page format
9ecf20f - chore: Allow development under Windows platform (#992)
ff08e45 - fix: Remove synchronous operation with file system. (#879)
7a8aa73 - feat(Page): introduce Page.$$eval method (#1006)
464b6a9 - fix(Page.getMetrics): do not report a few metrics (#1001)
b82d319 - feat(Page): Support Page.getMetrics and metrics event. (#939)
77d3c29 - test(launcher): add a test for invalid executablePath option
13f100b - docs(api): fix typo
1fbf2a8 - feat(Page): kill the page.plainText method (#994)
079db90 - fix(JSHandle.toString): clearer description for primitives (#993)
c3fb367 - fix(Request): convert resourceType to all small-caps (#990)
7e28dba - feat(ElementHandle): add EH.boundingBox and EH.screenshot
515f2cd - feat: Roll to r507565 (#987)
e59172d - chore: Use Typescript to lint JSDoc annotations (#986)
7b5d7dd - docs(readme): fix typo (#988)
f1aa18a - feat(Launcher): add devtools option (#953)
e6af6e1 - feat(console): dispatch JSHandles as console arguments (#975)
8d1d9fe - chore(doc): replace 'could' with 'can'
52f92c9 - fix(input): clicking an element should take into account frame position (#971)
a7672ac - fix: return undefined when Page.evaluate encounters circular JSON (#983)
3ecd98d - fix(Page.select): synthesized events should bubble
44cdf85 - chore(doc): fix a link (#977)
4e55867 - chore(doc): fix nits after JSHandles PR (#976)
3214bb7 - chore(doc): fix implicit link to JSHandle
0af0d7d - feat(Input): Add keyboard methods to elementHandle (#801)
0d0f9b7 - feat(JSHandles): introduce JSHandles (#943)
59bcc2e - chore(docs): fix console example in docs/api.md
d3976cb - test: add failing test for storing data in custom userDataDir
c225b93 - feat(Launcher): Allow environment variables definition when launching chromium (#912)
97e40e6 - feat(Frame): Add addStyleTag API to frame - fixes #892 (#947)
d87480b - Node6: Remove parentheses around the body of async arrow functions (#942)
dc4c878 - chore(doclint): fix doclint tests (#941)
017429e - chore(doclint): exclude constructors by default (#938)
6c9a994 - chore(doclint): support classes inheritance (#935)
8bcf550 - chore(doclint): add basic tests for documentation parsers (#934)
41fd4b5 - chore(doclint): move doclint tests expectations into test folders (#932)
f9640a5 - chore(doc): add a note about using ElementHandle instances (#925)
215b349 - fix(Page): remove event listeners to avoid MaxListenersExceededWarning
53531c9 - feat(page): Allow Page.goto's timeout to be 0 to disable timeout (#887)
bafd937 - chore(tests): fix a few typos in tests (#911)
a6cf823 - feat(Launcher): introduce appMode option
1c292e9 - chore(doc): fix browser.wsEndpoint() return value format (#898)
c46c41d - fix(Launcher): Launcher should handle chrome process errors (#863)
cb280c5 - fix(Launcher): Terminate chrome gracefully on Windows (#876)
f625502 - feat(Console): Introduce ConsoleMessage type (#909)
cfece34 - fix(Network): Do not attempt to normalize malformed URLs. (#875)
ec760ab - chore: update yarn lock (#889)
72161c4 - [roll] Roll chromium to r503964 (#878)
0164b7c - Added info on how to find the browserWSEndpoint (#780)
9b0a062 - [docs] clarify env variables usage with npmrc
2babcb0 - [feat] Support PUPPETEER_SKIP_CHROMIUM_DOWNLOAD in npmrc
45f2640 - [api] Introduce Page.select method (#779)
acdb588 - doc: fix a link (#856)
ccf8fb1 - readme: add try-puppeteer link (#849)
c2b3fe9 - Remove --...

Read more

v0.11.0

21 Sep 05:46

Choose a tag to compare

Big Changes

  • Chromium 63.0.3205.0 (r499413)

API changes

Changed:

Added:

Removed:

  • elementHandle.evaluate was removed: element handles could be passed as arguments into page.evaluate (9292a56)

Bug Fixes

  • #426 - Implement HTTP Authentication API
  • #527 - using --user-data-dir=profilepath corrupts settings and remove all extensions
  • #572 - Script evaluation throws sometimes with SyntaxError
  • #627 - Protocol error Invalid InterceptionId on cancelled requests
  • #648 - Proxy settings should be taken from npm config before environment variables
  • #713 - page.setExtraHTTPHeaders not working
  • #738 - Cant catch errors with .goto
  • #745 - Feature request: Run browser process as different user
  • #756 - [CI] travis doesn't run tests for node6
  • #770 - No argument is passed to waitForFunction/waitFor

Raw notes

611f51b - [doc] Fix thal link (#806)
aa58f25 - doc: add await to browser.close in usage examples (#797)
e2cad56 - page.waitFor should send ...args to page.waitForFunction (#775)
d562db3 - Assert that all extra HTTP header values are strings (#781)
86b05da - disable extensions and google translate by default (#774)
a20df0d - [Doc] add link to environment variable wiki page (#792)
166c909 - [tests] fix a few tests to avoid unhandled promise rejection (#778)
f398e69 - [api] Launcher: Close gracefully when a userDataDir is specified (#700)
d7e6736 - [api] add Puppeteer.executablePath() method (#771)
89e923d - Fix cookies test on windows (#772)
0108720 - Cleanup tests (#769)
9779085 - Add info about deploying puppeteer to Heroku (#762)
9292a56 - [api] Teach page.evaluate to accept element handles as parameters (#725)
69e707a - Build node6 before running tests for it (#757)
a71f287 - Fix evaluation in case of first "undefind" argument (#732)
e5c17ee - Carefully manage unhandled rejections for navigation (#741)
0db6165 - [api] Implement page.authenticate method (#729)
0bea42b - Do not leave dangling promises when sending messages over protocol (#742)
f11e09d - resources.md -> readme.md so it renders on /examples (#753)
568b7bd - Proposal: adding RESOURCES.md for examples (#743)
30541cc - block-images example: use reuters.com (#747)
c4a3d44 - Roll chromium to r499413 (#731)
d791583 - [tests] Skip flaky test (#730)
b8bb80a - support npm proxy configuration for the installation script (#692)
8d2a427 - Docker example (#721)
272fb4d - block-images example: switch from bbc to news.google.com (#708)
d2d951d - Better issue template (#712)
eb86253 - Issue template (#710)
e12ce80 - Output path as chromium gets successfully downloaded (#689)
51a507b - readme: add PUPPETEER_SKIP_CHROMIUM_DOWNLOAD note (#671)

v0.10.2

02 Sep 04:06

Choose a tag to compare

Big Changes

  • Chromium 62.0.3198.0 (r497674)

API changes

Changed:

Added:

Bug Fixes

  • #558 - apple.com page hanged when intercepting requests
  • #547 - Headers in Response/Request object are case sensitive
  • #509 - setExtraHTTPHeaders: support both object and Map as headers argument
  • #411 - Introduce --user-data-dir as part of launcher options
  • #423 - dragging
  • #594 - EventEmitter memory leak detected. 11 exit listeners added
  • #615 - instance.close() let zombie process
  • #647 - Errors suppressed when downloading chromium through the install script
  • #568 - Can't click mobile version UI (touch event only)
  • #569 - how to fire touch event in page.emulate(iPhone)

Raw notes

9d0ad79 - fail installation when puppeteer errors downloading chromium (#654)
64124df - [api] add touchScreen.tap (#639)
e95fb96 - Throw an error when Chromium download is failed (#619)
42fa3af - Remove promise jsdoc (#641)
62ececb - Implement page.$eval (#638)
bf66696 - correct license to be a valid SPDX license expression
a052cdb - Update package.json with Apache License 2.0 (#632)
ce01e84 - [doc] Clarify networkIdleInflight default in docs. (#630)
9d7929c - Add environment variable to skip download (#606)
3365562 - Add DEBUG=* debugging guide to readme (#622)
66676c0 - Kill child process group (#621)
223a106 - Drop deasync: this is a left-over from phantomShim (#607)
c9b0a6c - Fix launcher to not leak event listeners (#605)
11ce8b2 - Implement Request.resourceType getter (#590)
8f74cc8 - [api] Add "step" option to mouse.move method (#601)
77600c6 - Implement ElementHandle.attribute() method (#543)
74c53f3 - Roll chromium to r497674 (#588)
8f66f73 - Fix launcher in case of empty arguments (#582)
d5327e6 - [api] Allow a custom userDataDir to be specified (#555)
66912a7 - [api] use object instead of map for headers (#567)
39b9081 - Bump version to 0.10.2-alpha (#566)
59fc757 - [docs] a mistake in allowed values of page.evaluateMedia (#580)
f9abc8e - readme: move up note about Page.pdf working on headless only (#577)
da85b44 - [docs] Add CentOS troubleshooting notes (#579)
225e880 - doc: Clarify that examples need Node v8 (#559)
e921a1c - Fix Request Interception (#565)

v0.10.1

26 Aug 02:44

Choose a tag to compare

Bug Fixes:

  • #538 - This package is not compatible with nodejs 6.x, unlike the engines in package.json claims

Raw notes:

cd81944 - Test node6 on travis (#551)
bd5b4fe - Phantom shim mention (#552)
e8f8a1a - Kill PhantomShim. (#533)
2c4dfbf - Fix node6 support for Object.entries and URL object (#548)
4e3b6a1 - Example: add listen for custom event on page load (#529)
be4da58 - Bump tip-of-tree version to 0.10.1-alpha (#534)
751164c - Mark version 0.10.0

Release v0.10.0

25 Aug 01:23

Choose a tag to compare

Big changes

  • Node 6 support! (9212863)
  • Support proxies when Puppeteer downloads Chromium (a00ba6a)
  • Puppeteer now downloads and runs Chromium 62 (r496140)

API changes

Added:

Removed:

Bug Fixes

  • #53 - Add Cookies API
  • #316 - Support Node 6
  • #462 - Block scripts
  • #474 - Page.waitForSelector timeout issue with parallel page tests in a single browser instance
  • #448 - node install.js fails inside enterprise proxy
  • #384 - Re-implement $$ (querySelectorAll) using new ElementHandles
  • #363 - Program that runs a bundled version of chromium can not stop
  • #396 - Examples for .waitForSelector() fail
  • #406 - Page.html()
  • #312 - Add an option to generate PDF with the screen CSS media type
  • #344 - Screenshots are captured with a white background
  • #350 - Question: Control sound and audio
  • #301 - Print to PDF call not working as expected in example?

Upstream Changes

Raw notes

10b9dfe - Prepare to release (#532)
60ace82 - add 'use strict'; to examples (#530)
0791774 - Cookies (#314)
9212863 - Node 6 support (#484)
46115f9 - add missing backticks in README.md (#525)
3b44de4 - readme: add evaluate snippet (#524)
b8c3686 - [doc] elaborate on url parameter in page.goto. (#504)
4471969 - fix a typo in the api.md (#505)
a1414de - Implement page.setJavaScriptEnabled method
63e2b36 - [doc] Add reference to released API
a330c8e - Bump version to 0.9.1-alpha
1458a3b - fix typo in test.js (#490)
8fe2477 - Enable MutationObserver attributes (#499)
a756bc8 - Don't complain about Windows line endings on Windows (#496)
ac109db - Kill Chrome quickly on Windows (#488)
a00ba6a - Adding proxy support for ChromiumDownloader (#455)
151d512 - Implement page.$$ method (#463)
7e1f2f0 - readme: add console event debugging tip (#481)
a526e9f - Stricter eslint rules (#472)
ce08fc7 - Roll chromium to r496140 (#465)
11e3343 - Put chrome profiles into a temporary directory (#439)
1f9b4fb - Change let into const (#457)
5d6d3e0 - cleanup: Use ES6 default params (#447)
271fd09 - Launcher: add timeout to chrome launching (#434)
afd9012 - waitTask should survive cross-process navigation (#435)
c1731dd - Fail gracefully when chromium failed to download (#430)
598f439 - Add Page.content() method. Fixes #406. (#419)
6fcf3d9 - Fix grammar in troubleshooting.md
16e1499 - doc: fix typo (#431)
fcb8ab9 - Add troubleshooting.md (#428)
a5eca57 - Add proxy server example (#427)
281db8f - doc: change ambiguous phrase in api.md (#410)
292c7a2 - doc: remove mentions of removed Boxy mixin (#425)
6a35c97 - doc: fix descriptions of certain page methods (#424)
6581416 - doc: fix some nits in code examples from api.md (#407)
3b03fdd - example 'block images' - make extension check case insensitive (#401)
9ede314 - doc: fix some links in api.md (#400)
ab125f6 - doc: Fix return type in response.text()
e8b4288 - readme: fix missing word (#414)
caa6f81 - docs: note headless flag defaults to true (#332)
7796ca5 - examples: replace let with const (#403)
8c245ee - doc: fix code examples in CONTRIBUTING.md (#402)
970e9c4 - doc: fix copy-paste artefacts (#394)
f851501 - doc: remove a link to a deleted example (#392)
6289219 - README: Fix a typo (#385)
6cc2741 - Introduce page.emulateMedia method (#383)
8f43bef - Make prettier JS snippets (#377)
ae3fedf - readme: start of useful debugging tips (#352)
500b956 - #366 - tone of logo surface from light source (#369)
d71feb6 - Determine failed navigation based on Frame.unreachedURL (#365)
ae14c1e - Use randomized folder names for user profile directories (#364)
127f396 - Allow capturing transparent screenshots (#354)
1ca7849 - Mute audio in headless, closes #350 (#355)
b9c7c36 - Add Serializable type into the docs (#318)
16e190b - Indent the code in README.md (#319)
f3143a3 - Fix flaky test (#351)
5f0afd5 - Move uploadFiles onto ElementHandle (#348)
ad1b292 - install.js: refactor to template string (#340)
21aa0a2 - example 'block images' - fix typo and add other extensions (#334)
2655f20 - docs: fix link to ElementHandle (#345)
e7356bf - docs: fix typo in event: 'load' section (#325)
e5876c7 - corrected minor typos (#322)
7cef3d7 - Teach page.pdf to respect printBackground argument (#307)
a93377f - readme: migrate from travis-ci .com to .org (#297)
3cc5ba4 - update code example: setRequestInterceptionEnabled (#294)
da53218 - Fix doc on pdf method. Minor addition to PDF path option docs. (#292)