Progress reporter — один из встроенных репортеров Karma, который отображает прогресс выполнения тестов в реальном времени. Основная цель прогресс репортера — визуально информировать о состоянии тестового запуска, показывая количество выполненных, прошедших и упавших тестов. Он особенно полезен при запуске большого набора тестов, когда необходимо отслеживать прогресс без задержек на формирование итоговых отчетов.
Progress reporter выводит короткую строку статуса в консоль после каждого выполненного теста. В стандартной конфигурации он использует символы:
. (точка) — успешное выполнение тестаF — проваленный тест* — тест с ошибкой, не завершившийся корректноКаждый символ соответствует отдельному тестовому случаю, а после завершения всех тестов выводится краткий итог с количеством успешных и упавших тестов. Такой подход позволяет быстро оценивать состояние тестового набора, не ожидая полного завершения всех тестов.
Для использования progress reporter необходимо в файле конфигурации
karma.conf.js в массив reporters добавить
строку 'progress':
module.exports = function(config) {
config.set({
frameworks: ['jasmine'],
files: [
'src/**/*.js',
'test/**/*.spec.js'
],
reporters: ['progress'],
browsers: ['ChromeHeadless'],
singleRun: true
});
};
Ключевые моменты настройки:
frameworks — фреймворк для тестирования
(jasmine, mocha, qunit и т.
д.).files — список файлов исходного кода и тестов, которые
будут подключены.reporters — массив репортеров, где
'progress' отвечает за отображение прогресса.browsers — список браузеров для запуска тестов.singleRun — при значении true тесты
запускаются один раз и процесс завершает работу после выполнения.Progress reporter особенно информативен при следующих сценариях:
Большое количество тестов При большом наборе тестов вывод символов помогает визуально оценить, как продвигается выполнение, без необходимости ждать финального отчета.
Параллельное выполнение тестов В конфигурациях с несколькими браузерами progress reporter показывает отдельные потоки выполнения через префиксы или разные линии, что позволяет отслеживать прогресс каждого браузера.
Интеграция с CI/CD В системах непрерывной
интеграции вывод progress reporter сохраняет компактность логов,
предотвращая их перегрузку. Для подробного анализа можно комбинировать
progress с другими репортерами, например, junit или
coverage.
Progress reporter является минималистичным инструментом и не предоставляет подробной информации о каждом тесте (например, стек-трейсы или тайминги). Для расширенной диагностики рекомендуется использовать:
В некоторых проектах progress reporter комбинируют с цветной подсветкой консоли, что улучшает восприятие информации о тестах.
Karma позволяет создавать собственные репортеры на основе встроенных. Progress reporter можно расширить, например, для отображения процентного прогресса или времени выполнения тестов:
const ProgressReporter = function(baseReporterDecorator) {
baseReporterDecorator(this);
this.onSpecCompl ete = function(browser, result) {
process.stdout.write('.');
};
this.onRunCompl ete = function(browsers, results) {
console.log(`\nTotal tests: ${results.success + results.failed}`);
console.log(`Passed: ${results.success}, Failed: ${results.failed}`);
};
};
ProgressReporter.$inject = ['baseReporterDecorator'];
module.exports = {
reporters: ['progress', {'reporter:customProgress': ['type', ProgressReporter]}]
};
Такой подход позволяет добавлять дополнительные метрики, сохраняя компактный вывод progress reporter.
Progress reporter в Karma является базовым, но важным инструментом для отслеживания состояния тестового прогресса. Его простота и наглядность делают его незаменимым для ежедневного тестирования и интеграции в автоматические сборки.