W tym artykule
Ogłoszenie wydania
Siedem aktualnych przeglądarek w Dockerze, jeden kontener na sesję, nagrania z dźwiękiem. Oto jak WebSummoner kontynuuje Selenoid, zarchiwizowany od grudnia 2024 roku, i dlaczego działa w samym sercu naszej własnej infrastruktury hostingowej.
Jeśli Państwa zespół uruchamia testy Selenium, najpewniej zetknęli się Państwo z Selenoid: niewielkim programem w Go, który dla każdej sesji testowej uruchamia świeżą przeglądarkę w kontenerze Docker, a po zakończeniu sesji ją usuwa. Szybki i lekki, przez lata był najprostszym sposobem na uruchomienie siatki przeglądarek na własnym sprzęcie. 17 grudnia 2024 roku autorzy zarchiwizowali repozytorium. Bez ogłoszenia i bez pożegnalnego wpisu: pojawił się tylko szary baner, który GitHub wyświetla przy projektach tylko do odczytu, i na tym koniec.
Sierpień 2016: pierwszy commit Selenoid w Aerokube
17 grudnia 2024: repozytorium zarchiwizowane, tylko do odczytu
Wrzesień 2026: WebSummoner 1.0.0, siedem aktualnych przeglądarek, migracja w jednej linii
Tamtego ranka nic się nie zepsuło i właśnie w tym tkwi problem. Zarchiwizowane narzędzie testowe niszczeje w tempie, na które nie mają Państwo wpływu: nowe wersje przeglądarek nigdy się nie pojawiają, sterowniki tracą zgodność, a pewnego dnia zestaw testów, który od lat świecił na zielono, zaczyna zawodzić z powodów niezwiązanych z Państwa aplikacją.
Open source nie kończy się wraz z repozytorium
Zarchiwizowanie repozytorium kończy jego utrzymanie, ale nie jego życie. Selenoid jest udostępniony na licencji Apache 2.0, która daje każdemu użytkownikowi trwałe prawo do modyfikowania go i rozpowszechniania: gdy autorzy projektu zajmują się czymś innym, kod pozostaje dostępny, a nowy opiekun może go dalej rozwijać. Aerokube stworzył Selenoid i rozwijał go przez osiem lat; decyzja o archiwizacji należała do nich, a zasługi za to, co w Selenoid się udało, pozostają ich zasługami. WebSummoner jest tą kontynuacją. Wychodzi od ostatniego commitu Selenoid, zachowuje projekt, który stanowił o jego jakości, i ma własną nazwę, organizację, obrazy i domenę. W RIADVICE używaliśmy Selenoid produkcyjnie już wcześniej, a jego kontynuacja była rozsądną decyzją, zarówno dla nas, jak i dla wszystkich, którzy na nim polegają.
WebSummoner 1.0.0 już dostępny: szybki hub Selenium, który przywołuje flotę przeglądarek do kontenerów Docker jako efemeryczne środowiska istniejące tylko przez czas sesji.
Dlaczego stworzyliśmy fork Selenoid, zamiast go zastąpić
Zdecydowaliśmy się na fork z dwóch powodów.
-
Nasza własna infrastruktura: WebSummoner jest częścią kręgosłupa infrastruktury hostingowej RIADVICE. Zależności produkcyjnej, która nie dostaje już aktualizacji przeglądarek, poprawek sterowników ani łatek bezpieczeństwa, nie mogliśmy zostawić w archiwum, a przejście na coś cięższego kosztowałoby więcej niż jej rzetelne utrzymanie.
-
Społeczność: zespoły na całym świecie przez lata budowały zestawy testów na Selenoid i zasłużyły na utrzymywaną kontynuację, a nie na powolny rozpad. Selenoid miał to, co najważniejsze: jeden plik binarny Go o rozmiarze około 10 MB, brak środowiska uruchomieniowego Javy, brak bazy danych, przeglądarkę startującą w około sekundę i jeden kontener na sesję, dzięki czemu nic nie przenika między testami.
Zachowaliśmy to wszystko, a resztę zaktualizowaliśmy: przeglądarki, sterowniki, obrazy bazowe i łańcuch narzędzi, zamrożone od 2024 roku. Selenoid to coś, co można nazwać oprogramowaniem skończonym: nie potrzebuje najnowszych funkcji, potrzebuje aktualnych przeglądarek, pasujących sterowników i regularnych poprawek, i właśnie tej pracy się podjęliśmy. Zgodność była pierwszą decyzją, a nie dodatkiem na końcu. Wszystko, co wysyła klient Selenoid, jest nadal akceptowane, na stałe.
Co nowego w wersji 1.0.0
Siedem przeglądarek, wszystkie aktualne
| Przeglądarka | Wersja |
|---|---|
| Chrome | 152 |
| Firefox | 155 |
| Edge | 152 |
| Opera (powrót) | 135 |
| Brave (nowość) | 1.94 |
| Yandex | 26.6 |
| Safari (WebKitGTK) (nowość) | 2.52.6 |
Każdy obraz przechodzi ten sam zestaw testów kontenerowych, uruchamiany w izolacji na opublikowanych obrazach. Dwa przypadki, z którymi nie radzą sobie same sterowniki, są udokumentowane jako pominięte, a nie ukryte. Trzy z tych przeglądarek są nowością samą w sobie. Brave i Safari są publikowane po raz pierwszy: Selenoid nigdy nie udostępnił obrazu Brave, a jego źródła Safari nigdy nie zostały wydane jako obraz. Opera wraca zza grobu: jej ostatni obraz Selenoid pochodzi z kwietnia 2024 roku, a od chwili, gdy projekt Selenium porzucił obsługę Opery, nie dało się jej używać z Selenium 4.
Brave dołącza do zestawu
Brave jest publikowany po raz pierwszy: Selenoid nigdy go nie udostępniał, a teraz stoi obok sześciu pozostałych jako pełnoprawny obraz. Brave numeruje wydania według własnego schematu, dlatego narzędzie budujące odczytuje wersję Chromium zawartą w każdym wydaniu i automatycznie dobiera do niej odpowiedni sterownik. Jeśli Państwa użytkownicy korzystają z Brave, mogą Państwo testować na nim dokładnie tak samo jak na Chrome: te same capabilities, ten sam podgląd ekranu na żywo, te same nagrania i ten sam zestaw testów zaliczony w ten sam sposób.
Opera znów działa
Selenium porzucił obsługę Opery w wersji 4.3.0, a powtarzane przez wszystkich obejście, czyli sterowanie Operą za pomocą chromedrivera Chrome for Testing, poprawnie otwiera sesje, ale potem wywołuje awarię renderera za każdym razem, gdy strona otwiera okno. Rozwiązaniem okazało się uważne przeczytanie komunikatu o błędzie: kontrola wersji w OperaDriver to ostrzeżenie, a nie odmowa. Własny sterownik Opery steruje nią poprawnie, a hub w Państwa imieniu prosi go o nowoczesny protokół.
Safari jako pełnoprawny cel
Safari również jest publikowane po raz pierwszy. Obraz to WebKitGTK, ten sam silnik, którego używa Safari, zbudowany ze źródeł: Selenoid zawierał pliki budowania, ale nigdy nie wydał obrazu, więc to pierwszy, który można pobrać. Dwie rzeczy, które nigdy z nim nie działały, czyli przesyłanie plików i capability proxy, obsługuje teraz sam hub, więc poprawka działa dla każdego obrazu, starego i nowego. Dwie pozostałe osobliwości wymagają po jednej linii w testach, a dokumentacja wskazuje, której.
Nagrania z dźwiękiem w każdej przeglądarce
Nagrania sesji niezawodnie rejestrują teraz dźwięk we wszystkich siedmiu przeglądarkach, więc nieudany test multimediów lub WebRTC nie jest już niemym filmem. Jeśli dźwięk nie jest potrzebny, wyłącza go jedno capability.
Stworzony z myślą o eksploatacji
Punkt końcowy Prometheus /metrics, sondy stanu odpowiadające na żądania HEAD, prawidłowy kod 429 przy pełnej kolejce, przesyłanie plików działające w każdym obrazie, podpisane obrazy wydań z zestawieniem komponentów oprogramowania (SBOM) i polityka bezpieczeństwa, która jasno wyjaśnia, co oznacza gniazdo Dockera.
Przebudowany interfejs
WebSummoner UI, czyli podgląd siatki na żywo z ekranem przeglądarki, logami i kolejką, został przebudowany od podstaw: przemyślany ciemny motyw, oficjalne logo przeglądarek, statystyki sesji i kolejki na żywo oraz rzetelne raportowanie stanu połączenia. Istniejące wiersze poleceń i pliki Compose nie wymagają zmian.
Nowoczesny łańcuch narzędzi
Go 1.27, Java 25 dla zestawu testów, React 19 dla interfejsu, Ubuntu 26.04 dla obrazów przeglądarek, aktualizacje zależności i skanowanie podatności w CI oraz dokumentacja z wyszukiwarką. Do zbudowania dowolnej części projektu potrzebny jest wyłącznie Docker. Load balancer dla klastrów z wieloma hubami i instalator uruchamiany jednym poleceniem rozwijały się razem z hubem.
Jeśli wybierają Państwo rozwiązanie dziś
Nie ma idealnego zamiennika dla tego, co robił Selenoid, ale są rozwiązania, które uczciwie pasują do konkretnych potrzeb.
Selenium Grid: implementacja referencyjna. Właściwy wybór, jeśli zależy Państwu na jej trybie rozproszonym i nie przeszkadza obciążenie związane z Javą.
Moon: wybór dla środowisk Kubernetes, o ile akceptują Państwo licencję komercyjną powyżej czterech równoległych sesji.
WebSummoner: dla hostów Docker i maszyn wirtualnych, gdy potrzebny jest mały, szybki hub z kompletem funkcji od razu.
Dokumentacja zawiera porównanie zweryfikowane na podstawie kodu źródłowego z Selenoid, Moon, Selenium Grid, Selenide, Playwright i Puppeteer, wraz ze wskazówkami, kiedy lepiej wybrać któreś z nich.
Migracja z Selenoid
Wystarczy skierować klientów na nowy hub. selenoid:options, nagłówki X-Selenoid-*, ścieżka /aerokube/..., cm selenoid start i flaga --selenoid-uri interfejsu nadal działają i będą działać dalej.
Jedyna zmiana: wewnątrz obrazu Docker konfiguracja została przeniesiona z /etc/selenoid do /etc/websummoner. Wystarczy zaktualizować ten punkt montowania.
Nasze zobowiązania
- Zgodność na stałe. Nazwy capabilities, nagłówki, ścieżki i polecenia Selenoid są akceptowane na zawsze, a nie oznaczone jako przestarzałe z terminem wycofania. Migracji, która kosztuje cały sprint, nikt nie przeprowadza.
- Aktualne przeglądarki. Obrazy podążają za stabilnymi wydaniami każdego producenta, każdy z pasującym do niego sterownikiem, i żaden obraz nie otrzymuje tagu, zanim nie przejdzie zestawu testów.
- Bezpieczeństwo na bieżąco. Zależności są aktualizowane co tydzień, każdy build przechodzi skanowanie podatności, a obraz huba jest podpisany i dostarczany z zestawieniem komponentów oprogramowania.
- Produkcja przede wszystkim. Sami korzystamy z WebSummoner. To, co wydajemy, to to, na czym sami polegamy.
- Dokumentacja, która mówi, co nie działa. Pełne informacje, łącznie z ograniczeniami, znajdują się w ogłoszeniu.
WebSummoner chce konkurować z największymi siatkami na polu, na którym wygrywa: szybkością, prostotą i kosztem utrzymania. Każda zmiana jest mierzona tą miarą.
Dostępny już teraz
websummoner \
-p 4444:4444 \
-v $PWD/browsers.json:/etc/websummoner/browsers.json:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
websummoner/websummoner:latestWystarczy skierować testy na http://localhost:4444/wd/hub. Pełne informacje o wydaniu, przewodnik migracji i dyskusja są w zasięgu jednego kliknięcia:
📣 Ogłoszenie wersji 1.0.0: pełne informacje o wydaniu i miejsce na pytania 📖 Dokumentacja: przewodniki, dokumentacja referencyjna i przewodnik migracji 💻 Kod źródłowy: Apache-2.0, w serwisie GitHub
Jeśli korzystali Państwo z Selenoid i coś w trakcie migracji nie działa zgodnie z oczekiwaniami, traktujemy to jako błąd, a nie pytanie do wsparcia. Jeśli utrzymują Państwo rozwiązanie zbudowane na Selenoid, prosimy o informację, a zadbamy o to, by nadal działało.
Flota przeglądarek przywołana do kontenerów Docker.
Szybki hub Selenium z efemerycznymi środowiskami istniejącymi tylko przez czas sesji.
Potrzebują Państwo pomocy we wdrożeniu WebSummoner w swojej organizacji?
WebSummoner jest rozwijany i utrzymywany przez RIADVICE na licencji Apache-2.0. Opiera się na Selenoid autorstwa Aerokube i Ivana Krutova oraz na oryginalnym interfejsie autorstwa Kirilla Merkusheva.





