Aller au contenu
Tous les articles

WebSummoner 1.0 : Selenoid ramené à la vie

par Ghazi Triki · 9 min de lecture

Lancement de WebSummoner
Dans cet article

Annonce de version

Sept navigateurs à jour dans Docker, un conteneur par session, des enregistrements avec le son. Découvrez comment WebSummoner prend la suite de Selenoid, archivé depuis décembre 2024, et pourquoi il fonctionne au cœur de notre propre infrastructure d’hébergement.

Si votre équipe exécute des tests Selenium, il y a de fortes chances que vous ayez croisé Selenoid : ce petit programme Go qui démarre un navigateur neuf dans un conteneur Docker pour chaque session de test, puis le supprime une fois la session terminée. Rapide, léger, il a été pendant des années le moyen le plus simple de faire fonctionner une grille de navigateurs sur votre propre matériel. Le 17 décembre 2024, ses auteurs ont archivé le dépôt. Ni annonce, ni message d’adieu : simplement le bandeau gris que GitHub affiche sur un projet en lecture seule, et ce fut tout.

Août 2016 : premier commit de Selenoid chez Aerokube

17 décembre 2024 : dépôt archivé, en lecture seule

Septembre 2026 : WebSummoner 1.0.0, sept navigateurs à jour, migration en une ligne

Rien n’a cassé ce matin-là, et c’est précisément là que réside le problème. Un outil de test archivé se dégrade selon un calendrier que vous ne maîtrisez pas : les nouvelles versions des navigateurs n’arrivent jamais, les pilotes divergent, et un jour, une suite de tests au vert depuis des années se met à échouer pour des raisons qui n’ont rien à voir avec votre application.

L’open source ne s’arrête pas avec un dépôt

Archiver un dépôt met fin à sa maintenance, pas à sa vie. Selenoid est publié sous licence Apache 2.0, qui accorde à chacun de ses utilisateurs le droit permanent de le modifier et de le redistribuer : lorsque les auteurs d’un projet passent à autre chose, le code reste disponible et un nouveau mainteneur peut le faire vivre. Aerokube a créé Selenoid et l’a porté pendant huit ans ; l’archiver était leur décision, et le mérite de ce que Selenoid a réussi leur revient. WebSummoner en est la continuation. Il part du dernier commit de Selenoid, conserve la conception qui en faisait la qualité, et porte son propre nom, sa propre organisation, ses propres images et son propre domaine. Nous utilisions déjà Selenoid en production chez RIADVICE, et le poursuivre était la décision la plus sensée, pour nous comme pour tous ceux qui en dépendent.

WebSummoner 1.0.0 est disponible : un hub Selenium rapide qui invoque une flotte de navigateurs dans des conteneurs Docker, sous forme d’environnements éphémères limités à la durée d’une session.

Pourquoi nous avons créé un fork de Selenoid plutôt que de le remplacer

Nous l’avons forké pour deux raisons.

  1. Notre propre infrastructure : WebSummoner fait partie de l’ossature de l’infrastructure d’hébergement de RIADVICE. Une dépendance de production qui ne reçoit plus de mises à jour de navigateurs, de correctifs de pilotes ni de correctifs de sécurité n’est pas quelque chose que nous pouvions laisser archivé, et la remplacer par une solution plus lourde aurait coûté davantage que de bien la maintenir.

  2. La communauté : des équipes du monde entier ont bâti des années de suites de tests sur Selenoid, et elles méritaient une continuation maintenue plutôt qu’un lent déclin. Selenoid avait vu juste sur l’essentiel : un binaire Go unique d’environ 10 Mo, aucun environnement d’exécution Java, aucune base de données, un navigateur qui démarre en une seconde environ, et un conteneur par session pour que rien ne fuite d’un test à l’autre.

Nous avons conservé tout cela et mis le reste à jour : navigateurs, pilotes, images de base et chaîne d’outils, tous figés depuis 2024. Selenoid relève de ce que l’on pourrait appeler un logiciel abouti : il n’a pas besoin de la dernière fonctionnalité à la mode, il a besoin de navigateurs à jour, de pilotes assortis et de correctifs réguliers, et c’est précisément le travail que nous nous sommes engagés à fournir. La compatibilité a été la première décision, et non une considération secondaire. Tout ce qu’un client Selenoid envoie reste accepté, de façon permanente.

