The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
    * 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.3578.98
    * Tested against Chrome   HeadlessChrome/72.0.3623.0
    * Tested against Chromium HeadlessChrome/73.0.3683.103
    * Tested against Chromium HeadlessChrome/74.0.3729.131
    * Tested against Chromium HeadlessChrome/75.0.3768.3
    * Tested against Chromium HeadlessChrome/76.0.3798.0


0.33 2019-05-29
    * Actually call waitpid to make sure our Chrome processes go away properly
      and to not accumulate zombies. Sent by Felipe Sologuren. This fixes
      RT #129805, thanks!
    * Fix memory leak caused by non-weakening of references in ->add_listener
        Diagnosed and reported by Felipe Sologuren. This fixes RT #129808,
        thanks!
    * Add ->event accessor to Chrome::DevToolsProtocol::EventListener, suggested
      by Felipe Sologuren, thanks!

0.32 2019-05-29
    * ->update_html now stringifies its argument. This allows to pass in objects
      with stringification overload instead of having to do the stringification
      yourself. Addresses GH #42.
    * Rename HTTP::Cookies::Chrome to HTTP::Cookies::ChromeDevTools to avoid
      the name clash.

0.31 2019-05-25
    * Silence HTTP::Cookies::Chrome debug output left over
    * ->eval() now takes options on whether object references or JSON-serialized
      data should be returned. This allows you to reference the "window"
      object, for example.
      Currently, these object references are kept as hashrefs instead of
      objects, and the handling needs to become more transparent with respect to
      the Chrome API, but that is planned for later versions.

0.30 2019-05-17
    * Disable the Host: header test for Chromer 76+, as this raises an error
      in those versions instead of just not working.
      I guess this is progress.

0.29 2019-04-23
    * Add ->cookie_jar support, this adresses GH #40
    * Document "autoclose" option

0.28 2019-01-07
    * More test resiliency against fake domains / links injected by bad ISPs
      (like frontier.com )
    * Link to WWW::Mechanize::Chrome::Troubleshooting from main documentation
    * Documentation improvements by SDONLEY
    * Up Future prerequisite to 0.35, earlier versions lack the features
      the module uses

0.27 2018-12-23
    * Properly handle Page.navigatedWithinDocument instead of raising an error.
      The synthetic response object doesn't help much, but on the other side,
      it's much better than raising an error and stopping the script.
      Reported by Steve Dondley, Github issue GH #34

0.26 2018-12-09
    * Actually do something if we timeout when connecting to Chrome.
      The main cause of the connetcion to Chrome failing is that there already
      is a non-devtools instance of Chrome running and is brought to the
      foreground instead of a new DevTools-enabled instance being launched.
      The best workaround is to launch it as

      use File::Temp 'tempdir';
      # create a fresh Chrome every time
      my $mech = WWW::Mechanize::Chrome->new(
          data_directory => tempdir(CLEANUP => 1 ),
      );

    * More log output in Chrome::DevToolsProtocol
    * Now testing up to Chrome 73
    * ExtUtils::MakeMaker minimum version 5.52_01, contributed by LorenzoTa
    * Fix the test skip counts for several tests

0.25 2018-11-23
    * Added one stray test to the distribution
    * Rework of the documentation, thanks to Harald Joerg
      This is a result of the PRC, thank you very much!
    * No code changes, no need to upgrade

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