Automatyczne uruchamianie testów w Buddy

Automatyczne uruchamianie testów w Buddy.works

Jednym z najbardziej potrzebnych elementów tworzenia niezawodnych aplikacji jest pisanie testów i ich automatyczne uruchamianie po stworzeniu Pull Requesta. W tym artykule pokazuję, jak łatwo skonfigurować w tym celu Buddy.works tak, aby automatycznie uruchamiał testy jednostkowe i testy integracyjne.

Poniższy artykuł powstał we współpracy z Buddy.works.

Logo 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 installnpm 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.

Konfiguracja branch protection na GitHubie

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.