TeamCity Reporter представляет собой плагин для Karma, который позволяет интегрировать результаты запуска тестов JavaScript с системой непрерывной интеграции TeamCity. Основная цель этого репортера — транслировать информацию о тестах в формате, который TeamCity может корректно интерпретировать, создавая подробные отчёты о прогоне тестов, включая успешные проверки, провалы и пропуски.
Для использования TeamCity Reporter необходимо установить соответствующий npm-пакет:
npm install karma-teamcity-reporter --save-dev
После установки плагин подключается в конфигурационном файле Karma
(karma.conf.js) через поле reporters:
module.exports = function(config) {
config.set({
frameworks: ['jasmine'], // или другой выбранный фреймворк
reporters: ['teamcity'], // подключение TeamCity Reporter
browsers: ['ChromeHeadless'],
singleRun: true
});
};
Если проект использует несколько репортеров, TeamCity Reporter можно указать наряду с ними:
reporters: ['progress', 'teamcity']
TeamCity Reporter преобразует события, возникающие в процессе тестирования Karma, в формат, распознаваемый TeamCity. Ключевые типы сообщений:
testSuiteStarted и testSuiteFinished —
начало и завершение набора тестов (suite).testStarted и testFinished — начало и
завершение отдельного теста.testFailed — сообщение о провале теста с подробной
информацией об ошибке.testIgnored — пропуск теста, что также фиксируется в
отчёте CI.Каждое сообщение имеет строго определённый синтаксис для TeamCity,
включая идентификаторы тестов, имена наборов и сообщения об ошибках.
Репортер автоматически экранирует специальные символы, такие как
|, ', [, ], чтобы
избежать нарушения формата.
TeamCity Reporter поддерживает несколько настроек, которые позволяют гибко управлять отображением тестов в TeamCity:
stdout.Пример конфигурации:
reporters: ['teamcity'],
teamcityReporter: {
outputFile: 'karma-teamcity.log',
suite: 'Frontend Unit Tests',
showDiff: true
}
TeamCity Reporter особенно ценен в автоматизированных сборках, поскольку позволяет:
Для корректной работы CI достаточно убедиться, что процесс запуска Karma перенаправляет вывод репортера в TeamCity. При использовании TeamCity build agent и запуска Karma через npm-скрипты или командную строку никаких дополнительных настроек не требуется.
TeamCity Reporter поддерживает все популярные фреймворки тестирования:
describe как
suite и it как тест.describe
и it, поддержка асинхронных тестов через промисы.Асинхронные тесты также корректно отображаются, включая тайм-ауты и исключения, что критично для сложных фронтенд-приложений с промисами и сетевыми запросами.
Для отладки TeamCity Reporter можно включить подробное логирование:
logLevel: config.LOG_DEBUG
Это позволит видеть все события тестов и их преобразование в формат TeamCity. Особенно полезно при настройке сложных наборов тестов с вложенными suite.
showDiff: true для тестов, проверяющих строки
и объекты, чтобы TeamCity показывал разницу.TeamCity Reporter в Karma обеспечивает прозрачную интеграцию между JavaScript-тестами и системой CI, позволяя получать структурированные отчёты, наглядное отображение статуса тестов и детализированную информацию об ошибках, что критически важно для поддерживаемого, автоматизированного процесса тестирования.