IT Narzędzie do testów

Karma

Definicja #

Karma to runner testów (test runner) dla JavaScriptu stworzony przez zespół Angular (Google). W odróżnieniu od frameworków testowych (Jasmine, Jest), Karma jest odpowiedzialna wyłącznie za uruchamianie testów — uruchamia serwer HTTP, otwiera przeglądarkę i raportuje wyniki do terminala.

Główne cechy Karma:

  • Prawdziwe przeglądarki — uruchamia testy w Chrome, Firefox, Safari, Edge — wykrywa problemy specyficzne dla przeglądarki
  • Headless mode — ChromeHeadless do testowania w CI/CD bez interfejsu graficznego
  • Watch mode — automatyczne re-uruchamianie testów przy zmianach pliku
  • Framework-agnostic — współpracuje z Jasmine, Mocha i innymi frameworkami
  • Wtyczki reporterów — karma-junit-reporter, karma-coverage (Istanbul) do raportów XML i pokrycia
  • Preprocessors — karma-webpack, karma-typescript do transpilacji kodu

Karma jest obecnie w trybie maintenance — oficjalny blog Angular ogłosił jej deprecację na rzecz Jest (bez przeglądarki) i Web Test Runner. Angular CLI od wersji 16/17 oferuje schematy migracji do Jest. Nowe projekty powinny używać Jest lub Vitest.

Zastosowania #

  • Uruchamianie testów jednostkowych Angular w prawdziwej przeglądarce z pełnym środowiskiem DOM
  • Konfiguracja CI/CD z ChromeHeadless dla automatycznych testów w pipeline'ach GitLab CI, GitHub Actions
  • Generowanie raportów pokrycia kodu (Istanbul/nyc) przez karma-coverage dla analizy jakości
  • Utrzymanie istniejących projektów Angular korzystających z Karma/Jasmine przed migracją na Jest
  • Testowanie kodu zależnego od specyficznych funkcji przeglądarki (Web APIs) wymagających prawdziwego środowiska

Ścieżka nauki #

Karma jest preinstalowana w projektach Angular generowanych przez starsze wersje Angular CLI, więc wielu deweloperów używa jej bez głębszej konfiguracji. Oficjalna dokumentacja Angular Testing opisuje setup Karma/Jasmine.

Podstawowa konfiguracja Karma jest w pliku karma.conf.js — definiuje przeglądarki, frameworki, preprocessory i reportery. Dla CI/CD ważna jest konfiguracja ChromeHeadless i flag dla środowisk bez GPU.

Jednak biorąc pod uwagę deprecację Karmy, bardziej wartościową inwestycją czasu jest nauka Jesta. Angular CLI oferuje schematę migracji: ng add @angular/builders/jest. Dla nowych projektów Angular rekomenduje się bezpośrednie użycie Jest, który jest szybszy, nie wymaga przeglądarki i ma lepsze wsparcie TypeScript. Zasoby: blog.angular.io/moving-angular-cli-to-jest-and-web-test-runner.

Ostatnia aktualizacja:

Powiązane hasła

Technologie i biblioteki, które najczęściej pojawiają się razem z Karma w ogłoszeniach.

Cały słownik IT

Przeglądaj słownik IT alfabetycznie

Wybierz literę, aby zobaczyć wszystkie hasła zaczynające się od niej.