Como executar seus testes remotamente no Selenium Grid com Docker?
Boa tarde a todos, nesse artigo vou falar um pouco do Selenium Grid, e como utilizá-lo com Docker.
Antes de mais nada, vou explicar um pouco do problema que eventualmente alguém pode ter passado e como o Selenium Grid pode ajudar a solucionar.
Em certos momentos torna-se necessário validar a aplicação em diferentes combinações de navegadores e versões, podemos ter todos eles instalados em nosso ambiente local porém não é aconselhável gerenciar diferentes versões do mesmo navegador em uma única máquina.
Se em seu projeto é necessário executar testes multibrowser porém não se consegue justificar o uso de soluções de terceiros como o Sauce Labs ou Browser Stack o Selenium Grid é a solução. Com o Selenium Grid você pode criar uma rede de máquinas de testes conectadas o que chamamos de nós. Toda essa rede é controlada por Hub, o que Hub faz é distribuir orquestrando seus testes em diferentes nós conectados. Cada nó basicamente pode ser um computador com uma combinação de Sistema Operacional e navegadores.
A utilização do Selenium Grid se dá através do RemoteWebDriver, que precisa ser configurado para execução dos testes.
Basicamente o RemoteWebDriver possui um cliente e um servidor. O cliente é o teste sendo executado através do webdriver e o servidor simplesmente um servlet Java. Para mais informações esse artigo fala melhor sobre a arquitetura do Selenium Grid.
Para criar essa estrutura com Docker, o que precisamos ter é o Docker instalado no Windows que pode ser a versão Community Edition ou configurado no Linux, a ideia continua sendo a mesma, vamos ter um container que será o hub e outros containers que serão os nós.
Vamos utilizar as imagens do Selenium Grid Server diretamente na página SeleniumHQ.
O primeiro passo é baixar imagem do Hub e inicializar o container do mesmo.
Para isso iremos rodar o comando abaixo no prompt :
docker run -d -p 4444:4444 — name selenium-hub selenium/hub:3.11.0-antimony
Depois iremos fazer o mesmo para os nós Chrome e Firefox que basicamente serão dois containers:
docker run -d -P -p 5900:5900 — link selenium-hub:hub -v /dev/shm:/dev/shm selenium/node-chrome-debug:3.11.0-antimony
docker run -d -P -p 5901:5900 — link selenium-hub:hub -v /dev/shm:/dev/shm selenium/node-firefox-debug:3.11.0-antimony
Após o término do download aconselho a rodarem o comando docker ps para verificar os containers que foram inicializados.
Se deu tudo certo, o resultado será igual a imagem abaixo:
Para verificarem o selenium grid abra seu navegador e cole o endereço abaixo:
http://localhost:4444/grid/console
Se tudo der certo seu browser irá acessar a página abaixo:
No próximo artigo irei explicar como rodar os testes nos containers utilizando Selenium , Autofac, Specflow e Unickq.SpecFlow.Selenium (Gerador de classe de teste para execução de testes automatizados de interface)