Testování

Unit testy

U všech modulů píšeme jednotkové testy a kontrolujeme si code coverage. Nemáme tvrdý limit na % coverage, ale jednotkové testy by měly vždy pokrývat všechny funkcionality (metody, funkce) projektu. Unit testy jsou i součástí našich contribution guidelines. Zatím nepraktikujeme čistě TDD.

Integrační testy

Pro formu “integračního testování” používáme Dredd na testování našich API - testování vystavených API dle jejich dokumentace/specifikace. Prochází se všechny routy nadefinované v dokumentaci a jedna po druhé se volají na spuštěném serveru nad právě testovaným kódem. Kontrolují se správné odpovědi (podle ukázky/schématu dat z dokumentace), formát dat, apod.

End-to-end testy

Pro end-to-end testy používáme nástroj Cypress, kde simulujeme uživatelské akce, kontrolujeme chování aplikace, správné výstupy.

Automatizace

Testy provádíme automaticky v našem CI/CD nástroji. Po push do development či master větve se aplikace sestaví, následně se nad ní provedou jednotkové a integrační testy, pokud vše projde, vytvoří se nový Docker image, nahraje do registry a automaticky nasadí. U aplikací s dokumentací API se také v pipeline automaticky nahrává aktuální (a zároveň tedy aktuálně testovaná) dokumentace k API na Apiary.io. V případě balíčků dostupných na npmjs.org i zároveň automaticky balíčky v CI publikujeme.