Watch режим — это ключевая функциональность Karma, предназначенная для автоматического запуска тестов при изменении исходного кода или файлов тестов. Он обеспечивает мгновенную обратную связь во время разработки, повышая продуктивность и сокращая время на ручной запуск тестов.
Watch режим в Karma активируется через конфигурационный файл
karma.conf.js и команду запуска karma start.
Основные параметры, влияющие на его работу:
module.exports = function(config) {
config.set({
autoWatch: true, // включает слежение за изменениями файлов
singleRun: false, // запрещает однократный запуск (для Watch режима)
files: [
'src/**/*.js',
'test/**/*.spec.js'
],
reporters: ['progress'],
browsers: ['Chrome']
});
};
autoWatch — при true
Karma будет отслеживать изменения всех файлов, указанных в
files и автоматически перезапускать тесты.singleRun — при false
Watch режим активен, если true, Karma запускает тесты один
раз и завершает работу.Watch режим использует встроенные возможности Node.js и операционной системы для наблюдения за файловой системой. При изменении файла Karma выполняет следующие действия:
Такой механизм позволяет разработчику сразу видеть последствия внесенных изменений и поддерживать актуальность тестового покрытия.
Для проектов на современных версиях JavaScript часто требуется транспиляция. Karma поддерживает препроцессоры:
preprocessors: {
'src/**/*.js': ['babel'],
'test/**/*.spec.js': ['babel']
},
babelPreprocessor: {
options: {
presets: ['@babel/preset-env'],
sourceMap: 'inline'
}
}
При включенном Watch режиме любые изменения в исходниках или тестах автоматически проходят через препроцессор, и результаты пересобираются перед выполнением тестов.
Watch режим может потреблять ресурсы, если проект большой. Для оптимизации:
files, исключая ненужные каталоги
(node_modules, временные файлы).Запуск Karma в Watch режиме из командной строки:
karma start karma.conf.js
Для CI/CD или однократного запуска тестов используется:
karma start karma.conf.js --single-run
Для локальной разработки с Watch режимом достаточно не указывать
--single-run и убедиться, что
autoWatch: true.
Watch режим Karma часто используют совместно с:
karma-webpack для
обработки модулей.При Watch режиме Karma не завершает работу при ошибках тестов. Это
позволяет исправлять ошибки и видеть результат немедленно после
повторного сохранения файлов. Конфигурационные параметры
restartOnFileChange или failOnEmptyTestSuite
могут управлять поведением в специфичных сценариях, например, пропуск
пустых файлов или автоматический перезапуск при изменении структуры
проекта.
Watch режим превращает Karma в инструмент непрерывного тестирования, позволяя создавать цикл «изменение — проверка — исправление» максимально быстрым и эффективным.