Habré a déjà écrit plus d'une fois que Selenium Grid a des problèmes qui ne peuvent pas être résolus de manière simple (par exemple: un , deux , trois ). Dans cet article, nous partagerons notre expérience et partagerons comment nous, chez Wrike, avons réussi à créer un cadre stable pour les tests Selenium.
TLDR: Nous avons écrit notre propre solution open source et avons complètement remplacé Selenium Grid par elle.
Nous avons déjà expliqué comment nous avons fait évoluer notre ferme Selenium à l'aide de Google Cloud Engine et Kubernetes. Nous nous sommes débarrassés des files d'attente pour lancer les tests, mais le service QA recevait régulièrement des plaintes concernant l'instabilité de l'infrastructure de test.
Choisir un chemin
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, . , -.
.