axe-core — это мощная библиотека для автоматизированного тестирования доступности веб-приложений на JavaScript. Она обеспечивает проверку соответствия стандартам WCAG (Web Content Accessibility Guidelines), ARIA и другим правилам доступности, позволяя выявлять ошибки, которые могут мешать пользователям с ограниченными возможностями.
Библиотека разрабатывается и поддерживается компанией Deque Systems, являющейся лидером в области технологий доступности. axe-core может использоваться как в браузере, так и в средах Node.js, что делает её универсальным инструментом для интеграции в процессы тестирования и CI/CD.
Для использования в Node.js:
npm install axe-core --save-dev
Для браузерной версии можно подключить через CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.8.2/axe.min.js"></script>
После подключения библиотека предоставляет глобальный объект
axe, через который выполняются проверки.
Метод axe.run выполняет анализ доступности на указанной
части DOM.
const axe = require('axe-core');
axe.run(document, {
rules: {
'color-contrast': { enabled: true },
'image-alt': { enabled: true }
}
}, (err, results) => {
if (err) throw err;
console.log(results.violations);
});
document, проверка будет на всей
странице.Результат содержит три ключевых массива:
violations — найденные нарушения правил
доступности.incomplete — элементы, которые не удалось полностью
проверить.passes — элементы, прошедшие проверку.Метод axe.configure позволяет глобально настраивать
поведение библиотеки:
axe.configure({
branding: { brand: 'MyApp' },
reporter: 'v2',
rules: [
{ id: 'color-contrast', enabled: true },
{ id: 'label', enabled: false }
]
});
Метод axe.getRules() возвращает список всех встроенных
правил доступности с их конфигурацией.
console.log(axe.getRules());
Это удобно для динамической проверки или создания собственных профилей тестирования.
const { configureAxe, axe } = require('jest-axe');
const { render } = require('@testing-library/react');
test('должно быть без нарушений доступности', async () => {
const { container } = render(<MyComponent />);
const results = await axe(container);
expect(results).toHaveNoViolations();
});
describe('Тест доступности', () => {
it('Проверка страницы', () => {
cy.visit('/my-page');
cy.injectAxe();
cy.checkA11y();
});
});
Для интеграции с Selenium используется axe-webdriverjs:
const AxeBuilder = require('axe-webdriverjs');
const { Builder } = require('selenium-webdriver');
const driver = new Builder().forBrowser('chrome').build();
await driver.get('https://example.com');
const results = await new AxeBuilder(driver).analyze();
console.log(results.violations);
Каждое правило доступности имеет уникальный идентификатор, описание и рекомендации по исправлению. В конфигурации можно:
enabled: true/false).Пример настройки минимального контраста:
axe.run(document, {
rules: {
'color-contrast': {
enabled: true,
options: { contrastRatio: 4.5 }
}
}
});
Результаты анализа содержат:
Для форматирования отчета можно использовать JSON или интегрировать с CI-системами для автоматической проверки доступности при каждом коммите.
Axe-core обеспечивает комплексное решение для контроля доступности, позволяя встроить стандарты WCAG в процессы разработки, автоматизировать тесты и поддерживать высокое качество пользовательского интерфейса для всех пользователей.