* Tested against Google Chrome 67.0.3396.99 Built on OSX, thanks Travis CI
* Tested against Chrome/67.0.3396.99 / Win64, thanks AppVeyor
* Tested against Chrome Chrome/59.0.3071.115
* Tested against Chromium HeadlessChrome/60.0.3110.0
* Tested against Chromium HeadlessChrome/61.0.3141.0
* Tested against Chromium HeadlessChrome/62.0.3202.94
* Tested against Chromium HeadlessChrome/63.0.3239.132
* Tested against Chromium HeadlessChrome/64.0.3282.119
* Tested against Chromium HeadlessChrome/65.0.3325.181
* Tested against Chromium HeadlessChrome/66.0.3359.139
* Tested against Chromium HeadlessChrome/67.0.3396.99
* Tested against Chromium HeadlessChrome/68.0.3440.84
* Tested against Chromium HeadlessChrome/69.0.3497.100
* Tested against Chromium HeadlessChrome/70.0.3538.77
* Tested against Chromium HeadlessChrome/70.0.3538.102
* Tested against Chromium HeadlessChrome/71.0.3576.0
* Tested against Chrome HeadlessChrome/72.0.3602.0
0.24 2018-11-19
* Fix for ->setRequestInterception_future
and ->setRequestInterception, contributed by Enrique Pessoa
This addresses RT #127738
0.23 2018-10-20
* Spun off screencast client into Mojolicious::Plugin::PNGCast distribution
* Documentation fixes (thanks Hacktoberfest!)
* --enable-automation is now on by default
* Document PDF paper size options (Thanks Eugen Konkov)
* Slight logging improvements for the Net::Async backend
0.22 2018-09-23
. Logging improvements
. Documentation of the DevToolsProtocol class
. Convenience parameter to ->click() to click on text
. Developer tests now spawn a single Chrome test, speeding up the test run
0.21 2018-09-15
. Fix ->sendkeys() to actually work
. Fix crash in ->wait_until_visible()
. Fix ->block_urls() to actually work
. Make log output less verbose, log more information in onelines
. "extra_headers" constructor argument works as documented
. Added a (Mojolicious) receiver for screencasts to better observe
what a headless Chrome is currently doing
. Added a very experimental start of WWW::Mechanize::Edge for
Microsoft Edge, which happens to use the same protocol as Chrome. This
is largely undocumented.
0.20 2018-09-07
. Add better diagnostics when the Chrome binary is not found
. Better search logic for Chrome binary, also support chromium-browser
. ->sendkeys() method to type input into browser
. ->content_as_pdf() now can also save to a file (as documented)
. Docfix for screencast data
0.19 2018-08-25
. Make ->set_attribute() actually work
. Recognize more intra-page navigation events
. Tested against Chrome/59.0.3071.115
. Tested against HeadlessChrome/60.0.3110.0
. Tested against HeadlessChrome/61.0.3141.0
. Tested against HeadlessChrome/62.0.3202.94
. Tested against HeadlessChrome/63.0.3239.132
. Tested against HeadlessChrome/64.0.3282.119
. Tested against HeadlessChrome/65.0.3325.181
. Tested against HeadlessChrome/66.0.3359.139
. Tested against HeadlessChrome/67.0.3396.99
. Tested against HeadlessChrome/68.0.3435.0
. Tested against HeadlessChrome/68.0.3440.84
. Tested against HeadlessChrome/69.0.3496.0
. Tested against HeadlessChrome/70.0.3500.0
. Tested against HeadlessChrome/70.0.3509.0
. Tested against Chromium 65.0.3325.181 Built on Ubuntu, thanks Travis CI
. Tested against Google Chrome 67.0.3396.99 Built on OSX, thanks Travis CI
. Tested against Chrome/67.0.3396.99 / Win64, thanks AppVeyor
0.18 2018-08-03
. Properly handling moving between fragments, for example
from http://example.com/#1 to http://example.com#2
(reported via Perlmonks.org)
This kind of navigation does not work on Chrome 64 and Chrome 59.
. Disable the "save password" bubble by default.
You can re-enable this by passing a true value to the option
save_password_bubble in the constructor.
. Tested against Chrome/59.0.3071.115
. Tested against HeadlessChrome/60.0.3110.0
. Tested against HeadlessChrome/61.0.3141.0
. Tested against HeadlessChrome/62.0.3202.94
. Tested against HeadlessChrome/63.0.3239.132
. Tested against HeadlessChrome/64.0.3282.119
. Tested against HeadlessChrome/65.0.3325.181
. Tested against HeadlessChrome/66.0.3359.139
. Tested against HeadlessChrome/67.0.3396.99
. Tested against HeadlessChrome/68.0.3435.0
. Tested against HeadlessChrome/68.0.3440.84
. Tested against HeadlessChrome/69.0.3496.0
. Tested against HeadlessChrome/70.0.3500.0
. Tested against HeadlessChrome/70.0.3509.0
. Tested against Chromium 65.0.3325.181 Built on Ubuntu, thanks Travis CI
. Tested against Google Chrome 67.0.3396.99 Built on OSX, thanks Travis CI
. Tested against Chrome/67.0.3396.99 / Win64, thanks AppVeyor
0.17 2018-07-07
. Added installation instructions for MacOS / OSX, contributed by Sdonley
. Added default path on MacOS for using the default Chrome executable
. Automatic testing for OSX on Travis CI is now enabled
. We now always launch Chrome / Chromium with --no-zygote and --no-sandbox
This behaviour can be disabled by passing
no_zygote => 0,
no_sandbox => 0,
to the constructor
. Skip constructor failure tests for Perl < 5.014
$@ is not always preserved when a destructor calls eval{} on those
versions of Perl.
. Add ->infinite_scroll as experimental API, together with ->scroll_to_bottom
Added by sdondley
. Tested against Chromium 59.0.3071.115 / Win64 (some tests skipped)
. Tested against Chromium 60.0.3110.0 / Win64 (some tests skipped)
. Tested against Chromium 61.0.3141.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 / Win64 (some tests skipped)
. Tested against Chromium 63.0.3239.132 / Win64
. Tested against Chromium 64.0.3282.119 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 / Win64 (some tests skipped)
. Tested against Chromium 66.0.3359.139 / Win64 (some tests skipped)
. Tested against Chromium 67.0.3396.99 / Win64 (some tests skipped)
. Tested against Chromium 68.0.3435.0 / Win64 (some tests skipped)
. Tested against Chromium 69.0.3481.0 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 Built on Ubuntu, thanks Travis CI
. Tested against Google Chrome 67.0.3396.99 Built on OSX, thanks Travis CI
. Tested against Chrome/67.0.3396.99 / Win64, thanks AppVeyor
0.16 2018-06-23
+ Added ->is_visible, ->wait_until_visible and ->wait_until_invisible
+ Better way to find the system browser by default
This can be overridden by explicitly specifying the executable to use
. Rename ->agent_async() to ->agent_future()
. Add ->callFunctionOn_future() and ->callFunctionOn()
! "start_url" now actually gets you the first URL
! Fixed ->viewport_size() to actually work
. Experimental prototype of self-implemented Save Page As feature
(undocumented)
0.15 2018-05-30
. Added ->links() method, pasted from WWW::Mechanize::PhantomJS
Thanks to Alain Rioux for spotting
+ Add some more command line switches to disable more background behaviour
of Chrome by default:
background_networking
client_side_phishing_detection
component_update
hang_monitor
prompt_on_repost
sync
web_resources
default_apps
infobars
default_apps
popup_blocking
You can re-enable this by passing a true value to the option in
the constructor
0.14 2018-05-27
+ The "tab" parameter to ->new() was documented
! The "reuse" parameter to reconnect to an existing Chrome instance is
not needed anymore if you pass in a true value for the "tab" parameter.
! Downloads are now detected in a better way on Chrome 66+
This needed some general rework in how responses are treated, so please
retest your scripts and send me failing tests if a case has now become
time-critical.
. Tested against Chromium 59.0.3071.115 / Win64 (some tests skipped)
. Tested against Chromium 60.0.3110.0 / Win64 (some tests skipped)
. Tested against Chromium 61.0.3141.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 / Win64 (some tests skipped)
. Tested against Chromium 63.0.3239.132 / Win64
. Tested against Chromium 64.0.3282.119 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 / Win64 (some tests skipped)
. Tested against Chromium 66.0.3359.139 / Win64 (some tests skipped)
. Tested against Chromium 67.0.3394.0 / Win64 (some tests skipped)
. Tested against Chromium 68.0.3417.0 / Win64 (some tests skipped)
. Tested against Chromium 69.0.3443.0 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 Built on Ubuntu, thanks Travis CI
0.13 2018-04-24
. More test stability
. Actually exit() after a failed fork() call
This fixes RT 125162, diagnosed by Slaven Rezic
. Tested against Chromium 59.0.3071.115 / Win64 (some tests skipped)
. Tested against Chromium 60.0.3110.0 / Win64 (some tests skipped)
. Tested against Chromium 61.0.3141.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 / Win64 (some tests skipped)
. Tested against Chromium 63.0.3239.132 / Win64
. Tested against Chromium 64.0.3282.119 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 / Win64 (some tests skipped)
. Tested against Chromium 66.0.3346.0 / Win64 (some tests skipped)
. Tested against Chromium 67.0.3394.0 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 Built on Ubuntu, thanks Travis CI
0.12 2018-04-21
. Fix erroneous use of IO::Async::Loop in the tests
This fixes RT 125156, diagnosed by Slaven Rezic
. Tested against Chromium 59.0.3071.115 / Win64 (some tests skipped)
. Tested against Chromium 60.0.3110.0 / Win64 (some tests skipped)
. Tested against Chromium 61.0.3141.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 / Win64 (some tests skipped)
. Tested against Chromium 63.0.3239.132 / Win64
. Tested against Chromium 64.0.3282.119 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 / Win64 (some tests skipped)
. Tested against Chromium 66.0.3346.0 / Win64 (some tests skipped)
. Tested against Chromium 67.0.3394.0 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 Built on Ubuntu, thanks Travis CI
0.11 2018-04-14
+ Support ->reload on Chrome v66+ by adding --disable-prompt-on-repost
This globally disables the prompting on repost for the process. If you
need to test for these prompts, add
disable_prompt_on_repost => 0
to the options for the WWW::Mechanize::Chrome object. To my knowledge,
there is no way to programmatically find whether Chrome is prompting for
a repost or not. See also
https://bugs.chromium.org/p/chromium/issues/detail?id=804371
+ Support ->getRequestPostData() to retrieve the data when sending a POST
request
+ Support ->searchInResponseBody() to search in a response body without
retrieving the body to Perl space. This doesn't work reliably in my
experience, as Chrome seems to forget response bodies rather quickly.
+ outerHTML is now a gettable property
+ The User-Agent string can be set in the constructor
+ Fixes for Chrome v67 when retrieving file:// resources
These fixes might have unwanted side-effects for other versions of Chrome
and other protocols, but the test suite doesn't show any of them. If this
change breaks your workflow, please submit a (failing) test case.
. Tested against Chromium 59.0.3071.115 / Win64 (some tests skipped)
. Tested against Chromium 60.0.3110.0 / Win64 (some tests skipped)
. Tested against Chromium 61.0.3141.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 / Win64 (some tests skipped)
. Tested against Chromium 63.0.3239.132 / Win64
. Tested against Chromium 64.0.3282.119 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 / Win64 (some tests skipped)
. Tested against Chromium 66.0.3346.0 / Win64 (some tests skipped)
. Tested against Chromium 67.0.3394.0 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3325.181 Built on Ubuntu, thanks Travis CI
0.10 2018-02-02
+ IO::Async / Net::Async support
This was mostly held back by me not understanding the API of
Net::Async::WebSocket::Protocol. This needs
Net::Async::WebSocket::Client 0.12 (or higher) installed.
+ Workarounds in tests for new, incompatible Chrome behaviour
. Tested against Chromium 59.0.3071.115 / Win64 (some tests skipped)
. Tested against Chromium 60.0.3110.0 / Win64 (some tests skipped)
. Tested against Chromium 61.0.3141.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 / Win64 (some tests skipped)
. Tested against Chromium 63.0.3239.132 / Win64
. Tested against Chromium 64.0.3282.119 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3317.0 / Win64 (some tests skipped)
. Tested against Chromium 66.0.3335.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 Built on Ubuntu, thanks Travis CI
0.09 2018-01-04
! ->js_errors() now only returns error messages
! ->js_console_entries returns all entries in the browser console
! Errors in JS code from ->eval_in_page are now fatal errors in Perl too
+ The ->reload() method works now
. Tested against Chromium 59.0.3071.115 / Win64 (some tests skipped)
. Tested against Chromium 60.0.3110.0 / Win64 (some tests skipped)
. Tested against Chromium 61.0.3141.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 / Win64 (some tests skipped)
. Tested against Chromium 63.0.3239.108 / Win64
. Tested against Chromium 64.0.3282.0 / Win64 (some tests skipped)
. Tested against Chromium 65.0.3311.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 Built on Ubuntu, thanks Travis CI
0.08 2017-11-30
+ Implemented file downloads and their storage for v62 and v63
You can't find out the name a file was saved as, and you can't find out
when the download is done.
Chrome v64 doesn't notify us at all about downloads.
! Redid success/failure logic of responses
We try harder to associate a response with something that we actually
initiated.
! Selecting different backends now actually works
. Tested against Chromium 59.0.3071.115 / Win64
. Tested against Chromium 60.0.3110.0 / Win64
. Tested against Chromium 61.0.3141.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 / Win64
. Tested against Chromium 63.0.3205.0 / Win64
. Tested against Chromium 64.0.3282.0 / Win64 (some tests skipped)
. Tested against Chromium 62.0.3202.94 Built on Ubuntu, thanks Travis CI
0.07 2017-09-02
! Fix timers firing or not
! Implement a workaround for Chrome (not) navigating
This workaround means sleeping 0.1s to see whether the notification comes
in from Chrome after the "navigation complete" message has arrived.
Ideally we will find a way to make Chrome tell us when it will perform
HTTP transactions instead of having to wait.
. Tested against Chromium 59.0.3071.115 / Win64
. Tested against Chromium 60.0.3110.0 / Win64
. Tested against Chromium 61.0.3141.0 / Win64
. Tested against Chromium 62.0.3189.0 / Win64
. Tested against Chromium 63.0.3205.0 / Win64
. Tested against Chromium 58.0.3029.110 Built on Ubuntu, thanks Travis CI
0.06 2017-08-06
. Correct the name of the examples module
. No code changes, no need to upgrade
0.05 2017-08-06
+ More robust handling of Chrome disconnects
It seems that Chromium 62+ disconnects all clients when a tab is closed
! ->get now always waits for an HTTP response
. Tested against Chromium 59.0.3071.115 / Win64
. Tested against Chromium 60.0.3110.0 / Win64
. Tested against Chromium 61.0.3140.0 / Win64
. Tested against Chromium 61.0.3141.0 / Win64
. Tested against Chromium 62.0.3178.0 / Win64
. Tested against Chromium 58.0.3029.110 Built on Ubuntu, thanks Travis CI
0.04 2017-07-01
+ Fix maximum websocket message size
This was "randomly" breaking transfers with large assets.
0.03 2017-06-30
! The "profile" option now really uses the profile, not the data directory.
+ New option "data_directory" to set the base data directory.
+ We run all tests with a temporary user now instead of the default user
that might be your current Chrome user
+ Tests now run headless by default
+ The backend event loop can be selected from the environment
. Tested against Chromium 59.0.3071.115 / Win64
. Tested against Chromium 60.0.3110.0 / Win64
. Tested against Chromium 61.0.3140.0 / Win64
. Tested against Chromium 61.0.3141.0 / Win64
. Tested against Chromium 58.0.3029.110 Built on Ubuntu, thanks Travis CI
0.02 2017-06-23
+ Many more functions
+ Screencast ability
+ ->stop() function
+ Handling of Javascript dialogs
. Tested against Chromium 60.0.3110.0 / Win64
. Tested against Chromium 61.0.3140.0 / Win64
. Tested against Chromium 58.0.3029.110 Built on Ubuntu, thanks Travis CI
0.01 2017-06-02
. Released unto an unsuspecting audience
. Tested against Chromium 60.0.3110.0 / Win64
. Tested against Chromium 58.0.3029.110 Built on Ubuntu, thanks Travis CI