Skip to main content
Version: v6

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.

New requirement: license check

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_ID and AUDIOEYE_TESTING_SDK_CLIENT_TOKEN in 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_DIR to 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 with import { toBeAccessible } from '@audioeye/testing-sdk-jest'; expect.extend({ toBeAccessible }).
  • Jest functional API: scan(source, options?) returning A11yResults.
  • Playwright matcher: await expect(page).toBeAccessible(options?). Auto-attaches a11y-report.json to test.info() on failure for inline display in the Playwright HTML report.
  • Playwright functional API: await accessibility.scan(target?, options?) accepting either a Page or a Locator.
  • Cypress commands: cy.checkA11y(scope?, options?) (assertion-style; fails the test on issues) and cy.scanA11y(scope?, options?) (chainable; resolves to A11yResults). Both accept an optional subject, so cy.checkA11y('.modal') and cy.get('.modal').checkA11y() are equivalent.
  • CLI --format sarif: SARIF v2.1.0 output suitable for GitHub code-scanning upload. Each result carries partialFingerprints.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 helpers has(code), get(code), count, isEmpty, issues. All filter methods return a new A11yResults instance. 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, and relatedNodes.
  • Scan context on the report: A11yReport.context exposes scanId, timestamp, engine.{sdk, rules}, rulesEvaluated, and viewport. Runtime errors surface as a structured errors[] array.

Changed

  • RuleMetaOutput.wcagSuccessCriteriaLevelCode (the field exposed via aetest describe, every issue's ruleMetadata, and the keys of resultsGroupedByWcagSuccessCriteriaLevel) 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

  • conformanceLevel filter 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 the a11y / accessibility singleton exports in @audioeye/testing-sdk-jest. Use scan(...) or expect(node).toBeAccessible(...) instead.
  • accessibility.evaluate(...) on Playwright's AudioEyeA11y. Use accessibility.scan(...) or await expect(page).toBeAccessible(...).
  • cy.accessibility(...) and cy.a11y(...) (the legacy magic-string output form). Use cy.checkA11y(...) or cy.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-core package 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 a window.self !== window.top check in the rules bundle. The SDK now patches this check at runtime to ensure full accessibility coverage in Cypress environments.
  • Updated package dependencies lodash and puppeteer.

Version 4.1.1

  • Updated rules to version 10.4.6
  • Updated package dependencies commander and puppeteer.

Version 4.1.0

  • Updated rules to version 10.4.4
  • Updated package dependencies commander, htmlparser2, lodash, marked, papaparse, and puppeteer.

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 npm build 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).

Version 1.1.3

  • Removed async/await from the Jest and Cypress assertions.
  • Additional rule updates.