Vai al contenuto
Tutti gli articoli

WebSummoner 1.0: Selenoid riportato in vita

di Ghazi Triki · 9 min di lettura

Rilascio di WebSummoner 1.0
In questo articolo

Annuncio di rilascio

Sette browser aggiornati in Docker, un container per sessione, registrazioni con audio. Scopra come WebSummoner prosegue Selenoid, archiviato da dicembre 2024, e perché è al centro della nostra infrastruttura di hosting.

Se il suo team esegue test Selenium, è molto probabile che abbia incontrato Selenoid: il piccolo programma Go che avvia un browser nuovo in un container Docker per ogni sessione di test e lo elimina subito dopo. Veloce, leggero e per anni il modo più semplice per gestire una grid di browser sul proprio hardware. Il 17 dicembre 2024 i suoi autori hanno archiviato il repository. Nessun annuncio, nessun messaggio di commiato: solo il banner grigio che GitHub applica ai progetti in sola lettura, e tutto è finito lì.

Agosto 2016: primo commit di Selenoid presso Aerokube

17 dicembre 2024: repository archiviato, in sola lettura

Settembre 2026: WebSummoner 1.0.0, sette browser aggiornati, migrazione in una riga

Quella mattina non si è rotto nulla, ed è proprio questo il problema. Uno strumento di test archiviato si degrada secondo tempi che non dipendono da lei: le nuove versioni dei browser non arrivano più, i driver restano indietro e un giorno una suite verde da anni comincia a fallire per ragioni che non hanno nulla a che vedere con la sua applicazione.

L’open source non finisce con un repository

Archiviare un repository ne chiude la manutenzione, non la vita. Selenoid è distribuito con licenza Apache 2.0, che concede a chiunque lo utilizzi il diritto permanente di modificarlo e ridistribuirlo: quando gli autori di un progetto si dedicano ad altro, il codice resta disponibile e un nuovo maintainer può portarlo avanti. Aerokube ha creato Selenoid e lo ha sostenuto per otto anni; archiviarlo era una loro decisione, e il merito di ciò che Selenoid ha fatto bene resta loro. WebSummoner è questa prosecuzione. Parte dall’ultimo commit di Selenoid, conserva il design che lo rendeva valido e ha un nome, un’organizzazione, immagini e un dominio propri. In RIADVICE usavamo già Selenoid in produzione, e proseguirlo era la scelta sensata, per noi e per tutti coloro che ne dipendono.

WebSummoner 1.0.0 è disponibile: un hub Selenium veloce che evoca una flotta di browser in container Docker, come ambienti effimeri legati alla singola sessione.

Perché abbiamo fatto un fork di Selenoid invece di sostituirlo

Lo abbiamo fatto per due ragioni.

  1. La nostra infrastruttura. WebSummoner è parte della spina dorsale dell’infrastruttura di hosting di RIADVICE. Una dipendenza di produzione che non riceve più aggiornamenti dei browser, correzioni dei driver o patch di sicurezza non era qualcosa che potessimo lasciare archiviato, e passare a una soluzione più pesante sarebbe costato più che mantenerla come si deve.

  2. La comunità. Team di tutto il mondo hanno costruito anni di suite di test su Selenoid, e meritavano una prosecuzione mantenuta anziché un lento declino. Selenoid aveva fatto bene le cose importanti: un unico binario Go di circa 10 MB, nessun runtime Java, nessun database, un browser che si avvia in circa un secondo e un container per sessione, così che nulla trapeli da un test all’altro.

Abbiamo conservato tutto questo e aggiornato il resto: browser, driver, immagini di base e toolchain, tutti fermi dal 2024. Selenoid è ciò che si potrebbe definire un software compiuto: non ha bisogno dell’ultima funzionalità, ha bisogno di browser aggiornati, di driver corrispondenti e di correzioni costanti, ed è questo il lavoro di cui ci siamo fatti carico. La compatibilità è stata la prima decisione, non un ripensamento. Tutto ciò che un client Selenoid invia è ancora accettato, in modo permanente.

Le novità della 1.0.0

Sette browser, tutti aggiornati

BrowserVersione
Chrome152
Firefox155
Edge152
Opera (di ritorno)135
Brave (novità)1.94
Yandex26.6
Safari (WebKitGTK) (novità)2.52.6

Ogni immagine supera la stessa suite di test dei container, eseguita in isolamento sulle immagini pubblicate. I due casi che i driver stessi non sono in grado di gestire sono documentati come test saltati, non nascosti. Tre di questi browser sono una notizia di per sé. Brave e Safari vengono pubblicati per la prima volta: Selenoid non ha mai distribuito un’immagine Brave, e i suoi sorgenti Safari non sono mai stati rilasciati come immagine. Opera torna dall’oltretomba: la sua ultima immagine Selenoid risale ad aprile 2024 ed era inutilizzabile con Selenium 4 da quando il progetto aveva abbandonato il supporto a Opera.

Brave entra nella gamma

Brave viene pubblicato per la prima volta: Selenoid non lo ha mai distribuito, e ora affianca gli altri sei come immagine a pieno titolo. Brave numera le proprie versioni secondo una scala sua, perciò lo strumento di build legge la versione di Chromium incorporata in ogni release e la abbina automaticamente al driver corrispondente. Se i suoi utenti navigano con Brave, può testarlo esattamente come testa Chrome: le stesse capability, la stessa schermata dal vivo, le stesse registrazioni e la stessa suite superata nello stesso modo.

Opera funziona di nuovo

