Automated Accessibility Testing Libraries and Tools (@sa11y packages) based on axe-core providing support for Jest unit tests, Vitest unit tests, WebdriverIO component/integration tests used by teams in Salesforce. However, they are not specific to Salesforce and can be used to test any UI supported by axe-core for accessibility. These libraries are designed to be flexible, customizable and reusable to support automated accessibility testing in different testing workflows from unit to integration tests.
- Developer Guidelines
- Refer to Quick start instructions to get started, if you are a developer looking to Contribute
- Code of Conduct
- Changelog
- LICENSE
- Automated Accessibility Tests with sa11y | Developer Quick Takes - YouTube
- Automated Accessibility Testing with sa11y | Salesforce Developers Blog
- Get Started with Web Accessibility | Salesforce Trailhead
- Accessibility Overview - Lightning Design System
- LWC Accessibility guide
This repo contains the following packages for automated accessibility testing:
- Provides a
toBeAccessible()
accessibility matcher for Jest- integrates the assertAccessible API with the Jest assertion API
- Provides an option to set up the sa11y API to be invoked automatically at the end of each test
- Includes custom results processors for enhanced test reporting and grouping violations by rule
- To add accessibility testing to your Jest tests use this package
- Provides a
toBeAccessible()
accessibility matcher for Vitest - Integrates the core accessibility checking logic with the Vitest testing framework
- Supports automatic checks and custom results processing for enhanced test reporting
- Built on the same core logic as the Jest integration via @sa11y/matcher
- To add accessibility testing to your Vitest tests use this package
- Provides
assertAccessible()
,assertAccessibleSync()
APIs that can be used with WebdriverIO to check accessibility of web pages rendered in browsers
- Checks DOM or HTML Element for accessibility issues and throws an error if a11y issues are found
- Supports both violations and incomplete results reporting
- To add accessibility testing to your Javascript unit tests not using Jest or Vitest, use this package
- Formats raw JSON output of a11y issues from axe into an easy to consume format by consolidating and cross-referencing
- Used by assert Accessible API and Jest/Vitest a11y matchers
- Provides exception list filtering and WCAG metadata enhancement
- To use axe directly and want to format the results from
axe.run
use this package - A new formatter
groupViolationResultsProcessor
also made available to group the a11y violations per jest test case as the existing formatter would generate test failures for each violation
- Provides Base, Extended, Full accessibility preset rules as axe configuration
- The Base preset rule is used by default in the Jest/Vitest a11y matchers and assert Accessible APIs
- The APIs can be overridden to use the Extended or Full ruleset as necessary
- Includes custom rule support and WCAG metadata for enhanced reporting
- Provides the core accessibility checking logic used by Jest and Vitest integrations
- Framework-agnostic programmatic APIs for accessibility testing
- Supports automatic checks, DOM mutation observation, and custom integrations
- Use this package directly for custom test runners or advanced scenarios requiring direct control
- Provides a minified version of selected
@sa11y
libraries to be injected into a browser (using webdriver) and executed from integration testing workflows. - Gives WCAG SC for rulesets in addition with axe tags
- Supports both Selenium Java and WebdriverIO integration patterns
- Private package providing test utilities, mock data, and common testing patterns for
@sa11y
packages - Includes DOM fixtures with and without accessibility issues for testing
- Private package providing integration tests for
@sa11y
packages across different environments - Ensures cross-package compatibility and end-to-end functionality
- Common utilities, constants, error messages, and helper functions for
@sa11y
packages - Provides shared functionality for environment detection, custom rules, and file processing
A wise person once said…
"Don't talk to me until I've had coffee and you've run axe"
(Image courtesy: @shleewhite, @jorycunningham)