Оди на содржината
Сите статии

WebSummoner 1.0: Selenoid повторно оживеан

од Ghazi Triki · 8 мин. читање

Издание на WebSummoner 1.0
Во оваа статија

Најава за издание

Седум актуелни прелистувачи во Docker, еден контејнер по сесија, снимки со звук. Дознајте како WebSummoner го продолжува Selenoid, архивиран од декември 2024 година, и зошто работи во срцето на нашата сопствена хостинг-инфраструктура.

Ако вашиот тим извршува тестови со Selenium, многу е веројатно дека веќе сте се сретнале со Selenoid: малата програма напишана во Go што за секоја тест-сесија стартува свеж прелистувач во Docker контејнер, а потоа го отфрла. Брз, лесен и со години наједноставниот начин да водите мрежа од прелистувачи на сопствен хардвер. На 17 декември 2024 година, неговите автори го архивираа репозиториумот. Без најава, без збогување: само сивиот банер што GitHub го става на проект што е само за читање, и толку.

Август 2016 Првиот комит на Selenoid во Aerokube

17 декември 2024 Репозиториумот е архивиран, само за читање

Септември 2026 WebSummoner 1.0.0: седум актуелни прелистувачи, миграција со една линија

Тоа утро ништо не се расипа, и токму тоа е проблемот. Архивирана алатка за тестирање пропаѓа со темпо што не го контролирате: новите верзии на прелистувачите никогаш не стигнуваат, драјверите заостануваат и еден ден збир тестови што со години бил зелен почнува да паѓа од причини што немаат никаква врска со вашата апликација.

Отворениот код не завршува со репозиториумот

Архивирањето на репозиториумот го завршува неговото одржување, а не неговиот живот. Selenoid е објавен под лиценцата Apache 2.0, која на секој што го користи му дава трајно право да го менува и повторно да го дистрибуира: кога авторите на проектот ќе продолжат понатаму, кодот останува достапен и нов одржувач може да го носи напред. Aerokube го изгради Selenoid и го одржуваше осум години; архивирањето беше нивна одлука, а заслугата за она што Selenoid го направи добро останува нивна. WebSummoner е тоа продолжение. Започнува од последниот комит на Selenoid, го задржува дизајнот што го направи добар и има сопствено име, организација, слики и домен. Во RIADVICE веќе го користевме Selenoid во продукција, а неговото продолжување беше разумна одлука, за нас и за сите други што зависат од него.

Излезе WebSummoner 1.0.0: брз Selenium-хаб што повикува цела флота прелистувачи во Docker контејнери, како привремени околини ограничени на сесијата.

Зошто направивме форк на Selenoid наместо да го замениме

Направивме форк од две причини.

  1. Нашата сопствена инфраструктура. WebSummoner е дел од ’рбетот на хостинг-инфраструктурата на RIADVICE. Продукциска зависност што повеќе не добива ажурирања на прелистувачите, поправки на драјверите или безбедносни закрпи не е нешто што можевме да го оставиме архивирано, а преминот кон нешто потешко ќе чинеше повеќе отколку доброто одржување.

  2. Заедницата. Тимовите ширум светот со години градеа збирки тестови врз Selenoid и заслужуваа одржувано продолжение, а не бавно пропаѓање. Selenoid ги направи важните работи добро: една бинарна датотека на Go од околу 10 MB, без Java-околина за извршување, без база на податоци, прелистувач што стартува за околу една секунда и еден контејнер по сесија, па ништо не протекува меѓу тестовите.

Сето тоа го задржавме, а остатокот го ажуриравме: прелистувачите, драјверите, основните слики и алатките, сите замрзнати од 2024 година. Selenoid е она што може да се нарече завршен софтвер: не му треба најновата функција, му требаат актуелни прелистувачи, соодветни драјвери и постојани поправки, а токму таа работа ја презедовме. Компатибилноста беше првата одлука, а не дополнителна мисла. Сѐ што испраќа клиент на Selenoid и понатаму се прифаќа, трајно.

Што е ново во 1.0.0

Седум прелистувачи, сите актуелни

ПрелистувачВерзија
Chrome152
Firefox155
Edge152
Opera (повторно)135
Brave (ново)1.94
Yandex26.6
Safari (WebKitGTK) (ново)2.52.6

Секоја слика минува низ истиот збир тестови за контејнери, извршени изолирано врз објавените слики. Двата случаи што самите драјвери не можат да ги обработат се документирани како прескокнати, а не скриени. Три од нив се вест сами по себе. Brave и Safari се објавуваат за првпат: Selenoid никогаш не издал слика за Brave, а неговите извори за Safari никогаш не биле објавени како слика. Opera се враќа од мртвите: нејзината последна слика за Selenoid е од април 2024 година, а беше неупотреблива со Selenium 4 откако проектот ја укина поддршката за Opera.

Brave се приклучува

Brave се објавува за првпат: Selenoid никогаш не го издал, а сега стои рамо до рамо со другите шест како првокласна слика. Brave ги нумерира изданијата според сопствена скала, па алатката за градење ја чита верзијата на Chromium вградена во секое издание и автоматски ја спарува со соодветниот драјвер. Ако вашите корисници прелистуваат со Brave, можете да тестирате на него исто како на Chrome: истите можности, истиот екран во живо, истите снимки и истиот збир тестови, поминат на ист начин.

Opera повторно работи

Selenium ја укина поддршката за Opera во 4.3.0, а заобиколното решение што сите го повторуваат, управување со Opera преку chromedriver од Chrome for Testing, ги стартува сесиите без проблем, а потоа го руши рендерерот секогаш кога страницата ќе отвори прозорец. Решението беше внимателно да се прочита пораката за грешка: проверката на верзијата во OperaDriver е предупредување, а не одбивање. Сопствениот драјвер на Opera правилно управува со неа, а хабот наместо вас го бара современиот протокол.

