Habré sudah lebih dari sekali menulis bahwa Selenium Grid mempunyai masalah yang tidak bisa diselesaikan dengan cara yang sederhana (contoh: satu , dua , tiga ). Dalam artikel ini, kami akan membagikan pengalaman kami dan membagikan bagaimana kami di Wrike berhasil membangun kerangka kerja yang stabil untuk pengujian Selenium.
TLDR: Kami menulis solusi open source kami sendiri dan sepenuhnya mengganti Selenium Grid dengannya.
Kami telah membicarakan tentang bagaimana kami meningkatkan skala farm Selenium kami menggunakan Google Cloud Engine dan Kubernetes. Kami menyingkirkan antrean untuk meluncurkan pengujian, tetapi departemen QA secara rutin menerima keluhan tentang ketidakstabilan infrastruktur pengujian.
Memilih jalan
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, . , -.
.