Библиотека Axe-core является мощным инструментом для автоматизированного тестирования доступности веб-приложений. Она поддерживает работу с разными сборщиками и фреймворками, такими как Webpack, Parcel, Rollup и другие, что позволяет интегрировать проверку доступности прямо в процесс сборки.
Webpack обеспечивает гибкую систему модулей и плагинов. Для интеграции Axe-core существует несколько подходов:
// webpack.config.js
module.exports = {
// ...
devServer: {
before: function(app, server) {
const axe = require('axe-core');
app.use((req, res, next) => {
// логика для включения проверки доступности
next();
});
},
},
};
Особенности: при подключении через Dev Server проверки выполняются в реальном времени, что позволяет быстро выявлять проблемы доступности на этапе разработки, без необходимости запускать отдельные тесты.
Rollup ориентирован на сборку библиотек, поэтому подход отличается от Webpack:
puppeteer или jsdom:import axe from 'axe-core';
import { JSDOM } from 'jsdom';
const dom = new JSDOM(``);
axe.run(dom.window.document).then(results => {
console.log(results.violations);
});
Особенности: в отличие от Webpack, Rollup не предоставляет встроенный сервер для горячей проверки, поэтому интеграция больше ориентирована на автоматические тесты после сборки.
Parcel упрощает процесс интеграции, так как автоматически обрабатывает зависимости и не требует явной конфигурации сборки для большинства случаев. Axe-core можно подключать напрямую к фронтенд-коду:
import axe from 'axe-core';
window.onl oad = () => {
axe.run(document, {}, (err, results) => {
if (err) throw err;
console.log(results.violations);
});
};
Особенности: Parcel позволяет запускать Axe-core без дополнительных плагинов, что ускоряет внедрение автоматической проверки доступности в прототипах и небольших проектах.
Для всех сборщиков важны следующие параметры конфигурации:
'wcag2a', 'wcag2aa',
'best-practice' и т.д.).'v2', 'v3' или пользовательский).'violations', 'passes',
'incomplete', 'inapplicable'.Пример полной конфигурации:
const axeConfig = {
runOnly: {
type: 'tag',
values: ['wcag2aa', 'best-practice']
},
rules: {
'color-contrast': { enabled: true },
'label': { enabled: false }
},
resultTypes: ['violations', 'incomplete']
};
axe.run(document, axeConfig).then(results => {
console.log(results);
});
Для интеграции в CI/CD-процессы можно использовать комбинацию сборщика и тестового фреймворка:
Webpack + Jest/Puppeteer После сборки проекта через Webpack, Jest с Puppeteer запускает Axe-core на страницах приложения, собирает и формирует отчёт.
Rollup + Mocha/Chai Rollup собирает библиотеку,
а Mocha с Chai выполняет проверки доступности через Axe-core в
jsdom окружении.
Parcel + Cypress Cypress позволяет запускать
функциональные тесты в браузере и интегрировать Axe-core через
специальные плагины (cypress-axe), обеспечивая проверку
доступности в условиях реального DOM.