Selenium Grid pozwala na uruchamianie testów równolegle na różnych maszynach. Czyli jeżeli chcemy uruchamiać testy napisane w Selenium na różnych wersjach przeglądarek i różnych systemach operacyjnych, to Selenium Grid jest tym, czego potrzebujemy.
Uwaga: do zrozumienia tej lekcji konieczna jest wiedza na temat działania Grida w Selenium 3. Lekcje dotyczące tego tematu w Javie: 1, 2; oraz w C#: 1, 2, 3, 4.
Praktyczne użycie Selenium Grid 4 wraz z komendami zobaczysz w kolejnej lekcji.
Do tej pory wyglądało to tak, że na Selenium Grid składał się tak zwany hub i jeden lub więcej node’ów. Hub jest centralnym punktem całego grida. Przyjmuje żądania uruchamiana testów, a potem je dystrybuuje na odpowiednie node’y. Node’y to poszczególne instancje Selenium.
Z reguły gdy to tłumaczę podaję następujący przykład. Masz trzy maszyny, umówmy się, że są to po prostu trzy fizyczne komputery. Jeden z nich będzie pełnił rolę huba. Będzie więc maszyną, na której nie będziemy wykonywali testów. Dwa pozostałe będą node’ami. Jeden będzie miał zainstalowany system Windows, a drugi na przykład dowolny Linux.
Gdy wyślemy żądanie wykonania testów poleci ono do huba na maszynie pierwszej. Tam hub podejmie decyzję, na którym nodzie dany test powinien zostać wykonany. Decyzję podejmuje w oparciu o informacje jakie otrzyma. Jeżeli otrzyma informację, że test należy uruchomić na przeglądarce Chrome na Windowsie, to gdy znajdzie node’a z takimi parametrami, tam przekaże testy do wykonania.
O tym czy dana maszyna otrzyma rolę hub czy node decydujemy my odpalając na danej maszynie skrypt z odpowiednimi parametrami. W podanym przykładzie mamy trzy fizyczne maszyny i każda ma swoją rolę, ale nic nie stoi na przeszkodzie, żeby jedna maszyna była zarówno hubem jak i nodem. Wtedy po prostu odpalamy na tej maszynie odpowiedni skrypt dwa razy z różnymi parametrami albo odpalamy go w trybie standalone, czyli nie podając żadnej roli.
Maszyny też wcale nie muszę być fizyczne: mogą to być na przykład maszyny wirtualne.
Komponenty w Selenium Grid 4
Zanim przejdziemy dalej musimy przebrnąć przez architekturę nowego Grida. Bez tego ciężko będzie zrozumieć dostępne tryby w Selenium Grid 4.
Grid w wersji czwartej Selenium, jest napisany od zera. Teraz jest stworzony w oparciu o 6 komponentów, z których każdy ma inne zadanie. Tymi komponentami są: Router, Distributor, Node, Session Map, New Session Queue oraz Event Bus.
Poniżej krótko opisuję za co odpowiadają poszczególne komponenty.
Router
Router dystrybuuje requesty do odpowiednich komponentów. To jest punkt wejściowy całego Grida.
Distributor
Ten komponent ma informacje o node’ach i ich możliwościach (capabilities; wie na przykład jakie przeglądarki są dostępne na danym nodzie). To właśnie ten komponent odpowiada za odnalezienie odpowiedniego node’a, na którym mogą zostać uruchomione testy.
Node
Node’ów może być wiele. Każdy node odpowiada za zarządzanie slotami dla dostępnych przeglądarek na danej maszynie.
Session Map
Ten komponent przechowuje informacje o id sesji i nodzie, na którym ta sesja jest odpalona.
New Session Queue
Ten komponent przetrzymuje wszystkie requesty dotyczące nowych sesji.
Event Bus
Służy do komunikacji pomiędzy komponentami (Node’y, Distributor, New Session Queue, Session Map).
Jeżeli interesuje Cię dokładnie za co odpowiadają poszczególne komponenty, możesz to sprawdzić w dokumentacji pod tym linkiem.
Przykład działania komponentów
Ukryta treść
Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.
Tryby uruchamiania Grida
Żeby móc uruchomić Selenium Grida potrzebujemy najpierw go pobrać. Selenium Grid możesz pobrać tutaj. Jest to po prostu plik o rozszerzeniu *.jar, który będziemy uruchamiać z wiersza poleceń. Tam też zdecydujemy w jakim trybie chcemy uruchomić plik.
W Selenium 4 mamy do dyspozycji trzy tryby.
Standalone
Ukryta treść
Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.
Hub i Node
Ukryta treść
Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.
Distributed
Ukryta treść
Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.