Параметр resultTypes

Библиотека Axe-core является мощным инструментом для автоматического тестирования доступности веб-приложений. Одним из ключевых элементов её конфигурации является параметр resultTypes, который управляет типами результатов, возвращаемых после анализа страницы. Этот параметр позволяет разработчику тонко настраивать, какие данные будут включены в отчёт, что важно для оптимизации тестов и фильтрации лишней информации.


Основные возможности resultTypes

Параметр resultTypes представляет собой массив строковых значений, определяющих, какие категории результатов будут собраны. Основные допустимые значения:

  • violations — нарушения доступности, которые требуют обязательного исправления.
  • incomplete — элементы, для которых проверка не может быть завершена однозначно, например, из-за динамически загружаемого контента.
  • passes — элементы, успешно прошедшие проверку. Этот тип полезен для генерации отчётов о текущем состоянии страницы.
  • inapplicable — элементы или правила, к которым выбранная проверка не применима.

Каждое значение влияет на структуру объекта отчёта, возвращаемого функцией axe.run().


Синтаксис использования

Для запуска проверки с использованием resultTypes применяется следующий подход:

const axe = require('axe-core');
const { JSDOM } = require('jsdom');

const dom = new JSDOM(`<html><body><button>Click me</button></body></html>`);
const document = dom.window.document;

axe.run(document, {
  runOnly: {
    type: 'tag',
    values: ['wcag2a', 'wcag2aa']
  },
  resultTypes: ['violations', 'incomplete']
}).then(results => {
  console.log(results.violations);
  console.log(results.incomplete);
});

Особенности:

  1. Массив значений: resultTypes всегда должен быть массивом строк.
  2. Фильтрация результатов: указанные типы будут включены в объект results, остальные поля игнорируются.
  3. Совмещение: можно одновременно указывать несколько типов, например ['violations', 'passes'].

Практическое применение

  • Анализ нарушений: чаще всего достаточно указать только violations, чтобы получать только критические ошибки.
  • Отчёты для QA: добавление passes позволяет создавать подробные отчёты о всех проверках, что удобно для команды тестировщиков.
  • Отладка и динамические страницы: использование incomplete помогает выявить элементы, которые требуют дополнительного внимания, например, элементы, загружаемые через AJAX.

Пример фильтрации результатов для генерации отчёта:

axe.run(document, { resultTypes: ['violations'] }).then(results => {
  const summary = results.violations.map(v => ({
    id: v.id,
    impact: v.impact,
    nodesCount: v.nodes.length
  }));
  console.table(summary);
});

Взаимодействие с другими параметрами

resultTypes тесно связан с параметрами:

  • runOnly — ограничивает набор правил, которые будут проверяться.
  • include / exclude — позволяет определять конкретные элементы DOM для анализа.
  • reporter — некоторые сторонние отчёты используют только определённые resultTypes для генерации финального вывода.

Использование resultTypes совместно с этими опциями обеспечивает гибкую настройку процесса тестирования.


Рекомендации по использованию

  1. Для автоматизированных CI/CD тестов часто указывают только violations, чтобы не перегружать логи.
  2. Для ручной проверки страницы полезно добавлять passes и incomplete для полной картины доступности.
  3. Если не указать resultTypes, библиотека по умолчанию возвращает все типы (violations, passes, incomplete, inapplicable).

Параметр resultTypes позволяет точно управлять данными, которые Axe-core возвращает после анализа страницы, что делает тестирование доступности более эффективным, структурированным и адаптированным под конкретные задачи разработки и QA.