Zalenium, czyli alternatywa dla Selenium Grid
W dzisiejszym wpisie chce Wam przedstawić kolejne narzędzie, które może Wam pomóc w uruchamianiu współbieżnie testów i jednocześnie być alternatywą dla Selenium Grid. Jest to Zalenium.
W jednym z poprzednich wpisów wspominałem już o narzędziu tego typu, czyli o Selenoidzie (link). Tym razem chce wam pokazać Zalenium, które stworzone zostało przez pracowników firmy Zalando.
Jakie są korzyści z używania Zalenium?
Pierwszą zaletą jest to, że Zalenium korzysta z dockera, dzięki temu łatwo się skaluje i dobrze się nim zarządza. W prosty sposób możemy zwiększyć lub zmniejszyć ilość potrzebnych przeglądarek (nodeów).
Czego potrzebujemy?
- Serwera (może być to nasz własny komputer)
- System Linux/OSX/Windows
- Docker
Zaczynamy!
Zaczynamy od instalacji Zalenium na naszym serwerze. W moim przypadku jest to serwer VPS (ubuntu) z OVH. Wspomnę, że dzięki nim mogą korzystać z ich zasobów i pokazywać Wam ciekawe zastosowania dla sewera. Osobiście również polecam, bo oferują dobry stosunek jakości do ceny.
Instalacja Zalenium
Zaczynamy od instalacji obrazku dockerowego Selenium:
docker pull elgalu/selenium
Następnie przechodzimy do instalacji Zalenium:
docker pull dosel/zalenium
Ostatnim krokiem jest uruchomienie obrazka dockerowego:
docker run --rm -ti --name zalenium -p 4444:4444 \
-v /var/run/docker.sock:/var/run/docker.sock \ -v /tmp/videos:/home/seluser/videos \ --privileged dosel/zalenium start
W tym miejscu mamy możliwość określenia jaką liczbę poszczególnych przeglądarek chcemy. Jeżeli dodamy na końcu tego polecenia –chromeContainers=5, to nasz Zalenium będzie miał 5 nodeów dla Chrome.
W komendzie, która uruchamia Zalenium, korzystamy z parametru –privileged, bo przyspiesza to rejestrowanie kolejnych nodeów przez Zalenium. Następnie podpinamy folder, w którym mają znajdywać się filmiki video z naszych testów. Wystawiamy Zalenium na porcie 4444 – jest to standardowy port dla Selenium Grida.
Po uruchomieniu tej komendy możemy przejść do naszego ekranu przeglądarki i zobaczyć działalnie Zalenium.
Jakie mamy możliwości przeglądania testów w Zalenium?
Przede wszystkim poprzez VNC mamy możliwość obserwowania tego, jak nasz działa podczas uruchomienia. Daje nam to możliwość śledzenia wykonywania testu, który np. czasami zachowuje nie zgodnie z naszymi przewidywaniami. Również możemy debugować nasz test, który “idzie” na Zalenium i obserwować jego zachowanie poprzez VNC.
Po zainstalowaniu gdy udamy się pod adres adres-serwera:4444/wd
Widzimy ekran z podstawowym „helpem” dla tej strony.
Gdy chcemy zobaczyć VNC z naszych testów, musimy wybrać adres: adres-serwera:4444/grid/admin/live
Gdy wybierzemy „Interact via VNC”, możemy podczas naszego testu dokonywać akcji w nowo otwartej karcie przeglądarki.
Dashboard Zalenium
Mamy również możliwość wejścia na dashboard Zalenium, gdzie prezentowane są video z naszych testów.
Dashboard Zalenium będzie pokazywał się gdy Zalenium będzie miało przynajmniej jedno video, czyli w naszym przypadku przynajmniej jedno uruchomienie testu (Dlatego, że nie wyłączyliśmy opcji nagrywania video z testów).
Uruchamiamy testy przy użyciu Zalenium
Do tego potrzeba przykładowego kodu. Posłużę się przykładem z mojego GitHuba https://github.com/testingplusme/PageObjectPatternSpecFlow
W kodzie dodaję adres do Zalenium. Dzięki temu nasz test uruchomi się na nim.
Tak jak w standardowym Selenium Gridzie odwołujemy się do adresu „adres-serwera:4444/wd/hub”
Jak dodać możliwość ustawiania statusu z zakończonego testu?
Domyślnie Zalenium ustawia status Completed po zakończonym teście.
Wygląda to tak:
Jednak istnieje również możliwość ustawienia, tego tak, aby po zakończonym teście wyświetlała się informacja o tym, czy nasz test zakończył się sukcesem, czy też błędem.
W tym celu musimy dodać ciasteczko do Selenium WebDrivera, które będzie ustawiało dany status podczas działania np. tak:
W tym przykładzie po scenariuszu tworzony jest jego status na podstawie TestContextu, który zawiera informacje na temat potencjalnego błędu, który może w teście wystąpić.
Następnie używamy: Jest to status Zalenium z którego korzystamy, aby przekazać informacje, na temat tego z jakim wynikiem nasz test się zakończył.
Następnie przechodzę do uruchomienia testu. Kończy się on sukcesem.
Sprawdźmy co stanie się, gdy wprowadzimy błąd do naszego testu – czy jego wynik będzie uwzględniony.
„Tak” zmieniłem na „Takk”
Następnie uruchomiłem test. Kończy się on błędem.
Więcej przydatnych ustawień dla Zalenium
Ustawianie określonej strefy czasowej dla Zalenium
Gdy chcemy ustawić określoną strefę czasową dla naszych testów należy dodać capabilities z czasem.
Gdy testujemy różne scenariusze związane ze strefą czasową, ta opcja będzie nas bardzo przydatna.
Wyłączanie możliwości nagrywania video
Jeżeli chcemy podczas testu zrezygnować z nagrywania video to musimy użyć:
Czyszczenie dashboardu
Przydatną możliwością jest dokonanie resetu naszego dashboardu z video, robimy to poprzez udanie się na stronę z końcowym parametrem
http://my-server:4444/dashboard/cleanup?action=doReset
lub
http://my-server:4444/dashboard/cleanup?action=doCleanup
możemy również w dashboardzie kliknąć cleanup.
Cleanup – usuwa nagrania z testów, które są starsze niż trzy dni
Reset – usuwa wszystkie nagrania
Polecam trzymać video tylko z testów, które się nie udały (jeżeli już je chcemy trzymać) i umieszczać je na jakimś zewnętrznym serwerze, bo inaczej szybko się nam zapełni dysk. Również jedynym z minusów nagrywania video, jest to, że serwer potrzebuje więcej zasobów niż bez nagrywania.
Zmiana nazwy testu
Robimy to za pomocą dodania Capability. W naszym przypadku posłużę się klasą ScenarioContext, która zawiera w ScenarioInfo właściwość Title, czyli tytuł testu:
Podsumowanie
W dzisiejszym wpisie pokazałem Wam, czym jest Zalenium oraz jak z niego korzystać. Jest on kolejną alternatywą dla Selenium Grida.
Zachęcam do spróbowania i testów zarówno Zalenium, jak i Selenoida – wybierzcie dla siebie ten, który się Wam lepiej sprawdza.