Release Notes
These are the currently supported versions of the AudioEye Accessibility Testing SDK.
Version 6.0.0
v6 is a major release that introduces idiomatic per-framework APIs. Old APIs continue to work in v6 with a one-time deprecation warning per process and will be removed in v7. See the v5 → v6 upgrade guide for a walkthrough.
Starting in v6, every scan runs a license check against the AudioEye API. Both AUDIOEYE_TESTING_SDK_CLIENT_ID and
AUDIOEYE_TESTING_SDK_CLIENT_TOKEN must be present in the environment when the SDK runs, not only when you install
packages. This is the one change that can break an otherwise-working v5 setup on upgrade — wire your credentials into
every environment that runs scans before rolling out v6. See License check below.
License check
- What runs. Before each scan, the SDK validates your entitlement (Client ID + Client Token) against the AudioEye API. On success it caches a signed grace token locally that stays valid for up to 7 days, so subsequent scans run without a network round-trip — including fully offline — until the window expires. The SDK refreshes the token about every 24 hours when it can, but falls back to the cached copy whenever AudioEye is unreachable.
- Credentials. Set
AUDIOEYE_TESTING_SDK_CLIENT_IDandAUDIOEYE_TESTING_SDK_CLIENT_TOKENin the environment of every machine and CI job that runs scans. They come from the AudioEye Customer Portal; the Client Token also authenticates package downloads. See How licensing works. - Fails closed. If the credentials are missing, rejected (revoked / unknown / inactive), or unverifiable with no valid cached grace token, the scan stops with a non-zero exit code rather than silently passing. A cancelled or revoked entitlement is locked out once its last grace token expires (within 7 days), and a stale or forged local cache cannot extend access.
- Network. The machine running scans needs outbound access to the AudioEye API at least once per 7-day window. Air-gapped CI that can never reach AudioEye is not supported.
- CI caching (optional). Set
AUDIOEYE_TESTING_SDK_CACHE_DIRto relocate the grace-token cache onto a persisted path so a warm cache can carry across jobs within its 7-day lifetime.
New
- Jest matcher:
expect(node).toBeAccessible(options?). Pair withimport { toBeAccessible } from '@audioeye/testing-sdk-jest'; expect.extend({ toBeAccessible }). - Jest functional API:
scan(source, options?)returningA11yResults. - Playwright matcher:
await expect(page).toBeAccessible(options?). Auto-attachesa11y-report.jsontotest.info()on failure for inline display in the Playwright HTML report. - Playwright functional API:
await accessibility.scan(target?, options?)accepting either aPageor aLocator. - Cypress commands:
cy.checkA11y(scope?, options?)(assertion-style; fails the test on issues) andcy.scanA11y(scope?, options?)(chainable; resolves toA11yResults). Both accept an optional subject, socy.checkA11y('.modal')andcy.get('.modal').checkA11y()are equivalent. - CLI
--format sarif: SARIF v2.1.0 output suitable for GitHub code-scanning upload. Each result carriespartialFingerprints.issueFingerprint. - CLI
--baseline <path>: read a SARIF file of issue fingerprints and suppress matching issues from the report. Exit code drops to 0 if every issue is suppressed. - Fluent filter API on
A11yResults:withRule(...),withoutRule(...),withinSelector(...),excludingSelector(...),excludingIds(...), plus query helpershas(code),get(code),count,isEmpty,issues. All filter methods return a newA11yResultsinstance. Selector filters use normal CSS ancestor matching in Jest, Cypress, and Playwright. conformanceLevel(level, { exact }): opt-in exact-level filtering. The default (cumulative) semantics are unchanged.- Enriched issue shape: each issue now carries
id(SARIF fingerprint based on rule, target path, and target markup),helpUrl(https://developer.audioeye.com/rules/{ruleCode}),xpath,boundingBox(real-browser scans only),frame, andrelatedNodes. - Scan context on the report:
A11yReport.contextexposesscanId,timestamp,engine.{sdk, rules},rulesEvaluated, andviewport. Runtime errors surface as a structurederrors[]array.
Changed
RuleMetaOutput.wcagSuccessCriteriaLevelCode(the field exposed viaaetest describe, every issue'sruleMetadata, and the keys ofresultsGroupedByWcagSuccessCriteriaLevel) is now always a single value: one of'A','AA','AAA', or''. v5 emitted a comma-joined string like'A, AA'for rules that mapped to multiple WCAG criteria; v6 collapses these to the most stringent level (A>AA>AAA).
Fixed
conformanceLevelfilter now correctly buckets rules with multiple WCAG criteria. v5 stored a comma-joined level code ('A,AA') and compared it lexicographically against the filter, which quietly dropped these rules from level-A and level-AA buckets. v6's single-level representation makes the comparison straightforward, so you may see additional issues appear in those buckets — they were always failing, just bucketed wrong.
Deprecated (still work in v6, removed in v7)
accessibility.evaluate(...)and thea11y/accessibilitysingleton exports in@audioeye/testing-sdk-jest. Usescan(...)orexpect(node).toBeAccessible(...)instead.accessibility.evaluate(...)on Playwright'sAudioEyeA11y. Useaccessibility.scan(...)orawait expect(page).toBeAccessible(...).cy.accessibility(...)andcy.a11y(...)(the legacy magic-string output form). Usecy.checkA11y(...)orcy.scanA11y(...).
Each deprecated entry point emits a one-time console.warn per process and carries a JSDoc @deprecated tag for editor
strike-through.
Version 5.1.0
- Updated rules version to
11.1.1 - Updated package dependency
puppeteer. - Reduced
@audioeye/testing-sdk-corepackage size.
Version 5.0.0
- Updated rules version to
11.0.35 - Fixed a bug where skip link rules (e.g.
Html_SkipLink_Missing) were not being evaluated when running inside a Cypress AUT iframe, due to awindow.self !== window.topcheck in the rules bundle. The SDK now patches this check at runtime to ensure full accessibility coverage in Cypress environments. - Updated package dependencies
lodashandpuppeteer.
Version 4.1.1
- Updated rules to version
10.4.6 - Updated package dependencies
commanderandpuppeteer.
Version 4.1.0
- Updated rules to version
10.4.4 - Updated package dependencies
commander,htmlparser2,lodash,marked,papaparse, andpuppeteer.
Version 4.0.2
- Updated rules to version
10.3.21. - Fixed an issue where sites with malformed HTML would cause the CLI to throw an exception.
Version 4.0.1
- Removed the ESM build files for Cypress and Playwright. There were some incompatibilities with the ESM builds that were causing some difficulty during setup.
- Updated package dependencies to address security vulnerabilities.
Version 4.0.0
- Updated rules to version
10.3.17. - Updated package dependencies to address security vulnerabilities.
Version 3.3.0
- The Cypress SDK now supports tests that require a real browser.
- We now support Cypress v15.
- Updated package dependencies to address security vulnerabilities.
Version 3.2.0
- Factored out optional peer dependencies into their own SDK packages.
Version 3.1.0
- Fixed the version of rules shown in the CLI output.
- Stop using
ts-results. - Added support to Cypress tests for when the cucumber plugin is used.
Version 3.0.0
- Updated to the latest version of the AudioEye RuleSet (8.3.5).
- Added support for Playwright.
- The CLI now supports tests that require a real browser.
- Jest and Cypress tests changed from custom assertions to results that you can write your own assertions against.
- Other minor bug fixes and improvements.
Version 2.0.3
- Updated package dependencies to address security vulnerabilities.
Version 2.0.2
- Fix CLI for Windows users.
- Improved CSS selectors.
Version 2.0.0
- Updated to the latest version of the AudioEye RuleSet.
- Removed tests that need a real browser and were causing false positives.
Version 1.2.3
- Improved accessibility of the html output.
- Added "Must Be Fixed At Source" info to the html, json, and csv output files.
Version 1.2.2
- Improved the
npmbuild step to include transitive types in the exported type definition files. - Fixed a bug with how we handle jQuery selected elements (impacts Cypress).
- Added new command line options to control the viewport size and turn on mobile emulation.
- Changed some of the command line options to be more consistent.
- Added documentation for calling the test function directly (not just through the CLI or Jest/Cypress).