Słowem wstępu, co to jest Cypress. Jest to open source’owy framework do testów głównie E2E (end to end) oparty na platformie Node.js, co czyni go frameworkiem, w którym testy pisane są w języku Javascript. Jedną z jego najwiekszych zalet jest to, że nie jest oparty na selenium (nie ma dodatkowej warstwy komunikacji frameworku z przeglądarką, przez co jest szybszy niż frameworki wymagające selenium).

źródło: www.cypress.io

Rosnąca popularność

Początki Cypress datujemy na rok 2015. Dzięki open source narzędzie to ewoluuje szybciej i lepiej niż gdybyśmy pracowali nad nim jako zamknięty zespół. Teraz korzystają z jego rozwiązań takie firmy jak PayPal, Walt Disney Studio, DHL, czy Johnson&Johnson. Coraz częściej w ogłoszeniach o pracę można spotkać Cypress jako narzędzie wymagane przez pracodawców.

źródło: www.cypress.io

Wsparcie dla przeglądarek

Początkowo Cypress wspierany był dla przeglądarki Electron, teraz jest wspierany dla wielu dostępnych przeglądarek, tj. Chrome, FireFox, MS Edge, Chromium oraz dla ich developerskich odłamów.

źródło: www.cypress.io

Dla developera


Jedną z bardziej istotnych rzeczy dla developera pracującego na danym frameworku jest dokumentacja. Cypress posiada jedną z najlepszych dokumentacji z jakimi miałem do czynienia. Jest przejrzysta, posiada bardzo dobrą wyszukiwarkę, opisy podparte są przykładami użycia oraz jest na bieżąco aktualizowana. W metodach w Cypress są linki do dokumentacji, co skraca czas szukania. Bardzo dobrze opisany jest proces migracji do wyższej wersji, jeśli zmiany dotykają bezpośrednio zastosowanych wcześniej rozwiązań.

źródło: www.cypress.io

Bardzo ważną zaletą Cypress jest fakt, iż jest on na bieżąco aktualizowany i wspierany przez twórców. Jeśli pojawia się problem można go zgłosić, a support Cypress odpowiada w bardzo krótkim czasie. Jeśli błąd okazuje się poważny, to jest on szybko naprawiany i wypuszczana jest wersja z uwzględnioną poprawką. Można również zaproponować swoje ulepszenie do Cypress.

źródło: www.cypress.io

Następną kwestią, która przemawia na korzyść Cypress, jest możliwość przystosowania go pod prowadzone projekty. Narzędzie to daje możliwość tworzenia wielu plików konfiguracji wstępnej (w którym definiujemy np. rozdzielczość, w jakiej ma się uruchomić przeglądarka), dzięki czemu możemy zastosować napisany test dla wielu projektów oraz na np. kilku rozdzielczościach. To właśnie rozwiązanie umożliwia zastosowanie Cypress dla wielu konfiguracji w różnych projektach w procesie CI.

Cypress można uruchamiać w 2 wersjach. Pierwszą jest wersja „run” — wersja konsolowa aplikacji, w której przeglądarka uruchamiana jest w trybie „headless”, czyli bez graficznego interfejsu użytkownika. Dzięki temu testy wykonywane są szybciej, co jest pożądane w testach uruchamianych w procesie CI.

Po wykonaniu testów mamy czytelny raport w wykonanych testach. Jeśli któryś z testów zakończy się błędem to wówczas zapisywane są screenshoty oraz filmik z przeprowadzonego testu, co pozwala nam bardzo szybko odnaleźć problem.

Druga wersja to „open” — czyli wersja z graficznym interfejsem, w której Cypress startuje w wybranej przeglądarce. Mamy możliwość dokładnego prześledzenia testu, a w trakcie i po jego zakończeniu — prześledzenia, krok po kroku, jakie akcje zostały wykonane dzięki „snapshot’om”. Wybierając snapshot’a z menu Cypress, jesteśmy w stanie sprawdzić co dokładnie w danej chwili zostało wykonane, ponieważ zapisywany jest konkretny stan naszej aplikacji.

Tę wersję polecam przede wszystkim do tworzenia testów oraz gdy znalezienie problemu w wersji „run” nie jest takie oczywiste.

W pliku package.json mamy możliwość napisania skryptów, dzięki którym możemy skrócić pełne komendy uruchamiające Cypress do kilku znaków.

Wsparcie dla VSCode lub WebStorm w wersji „open". W menu w wersji „open" można wybrać domyślny edytor, na którym pracujemy pisząc testy. Mamy wtedy możliwość bezpośrednio z Cypress „wskoczyć” w konkretną linię kodu, w której występuje jakiś problem.

Podsumowanie

Artykuł naświetla tylko niektóre i podstawowe informacje o możliwościach frameworka do testów Cypress. Zachęcam do zagłębienia się w szczegóły techniczne i inne możliwości, które daje nam Cypress. W naszym procesie CI/CD jest to jeden z podstawowych frameworków do testów. Do korzystania z niego przekonały nas jego nowoczesność, wsparcie techniczne oraz rosnące z każdą nową wersją możliwości. Dodatkowo w Cypress ważna jest dla nas możliwość adaptacji pod nasze wygórowane kryteria do testów.

Autorem tekstu jest Łukasz Wieczorek