Safari е првокласна цел

И Safari се објавува за првпат. Сликата е WebKitGTK, истиот механизам што го користи Safari, изграден од изворниот код: Selenoid ги содржеше датотеките за градење, но никогаш не објави слика, па ова е првата што можете да ја преземете. Две работи што никогаш не работеа со неа, прикачувањето датотеки и можноста за прокси, сега ги обработува самиот хаб, па поправката важи за секоја слика, стара или нова. Двете преостанати особености бараат по една линија во вашите тестови, а документацијата наведува кои.

Снимки со звук, на секој прелистувач

Снимките од сесиите сега сигурно го снимаат звукот на сите седум прелистувачи, па неуспешен тест за медиуми или за WebRTC веќе не е немо видео. Ако не сакате звук, една можност го исклучува.

Изграден за оперативна работа

Крајна точка /metrics за Prometheus, проверки на состојбата што одговараат на барања HEAD, вистински 429 кога редицата е полна, прикачување датотеки што работи на секоја слика, потпишани слики на изданијата со софтверска листа на материјали (SBOM) и безбедносна политика што јасно наведува што значи Docker-приклучокот.

Повторно изграден кориснички интерфејс

WebSummoner UI, приказот во живо на вашата мрежа со екранот на прелистувачот, дневниците и редицата, е повторно изграден од темел: промислена темна тема, официјални логоа на прелистувачите, статистика во живо за сесиите и редицата и искрено известување за врската. Постојните командни линии и Compose-датотеки не бараат никаква промена.

Современи алатки

Go 1.27, Java 25 за збирот тестови, React 19 за интерфејсот, Ubuntu 26.04 за сликите на прелистувачите, ажурирања на зависностите и проверки за ранливости во CI и документација во која може да се пребарува. За градење на кој било дел од проектот е потребен Docker и ништо друго. Балансерот на оптоварување за кластери со повеќе хабови и инсталаторот со една команда напредуваа заедно со хабот.

Ако избирате денес

Не постои совршена замена за она што го правеше Selenoid, но постојат искрени алтернативи.

Selenium Grid Референтната имплементација. Вистинскиот избор ако ви треба неговиот дистрибуиран режим и не ви пречи тежината на Java.

Moon Изборот ако работите на Kubernetes и прифаќате комерцијална лиценца над четири паралелни сесии.

WebSummoner За Docker-домаќини и виртуелни машини, кога сакате мал, брз хаб со сѐ што е потребно вклучено.

Документацијата содржи споредба проверена врз изворниот код со Selenoid, Moon, Selenium Grid, Selenide, Playwright и Puppeteer, вклучително и кога наместо него да изберете некој од нив.

Миграција од Selenoid

Насочете ги вашите клиенти кон новиот хаб. selenoid:options, заглавијата X-Selenoid-*, патеката /aerokube/..., cm selenoid start и знаменцето --selenoid-uri на интерфејсот и понатаму работат и ќе продолжат да работат.

Единствената промена: во Docker-сликата конфигурацијата е преместена од /etc/selenoid во /etc/websummoner. Ажурирајте го тоа монтирање и готово.

На што се обврзуваме

  • Компатибилност, трајно. Имињата на можностите, заглавијата, патеките и командите на Selenoid се прифаќаат засекогаш, а не се означени како застарени со рок. Миграција што чини цел спринт не е миграција што некој би ја направил.
  • Актуелни прелистувачи. Сликите ги следат стабилните изданија на секој производител, секоја со драјверот што одговара на неа, и ниту една слика не се означува пред да го помине збирот тестови.
  • Ажурна безбедност. Зависностите се ажурираат неделно, секое градење извршува проверка за ранливости, а сликата на хабот е потпишана и доаѓа со софтверска листа на материјали.
  • Продукцијата на прво место. И ние самите го користиме WebSummoner. Она што го објавуваме е она од што зависиме.
  • Документација што кажува што не работи. Целосните белешки, вклучително и ограничувањата, се во најавата.

WebSummoner има за цел да се натпреварува со најголемите мрежи таму каде што победува: брзина, едноставност и трошоци за работа. Секоја промена се мери според тој стандард.

Достапен веднаш

Shell
websummoner \
    -p 4444:4444 \
    -v $PWD/browsers.json:/etc/websummoner/browsers.json:ro \
    -v /var/run/docker.sock:/var/run/docker.sock \
    websummoner/websummoner:latest

Насочете ги вашите тестови кон http://localhost:4444/wd/hub. Целосните белешки за изданието, водичот за миграција и разговорот се на само еден клик:

📣 Најавата за 1.0.0 Целосните белешки за изданието и местото за прашања 📖 Документација Водичи, референца и водич за миграција 💻 Изворен код Apache-2.0, на GitHub

Ако сте користеле Selenoid и нешто при миграцијата не се однесува како што треба, за нас тоа е грешка, а не прашање за поддршка. Ако сте одржувале нешто врз Selenoid, кажете ни и ќе се погрижиме и понатаму да работи.

Повикајте цела флота прелистувачи во Docker контејнери.

Брз Selenium-хаб со привремени околини ограничени на сесијата.

Ви треба помош за користење на WebSummoner во вашата организација?

Контактирајте нѐ

WebSummoner го развива и одржува RIADVICE под лиценцата Apache-2.0. Се потпира на Selenoid од Aerokube и Ivan Krutov и на оригиналниот кориснички интерфејс од Kirill Merkushev.

Споделете ја статијата