Les nouveautés de la 1.0.0

Sept navigateurs, tous à jour

NavigateurVersion
Chrome152
Firefox155
Edge152
Opera (de retour)135
Brave (nouveau)1.94
Yandex26.6
Safari (WebKitGTK) (nouveau)2.52.6

Chaque image passe la même suite de tests de conteneurs, exécutée de manière isolée sur les images publiées. Les deux cas que les pilotes eux-mêmes ne savent pas gérer sont documentés comme ignorés, et non dissimulés. Trois de ces navigateurs constituent une nouveauté à eux seuls. Brave et Safari sont publiés pour la première fois : Selenoid n’a jamais livré d’image Brave, et ses sources Safari n’ont jamais été publiées sous forme d’image. Opera revient d’entre les morts : sa dernière image Selenoid date d’avril 2024, et il était inutilisable avec Selenium 4 depuis que le projet avait abandonné la prise en charge d’Opera.

Brave rejoint la gamme

Brave est publié pour la première fois : Selenoid ne l’a jamais livré, et il figure désormais aux côtés des six autres en tant qu’image à part entière. Brave numérote ses versions selon sa propre échelle : l’outil de compilation lit donc la version de Chromium intégrée à chaque version et l’associe automatiquement au pilote correspondant. Si vos utilisateurs naviguent avec Brave, vous pouvez le tester exactement comme vous testez Chrome : les mêmes capacités, le même écran en direct, les mêmes enregistrements, et la même suite réussie de la même manière.

Opera fonctionne de nouveau

Selenium a abandonné la prise en charge d’Opera dans la version 4.3.0, et le contournement que tout le monde répète, piloter Opera avec un chromedriver Chrome-for-Testing, ouvre correctement les sessions mais fait ensuite planter le moteur de rendu dès qu’une page ouvre une fenêtre. La solution consistait à lire correctement le message d’erreur : la vérification de version d’OperaDriver est un avertissement, pas un refus. Le pilote propre à Opera le pilote correctement, et le hub lui demande d’utiliser le protocole moderne à votre place.

Safari, une cible à part entière

Safari est lui aussi publié pour la première fois. L’image repose sur WebKitGTK, le même moteur que celui de Safari, compilé à partir des sources : Selenoid disposait des fichiers de compilation mais n’a jamais publié d’image, celle-ci est donc la première que vous pouvez télécharger. Deux fonctions qui n’ont jamais fonctionné avec ce navigateur, le téléversement de fichiers et la capacité proxy, sont désormais prises en charge par le hub lui-même : le correctif s’applique donc à toutes les images, anciennes comme nouvelles. Les deux particularités restantes nécessitent chacune une ligne dans vos tests, et la documentation précise laquelle.

Des enregistrements avec le son, sur tous les navigateurs

Les enregistrements de session capturent désormais l’audio de manière fiable sur les sept navigateurs : un test multimédia ou WebRTC en échec ne se résume plus à une vidéo muette. Si vous ne souhaitez pas de son, une seule capacité suffit à le désactiver.

Conçu pour l’exploitation

Un point de terminaison Prometheus /metrics, des sondes de santé qui répondent aux requêtes HEAD, un véritable code 429 lorsque la file d’attente est pleine, un téléversement de fichiers qui fonctionne sur toutes les images, des images de version signées accompagnées d’une nomenclature logicielle (SBOM), et une politique de sécurité qui explique clairement ce qu’implique le socket Docker.

Une interface entièrement refaite

WebSummoner UI, la vue en direct de votre grille avec l’écran du navigateur, les journaux et la file d’attente, a été entièrement reconstruite : un thème sombre soigné, les logos officiels des navigateurs, des statistiques en direct sur les sessions et la file d’attente, et un état de connexion fidèle à la réalité. Les lignes de commande et les fichiers Compose existants ne nécessitent aucune modification.

