Watcher Package Release Notes
Release notes describing the changes in the Watcher package for version 3.0.0 and later
4.0.0 (December 3, 2025)
Watcher 4.0.0 is a major release of the Watcher package.
-
Features
- Added proxy support. See Using Watcher With a Proxy for more information. (HTTP proxy implementation requires Node.js version 20.18.1 or later).
- Updated the version of axe-core to 4.11.0.
- Added support for Node.js version 24.
-
Bug Fixes
- Fixed a problem reporting Git information when using a GitLab pipeline.
- Improved error handling for Chrome alternatives like Chrome for Testing and Chromium.
- Properly handle empty Git data.
- Include all user-provided Chrome options for WebdriverIO.
-
Breaking Changes
-
Watcher (for TypeScript and JavaScript) now uses new paths for importing the package. See the instructions for your browser integration package to see updated code samples.
Browser Automation Platform Old Path New Path Cypress @axe-core/watcher@axe-core/watcher/cypress/configCypress Commands @axe-core/watcher/dist/cypressCommands@axe-core/watcher/cypress/supportPlaywright @axe-core/watcher@axe-core/watcher/playwrightPlaywright Test @axe-core/watcher@axe-core/watcher/playwright-testPuppeteer @axe-core/watcher@axe-core/watcher/puppeteerWebdriverIO @axe-core/watcher@axe-core/watcher/wdioWebdriverIO Testrunner @axe-core/watcher@axe-core/watcher/wdioWebDriverJS @axe-core/watcher@axe-core/watcher/webdriverJavaScript example for WebDriverJS:
const { webdriverConfig, wrapWebdriver, WebdriverController } = require('@axe-core/watcher/webdriver') -
Replaced the incorrect specification of
LaunchOptionsin TypeScript for Playwright with a new type calledLaunchPersistentContextOptions, dynamically extracted fromlaunchPersistentContext. Users will need to remove any unsupported options they were using withLaunchOptions; otherwise, their TypeScript will fail to compile in strict mode.
-
3.23.0 (August 1, 2025)
- Improved timeout and retry logic when sending results to the server (for Watcher for JavaScript and TypeScript).
- Added a warning about the
--load-extensionsoption with Chrome version 139 and later (both for the JavaScript/TypeScript implementation and Java implementation). - Report failure if the maximum retries for failed results upload is exceeded (
Flush: Failed. Maximum retries reached). - Fixed problems with handling Chrome for Testing and Chromium.
- Log whether maximum retries have been reached.
- Implemented component testing in the Cypress integration.
3.22.0 (July 1, 2025)
- Ensure that
runOptionsdoes not include anynullvalues, which caused a silent failure in the Java integration. - Ensure the license file for the Java implementation is copied to the
META-INFdirectory. - Fixed a problem where the excluded URL patterns weren't copied properly in Java.
- Improved the method for determining the default Git branch.
3.21.0 (May 23, 2025)
- Java Watcher released.
- Implemented a fallback means of determining the default Git branch name.
- Fixed a problem with the Cypress integration where long
wait() times would cause duplicate page states or test failure. - Fixed a problem where
runOptions.runOnlyfailed to work properly with the Cypress integration.
3.20.2 (April 17, 2025)
- Fixed a problem with the timeout error messages that specified the wrong parameter to change. (For example, the user was directed to change
timeoutStartinstead of the correcttimeout.startvalue.)
3.20.1 (March 25, 2025)
-
Features
- Allow earlier versions of axe-core to be selected.
- Made flushing of results to the server more robust.
-
Bug fixes
- Fixed a problem when consolidating global configurations with user configuration overrides.
- Fixed a race condition in the Cypress integration.
- Fixed a problem with the Cypress integration where experimental rules weren't enabled.
- Fixed a problem where enabling the EN 301 549 standard wasn't honored.
- Fixed a problem with
configurationOverridesif no values were set. - Added additional validation for Playwright and Playwright Test.
- Fixed a problem when attempting to select versions of axe-core without a patch version number.
- Enhanced the logic for merging user configurations with global configurations.
- Improved handling of axe-core version when no
configurationOverridesprovided. - Improved error message for a disallowed accessibility standard in
configurationOverrides. - Fixed error messages to include a link to troubleshooting documentation.
- Improved error handling when sending results to the server, which previously caused the test suite to stop.
3.20.0
- Not released
3.19.1 (February 25, 2025)
- Fixed a problem with capturing page states.
- Ensure that test suites specifying
--disable-extensionsdon't disable Watcher.
3.19.0 (January 20, 2025)
- Improved the error message with Playwright and Playwright Test versions 1.49.0 or greater when using the
headlessparameter when thechannelparameter is set tofirefox. (Only thechromiumorchromechannels are supported with fully headed mode or the new headless mode.) - Improved version checking for axe-core.
- Support for global configurations.
3.18.0 (December 18, 2024)
- Fixed several session-handling problems, which could cause erroneous or empty results to appear on the website.
- Added support for new Chromium headless in Playwright versions >= 4.91. See Try new Chromium headless in the Playwright 4.91 release notes.
- Added custom timeout values to allow users to control session handling.
3.17.2 (December 12, 2024)
-
Features
- Added manual mode to Watcher.
- Running an analysis on an unsupported protocol (any protocol other than https, http, or file) or on the about:blank page will result in an error.
- Now Watcher throws an error if it is not configured before use.
-
Bug fixes
- Fixed a problem in Playwright Test where sessions were reused, causing results to be overwritten.
- Fixed several other problems with creating and managing sessions.
- In manual mode, calling the controller's
start()method now marks the current page's DOM as clean, so no page state is captured. - In manual mode, fixed a problem where an additional page state was sometimes captured when
flush()was called. - Fixed a problem that caused a missing page state when
cy.axeWatcherAnalyze()was called aftercy.click()was called without acy.wait()call. - Now include an updated LICENSES-3RD-PARTY.md file with the @axe-core/watcher package.
- The controller method
stop()now analyzes the page if the DOM has changed before turning off automatic mode. - Changed Watcher's behavior so that if Watcher is in manual mode, don't analyze the page if the controller method
stop()is called. - Fixed a problem in the Playwright integration that caused wrapped methods to return incorrect types.
- Fixed a problem that prevented
runOptionsfrom accepting only one option.
3.17.1
- Not released
3.17.0
- Not released
3.16.1 (October 25, 2024)
- Included third-party licenses.
3.16.0 (September 26, 2024)
- Fixed a transitive dependency issue involving Cypress commands.
3.15.2 (September 13, 2024)
- Added support for WebdriverIO version 9 (while retaining support for WebdriverIO versions 7 and 8).
3.15.1
- Skipped (there was no release candidate)
3.15.0
- Not released
3.14.3 (September 5, 2024)
- No user-visible changes
3.14.2 (August 29, 2024)
- Fixed an error accessing the timeout value in Cypress.
- For Cypress, now throw an exception if the user tries to use Watcher without first calling
cypressConfig(). - Fixed an error that appeared under certain conditions in Cypress when importing the
osmodule. - Added
buildIDtoAxeConfigurationfor parallel test runs. - Deprecated
sessionIDinAxeConfigurationin favor ofbuildID. - Fixed a problem that caused an additional page state to be captured with Puppeteer due to handling of
authenticate(). - Performance improvements in axe Watcher due to changes in code obfuscation.
3.14.1
- Not released
3.14.0
- Not released
3.13.1 (July 19, 2024)
- Allow excluding URLs from the analysis scan by using the
excludeUrlPatternsoption. SeeexcludUrlPatterns.
3.13.0
- Not released
3.12.0 (July 16, 2024)
- Improved the handling of component remounting in Cypress.
- Ensure Watcher can be loaded in WebdriverIO version 7.
- Added Puppeteer
locatorsupport. - Added configuration of
runContextandrunOptionsfor axe-core. SeerunContextandrunOptions.
3.11.1 (June 26, 2024)
- Fixed a problem where return values from external
setupNodeEventshandlers in Cypress weren't propagated. - Changed behavior to allow Cypress's Chrome extension to be loaded.
3.11.0 (June 17, 2024)
- Addressed a problem where unmounting and remounting of components would cause accessibility scans to timeout in Cypress.
- Relaxed the browser detection logic to avoid failing even when using supported browsers.
- Removed file-system writes when flushing results in Cypress.
3.10.0 (May 16, 2024)
- Fixed a problem in Cypress where the
configobject returned fromsetupNodeEventswasn't propagated correctly and any changes made to it were lost. - Fixed the implementation of proxied functions (for Playwright Test) that had resulted in an error with
Locatorobjects: can be only used with Locator object. - Wrapped two new Playwright functions from the 1.43.1 release.
3.9.0 (April 30, 2024)
- Added backwards compatible types for Puppeteer version 20.
- For Cypress, deprecated
axeAnalyze(),axeFlush(),axeStart(), andaxeStop(). Replaced withaxeWatcherAnalyze(),axeWatcherFlush(),axeWatcherStart(), andaxeWatcherStop(). - Fixed a
TypeErroron certain Puppeteer version 21 (and later) hooks.
3.8.0 (April 9, 2024)
- Update the emitted JavaScript to target ECMAScript 2018 (ES2018) instead of ECMAScript 2015 (ES2015).
3.7.0 (March 21, 2024)
- No user-visible changes
3.6.0 (March 7, 2024)
- In the Cypress integration, prevent
after:runevents if no tests ran. - Changed the download URL format for Chromedriver because the Chromedriver team moved to a new hosting solution. Impacts WebdriverIO.
3.5.0 (January 25, 2024)
- Fixed a problem where calling Playwright's
Page.goto()method would incorrectly record two page states. - Fixed a problem in the Cypress integration that caused certain user configurations of
setupNodeEventsto be ignored. - Added
eventemitter3as a required dependency. - Wrapped some Playwright methods that hadn't been wrapped before.
3.4.0 (December 12, 2023)
- Fixed a problem where page states were lost or errors occurred when tests caused page navigations.
- Removed some redundant code from the Cypress integration.
3.3.0 (December 7, 2023)
- No user-visible changes
3.2.0 (November 9, 2023)
- No user-visible changes
3.1.1 (October 12, 2023)
- No user-visible changes
3.1.0 (September 14, 2023)
- All integrations now allow
--headless=new.
3.0.0 (September 8, 2023)
To address cases where analyze() was unexpectedly not called, the following functions needed to be deprecated and replaced:
| Deprecated function | New function |
|---|---|
wrapPlaywright(browserContext, controller) |
wrapPlaywrightPage(page, controller) |
wrapPuppeteer(context, controller) |
wrapPuppeteerPage(page, controller) |
Using the deprecated functions will throw an error.
