Библиотека Axe-core предназначена для автоматизированного тестирования доступности веб-приложений. Одной из важных оптимизаций при работе с этой библиотекой является кэширование результатов сканирования. При повторных проверках одних и тех же DOM-элементов или страниц это позволяет существенно сокращать время выполнения тестов и снижать нагрузку на браузер.
Кэширование в Axe-core строится на двух уровнях:
Axe-core при сканировании DOM создает внутреннюю структуру данных, включающую:
nodeId),pass,
fail, incomplete,
inapplicable).При повторной проверке библиотека может использовать кэшированные данные, если:
Для этого Axe-core использует внутренние карты
(Map) и хэши элементов, что позволяет сравнивать
текущий DOM с сохраненным состоянием без полного анализа.
Для управления кэшированием доступны следующие подходы:
const axe = require('axe-core');
// Очистка кэша перед новым сканированием
axe.reset();
Метод reset() полностью сбрасывает все внутренние кэши:
результаты предыдущих проверок, загруженные правила и конфигурации. Это
важно при тестировании динамических страниц, где DOM может изменяться
между последовательными запусками.
axe.run(document.querySelector('#main-content'), {
runOnly: ['wcag2a', 'wcag2aa'],
}, function(err, results) {
if (err) throw err;
console.log(results.violations);
});
Если #main-content уже был проверен ранее и не
изменялся, Axe-core извлечет результаты из кэша, что ускоряет процесс
анализа.
Выборка элементов для сканирования Для ускорения проверки рекомендуется сканировать только изменившиеся или новые блоки DOM. Это достигается использованием селекторов CSS и сохранением состояния ранее проверенных узлов.
Минимизация повторной загрузки правил Axe-core позволяет загружать правила один раз и использовать их многократно:
axe.configure({
rules: [
{ id: 'color-contrast', enabled: true },
{ id: 'image-alt', enabled: true }
]
});
После такой конфигурации повторные вызовы axe.run()
будут использовать уже загруженные правила из кэша, что сокращает время
инициализации.
context для избирательного
кэширования Передача контекста в
axe.run(context, options) позволяет кэшировать результаты
только для указанного DOM-фрагмента. Это предотвращает лишнюю обработку
остальных частей страницы.В Axe-core кэш может хранить:
При интеграции Axe-core с CI/CD такие кэши могут быть сериализованы в файлы и повторно загружены на последующих этапах тестирования.
Эффективное кэширование в Axe-core значительно ускоряет тестирование доступности, делает процесс масштабируемым и обеспечивает стабильность результатов при повторных проверках.