Spec Reporter — это один из самых информативных репортеров в Karma, позволяющий получать детализированные отчёты о результатах тестов. Он выводит результаты каждого отдельного spec (тестового примера), а не только суммарную статистику по файлам или сьютам. Такой подход особенно полезен при разработке сложных приложений с большим количеством модульных тестов, где важно видеть, какие именно тесты прошли, а какие — нет.
Для использования Spec Reporter необходимо
установить пакет karma-spec-reporter:
npm install karma-spec-reporter --save-dev
После установки репортер подключается в конфигурационном файле Karma
(karma.conf.js):
module.exports = function(config) {
config.set({
frameworks: ['jasmine'], // или другой фреймворк
files: [
'src/**/*.js',
'test/**/*.spec.js'
],
reporters: ['spec'],
specReporter: {
maxLogLines: 5, // Максимум строк логов на проваленный тест
suppressErrorSummary: false, // Не скрывать суммарную ошибку
suppressFailed: false, // Показывать проваленные тесты
suppressPassed: false, // Показывать прошедшие тесты
suppressSkipped: true, // Не показывать пропущенные тесты
showSpecTiming: true, // Показывать время выполнения теста
failFast: false // Остановить выполнение при первой ошибке
},
browsers: ['ChromeHeadless'],
singleRun: true
});
};
Ключевые настройки:
maxLogLines — ограничение вывода логов на тест, полезно
для длинных сообщений.suppressErrorSummary — управляет показом сводного
отчёта о неудачных тестах.suppressFailed и suppressPassed —
позволяют скрывать или показывать тесты в выводе.showSpecTiming — отображение времени выполнения каждого
теста, что помогает оптимизировать медленные участки кода.failFast — остановка тестов после первой ошибки, удобна
для локальной разработки.Spec Reporter выводит результат каждого теста по мере его выполнения. Для каждой suite (группы тестов) он показывает:
PASSED), провален
(FAILED) или пропущен (SKIPPED).showSpecTiming
включен.Пример вывода:
Calculator
add()
✓ должно складывать два числа (5ms)
subtract()
✗ должно вычитать два числа (3ms)
Expected 1 to equal 2.
Такой формат облегчает поиск проблем и делает отчёт прозрачным для командной работы.
Spec Reporter отлично подходит для непрерывной
интеграции, так как его текстовый формат легко читается в логах
Jenkins, GitLab CI, GitHub Actions и других систем. В отличие от
стандартного progress-репортера, он выводит полные сведения
о каждом тесте, что позволяет быстро выявлять нестабильные или медленные
тесты.
Для CI рекомендуется:
suppressPassed: true для сокращения объёма
логов.failFast: true для ускорения сборки при
критических ошибках.maxLogLines для ограничения длинных логов
и удобства чтения.Spec Reporter поддерживает все популярные фреймворки тестирования, которые интегрируются с Karma: Jasmine, Mocha, QUnit. Однако стоит учитывать несколько моментов:
suppressPassed или делить тесты на пакеты.karma-html-reporter.suppressPassed: false и showSpecTiming: true,
чтобы видеть каждый тест и его скорость выполнения.suppressPassed: true и
failFast: true, чтобы ускорить сборку и концентрироваться
только на проблемных тестах.maxLogLines для ограничения вывода длинных логов, чтобы
избежать засорения терминала.Spec Reporter превращает работу с Karma из простого «тест прошёл/не прошёл» в детализированную аналитику тестирования, позволяя отследить каждый отдельный сценарий и оптимизировать процесс разработки. Его текстовый формат лёгок для интеграции с любыми системами и помогает быстро находить узкие места в тестируемом коде.