* Windows tests * Tested against Chrome/62.0.3202.94 * Tested against Chrome/63.0.3239.132 * Tested against Chrome/64.0.3282.119 * Tested against Chrome/65.0.3325.181 * Tested against Chrome/66.0.3359.139 * Tested against Chrome/67.0.3396.99 * Tested against Chrome/68.0.3440.84 * Tested against Chrome/69.0.3497.100 * Tested against Chrome/70.0.3538.102 * Tested against Chrome/71.0.3578.98 * Tested against Chrome/72.0.3626.96 * Tested against Chrome/73.0.3683.103 * Tested against Chrome/74.0.3729.131 * Tested against Chrome/75.0.3770.90 * Tested against Chrome/76.0.3798.0 * Tested against Chrome/77.0.3865.75 * Tested against Chrome/78.0.3904.70 * Tested against Chrome/79.0.3945.117 * Tested against Chrome/80.0.3987.149 * Tested against Chrome/80.0.3987.163 * Tested against Chrome/81.0.4024.0 * Tested against Chrome/82.0.4052.0 * Tested against Chrome/83.0.4102.0 * Tested against Chrome/84.0.4112.0 * Tested against Chrome/86.0.4240.198 * Tested against Chrome/87.0.4280.66 * Linux tests * Tested against Chromium Chromium/83.0.4103.116 * Tested against Chromium Chromium/65.0.3325.181 * Tested against Chromium Chromium/66.0.3359.139 * Tested against Chromium Chromium/67.0.3396.87 * Tested against Chromium Chromium/75.0.3770.100 * Tested against Chromium Chromium/77.0.3865.120 * Tested against Chromium Chromium/78.0.3904.108 * Tested against Chromium Chromium/80.0.3987.106 * Tested against Chromium Chromium/83.0.4103.97 * Tested against Chromium Chromium/85.0.4183.102 * Tested against Chromium Chromium/86.0.4240.198 * Tested against Chromium Chromium/87.0.4280.141 * Tested against Chromium Chromium/90.0.4430.212 * Tested against Chromium Chromium/91.0.4472.164 * Tested against Chromium Chromium/95.0.4638.54 * Tested against Chromium Chromium/111.0.5563.65 * Tested against Chromium Chromium/112.0.5615.121 0.76 2026-03-13 * Harden test suite against Chromium process leaks and hangs by implementing aggressive SIGKILL cleanup and global PID tracking in t/helper.pm. * Significantly reduce TAP output noise by wrapping verbose module warnings, Devel::Cycle GLOB checks, and command-line parsing in Capture::Tiny. * Convert informational version diagnostics to 'note' in t/00-load.t and t/60-mech-custom-headers.t for cleaner TAP output. * Fix navigation failures in t/60-mech-custom-headers.t on modern Chromium versions by aligning Referer protocol with the test site. * Resolve cleanup race conditions and directory lock issues in t/49-existing-port.t, t/50-mech-new.t, and t/61-popup.t via manual reaping, explicit tab activation, and synchronization sleeps. * Decouple autoclose_tab from browser-wide autoclose flag. * Implement activate_tab using Target.activateTarget DTP message. * Implement watchdog timers in tests to prevent indefinite protocol hangs. * Fix typos in README.mkdn and add missing shebangs to code examples. * These contributions are copyright Google LLC and contributors 2026 This work is licensed under the same terms as Perl itself. 0.75 2025-10-31 * When encountering bad/unknown Chrome behaviour, return error 599 instead of crashing the script using C or C. 0.74 2025-10-06 * Fix (small, but persistent) memory leak. Letting $mech go out of scope should now destroy it again properly. (Andrew Ruthven) * Support the WWW_MECHANIZE_CHROME_ARGS environment variable * Documentation updates * Allow connecting to Chrome Apps * Support --silent-launch Chrome option * Update for the Test::More::isnt() function * Support setting browser window bounds using ->setWindowBounds() 0.73 2024-03-29 * Tests should not hang when run as root now * Sandbox is automatically disabled when running as root 0.72 2023-11-21 * requires Perl 5.020 due to various features * WWW::Mechanize::Chrome now emits events instead of having callbacks. This allows multiple subscribers for an event. * ->on_popup is now an event. To port replace ->on_popup with ->on( 'popup' => sub( $mech, $tab ) { ... }) * Chrome::DevToolsProtocol::Target::on_message now emits an event. To port replace ->on_message with ->on( 'message' => sub( $mech, $m ) { ... }) * Added "app" option to make Chrome show up without address bar etc. * More command line switches to disable Chrome update behaviour 0.71 2023-04-22 * Add example script showing how to attach to a running Chrome instance * No code changes, no need to upgrade 0.70 2023-03-30 * Move tests from Test::More::isn::t to Test::More::isnt * Remove usage of ->@* for compatibility with earlier versions of Perl 0.69 2023-03-27 * Add documentation on the profile directory / C constructor option * Add --domain-reliability-option to disable one more Google ping * some obsolete command line options removed * Add --remote-allow-origins=* to fix working on Chrome 111 onwards * Revamp fetching of node properties * Redo node invalidation and retry searches - this could help when receiving NodeID=0 * Some memory usage improvements KNOWN BUGS * Some (closed over?) Futures are not awaited or cancelled properly but are lost. Hints to where they are constructed are welcome. 0.68 2021-08-27 * The tab numbers now exclude loaded extension and background pages. This means that you may (or may not) have to adjust the number for the "tab" option in the constructor * Pages with Unicode now properly get stored encoded and can be properly retrieved using ->content() ( GH #63 ) 0.67 2021-07-09 * Add json_log_file and json_log_fh options This is in preparation of supporting Firefox as well and collecting verbatim communications for debugging * Really fix the ->highlight_nodes() method, thanks to Joshua Pollack * Restore the ability to connect to an existing Chrome instance, thanks to Joshua Pollack * Added test for connecting to running Chrome instances * Test resiliency improved 0.66 2021-03-28 * Move bugtracker to Github * ->click() now always returns the HTTP response. In cases of internal navigation, it used to erroneously return an arrayref * Fix for GH #55 , ->decoded_content() does not work for HTML content * Test stability fixes, adapt tests to Chrome 88 * Remove some hardcoded sleep() calls from the test harness * Chrome DOM nodes can have a node id of 0 , but the Chrome API does not gracefully handle these. We output "Bad luck" on encountering such a node. 0.65 2020-11-30 * Fix missing use of Filter::signatures to allow running on Perl 5.18 0.64 2020-11-29 * Add ->on_popup() callback * Add ->list_tabs() method * Add various asynchronous implementations for methods * Don't wait in ->close() anymore for the close to finish * New tabs don't have a way to notice when they are fully loaded yet * Fix rare error when a node with nodeId 0 could not be fetched 0.63 2020-11-28 * Fix ->new_tab() to actually work, add a unit test for it * Fix cookie handling to preserve "immediately" expiring cookies for one second so HTTP::Cookies does not immediately discard them. Add a unit test for this new behaviour. * The information TCP connection needed for TCP communication with Chrome is now gleaned from the endpoint information as a fallback (Thanks to Patrik) * Test::HTTP::LocalServer 0.71 is now required as a minimum, since there are some tests that require the new form value behaviour * Chrome 62 doesn't handle setting cookies well, so skip the tests on that too 0.62 2020-11-27 * Add ->new_tab() method to create a new tab in the current session (suggested by Patrik) 0.61 2020-11-03 * ->content(format => 'text') and ->text() now properly skip the content within