(:例えばHabréは、すでに多くのセレングリッドは、単純な方法で解決できない問題があることを何度も書いている1、2、3を)。この記事では、私たちの経験を共有し、WrikeでSeleniumテストの安定したフレームワークを構築する方法を共有します。
TLDR:独自のオープンソースソリューションを作成し、SeleniumGridを完全に置き換えました。
我々はすでにしている話を、我々はGoogleクラウドエンジンとKubernetesを使用して、当社のセレンファームをスケールされたかについて。テストを開始するためのキューを削除しましたが、QA部門は、テストインフラストラクチャの不安定性に関する苦情を定期的に受け取りました。
パスの選択
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, . , -.
.