Selenium WebDriver VS Cypress

Sty 30, 2021

Z pewnością Cypress miał mocne wejście w świat automatyzacji testów. Jednak od jego debiutu minęło już sporo czasu. Zamiast rozpychać się na rynku – Cypress widocznie mocno spuścił z tonu.
Nie oznacza to jednak, że przestał się rozwijać, gdyż cały czas rozwiązanie to dostaje kolejne poprawki i usprawnienia (chociażby ostatnio dodał możliwość korzystania z innych przeglądarek niż tylko Chrome). Cypress miał zdetronizować Selenium WebDriver, ale jak pokazuje rynek – na to lekko mówiąc się nie zanosi. Ileż to już razy słyszeliśmy, że stare poczciwe Selenium w końcu doczekało się godnego następcy… Jednak król nadal na tronie. A na horyzoncie przed Selenium WebDriver nieśmiało widać już premierę nowej wersji o numerze 4.
Moim zdaniem jednak Cypress wydaje się na tyle ciekawym narzędziem, z pewną dozą świeżego powiewu technologicznego, ze warto zestawić go i dokonać analizy z Selenium Webdriver. Zatem do dzieła.

Selenium WebDriver


Selenium to rozwiązanie służące do automatyzacji testów aplikacji webowych. Tak ja w przypadku Cypress – jest zupełnie darmowe, oparte na licencji open source. Był przez wiele lat i jest nadal niekwestionowanym liderem rynku narzędzi do automatyzacji testów aplikacji internetowych. Rozwiązanie to zapewnia nam współpracę ze wszystkim popularnymi przeglądarkami internetowymi- wykorzystując do tego celu ich natywne sterowniki (drivery) np. ChromeDriver (przeglądarka Chrome), czy GeckoDriver (przeglądarka FireFox). Warto podkreślić, że do pracy z Selenium Webdriver możemy korzystać z wielu popularnych języków programowania np. Java, C#, JavaScript, Python czy Ruby. Dla mnie jedną z największych zalet tego narzędzia jest też bardzo pokaźne internetowe Community (którego tak bardzo brakuje Cypressowi). Na szereg popularnych problemów można szybko i łatwo znaleźć odpowiedź w sieci.

Zalety


• Darmowe narzędzie (licencja open-source)
• Ogromne internetowe Community
• Kompatybilność z najpopularniejszymi systemami operacyjnymi (Windows, Linux, Max OS)
• Pełna obsługa wielu popularnych języków programowania
• Kompatybilność z najpopularniejszymi przeglądarkami internetowymi (Chrome, FireFox, Edge, Safari)
• Kompatybilność z wieloma szeroko stosowanymi narzędziami jak np. Maven, Jenkins, Docker
• Stosunkowo liczne grono specjalistów deklaruje chęć pracy w Selenium


Wady


• Brak wbudowanych mechanizmów raportowych
• Do pracy niezbędne są wysokie umiejętności programowania
• Czasochłonny proces tworzenia skryptów testowych

Cypress

Coraz częściej porównywany jest do Selenium, ale trzeba wiedzieć, że jest to zupełnie inne narzędzie pod kątem architektury oraz sposobu działania. To właśnie architektura i sposób w jaki działają testy jest największa widoczną różnicą między Selenium. Swoją lekkość , zwinność i przede wszystkim szybkość zawdzięcza temu, że w przeciwieństwie do Selenium, kod napisany w Cypress działa bezpośrednio w przeglądarce (jest niejako wstrzykiwany do testowanej aplikacji www) – w Selenium działa to zupełnie inaczej, gdyż testy są wykonywane poprzez Remote Driver.
Cypress to typowe narzędzie do testowania frontendu aplikacji webowych. Cypress niestety oferuje pracę tylko w jednym języku programowania – JavaScript. Moim zdaniem jest to jedno z największych ograniczeń tego rozwiązania. Wart podkreślić, że narzędzi to cały czas się rozwija i usprawnia. Jednak w oczy wciąż rzuca się brak internetowego Community. Wiele firm z bardzo dużym dystansem patrzy na to rozwiązanie w myśl zasady „znany wróg jest lepszy niż nieznany przyjaciel”. Selenium w odróżnieniu do Cypress, jest już obecne na rynku przez wiele, wiele lat i jest narzędziem sprawdzonym (mimo swoich ograniczeń i wad). Selenium jest więc narzędziem brzydko mówiąc „wygrzanym na rynku” bezpiecznym i co najważniejsze przewidywalnym. Tych wszystkich zalet brakuje na ten moment Cypressowi.


Zalety


• Obsługa różnych przeglądarek internetowych (FireFox, Edge, Chrome)
• Może wykonywać polecenia w czasie rzeczywistym, oferując wizualną informację zwrotną przez cały czas
• Szczegółowo dokumentuje cały proces testowania
• Automatyczna operacja przewijania przed wykonaniem konkretnych akcji na elementach
• Darmowy
• Szybki, wydajny
• Świetnie zorganizowana dokumentacja



Wady


• Możliwość pisania testów tylko w jednym języku programowania – JavaScript
• Obsługa tylko testów frontendowych
• Nie można go używać do jednoczesnej obsługi dwóch przeglądarek
• Cypress nie obsługuje wielu kart i oferuje jedynie ograniczoną obsługę ramek iFrame
• W obecnej formie Cypress nie jest kompatybilny z przeglądarkami takimi jak Explorer czy Safari

Pozostałe:

WOŚP 2021 – Twoje udostępnienie to nasza wpłata!

Od laika do Automatyka - największy w Polsce kurs online o automatyzacji testów, szkolenia, konsulting, doradztwo, usługi audytowe i wdrożeniowe. Dołącz do akcji wsparcia WOŚP Zapraszamy Cię do dołączenia do akcji wspierającej Wielką Orkiestrę Świątecznej Pomocy- 29...

Testowanie aplikacji mobilnych [Część 2]

W poprzednim materiale szczegółowo przedstawiłem aplikacje mobilne, ich typy, wady oraz zalety. Powiedziałem również nieco o testowaniu aplikacji mobilnych na urządzeniach rzeczywistych, emulatorach oraz w chmurze. Dzisiaj chciałbym skupić się stricte na etapach...

Testowanie aplikacji mobilnych [Cześć 1]

O tym, jak ważną rolę odrywania testowanie w całym procesie wytwórczym, nie trzeba już dzisiaj nikogo przekonywać. Ostatnio bardzo dotkliwie brak odpowiedniej jakości testów doświadczyli twórcy gry „CyberPunk 2077”. Długo wyczekiwana światowa premiera gry nie wypadła...

Testowanie manualne vs testowanie automatyczne

Aby jasno i konkretnie opisać korelacje oraz różnice miedzy testami manualnymi a testami automatycznymi, musimy przypomnieć sobie czym konkretnie są te dwie czynności. Testowanie manualne (inaczej ręczne) jest formą testowania oprogramowania, w której testy są...