Poniższe repozytorium służy do pokazania różnych strategii testowania automatycznego w języku JavaScript wraz z gotowymi przykładami testów i konfiguracji środowiska.
Całość uruchamiana jest w Continuos Integration - Wszystkie testy uruchamiane są automatycznie poprzez github actions worflow, wszystkie definicje dostępne w yaml
Kod w tym repozytorium jest oparty o React
i domyślne ustawienia create-react-app
, oprócz tego zawiera:
- Prostą aplikację do której podłączone są testy.
- Runner do testów
Jest
. Testy jednostkowe i integracyjne w plikach**/*.test.js
- Framework do testowania komponentów React'a react-testing-library
- Runner do testów e2e cypress. Definicje testów w katalogu cypress
- Pre hook git-push uruchamiający testy w momencie
git push
. Kod który nie przechodzi testówJest
nie będzie wysłany do repozytorium. - Skonfigurowany Continuous Integration oparty o github actions worflow.
- Testy akceptacyjne codecept.io
- Testy mutacyjne stryker-mutator.io
- Testy jednostkowe i integracyjne uruchamiane poprzez runner
jest
. Lokalne uruchomienieyarn test
- Test jednostkowy - Przykładowy banalny test div.test.js dla serwisu.
- Test integracyjny - banalny test App.test.js dla komponentu React.
jest
wysyła raport code coverage docodecov.io
. Przykładowy banalny test scenarios/app_test.js Testy integracyjne uruchamiane poprzez runner
codecept.io
. Lokalne uruchomienie yarn codeceptjs
, w drugim tabie musisz mieć uruchomioną aplikację poprzez yarn start
- Testy
e2d
ibdd
uruchamiane poprzez runnercypress
. Lokalne uruchomienieyarn cypress
, w drugim tabie musisz mieć uruchomioną aplikację poprzezyarn start
- Przykład testu e2e z wykorzystaniem czystego
cypress.io
integration/division.js - Przykład testu bdd w języku
gherkin
integration/division.feature Runner wysyła raport wraz z nagranymi wideo testami do dashboardu dashboard.cypress.io/projects/8dc3c2.
- testy mutacyjne uruchamiane są poprzez stryker przeciwko testom
jest
. Lokalne uruchomienieyarn stryker run
Runner wysyła raport do
dashboard.stryker-mutator.io
- testy statyczne eslint -
yarn lint
- testy codeclimate -
yarn codeclimate
runner wysyła raport do
codeclimate.com
Pisanie testów to wykrywanie błędów przez programistów w trakcie pisania kodu źródłowego zamiast w najgorszym możliwym momencie - na produkcji przez klienta.
Mateusz Wojczal 2020
Źródła prezentacji są w katalogu slides.
yarn slides
uruchamia prezentację.
Całość dostępna jest online
Poprzednia cześć prezentacji (nie uwzględnia np testów mutacyjnych) dostępna jest na YouTube
Prezentacja napisana jest w markdown a wyświetlana przy pomocy evealjs.
Uruchomienie testów i reszta komend
Wszystkie komendy wpisane są do package.json jako scripts
Testowanie w JS. Jest, React testing lib, Cypress
Live coding dotyczył testowania prostej aplikacji napisanej w React z create-react-app
- testów jednostkowych - jest
- testów strukturalnych i ich konfiguracji, z użyciem narzędzi code climate i eslint
- testów integracyjnych/funkcjonalnych -jest i react-testing-library
- testów end-to-end e2d - cypress.js
- testów akceptacyjnych codecept
- konfiguracji jest do Test Driven Development, raportów Code Coverage
- konfiguracji Continuous Integration na podstawie CircleCi, jest i cypress
- ustawienia pre-hook'ów z użyciem husky aby nie pchać niepoprawnego kodu