Saltar para o conteúdo
Todos os artigos

WebSummoner 1.0: o Selenoid regressa à vida

por Ghazi Triki · 9 min de leitura

Lançamento do WebSummoner 1.0
Neste artigo

Anúncio de lançamento

Sete navegadores atuais em Docker, um contentor por sessão, gravações com som. Descubra como o WebSummoner dá continuidade ao Selenoid, arquivado desde dezembro de 2024, e porque funciona no centro da nossa própria infraestrutura de alojamento.

Se a sua equipa executa testes Selenium, é provável que já conheça o Selenoid: o pequeno programa em Go que inicia um navegador novo num contentor Docker para cada sessão de teste e o descarta no fim. Rápido, leve e, durante anos, a forma mais simples de ter uma grelha de navegadores no seu próprio hardware. A 17 de dezembro de 2024, os seus autores arquivaram o repositório. Sem anúncio, sem mensagem de despedida: apenas a faixa cinzenta que o GitHub coloca num projeto só de leitura, e mais nada.

Agosto de 2016: primeiro commit do Selenoid na Aerokube

17 de dezembro de 2024: repositório arquivado, só de leitura

Setembro de 2026: WebSummoner 1.0.0, sete navegadores atuais, migração numa linha

Nada deixou de funcionar nessa manhã, e é precisamente esse o problema. Uma ferramenta de testes arquivada degrada-se a um ritmo que não controla: as novas versões dos navegadores nunca chegam, os drivers desalinham-se e, um dia, uma bateria de testes que está verde há anos começa a falhar por razões que nada têm a ver com a sua aplicação.

O código aberto não acaba com um repositório

Arquivar um repositório põe fim à sua manutenção, não à sua vida. O Selenoid é distribuído sob a licença Apache 2.0, que dá a todos os seus utilizadores o direito permanente de o modificar e redistribuir: quando os autores de um projeto seguem outro caminho, o código continua disponível e um novo responsável pode levá-lo por diante. A Aerokube criou o Selenoid e manteve-o durante oito anos; arquivá-lo foi uma decisão que lhe cabia, e o mérito de tudo o que o Selenoid fez bem continua a ser seu. O WebSummoner é essa continuação. Parte do último commit do Selenoid, mantém o design que o tornou bom e tem nome, organização, imagens e domínio próprios. Já utilizávamos o Selenoid em produção na RIADVICE, e dar-lhe continuidade foi a decisão sensata, para nós e para todos os que dependem dele.

O WebSummoner 1.0.0 já está disponível: um hub Selenium rápido que invoca uma frota de navegadores em contentores Docker, como ambientes efémeros, limitados a cada sessão.

Porque fizemos um fork do Selenoid em vez de o substituir

Fizemo-lo por duas razões.

  1. A nossa própria infraestrutura. O WebSummoner faz parte da espinha dorsal da infraestrutura de alojamento da RIADVICE. Uma dependência de produção que deixou de receber atualizações de navegadores, correções de drivers e patches de segurança não é algo que pudéssemos deixar arquivado, e passar para uma solução mais pesada teria custado mais do que mantê-la bem.

  2. A comunidade. Equipas em todo o mundo construíram durante anos baterias de testes sobre o Selenoid e mereciam uma continuação mantida, e não um declínio lento. O Selenoid acertou no essencial: um único binário Go de cerca de 10 MB, sem runtime Java, sem base de dados, um navegador que arranca em cerca de um segundo e um contentor por sessão, para que nada passe de um teste para outro.

Mantivemos tudo isso e atualizámos o resto: navegadores, drivers, imagens de base e cadeia de ferramentas, tudo congelado desde 2024. O Selenoid é aquilo a que se pode chamar um software concluído: não precisa da funcionalidade mais recente, precisa de navegadores atuais, de drivers correspondentes e de correções regulares, e foi esse o trabalho que assumimos. A compatibilidade foi a primeira decisão, não um pormenor tratado no fim. Tudo o que um cliente Selenoid envia continua a ser aceite, de forma permanente.

Novidades da versão 1.0.0

Sete navegadores, todos atuais

NavegadorVersão
Chrome152
Firefox155
Edge152
Opera de volta135
Brave novo1.94
Yandex26.6
Safari (WebKitGTK) novo2.52.6

Todas as imagens passam a mesma bateria de testes de contentores, executada de forma isolada sobre as imagens publicadas. Os dois casos que os próprios drivers não conseguem tratar estão documentados como testes ignorados, e não escondidos. Três destas imagens são, por si só, uma novidade. O Brave e o Safari são publicados pela primeira vez: o Selenoid nunca disponibilizou uma imagem Brave, e as suas fontes Safari nunca foram publicadas como imagem. O Opera regressa: a sua última imagem Selenoid data de abril de 2024 e era inutilizável com o Selenium 4 desde que o projeto deixou de suportar o Opera.

O Brave junta-se à gama

O Brave é publicado pela primeira vez: o Selenoid nunca o disponibilizou, e passa agora a figurar ao lado dos outros seis como imagem de primeira linha. O Brave numera as suas versões numa escala própria, pelo que a ferramenta de compilação lê a versão do Chromium incluída em cada versão e associa-lhe automaticamente o driver correspondente. Se os seus utilizadores navegam com o Brave, pode testá-lo exatamente como testa o Chrome: as mesmas capabilities, o mesmo ecrã em direto, as mesmas gravações e a mesma bateria de testes, aprovada da mesma forma.

O Opera volta a funcionar

