Karma — это тестовый раннер для JavaScript, созданный для запуска тестов в реальном браузере. Одной из ключевых возможностей при разработке и отладке тестов является использование debug window, позволяющего наблюдать выполнение тестов в реальном времени, видеть ошибки и взаимодействовать с приложением напрямую через инструменты разработчика браузера.
Для открытия debug window необходимо запустить Karma в стандартном
режиме, используя конфигурационный файл karma.conf.js.
Основные параметры, влияющие на отладку:
module.exports = function(config) {
config.set({
frameworks: ['jasmine'], // или mocha, qunit
files: [
'src/**/*.js',
'test/**/*.spec.js'
],
browsers: ['Chrome'], // Chrome поддерживает debug window
singleRun: false, // Важный параметр: при false браузер не закрывается после выполнения тестов
autoWatch: true
});
};
singleRun: false — критически важно,
иначе браузер закроется сразу после выполнения тестов.autoWatch: true — позволяет Karma
автоматически перезапускать тесты при изменении файлов.После запуска Karma командой:
npx karma start
Karma выводит в консоль URL, по которому можно открыть debug window. Обычно это выглядит так:
Chrome 117.0.0 (Windows 10) DEBUG: Connected on socket xyz
Navigate to http://localhost:9876/debug.html
Открыв http://localhost:9876/debug.html в браузере,
появляется окно с несколькими ключевыми элементами:
Breakpoints и step-by-step Все точки останова, установленные в исходных файлах через DevTools, срабатывают так же, как при обычной отладке веб-приложения. Karma поддерживает sourcemaps, поэтому можно ставить точки останова прямо в исходном коде, даже если используется транспиляция через Babel или TypeScript.
Просмотр состояния переменных Debug window позволяет инспектировать любые глобальные объекты и локальные переменные внутри тестов. Это особенно полезно для сложных модулей, где поведение тестируемого кода зависит от множества условий.
Проверка DOM Для тестов, работающих с DOM, debug window открывает реальный HTML-документ, в котором выполняются тесты. Это упрощает проверку манипуляций с элементами страницы и визуальное подтверждение результатов.
Интерактивные команды В консоли DevTools можно вручную вызвать функции тестируемого кода или проверять состояния объектов в любой момент выполнения теста.
Хотя Chrome обеспечивает наилучший опыт работы с debug window, Karma поддерживает и другие браузеры:
browsers: ['Firefox', 'Edge']
Для Firefox и Edge debug window открывается по тому же принципу,
однако некоторые инструменты DevTools могут вести себя иначе. Основная
задача — убедиться, что singleRun отключён, иначе окно
закроется после первого запуска тестов.
autoWatch: false и вручную обновлять страницу
debug window.browserConsoleLogOptions в конфигурацию
Karma для логирования сообщений в консоль.browserConsoleLogOptions: {
level: 'log',
terminal: true
}
Это позволит видеть все console.log и
console.error из браузера прямо в терминале, дополнительно
к debug window.
--browsers ChromeDebugging или отдельного
профиля Chrome с включённым remote-debugging может быть полезно для
сложных сценариев, где необходима интеграция с внешними
инструментами.Debug window является ключевым инструментом для глубокого анализа поведения тестов в Karma. Она объединяет преимущества реального браузера, визуального отображения DOM и встроенной отладки кода, что делает процесс тестирования более прозрачным и эффективным.