Axe-core — это мощная библиотека для автоматизированного тестирования доступности веб-приложений. Она реализует рекомендации WCAG (Web Content Accessibility Guidelines) и позволяет выявлять проблемы доступности на страницах и в компонентах веб-приложений. Библиотека написана на JavaScript и может использоваться как в браузере, так и в среде Node.js.
Для использования в проекте на Node.js или с тестовыми фреймворками, Axe-core устанавливается через npm:
npm install axe-core
Для фронтенд-тестов можно подключить скрипт напрямую:
<script src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.7.3/axe.min.js"></script>
После подключения библиотека доступна через глобальный объект
axe в браузере или через импорт в Node.js:
const axe = require('axe-core');
axe.run()Главный метод для проверки доступности. Возвращает объект с результатами аудита:
axe.run(document, {}, (err, results) => {
if (err) throw err;
console.log(results.violations);
});
Параметры метода:
document, CSS-селектор или элемент DOM).axe.configure()Позволяет настраивать правила, активировать или деактивировать конкретные проверки:
axe.configure({
rules: [
{ id: 'color-contrast', enabled: true },
{ id: 'image-alt', enabled: false }
],
checks: [],
reporter: 'v2'
});
Метод axe.run() возвращает объект с ключевыми
полями:
violations — массив обнаруженных нарушений с описанием,
селекторами и рекомендациями.passes — массив элементов, прошедших все проверки.incomplete — проверки, которые не удалось полностью
выполнить.inapplicable — проверки, которые не применимы к данному
контексту.Пример обработки нарушений:
results.violations.forEach(v => {
console.log(`Нарушение: ${v.id}`);
console.log(`Описание: ${v.description}`);
v.nodes.forEach(node => {
console.log(`Элемент: ${node.html}`);
console.log(`Рекомендации: ${node.failureSummary}`);
});
});
Axe-core позволяет группировать проверки с помощью тегов:
wcag2a, wcag2aa, wcag21aa —
соответствие разным уровням WCAG.section508 — проверка на соответствие стандарту Section
508.Пример фильтрации проверок по тегу:
axe.run(document, { runOnly: { type: 'tag', values: ['wcag2aa'] } }, callback);
import 'cypress-axe';
cy.visit('/page');
cy.injectAxe();
cy.checkA11y();
cy.injectAxe() — внедряет Axe-core в DOM страницы.cy.checkA11y() — выполняет проверку доступности и
выводит отчёт.const { axe, toHaveNoViolations } = require('jest-axe');
expect.extend(toHaveNoViolations);
const html = await page.content();
const results = await axe(html);
expect(results).toHaveNoViolations();
Axe-core легко интегрируется в Jenkins через скрипты Node.js или фреймворки вроде Cypress. Для этого:
npm install.console.log или отчёты в формате JSON для
публикации результатов в Jenkins.Пример pipeline-скрипта:
pipeline {
agent any
stages {
stage('Accessibility Test') {
steps {
sh 'npm install'
sh 'npx cypress run'
}
}
}
}
Отчёты можно сохранять как артефакты Jenkins для анализа нарушений доступности по каждому билду.
axe.addRule().Axe-core обеспечивает детализированное понимание проблем доступности и подходит как для быстрого анализа страниц, так и для построения полноценной стратегии тестирования в больших веб-приложениях.