Axe-core — библиотека для автоматической проверки доступности веб-приложений, предоставляющая гибкие механизмы настройки правил и конфигураций. Одной из ключевых практик при работе с библиотекой является версионирование конфигураций. Это позволяет сохранять стабильность тестов при обновлении приложения, обеспечивать повторяемость результатов и управлять изменениями правил доступности.
Конфигурации в Axe-core представляют собой объекты JavaScript с набором полей, определяющих поведение анализа:
Каждое изменение в этих объектах может существенно влиять на результаты проверки доступности. Версионирование помогает отслеживать такие изменения.
Семантическое версионирование Каждая
конфигурация должна иметь явный номер версии в формате
MAJOR.MINOR.PATCH:
Изоляция версий Каждая версия конфигурации хранится отдельно, чтобы существующие тесты могли использовать старые версии без риска поломки. В коде это реализуется через именованные файлы конфигураций или отдельные экспортируемые объекты.
// axeConfig_v1.js
export const axeConfig_v1 = {
rules: {
'color-contrast': { enabled: true },
'label': { enabled: true }
}
};
// axeConfig_v2.js
export const axeConfig_v2 = {
rules: {
'color-contrast': { enabled: true, threshold: 4.5 },
'label': { enabled: true },
'aria-hidden-focus': { enabled: false }
}
};
При интеграции с тестовыми фреймворками (например, Jest, Cypress или Playwright) рекомендуется использовать динамический выбор версии конфигурации в зависимости от контекста тестирования:
import { axe, toHaveNoViolations } from 'jest-axe';
import { axeConfig_v2 } from './axeConfig_v2';
expect.extend(toHaveNoViolations);
test('Проверка доступности страницы', async () => {
const results = await axe(document.body, axeConfig_v2);
expect(results).toHaveNoViolations();
});
Такой подход позволяет одновременно поддерживать тесты, использующие старые конфигурации, и внедрять новые правила без риска сломать существующую инфраструктуру.
Версионирование конфигураций важно для обеспечения обратной совместимости. При добавлении новых правил рекомендуется:
enabled: false по
умолчанию;MINOR после полной
стабилизации правил.Для крупных проектов удобно автоматизировать версионирование с помощью скриптов:
PATCH при изменении
комментариев или метаданных;Пример автоматизированного сравнения конфигураций:
import deepDiff from 'deep-diff';
import { axeConfig_v1 } from './axeConfig_v1';
import { axeConfig_v2 } from './axeConfig_v2';
const differences = deepDiff(axeConfig_v1, axeConfig_v2);
console.log(differences);
Это позволяет выявлять потенциально критические изменения до запуска тестов.
Версионирование конфигураций в Axe-core обеспечивает стабильность тестов доступности, прозрачность изменений и упрощает масштабирование проверки для крупных приложений.