[CI/a11y] Add automated heading-hierarchy / axe-core check to site_lint.yml
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 11.8k
- Forks
- 7.9k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 11
Description
Currently, accessibility regressions related to heading structure (such as skipping heading levels or incorrect hierarchy order) are not caught automatically by CI during PR checks.
Recently, a heading level skip issue was identified and resolved manually ([link to your PR here]). Integrating an automated accessibility auditor into our CI pipeline would prevent similar regressions from slipping through in the future.
Proposed Solution
- Add an automated accessibility testing tool (such as axe-core, @axe-core/playwright, or an equivalent linting rule/script) to the site_lint.yml GitHub Actions workflow.
- Ensure the check specifically validates heading-order hierarchy rules (e.g., preventing skips like H1 → H3).
Additional Context
-
Discussed as a side note in PR https://github.com/reactjs/react.dev/pull/8607#pullrequestreview-4955873812.
-
Tooling suggestion: axe-core / eslint-plugin-jsx-a11y or a post-build HTML scan step in CI.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the site_lint.yml GitHub Actions workflow and the heading-order discussion in PR 8607. Determine how an axe-core, @axe-core/playwright, eslint-plugin-jsx-a11y, or post-build HTML check fits the existing workflow, then verify that CI catches skipped heading levels such as H1 → H3.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, javascript
- Domain
- accessibility, ci-cd, tooling
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100