Une chaîne d’outils moderne

Go 1.27, Java 25 pour la suite de tests, React 19 pour l’interface, Ubuntu 26.04 pour les images de navigateurs, mises à jour des dépendances et contrôles de vulnérabilités dans la CI, et un site de documentation avec recherche. Compiler n’importe quelle partie du projet ne nécessite que Docker. L’équilibreur de charge pour les clusters à plusieurs hubs et l’installateur en une commande ont évolué en même temps que le hub.

Si vous faites votre choix aujourd’hui

Il n’existe pas de substitut parfait à ce que faisait Selenoid, mais il existe des options adaptées, présentées honnêtement.

Selenium Grid : l’implémentation de référence. Le bon choix si vous voulez son mode distribué et que l’empreinte de Java ne vous dérange pas.

Moon : le choix qui s’impose si vous travaillez sur Kubernetes et acceptez une licence commerciale au-delà de quatre sessions parallèles.

WebSummoner : pour les hôtes Docker et les machines virtuelles, lorsque vous recherchez un hub léger, rapide et complet dès l’installation.

La documentation tient à jour une comparaison vérifiée à la source avec Selenoid, Moon, Selenium Grid, Selenide, Playwright et Puppeteer, qui précise notamment quand il vaut mieux les choisir.

Migrer depuis Selenoid

Pointez vos clients vers le nouveau hub. selenoid:options, les en-têtes X-Selenoid-*, le chemin /aerokube/..., cm selenoid start et l’option --selenoid-uri de l’interface fonctionnent toujours, et continueront de fonctionner.

L’unique changement : dans l’image Docker, la configuration est passée de /etc/selenoid à /etc/websummoner. Mettez à jour ce montage, et c’est terminé.

Nos engagements

  • La compatibilité, de façon permanente. Les noms de capacités, en-têtes, chemins et commandes de Selenoid sont acceptés définitivement, et non dépréciés avec un compte à rebours. Une migration qui coûte un sprint est une migration que personne n’entreprend.
  • Des navigateurs à jour. Les images suivent les versions stables de chaque éditeur, chacune avec le pilote correspondant, et aucune image n’est étiquetée avant d’avoir passé la suite de tests.
  • Une sécurité maintenue. Les dépendances sont mises à jour chaque semaine, chaque compilation fait l’objet d’un contrôle de vulnérabilités, et l’image du hub est signée et livrée avec une nomenclature logicielle (SBOM).
  • La production d’abord. Nous utilisons nous-mêmes WebSummoner. Ce que nous livrons est ce dont nous dépendons.
  • Une documentation qui dit ce qui ne fonctionne pas. Les notes complètes, limitations comprises, figurent dans l’annonce.

WebSummoner entend rivaliser avec les plus grandes grilles sur le terrain où il l’emporte : la rapidité, la simplicité et le coût d’exploitation. Chaque modification est évaluée à l’aune de cette exigence.

Disponible dès maintenant

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

Pointez vos tests vers http://localhost:4444/wd/hub. Les notes de version complètes, le guide de migration et les échanges sont à portée de clic :

📣 L’annonce de la 1.0.0 : les notes de version complètes et l’espace pour poser vos questions 📖 Documentation : guides, référence et guide de migration 💻 Code source : Apache-2.0, sur GitHub

Si vous utilisiez Selenoid et que quelque chose ne se comporte pas comme prévu lors de la migration, c’est pour nous un bogue, et non une question d’assistance. Si vous mainteniez un outil reposant sur Selenoid, faites-le-nous savoir, et nous veillerons à ce qu’il continue de fonctionner.

Invoquez une flotte de navigateurs dans des conteneurs Docker.

Un hub Selenium rapide, avec des environnements éphémères limités à la durée d’une session.

Besoin d’aide pour déployer WebSummoner dans votre organisation ?

Contactez-nous

WebSummoner est développé et maintenu par RIADVICE sous licence Apache-2.0. Il s’appuie sur Selenoid, créé par Aerokube et Ivan Krutov, et sur l’interface d’origine conçue par Kirill Merkushev.

Partager cet article