Karma распространяется как пакет npm и не имеет собственного инсталлятора. Для его интеграции в проект достаточно добавить зависимости и конфигурацию. Менеджеры пакетов Yarn и pnpm обеспечивают быструю установку с детерминированным деревом зависимостей, что особенно важно в тестовых средах.
Перед установкой требуется наличие package.json и
базовой структуры проекта. Если файл отсутствует, его обычно
инициализируют с дефолтными параметрами, после чего становится возможна
установка зависимостей.
Установка выполняется командой добавления зависимостей в режим разработки.
Основные пакеты:
karma — ядро тестового раннера.karma-cli — интерфейс командной строки (используется
для запуска).karma-jasmine, karma-chrome-launcher.Пример последовательности установки:
yarn add -D karma karma-cli karma-jasmine karma-chrome-launcher
В результате в devDependencies фиксируются версии
пакетов, а в каталоге node_modules формируется окружение,
способное запускать тесты. Yarn создает файл блокировки, что гарантирует
одинаковые версии зависимостей на всех машинах.
Особенности использования Yarn:
resolutions в package.json, что бывает
полезно при конфликтующих версиях лаунчеров.pnpm использует контент-адресуемое хранилище и жесткие ссылки,
уменьшая размер node_modules и ускоряя установку. Такой
подход облегчает управление несколькими проектами, использующими
одинаковые пакеты.
Минимальный набор пакетов:
karmakarma-cliПример установки:
pnpm add -D karma karma-cli karma-jasmine karma-chrome-launcher
После завершения установки pnpm создает компактную структуру
node_modules, где модули связаны ссылками. Это не влияет на
работу Karma, так как менеджер пакетов полностью эмулирует стандартное
разрешение модулей.
Особенности pnpm:
pnpm workspace.Чаще всего Karma используется совместно с фреймворками тестирования. В зависимости от выбранного стека понадобятся дополнительные пакеты:
karma-jasmine и
jasmine-core,karma-mocha и mocha,karma-typescript или связка
ts-node с трансформерами.Лаунчеры соответствуют запускаемым браузерам:
karma-chrome-launcher, karma-firefox-launcher,
karma-edge-launcher. В безголовых окружениях часто
применяют puppeteer и karma-chrome-launcher в
headless-режиме.
Наличие установленных зависимостей позволяет сформировать файл
конфигурации karma.conf.js и подключить плагины. Менеджер
пакетов не влияет на формат конфигурации, поэтому инструкции по
настройке идентичны для Yarn, pnpm и npm.