Axe-core — это мощная библиотека для автоматизированного тестирования доступности веб-приложений. Она реализует проверку соответствия стандартам WCAG 2.1 и 2.2, анализируя структуру DOM, свойства элементов и их поведение. Основное назначение — выявление проблем доступности, которые могут повлиять на пользователей с ограниченными возможностями. Библиотека предоставляется как отдельный JavaScript-модуль и может интегрироваться с браузером, тестовыми фреймворками и CI/CD-процессами.
Ключевые преимущества Axe-core:
axe-core API, с инструментами тестирования
вроде Cypress, Jest, Puppeteer.Для использования Axe-core в проекте достаточно установить пакет через npm:
npm install axe-core
После установки библиотека доступна для импорта в любом JavaScript-коде:
import axe from 'axe-core';
Для браузерного использования существует вариант подключения через CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.6.3/axe.min.js"></script>
После подключения объект axe становится глобально
доступным, что позволяет вызывать проверку на любом элементе DOM.
1. Инициализация проверки
Проверка начинается с вызова функции axe.run, которая
принимает два параметра:
Пример базовой проверки всей страницы:
axe.run(document, {
runOnly: {
type: 'tag',
values: ['wcag2aa'] // проверка на соответствие WCAG 2.1 уровня AA
}
}).then(results => {
console.log(results.violations); // вывод найденных нарушений
});
2. Структура результата
Результат проверки содержит следующие ключевые поля:
violations: массив найденных нарушений с указанием
элемента, причины и рекомендаций.passes: массив элементов, прошедших проверку.incomplete: проверки, которые не удалось полностью
выполнить.inapplicable: правила, которые не применимы к текущей
странице.Каждое нарушение включает:
id: идентификатор правила.impact: уровень влияния на доступность
(critical, serious, moderate,
minor).description: текстовое описание проблемы.helpUrl: ссылка на документацию с рекомендациями.Axe-core предоставляет возможность включать или исключать отдельные правила. Для соответствия WCAG 2.1 и 2.2 используются теги:
wcag2a — уровень Awcag2aa — уровень AAwcag2aaa — уровень AAAwcag21aa, wcag22aa — специфические для
WCAG 2.1 и 2.2Пример фильтрации по тегам:
axe.run(document, {
runOnly: {
type: 'tag',
values: ['wcag21aa', 'wcag22aa']
}
});
Также возможно полностью отключить отдельные правила:
axe.run(document, {
rules: {
'color-contrast': { enabled: false } // игнорирование проверки контрастности
}
});
1. Cypress
Для автоматизации тестирования в рамках CI/CD удобно использовать
Cypress с плагином cypress-axe:
import 'cypress-axe';
cy.visit('/page');
cy.injectAxe();
cy.checkA11y(null, {
runOnly: ['wcag21aa']
});
2. Jest и Puppeteer
В headless-тестах с Jest и Puppeteer Axe-core позволяет проводить проверки без открытия браузера в интерфейсе:
const { AxePuppeteer } = require('axe-puppeteer');
const results = await new AxePuppeteer(page)
.include('main')
.withTags(['wcag21aa', 'wcag22aa'])
.analyze();
console.log(results.violations);
impact позволяет фокусироваться
на критических проблемах.incomplete и inapplicable
проверки: не все правила применимы ко всем элементам.WCAG 2.2 вводит новые критерии доступности, такие как:
Axe-core регулярно обновляется для соответствия этим стандартам.
Использование тегов wcag22aa позволяет проверить соблюдение
новых требований без изменения существующей конфигурации тестов.
axe.configure.axe.configure({
branding: { brand: 'MyApp' },
rules: [
{ id: 'custom-rule', enabled: true }
]
});
Эта гибкость делает Axe-core универсальным инструментом для обеспечения доступности веб-приложений на уровне соответствия WCAG 2.1 и 2.2.