axe-core

axe-core - Quick Reference

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "axe-core" with this command: npx skills add claude-dev-suite/claude-dev-suite/claude-dev-suite-claude-dev-suite-axe-core

axe-core - Quick Reference

When NOT to Use This Skill

  • Manual WCAG compliance audits - Use the wcag skill for understanding guidelines and manual testing

  • Screen reader testing - axe-core doesn't replace manual screen reader verification

  • Complex ARIA pattern implementation - Use wcag skill for ARIA authoring practices

  • Accessibility strategy planning - This is for test automation, not accessibility consulting

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: axe-core for comprehensive documentation on rules, configuration, and integrations.

Setup Base

npm install -D @axe-core/react # For React npm install -D axe-core # Core library

Pattern Essenziali

React DevTools Integration

import React from 'react'; import ReactDOM from 'react-dom/client';

if (process.env.NODE_ENV !== 'production') { import('@axe-core/react').then(axe => { axe.default(React, ReactDOM, 1000); }); }

Jest/Vitest Integration

import { axe, toHaveNoViolations } from 'jest-axe';

expect.extend(toHaveNoViolations);

test('should have no accessibility violations', async () => { const { container } = render(<MyComponent />); const results = await axe(container); expect(results).toHaveNoViolations(); });

Playwright Integration

import { test, expect } from '@playwright/test'; import AxeBuilder from '@axe-core/playwright';

test('should not have accessibility issues', async ({ page }) => { await page.goto('/');

const accessibilityScanResults = await new AxeBuilder({ page }).analyze();

expect(accessibilityScanResults.violations).toEqual([]); });

// With specific rules test('should pass WCAG AA', async ({ page }) => { await page.goto('/');

const results = await new AxeBuilder({ page }) .withTags(['wcag2a', 'wcag2aa']) .analyze();

expect(results.violations).toEqual([]); });

Cypress Integration

// cypress/support/commands.ts import 'cypress-axe';

// In test describe('Accessibility', () => { it('has no violations', () => { cy.visit('/'); cy.injectAxe(); cy.checkA11y(); }); });

Programmatic Usage

import axe from 'axe-core';

async function checkAccessibility() { const results = await axe.run();

if (results.violations.length > 0) { console.log('Violations:', results.violations); } }

Anti-Patterns

Anti-Pattern Why It's Wrong Correct Approach

Running axe on empty/loading states Tests incomplete DOM, false negatives Wait for content to load before running axe

Ignoring all violations Defeats purpose of automated testing Fix violations or document exceptions with reasoning

Testing only homepage Most accessibility issues in complex interactions Test all critical user flows and components

Not configuring WCAG level Tests against all rules, may be too strict Set withTags(['wcag2a', 'wcag2aa']) for target level

Running axe synchronously in loops Slow test execution Use Promise.all() for parallel execution

Committing violations to CI Prevents catching regressions Fail builds on new violations

Testing hidden/inactive components Axe tests invisible elements unnecessarily Use exclude parameter for hidden sections

No baseline for legacy code All violations block progress Create baseline, track improvements incrementally

Quick Troubleshooting

Issue Diagnosis Solution

axe finds no violations but page is inaccessible Automated tools catch only ~30-40% of issues Supplement with manual keyboard and screen reader testing

"No violations" but form has issues axe doesn't test form logic/flow Test form submission, error handling manually

Timeout in Playwright axe tests Large/complex page takes too long Increase timeout or analyze specific regions

False positive on custom component axe rule doesn't understand pattern Use disableRules or add proper ARIA to fix

Violations in third-party widgets Can't modify external code Document exceptions, contact vendor, or replace widget

Different results in different browsers Browser-specific rendering differences Run axe in multiple browsers, use cross-browser test suite

CI fails but local passes Environment differences (timing, content) Ensure consistent test data and wait conditions

Too many violations to fix at once Legacy codebase with extensive issues Create baseline, use --save flag to track improvements

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

cron-scheduling

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

token-optimization

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

react-19

No summary provided by upstream source.

Repository SourceNeeds Review