Файл настроек Karma служит точкой концентрации параметров,
определяющих способ выполнения тестов, используемые фреймворки, плагины,
браузеры и формат отчетов. Его основа — объект конфигурации,
экспортируемый в формате CommonJS. Типичное имя файла:
karma.conf.js.
Экспортируемая функция принимает объект config, на
котором вызывается метод set. Внутри метода передается
объект с ключами настройки. Такой подход позволяет динамически
модифицировать параметры, например, в зависимости от окружения.
module.exports = function (config) {
config.set({
// параметры
})
}
basePath определяет корневой путь, относительно которого рассчитываются остальные директории и пути к файлам. Он может влиять на удобство подключения источников и тестов.
frameworks задает тестовые фреймворки и адаптеры,
например jasmine, mocha, chai и
их комбинации. Karma импортирует соответствующие плагины и связывает их
между собой.
files представляет список файлов или шаблонов путей,
подключаемых в браузер. Помимо тестов и исходных модулей сюда включаются
вспомогательные утилиты, фикстуры или сторонние библиотеки.
Поддерживаются шаблоны и опции вроде included и
served.
exclude означает список путей, исключаемых из загрузки.
Файл конфигурации позволяет подключать предварительные обработчики с помощью ключа preprocessors. Значения обычно указывают на трансформацию исходников перед запуском тестов: компиляцию TypeScript, трансформацию Babel, покрытие кода инструментом Istanbul.
preprocessors: {
'src/**/*.js': ['babel', 'coverage']
}
Ключ browsers определяет список браузеров, в которых
будут выполняться тесты. Допустимо использовать встроенные лаунчеры
(Chrome, Firefox) или кастомные
(ChromeHeadless, PhantomJS). Поддерживается
одновременный запуск в нескольких окружениях.
autoWatch управляет режимом наблюдения за файлами.
При true Karma перезапускает тесты при изменениях
исходников. В сочетании с browsers этот параметр формирует
удобный цикл разработки.
Ключ reporters задает формат вывода результатов:
progress, dots, junit,
coverage и другие. Отчеты покрытия обычно требуют
дополнительной настройки, включая директорию для артефактов и тип
генерации (LCOV, HTML, текстовый).
reporters: ['progress', 'coverage']
coverageReporter: {
dir: 'coverage/',
reporters: [
{ type: 'html', subdir: 'html' },
{ type: 'text-summary' }
]
}
port задает порт локального сервера, через который взаимодействуют браузеры и тестовая среда.
logLevel управляет степенью детализации логов: от
LOG_DISABLE до LOG_DEBUG. Это полезно при
диагностике плагинов и сетевых проблем.
colors включает цветовое оформление вывода.
Для непрерывной интеграции критичен ключ singleRun.
При значении true Karma запускает тесты один раз и
завершает процесс. В связке с headless-браузерами это обеспечивает
детерминированное выполнение без графического интерфейса.
Ключ plugins перечисляет плагины, которые Karma должна использовать. При опущенном параметре Karma пытается обнаруживать плагины автоматически на основе установленных модулей.
Через preprocessors и дополнительные плагины конфигурация может связываться с webpack, Rollup или другими сборщиками. В случае webpack ключ webpack вкладывается внутрь конфигурации Karma и перенаправляет обработку файлов. Для корректной работы требуется указать webpackMiddleware, контролирующий вывод статистики.
captureTimeout, browserNoActivityTimeout и browserDisconnectTolerance помогают управлять ошибками связности между браузером и Karma. Эти параметры становятся значимыми в распределенных средах или при нестабильной сети.
config.set.