JSON reporter

JSON-репортер в WebdriverIO предоставляет структурированный способ фиксировать результаты автотестов в виде данных, пригодных для последующей обработки, анализа или визуализации. Основная цель репортера — собрать полную информацию о прохождении тестового запуска и сохранить её в формате JSON, не смешивая с логами в терминале.

Конфигурация выполняется через файл wdio.conf.js. В разделе reporters добавляется запись для JSON-репортера:

reporters: [
  'spec',
  ['json', {
    outputDir: './reports/json',
    outputFileFormat: function(opts) {
      return `results-${opts.cid}.json`;
    }
  }]
],

outputDir определяет каталог, куда будут складываться файлы. При параллельном запуске каждая конфигурация (cid) получает отдельный файл. Использование outputFileFormat позволяет контролировать имена и структуру файлов, что упрощает их последующую агрегацию.

Структура выходных данных

JSON-репортер формирует вложенный объект со следующими ключевыми сущностями:

  • start, end — временные метки запуска и завершения.
  • capabilities — информация о браузере, версии, платформе.
  • specs — массив пройденных файлов тестов.
  • suites — объектная иерархия описаний тестовых наборов.
  • tests — массив тестов с их итоговым статусом.
  • state, duration, error — технические детали выполнения.

Типичный тест представляет собой объект со статусом passed, failed или skipped. Ошибки передаются с полем message и кратким стек-трейсом. Выходные данные остаются достаточно легковесными для массовой обработки.

Обработка результатов

Структурированность JSON облегчает построение метрик:

  • процент прохождения тестов,
  • среднее время исполнения,
  • список нестабильных тестов,
  • корреляцию по браузерам и окружениям.

Формат удобно конвертируется в HTML, PDF или базы данных. JSON-логи часто используются в CI/CD для последующего анализа или передачи в системы отчётности.

Расширение и интеграция

JSON-репортер хорошо комбинируется с другими инструментами:

  • визуализаторы отчетов (например, собственные HTML-генераторы),
  • системы аналитики качества,
  • dashboard-решения для командного мониторинга,
  • самописные парсеры на Node.js.

Особенно ценна возможность объединения результатов параллельных прогонов. После завершения CI-пайплайна JSON-файлы объединяются в единый отчет, где консолидируются данные по capability-наборам.

Логи и вложения

JSON-репортер фиксирует только события тестирования. Скриншоты, сетевые логи и видео обычно сохраняются другими сервисами (например, через Allure или сторонние плагины). Такой подход предотвращает разрастание отчетов: JSON остается чистым и пригодным для аналитики.

Использование с кастомными инструментами

Дополнительные модули на Node.js обрабатывают JSON-файлы через стандартные методы fs и JSON.parse. Подход удобен при интеграции:

  • со статистическими панелями,
  • системами регресс-анализа,
  • сервисами прогнозирования стабильности тестов.

Поскольку формат стабилен и документирован, затраты на поддержку минимальны.

Параллельное выполнение

При запуске тестов в несколько потоков JSON-репортер формирует отдельный файл на каждый набор capabilities. Такое разделение исключает гонки и упрощает сравнение браузерных конфигураций. Агрегация выполняется на уровне CI с использованием скриптов или утилит.

Конфигурационные параметры

Ключевые параметры:

  • outputDir — директория для отчетов,
  • outputFileFormat — кастомизация имен файлов,
  • writeStdout — включает вывод JSON в STDOUT,
  • stdout — переключает логирование в консоль без создания файлов.

writeStdout используется при дебаге, когда важно видеть структуру данных прямо в терминале. stdout полезен в контейнеризированных окружениях, где лог-драйверы собирают поток из STDOUT.

Комбинация с CI/CD

JSON-репортер хорошо вписывается в DevOps-процессы. Типичный пайплайн включает:

  • запуск тестов в WebdriverIO,
  • генерацию JSON-файлов,
  • агрегацию результатов,
  • публикацию отчётов,
  • экспорт метрик в мониторинговые системы.

Стандартизованный формат позволяет не зависеть от выбранного раннера, а также сохраняет переносимость между облаками и локальными средами.

Практические особенности

  • JSON-репортер не навязывает визуальный слой.
  • Все данные пригодны для детерминированного анализа.
  • Формат поддерживает глубокую вложенность тестовых наборов.
  • Отсутствие лишних артефактов ускоряет обработку.

Разделение обязанностей делает JSON-репортер удобным строительным блоком: визуализация, хранение и аналитика решаются отдельно, без переработки инфраструктуры WebdriverIO.