Selenium ha abbandonato il supporto a Opera con la versione 4.3.0, e il workaround che tutti ripetono, pilotare Opera con un chromedriver Chrome-for-Testing, avvia le sessioni senza problemi ma poi manda in crash il renderer ogni volta che una pagina apre una finestra. La soluzione è stata leggere con attenzione il messaggio di errore: il controllo di versione di OperaDriver è un avviso, non un rifiuto. Il driver di Opera lo pilota correttamente, e l’hub gli richiede il protocollo moderno per conto suo.

Safari è un target a pieno titolo

Anche Safari viene pubblicato per la prima volta. L’immagine è WebKitGTK, lo stesso motore di Safari, compilato dai sorgenti: Selenoid conteneva i file di build ma non ha mai rilasciato un’immagine, quindi questa è la prima che si può scaricare. Due funzioni che non avevano mai funzionato, il caricamento dei file e la capability proxy, sono ora gestite direttamente dall’hub, quindi la correzione vale per qualsiasi immagine, vecchia o nuova. Le due particolarità rimanenti richiedono ciascuna una sola riga nei test, e la documentazione indica quale.

Registrazioni con audio, su ogni browser

Le registrazioni delle sessioni ora acquisiscono l’audio in modo affidabile su tutti e sette i browser, così un test multimediale o WebRTC che fallisce non è più un video muto. Se non desidera l’audio, basta una capability per disattivarlo.

Pensato per l’esercizio

Un endpoint Prometheus /metrics, sonde di stato che rispondono alle richieste HEAD, un vero 429 quando la coda è piena, un caricamento dei file che funziona su ogni immagine, immagini di rilascio firmate con una distinta base del software (SBOM) e una policy di sicurezza che spiega chiaramente che cosa comporta il socket Docker.

Un’interfaccia ricostruita

WebSummoner UI, la vista dal vivo della grid con la schermata del browser, i log e la coda, è stata ricostruita da zero: un tema scuro curato, i loghi ufficiali dei browser, statistiche in tempo reale su sessioni e coda e un’indicazione fedele dello stato di connessione. Le righe di comando e i file Compose esistenti non richiedono alcuna modifica.

Una toolchain moderna

Go 1.27, Java 25 per la suite di test, React 19 per l’interfaccia, Ubuntu 26.04 per le immagini dei browser, aggiornamenti delle dipendenze e controlli delle vulnerabilità nella CI, e un sito di documentazione con ricerca. Per compilare qualsiasi parte del progetto basta Docker, nient’altro. Il load balancer per i cluster multi-hub e l’installer a comando singolo sono stati aggiornati insieme all’hub.

Se deve scegliere oggi

Non esiste un sostituto perfetto di ciò che faceva Selenoid, ma esistono alternative adatte, valutate con onestà.

Selenium Grid: l’implementazione di riferimento. La scelta giusta se le serve la sua modalità distribuita e l’impronta di Java non la preoccupa.

Moon: la scelta se lavora su Kubernetes e accetta una licenza commerciale oltre le quattro sessioni parallele.

WebSummoner: per host Docker e macchine virtuali, quando ciò che cerca è un hub piccolo, veloce e completo di tutto.

La documentazione mantiene un confronto verificato sui sorgenti con Selenoid, Moon, Selenium Grid, Selenide, Playwright e Puppeteer, che indica anche quando preferire queste alternative.

Migrare da Selenoid

Punti i suoi client verso il nuovo hub. selenoid:options, gli header X-Selenoid-*, il percorso /aerokube/..., cm selenoid start e il flag --selenoid-uri dell’interfaccia funzionano ancora, e continueranno a funzionare.

L’unica modifica: all’interno dell’immagine Docker la configurazione è passata da /etc/selenoid a /etc/websummoner. Aggiorni quel mount e avrà finito.

I nostri impegni

  • Compatibilità, in modo permanente. I nomi delle capability, gli header, i percorsi e i comandi di Selenoid sono accettati per sempre, non deprecati con una scadenza. Una migrazione che costa uno sprint è una migrazione che nessuno fa.
  • Browser aggiornati. Le immagini seguono le release stabili di ciascun produttore, ognuna con il driver corrispondente, e nessuna immagine riceve un tag prima di aver superato la suite.
  • Sicurezza sempre aggiornata. Le dipendenze vengono aggiornate ogni settimana, ogni build esegue un controllo delle vulnerabilità e l’immagine dell’hub è firmata e distribuita con una distinta base del software (SBOM).
  • La produzione prima di tutto. Usiamo WebSummoner noi stessi. Ciò che rilasciamo è ciò da cui dipendiamo.
  • Una documentazione che dice ciò che non funziona. Le note complete, limitazioni comprese, sono nell’annuncio.

WebSummoner intende competere con le grid più grandi sul terreno in cui vince: velocità, semplicità e costo di esercizio. Ogni modifica viene misurata rispetto a questo criterio.

Disponibile ora

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

Punti i suoi test verso http://localhost:4444/wd/hub. Le note di rilascio complete, la guida alla migrazione e la discussione sono a portata di clic:

📣 L’annuncio della 1.0.0: le note di rilascio complete e lo spazio per le domande 📖 Documentazione: guide, riferimento e guida alla migrazione 💻 Codice sorgente: Apache-2.0, su GitHub

Se usava Selenoid e qualcosa nella migrazione non si comporta come previsto, per noi è un bug, non una richiesta di supporto. Se ha mantenuto qualcosa basato su Selenoid, ce lo dica, e faremo in modo che continui a funzionare.

Evochi una flotta di browser in container Docker.

Un hub Selenium veloce con ambienti effimeri legati alla singola sessione.

Ha bisogno di aiuto per adottare WebSummoner nella sua organizzazione?

Ci contatti

WebSummoner è sviluppato e mantenuto da RIADVICE con licenza Apache-2.0. Si basa su Selenoid, creato da Aerokube e Ivan Krutov, e sull’interfaccia originale di Kirill Merkushev.

Condivida questo articolo