HabrĂ© ya ha escrito más de una vez que Selenium Grid tiene problemas que no se pueden resolver de forma sencilla (por ejemplo: uno , dos , tres ). En este artĂculo, compartiremos nuestra experiencia y compartiremos cĂłmo en Wrike logramos construir un marco estable para las pruebas de Selenium.
TLDR: Escribimos nuestra propia soluciĂłn de cĂłdigo abierto y reemplazamos por completo Selenium Grid con ella.
Ya hemos hablado sobre cĂłmo escalamos nuestra granja de selenio con Google Cloud Engine y Kubernetes. Eliminamos las colas para el lanzamiento de pruebas, pero el departamento de control de calidad recibĂa regularmente quejas sobre la inestabilidad de la infraestructura de pruebas.
Elegir un camino
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, . , -.
.