Single run режим — это режим выполнения тестов, при котором Karma запускает тесты один раз и завершает работу. Он особенно полезен для интеграции с системами непрерывной интеграции (CI/CD), где требуется автоматическая проверка кода без постоянного слежения за изменениями файлов.
0 при успешном выполнении всех тестов,
ненулевой код при наличии ошибок. Это позволяет автоматизировать
проверки в скриптах сборки.В файле karma.conf.js режим single run настраивается с
помощью параметра singleRun:
module.exports = function(config) {
config.set({
frameworks: ['jasmine'], // или 'mocha', 'qunit'
files: [
'src/**/*.js',
'test/**/*.spec.js'
],
browsers: ['ChromeHeadless'], // рекомендуемый браузер для CI
singleRun: true,
reporters: ['progress', 'coverage'],
preprocessors: {
'src/**/*.js': ['coverage']
},
coverageReporter: {
type: 'lcov',
dir: 'coverage/'
}
});
};
Ключевые моменты настройки:
browsers: чаще всего используется
ChromeHeadless или FirefoxHeadless, чтобы
запускать тесты в безголовом режиме, без графического интерфейса. Это
критично для CI.reporters: рекомендуется включать как минимум
progress для отображения статуса выполнения и
coverage для отчётов по покрытию кода.preprocessors: позволяют подключить инструменты для
анализа кода, например, для измерения покрытия тестами.Single run можно запускать напрямую из терминала:
karma start karma.conf.js --single-run
или через npm-скрипт:
{
"scripts": {
"test": "karma start --single-run"
}
}
В обоих случаях Karma инициирует запуск, выполнит тесты и завершит процесс. Это делает процесс предсказуемым и удобным для автоматизации.
Single run идеально подходит для пайплайнов:
Установка зависимостей:
npm ciЗапуск тестов:
npm run testОбработка результатов: ненулевой код выхода автоматически сигнализирует о неуспешном прохождении тестов, что предотвращает деплой дефектного кода.
autoWatch игнорируется в single run режиме,
так как слежение за файлами отключено.autoWatch: true) для непрерывного запуска
тестов при изменении файлов.singleRun: true вместе с headless-браузерами.Single run режим обеспечивает стабильность и предсказуемость выполнения тестов, делает процесс интеграции с CI/CD эффективным и позволяет легко отслеживать результаты тестирования.