Axe-core — это библиотека для автоматизированного тестирования доступности веб-контента на основе стандартов WCAG (Web Content Accessibility Guidelines). Она позволяет выявлять проблемы доступности на страницах, включая контраст текста, использование семантических элементов, альтернативный текст для изображений, фокусировку элементов и соответствие ARIA-атрибутов. Библиотека интегрируется с различными инструментами разработки, включая браузерные расширения, фреймворки для тестирования (Jest, Cypress) и Node.js.
Axe-core использует DOM-структуру страницы, анализируя каждый элемент на соответствие критериям доступности. Важнейшими аспектами являются:
<header>, <nav>,
<main>, <section>,
<article>, <footer> улучшает
навигацию для экранных читалок.role,
aria-label, aria-labelledby,
aria-hidden помогают корректно обозначить элементы
интерфейса, недоступные стандартным тегам.tabindex), иметь правильное поведение при фокусе и
визуальные индикаторы.Axe-core проверяет соответствие нескольким уровням стандартов WCAG 2.1:
alt для изображений,
текстовые метки для форм.npm install axe-core --save-dev
Для использования в Node.js или браузерном окружении подключается
через require или import.
import axe from 'axe-core';
В браузере:
axe.run(document, {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
}
}).then(results => {
console.log(results.violations);
});
document — DOM-узел или вся страница.runOnly.type = 'tag' ограничивает проверку
определёнными тегами или стандартами WCAG.results.violations содержит массив объектов с детальной
информацией о нарушениях.Axe-core использует теги, чтобы классифицировать правила проверки. Например:
wcag2a — правила уровня Awcag2aa — правила уровня AAwcag2aaa — правила уровня AAAsection508 — соответствие американскому стандарту
Section 508Каждое правило содержит:
id — уникальный идентификатор проверкиimpact — степень важности (critical,
serious, moderate, minor)tags — список тегов (например, wcag2aa,
aria, color-contrast)description — описание правилаhelp и helpUrl — рекомендации по
исправлениюaxe.run(document, {
rules: {
'color-contrast': { enabled: true },
'image-alt': { enabled: true }
}
}).then(results => {
results.violations.forEach(v => {
console.log(`Нарушение: ${v.id}`);
console.log(`Теги: ${v.tags.join(', ')}`);
console.log(`Описание: ${v.description}`);
});
});
Результаты Axe-core представлены в виде объектов:
Каждое нарушение включает информацию о:
target)nodes[].failureSummary)Axe-core удобно интегрировать с Jest, Cypress или другими фреймворками для автоматического тестирования доступности:
import axe from 'axe-core';
import { render } from '@testing-library/react';
test('компонент соответствует WCAG', async () => {
const { container } = render(<MyComponent />);
const results = await axe.run(container);
expect(results.violations).toHaveLength(0);
});
cy.visit('/my-page');
cy.injectAxe();
cy.checkA11y(null, {
runOnly: {
type: 'tag',
values: ['wcag2aa']
}
});
alt и ARIA-атрибуты для элементов, которые не
поддерживаются стандартными тегами.Axe-core обеспечивает комплексный контроль над доступностью через теги WCAG, позволяя выявлять проблемы ещё на этапе разработки и поддерживать веб-приложения в соответствии с международными стандартами.