Ten tekst jest kontynuacją pierwszej części artykułu, w której określiliśmy mocne cechy Cypressa i Playwrighta. Poniżej znajduje się dalsza część, czyli wskazanie punktów remisowych pomiędzy tymi narzędziami i podsumowanie ich porównania.
Punkty remisowe
Logowanie / debugowanie
Zarówno Playwright, jak i Cypress posiadają rewelacyjne mechanizmy logowania i debugowania testów.
Playwright posiada wbudowany runner testów o nazwie UI Mode. Z jego pomocą możemy uruchamiać i debugować testy – widać tu szczegółowy przebieg testu na osi czasu łącznie ze screenshotami. Ponadto UI Mode serwuje nam szereg innych danych, takich jak dane z konsoli, ruch sieciowy itd.

Ponadto, Playwright posiada świetne narzędzie GUI o nazwie Trace Viewer, które służy do śledzenia przebiegu uruchomionych wcześniej testów. Jeśli posiadamy właściwe ustawienie w konfiguracji testów (w pliku playwright.config), po każdym teście Playwright wygeneruje plik .zip, z którego będziemy w stanie wygenerować raport HTML. Przykładowy raport wygląda jak poniżej:



Jak wygląda to w Cypress?
Cypress również posiada aplikację desktopową służącą do uruchamiania, konfigurowania i przeglądania testów – jej nazwa to Cypress App.

Jednak szczegółowe śledzenie, debugowanie i analizowanie testów odbywa się we wspomnianym wcześniej Cypress Cloud. Narzędzie jest rewelacyjne – oferuje masę informacji na temat testów (logi, screenshoty, ruch sieciowy – wszystko z podziałem na konkretny krok w teście) i niesamowicie ułatwia ich utrzymanie, przyspiesza ich wykonywanie, zbiera historyczne wyniki.
Jest tylko jeden poważny minus Cypress Cloud – narzędzie wymaga opłacenia subskrypcji (powyżej 50 użytkowników lub 500 wyników testów miesięcznie w podstawowym planie).

Moim subiektywnym zdaniem Cypress oferuje lepsze rozwiązania do zarządzania testami i do ich raportowania, jednak nie jest to usługa darmowa. To co dostarcza nam Playwright, jest dobre – UI Mode upraszcza pisanie i debugowanie testów, a Trace Viewer całkowicie wystarcza do śledzenia ich wyników, jednocześnie korzystanie z nich jest całkowicie darmowe. Z tych powodów, ten akapit znalazł się w punktach remisowych.
Page Object Model
Dla przypomnienia – model Page Object (POM) w automatyzacji testów polega na izolowaniu interakcji z elementami interfejsu użytkownika na stronie internetowej do oddzielnych obiektów, nazywanych obiektami strony (page objects). Te obiekty reprezentują różne elementy interfejsu, takie jak pola formularzy czy przyciski. Dzięki temu podejściu testy stają się czytelne, łatwe do zrozumienia i utrzymania, ponieważ logika interakcji z elementami jest izolowana w odpowiednich obiektach, co ułatwia zarządzanie zmianami w interfejsie użytkownika. Ten wzorzec jest stosowany w większości frameworków do automatyzacji testów.
Playwright wspiera i rekomenduje POM, podczas gdy w Cypress co prawda także jest to możliwe, jednak twórcy sugerują używanie wzorca App Actions.
Podsumowanie
Na koniec warto podkreślić bardzo ważną rzecz – moim zdaniem nie ma tego jednego, najlepszego narzędzia do automatyzacji testów. Wybór narzędzia zależy od Twoich potrzeb, od kompetencji specjalistów w zespole, od możliwości i ograniczeń danego frameworka, a czasem także od wymagań klienta, budżetu, itd. Innymi słowy, najlepsze narzędzie do automatyzacji to takie, które spełnia Twoje wymagania, jego potencjalne ograniczenia nie są dla Ciebie problemem, a także będziesz w stanie sprawnie pisać w nim stabilne i wydajne testy.
Który framework wybrałbym do testów e2e w pracy projektowej?
Dla mnie narzędziem pierwszego wyboru dla automatyzacji e2e jest Playwright. Podsumowując argumenty za tym frameworkiem z powyższego artykułu – Playwright jest szybki, stabilny, jego funkcje out-of-the-box (takie jak auto-waity) ułatwiają pisanie w nim testów. Wspiera kilka języków programowania, wszystkie najpopularniejsze przeglądarki, integruje się z CI, ma niski próg wejścia i posiada rewelacyjnego Trace Viewera.
Kiedy mimo wszystko skłaniałbym się ku wykorzystaniu Cypressa?
Tak naprawdę przychodzą mi do głowy tylko dwie takie sytuacje (i tak, lekko naciągane):
- kiedy zależałoby mi na maksymalnie niskim progu wejścia – tak jak opisałem wcześniej, składnia Cypressa jest lekko prostsza niż w Playwright
- kiedy zespół testerski miałby duże doświadczenie w Cypress, a nie dysponowałby możliwością rozpoznania innego narzędzia.
Jaka przyszłość czeka oba te narzędzia?
Moim zdaniem w przyszłości Playwright zdaje się być narzędziem, które zyska dominującą pozycję na scenie automatyzacji testów oprogramowania. Chociaż narzędzia takie jak Cypress, Selenium i inne frameworki nadal będą używane, to głównie w kontekście projektów utrzymaniowych. Playwright z pewnością wyłoni się jako preferowany wybór dla większości nowych projektów.
Na koniec ciekawa statystyka
Preferencje społeczności QA zdaje się potwierdzać liczba gwiazdek repozytoriów Playwrighta i Cypressa na GitHub. Na dzień 14 listopada 2023 roku, Playwright posiada ponad 56k gwiazdek, a Cypress – ponad 45k. Poniższy wykres pokazuje oś czasu tej metryki dla obu frameworków:
