Poniższy artykuł powstał we współpracy z Buddy.works.
Testy jednostkowe, testy integracyjne
Jako przykładowy projekt wezmę moją paczkę @mmiszy/react-with-observable
, która pozwala na używanie observabli w React w przyjazny i deklaratywny sposób. Zawiera ona zarówno testy jednostkowe, jak i testy integracyjne napisane przy użyciu biblioteki Cypress. Zacznijmy od testów jednostkowych.
Buddy.works i testy jednostkowe w React.js
Podobnie, jak w poprzednim wpisie zaczynam od stworzenia projektu w Buddy. Zanim dodam nowy pipeline, koniecznie klikam opcję po prawej stronie ekranu „Pull requests: OFF” i przełączam ją na "ON".
Dodaję pipeline, nazywam go dowolnie np. „Test PRs”. Wybieram „Trigger Mode: On Push” i „Pull requests by wildcard” i pole obok zostawiam z domyślną wartością refs/pull/*
, która oznacza, że ten pipeline uruchomi się dla wszystkich tworzonych pull requestów.
Dodaję pierwszą akcję typu Node.js i wszystkie pozostałe opcje zostawiam domyślne. Uruchomione zostaną polecenia npm install
i npm test
. Jeśli w repozytorium otwarty jest dowolny pull request, od razu możemy przetestować stworzony pipeline. Po zapisaniu, przy każdym nowym Pull Requeście testy zostaną automatycznie uruchomione. Na GitHubie jest to widoczne w taki sposób, jak na screenshocie poniżej:
Wymuszanie testów na GitHubie
GitHub daje też możliwość wymuszenia tego, aby testy jednostkowe i testy integracyjne przeszły, zanim będzie można zaakceptować pull requesta. Na GitHubie wchodzimy w Settings -> Branches -> Add Rule. Wpisujemy master
, zaznaczamy „Require status checks to pass before merging” i następnie „buddy/pipeline/Test PRs”. Zapisujemy. Od teraz niemożliwe będzie kliknięcie "merge" pod PR-em, który nie przeszedł testów.
Cypress na Buddy.works
W moim projekcie napisane są też testy integracyjne przy użyciu biblioteki Cypress. Buddy również daje możliwość uruchomienia Cypressa i ma do tego gotową akcję! Dodajemy akcję Cypress i, w przypadku mojego projektu, używam komendy npm run test:e2e
(którą można podejrzeć tutaj). Zrobiłem to przy pomocy jednego pipeline'a, ale nic nie stoi na przeszkodzie, abyście Wy rozbili to na dwa osobne!
Podsumowanie
W tym wpisie pokazałem, jak łatwo i szybko można skonfigurować automatyczne uruchamianie testów jednostkowych i testów integracyjnych pod pull requestami na GitHubie dzięki Buddy.works. Dzięki temu mamy większą pewność, że kod, z którym pracujemy rzeczywiście działa. Automatyczne uruchamianie testów, gdy powstanie nowy pull request, jest na pewno nieodzownym elementem każdego Continuous Integration.