O Selenium deixou de suportar o Opera na versão 4.3.0, e a solução alternativa que todos repetem, controlar o Opera com um chromedriver Chrome for Testing, inicia as sessões sem problemas, mas faz falhar o renderizador sempre que uma página abre uma janela. A solução passou por ler com atenção a mensagem de erro: a verificação de versão do OperaDriver é um aviso, não uma recusa. O próprio driver do Opera controla-o corretamente, e o hub pede-lhe o protocolo moderno em seu nome.

O Safari é um alvo de primeira linha

O Safari também é publicado pela primeira vez. A imagem é o WebKitGTK, o mesmo motor que o Safari utiliza, compilado a partir do código-fonte: o Selenoid incluía os ficheiros de compilação, mas nunca publicou uma imagem, pelo que esta é a primeira que pode descarregar. Duas coisas que nunca funcionaram com ele, o carregamento de ficheiros e a capability de proxy, passam a ser tratadas pelo próprio hub, pelo que a correção se aplica a qualquer imagem, antiga ou nova. As duas particularidades restantes exigem, cada uma, uma linha nos seus testes, e a documentação indica qual.

Gravações com som, em todos os navegadores

As gravações de sessões captam agora o áudio de forma fiável nos sete navegadores, pelo que um teste de multimédia ou WebRTC que falha deixa de ser um vídeo mudo. Se não quiser som, basta uma capability para o desativar.

Pensado para a operação

Um endpoint Prometheus /metrics, sondas de saúde que respondem a pedidos HEAD, um 429 correto quando a fila está cheia, carregamento de ficheiros que funciona em todas as imagens, imagens de lançamento assinadas com uma lista de materiais de software, e uma política de segurança que explica claramente o que implica o socket Docker.

Uma interface reconstruída

O WebSummoner UI, a vista em direto da sua grelha com o ecrã do navegador, os registos e a fila, foi reconstruído de raiz: um tema escuro cuidado, logótipos oficiais dos navegadores, estatísticas em direto das sessões e da fila, e uma indicação fiel do estado da ligação. As linhas de comandos e os ficheiros Compose existentes não precisam de qualquer alteração.

Uma cadeia de ferramentas moderna

Go 1.27, Java 25 para a bateria de testes, React 19 para a interface, Ubuntu 26.04 para as imagens dos navegadores, atualizações de dependências e verificações de vulnerabilidades na CI, e um site de documentação pesquisável. Para compilar qualquer parte do projeto basta o Docker. O balanceador de carga para clusters com vários hubs e o instalador de um só comando evoluíram com o hub.

Se está a escolher hoje

Não existe um substituto perfeito para o que o Selenoid fazia, mas existem opções adequadas.

Selenium Grid: a implementação de referência. A escolha certa se pretende o seu modo distribuído e não se importa com o peso do Java.

Moon: a escolha se trabalha com Kubernetes e aceita uma licença comercial acima de quatro sessões em paralelo.

WebSummoner: para hosts Docker e máquinas virtuais, quando o que pretende é um hub pequeno e rápido, com tudo incluído.

A documentação mantém uma comparação verificada no código-fonte com o Selenoid, o Moon, o Selenium Grid, o Selenide, o Playwright e o Puppeteer, incluindo os casos em que deve optar por eles.

Migrar a partir do Selenoid

Aponte os seus clientes para o novo hub. selenoid:options, os cabeçalhos X-Selenoid-*, o caminho /aerokube/..., cm selenoid start e a opção --selenoid-uri da interface continuam todos a funcionar, e vão continuar a funcionar.

A única alteração: dentro da imagem Docker, a configuração passou de /etc/selenoid para /etc/websummoner. Atualize essa montagem e está concluído.

Os nossos compromissos

  • Compatibilidade, de forma permanente. Os nomes das capabilities, os cabeçalhos, os caminhos e os comandos do Selenoid são aceites em definitivo, e não descontinuados com prazo. Uma migração que custa um sprint é uma migração que ninguém faz.
  • Navegadores atuais. As imagens acompanham as versões estáveis de cada fabricante, cada uma com o driver correspondente, e nenhuma imagem é etiquetada antes de passar a bateria de testes.
  • Segurança em dia. As dependências são atualizadas todas as semanas, cada compilação inclui uma verificação de vulnerabilidades e a imagem do hub é assinada e acompanhada de uma lista de materiais de software.
  • A produção em primeiro lugar. Nós próprios utilizamos o WebSummoner. O que publicamos é aquilo de que dependemos.
  • Uma documentação que diz o que não funciona. As notas completas, incluindo as limitações, estão no anúncio.

O WebSummoner pretende competir com as maiores grelhas no terreno onde ganha: velocidade, simplicidade e custo de operação. Cada alteração é avaliada segundo esse critério.

Já disponível

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

Aponte os seus testes para http://localhost:4444/wd/hub. As notas de lançamento completas, o guia de migração e a conversa estão à distância de um clique:

📣 O anúncio da versão 1.0.0: as notas de lançamento completas e o espaço para colocar as suas questões 📖 Documentação: guias, referência e guia de migração 💻 Código-fonte: Apache-2.0, no GitHub

Se utilizava o Selenoid e algo na migração não se comporta como devia, para nós isso é um erro, não uma questão de suporte. Se mantinha algo construído sobre o Selenoid, diga-nos, e garantiremos que continua a funcionar.

Invoque uma frota de navegadores em contentores Docker.

Um hub Selenium rápido, com ambientes efémeros limitados a cada sessão.

Precisa de ajuda para utilizar o WebSummoner na sua organização?

Contacte-nos

O WebSummoner é desenvolvido e mantido pela RIADVICE sob a licença Apache-2.0. Baseia-se no Selenoid da Aerokube e de Ivan Krutov, e na interface original de Kirill Merkushev.

Partilhar este artigo