Библиотека Axe-core предоставляет мощные средства для автоматической проверки доступности веб-приложений, позволяя интегрировать тестирование прямо в JavaScript-код. Одной из ключевых возможностей является выборочный запуск правил, что позволяет оптимизировать проверку, фокусируясь на конкретных аспектах доступности и исключая ненужные проверки.
Каждое правило в Axe-core имеет уникальный идентификатор
(rule ID), который используется для его включения или
отключения. Управление правилами осуществляется через объект
конфигурации:
const axeConfig = {
rules: {
'color-contrast': { enabled: true },
'label': { enabled: false },
'image-alt': { enabled: true }
}
};
В этом примере:
color-contrast и image-alt активны,
поэтому будут проверяться.label отключено, и ошибки, связанные с этим правилом,
игнорируются.Ключевое преимущество такого подхода — возможность исключить правила, которые не релевантны конкретной странице или компоненту, сокращая время тестирования и уменьшая шум в отчетах.
Кроме глобального включения/отключения правил, Axe-core позволяет ограничивать область проверки конкретными DOM-элементами. Это особенно полезно при тестировании сложных SPA или компонентов, где полный анализ всей страницы может быть избыточным.
Пример:
import axe from 'axe-core';
const targetNode = document.querySelector('#form-section');
axe.run(targetNode, axeConfig, (err, results) => {
if (err) throw err;
console.log(results.violations);
});
targetNode — корневой элемент, на котором будет
произведена проверка.axeConfig применяется только к выбранной
области.Такой подход позволяет точечно диагностировать ошибки доступности и интегрировать проверки в модульные тесты компонентов.
Иногда возникает необходимость динамически изменять набор правил в зависимости от условий. Например, некоторые правила могут быть актуальны только для мобильной версии сайта. Это реализуется через функцию конфигурации:
function getAxeConfig(isMobile) {
return {
rules: {
'color-contrast': { enabled: true },
'landmark-one-main': { enabled: !isMobile },
'image-alt': { enabled: true }
}
};
}
const config = getAxeConfig(window.innerWidth < 768);
axe.run(document, config, (err, results) => {
console.log(results.violations);
});
landmark-one-main отключается на мобильных
устройствах.Каждое правило Axe-core может быть помечено тегами,
что позволяет включать или отключать группы правил одновременно.
Например, теги wcag2a, wcag2aa,
best-practice группируют правила по стандартам
доступности.
const axeConfigByTag = {
runOnly: {
type: 'tag',
values: ['wcag2aa', 'best-practice']
}
};
axe.run(document, axeConfigByTag, (err, results) => {
console.log(results.violations);
});
wcag2aa и best-practice.Альтернатива — runOnly.type = 'rule' с указанием
конкретных ID правил, что обеспечивает максимально точечный
контроль.
Выборочный запуск правил широко используется в юнит- и интеграционных тестах, когда нужно проверять доступность отдельных компонентов без анализа всей страницы. Пример с Jest:
import axe from 'axe-core';
import { render } from '@testing-library/react';
import MyComponent from './MyComponent';
test('Проверка доступности компонента', async () => {
const { container } = render(<MyComponent />);
const results = await axe.run(container, {
rules: { 'image-alt': { enabled: true } }
});
expect(results.violations.length).toBe(0);
});
image-alt.Выборочный запуск правил в Axe-core — это инструмент, который обеспечивает гибкость, ускорение тестирования и уменьшение шума в отчетах, делая процесс проверки доступности более точным и управляемым.