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-репортер хорошо комбинируется с другими инструментами:
Особенно ценна возможность объединения результатов параллельных прогонов. После завершения CI-пайплайна JSON-файлы объединяются в единый отчет, где консолидируются данные по capability-наборам.
JSON-репортер фиксирует только события тестирования. Скриншоты, сетевые логи и видео обычно сохраняются другими сервисами (например, через Allure или сторонние плагины). Такой подход предотвращает разрастание отчетов: JSON остается чистым и пригодным для аналитики.
Дополнительные модули на Node.js обрабатывают JSON-файлы через
стандартные методы fs и JSON.parse. Подход
удобен при интеграции:
Поскольку формат стабилен и документирован, затраты на поддержку минимальны.
При запуске тестов в несколько потоков JSON-репортер формирует отдельный файл на каждый набор capabilities. Такое разделение исключает гонки и упрощает сравнение браузерных конфигураций. Агрегация выполняется на уровне CI с использованием скриптов или утилит.
Ключевые параметры:
outputDir — директория для отчетов,outputFileFormat — кастомизация имен файлов,writeStdout — включает вывод JSON в STDOUT,stdout — переключает логирование в консоль без создания
файлов.writeStdout используется при дебаге, когда важно видеть
структуру данных прямо в терминале. stdout полезен в
контейнеризированных окружениях, где лог-драйверы собирают поток из
STDOUT.
JSON-репортер хорошо вписывается в DevOps-процессы. Типичный пайплайн включает:
Стандартизованный формат позволяет не зависеть от выбранного раннера, а также сохраняет переносимость между облаками и локальными средами.
Разделение обязанностей делает JSON-репортер удобным строительным блоком: визуализация, хранение и аналитика решаются отдельно, без переработки инфраструктуры WebdriverIO.