Axe-core — это открытая библиотека для автоматизированного тестирования доступности веб-приложений на JavaScript. Она обеспечивает анализ страниц и компонентов с точки зрения соответствия стандартам WCAG (Web Content Accessibility Guidelines). Библиотека работает как в браузере, так и в средах Node.js, что позволяет интегрировать её в процессы CI/CD.
Ключевой особенностью axe-core является интерфейс правил, которые проверяют элементы страницы на конкретные нарушения доступности, включая:
alt),Библиотека возвращает результаты в виде структурированных объектов JSON, что облегчает обработку данных и генерацию отчётов.
В браузере axe-core подключается через
<script>:
<script src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.9.6/axe.min.js"></script>
<script>
axe.run(function(err, results) {
console.log(results);
});
</script>
Для Node.js используется пакет axe-core:
npm install axe-core
Пример использования с Puppeteer:
const puppeteer = require('puppeteer');
const axeCore = require('axe-core');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const axeResults = await page.evaluate(async () => {
return await axe.run();
});
console.log(axeResults);
await browser.close();
})();
axe.runМетод axe.run — центральная точка для запуска анализа.
Он принимает объект настроек и колбэк или возвращает промис. Параметры
позволяют выбирать контейнеры для проверки, исключать
определённые элементы и задавать набор правил.
Пример использования с настройками:
axe.run(document, {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
},
rules: {
'color-contrast': { enabled: true },
'image-alt': { enabled: false }
}
}).then(results => {
console.log(results.violations);
});
Параметр runOnly позволяет ограничить проверку
конкретными тегами правил, а rules — управлять включением
или отключением отдельных проверок.
axe.configureМетод axe.configure используется для глобальной
настройки библиотеки. Через него можно изменить стандартные правила,
задать новые теги и управлять поведением анализатора:
axe.configure({
reporter: 'v2',
checks: [
{
id: 'custom-check',
evaluate: (node, options) => node.hasAttribute('data-test'),
options: { severity: 'critical' }
}
]
});
Использование пользовательских проверок (checks)
позволяет интегрировать специфические правила доступности, которые не
входят в стандартный набор axe-core.
Результаты axe-core включают несколько ключевых массивов:
violations — список нарушений доступности.incomplete — элементы, которые не удалось проверить
полностью.passes — успешно пройденные проверки.inapplicable — правила, которые не применимы к текущей
странице.Каждый объект в violations содержит:
id — уникальный идентификатор правила,impact — уровень серьёзности (minor,
moderate, serious,
critical),description — текстовое описание проблемы,nodes — список элементов, вызвавших нарушение, с
указанием селекторов и HTML-кода.Пример обработки:
axe.run(document).then(results => {
results.violations.forEach(v => {
console.log(`Правило: ${v.id}, уровень: ${v.impact}`);
v.nodes.forEach(node => {
console.log('Элемент:', node.html);
});
});
});
Axe-core можно интегрировать с популярными инструментами тестирования:
const { axe, toHaveNoViolations } = require('jest-axe');
expect.extend(toHaveNoViolations);
test('доступность компонента', async () => {
const html = renderToString(<MyComponent />);
const results = await axe(html);
expect(results).toHaveNoViolations();
});
cy.visit('https://example.com');
cy.injectAxe();
cy.checkA11y();
Эти интеграции позволяют включить проверку доступности прямо в процесс CI, автоматически выявляя ошибки при каждом билде.
axe.configure или добавление плагинов.context в axe.run.Пример проверки конкретного контейнера:
const container = document.querySelector('#main-content');
axe.run(container).then(results => console.log(results.violations));
Для больших страниц рекомендуется:
runOnly для нужных тегов WCAG.Встроенные механизмы axe-core минимизируют нагрузку на DOM и позволяют проводить анализ без видимого влияния на работу страницы.
Использование axe-core позволяет выявлять критические проблемы доступности, ускоряет аудит страниц и поддерживает соответствие международным стандартам WCAG.