C#devopsitSeleniumSelenoidZalenium

Zalenium alternatywa dla Selenium Grid

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.

Zalenium instalacja poprzez dockera

Po uruchomieniu tej komendy możemy przejść do naszego ekranu przeglądarki i zobaczyć działalnie Zalenium.

Zalenium - przedstawienie ekranu pomocy

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:

Zalenium - ukończony test

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:

Zalenium - ustawiamy czy test kończy się z wynikiem pozytywnym

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:zalenium - ustawienie statusu testu 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.zalenium - sukces

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.

Zalenium - nie udany test

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.

Selenium Grid- Zalenium alternatywaGdy 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ć: 

Zalenium alternatywa dlla Selenium GridCzyszczenie 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:

Zalenium - ustawianie nazwy 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.  

Michał Ślęzak

Programista testów w whatclinic.com. Bierze aktywny udział w rozwoju poznańskiej społeczności testerskiej PTaQ przez bycie wiceliderem. Pasjonuje się wsparciem procesu testowania poprzez automatyzację.

Related Articles

Close
Close