HabrĂ© hat bereits mehr als einmal geschrieben, dass Selenium Grid Probleme hat, die nicht auf einfache Weise gelöst werden können (zum Beispiel: eins , zwei , drei ). In diesem Artikel teilen wir unsere Erfahrungen und zeigen, wie es uns bei Wrike gelungen ist, ein stabiles Framework fĂŒr Selentests zu erstellen.
TLDR: Wir haben unsere eigene Open Source-Lösung geschrieben und Selenium Grid vollstÀndig durch diese ersetzt.
Wir haben bereits darĂŒber gesprochen, wie wir unsere Selenium-Farm mit Google Cloud Engine und Kubernetes skaliert haben. Wir haben die Warteschlangen fĂŒr das Starten von Tests beseitigt , aber die QS-Abteilung erhielt regelmĂ€Ăig Beschwerden ĂŒber die InstabilitĂ€t der Testinfrastruktur.
Einen Weg wÀhlen
Selenium Grid GKE , . GKE Preemptible VMs. , , . . , , Selenium Grid, . , .
Selenoid Aerokube, , Selenium Grid (Selenium Hub Selenium Node). , , Kubernetes, : .
, Kubernetes, Zalnium, jsonwire-grid Moon. Zalenium jsonwire-grid Selenium Node, . Zalenium .
Moon , . : , Moon , ( ). , - â Selenium Grid, , .
, . , , .
«»?
Selenium Grid . , . Selenium , W3C Webdriver.
, HTTP API ( W3C Webdriver) ( -). , Google Chrome ChromeDriver, Mozilla Firefox â geckodriver . . W3C â -.
, . , capabilities , .
2 â / . Callisto â open source , . / , Kubernetes, Nginx. .
Callisto
Callisto : Nginx, Callisto podâ -.
/ Callisto.
-.
Callisto :
pod -.
- .
:
.
pod .
Docker- Selenoid.
podâ . - session_id, -, podâ. , â Callisto. , Callisto stateless-.
: , - , Callisto session_id -, ip- podâ, . session_id â pod_ip .
, W3C Webdriver session_id URL-, Nginx. Nginx , session_id, ip- podâ session_id podâ session_id.
: podâ Callisto .
:
Callisto
Web UI. Web UI Selenoid UI.
Callisto :
Selenium-.
VNC.
- .
.
: Selenoid UI. , .
. Callisto Prometheus: Selenium-.
Callisto, Selenoid, . . , .
, - podâ -. Kubernetes- , podâ.
podâ , ~10 ( 2- , Kubernetes- ).
Callisto
Callisto â 2000 . , . , . , - .
499- Nginx. Nginx 499- . : Kubernetes- ( ) , . âServer disconnected errorâ.
Nginx , , , .
, worker-shutdown-timeout. 10 ( -) 120 .
: ingress-nginx 0.26.0 - 10 240 .
. Kubernetes- podâ , session_id.
â session_id, , Nginx .
: ( GKE 1.12):
1000+ , . session_id, .
: podâ , .
Kubernetes-API. 100 Kubernetes-API , , . , Callisto Kubernetes-API . .
podâ . / podâ ~500 . 1000 .
GKE 1.12 1.14. 1.14 podâ 10 2000 .
504- Nginx. - , Nginx 504- . , Preemptible VMs. Google VM, podâ VM , .
Nginx ( ) : .
Callisto
, .
, , GKE 30-40% . , Callisto , podâ , . Selenium Grid pod' , . pod' , .. Selenium Node.
Selenium Grid Callisto:
:
Callisto, . , -.
.