Criação de um grid com Selenium utilizando Docker
A ideia deste post é mostrar as facilidades para criar um grid utilizando Docker. Nesse momento eu pergunto a você leitor: Já tentou criar um grid utilizando Selenium? Se a resposta for sim, você deve lembrar que não é uma atividade simples, uma vez que você terá que subir o hub e seus nodes, sendo que todo novo node é necessário registrar no grid e etc. Abaixo segue exemplo de como utilizar o grid na forma tradicional.
Para subir o grid:
java -jar selenium-server-standalone-2.48.2.jar -role hub
Para subir o node:
java -jar selenium-server-standalone-2.48.2.jar -role node -hub http://localhost:4444/grid/register
É possível fazer isso de forma mais simples utilizando Docker. A própria comunidade do Selenium mantém as images Docker com o hub, Firefox e Chrome nodes. Vamos começar a criar nosso grid utilizando Docker.
Subindo nosso hub:
$ docker run -d -P --name selenium-hub selenium/hub:2.48.2
Subindo nossos nodes:
$ docker run -d --link selenium-hub:hub selenium/node-chrome:2.48.2
$ docker run -d --link selenium-hub:hub selenium/node-firefox:2.48.2
Agora se precisarmos criar outros nodes, precisaríamos criar novos containers:
$ docker run -d --link selenium-hub:hub selenium/node-firefox:2.48.2
O trabalho ainda está bem manual. É possível deixar este processo ainda mais simples utilizando o docker-compose. Abaixo exemplo do docker-compose para criar nosso grid.
Criando o grid com docker-compose:
hub:
image: selenium/hub:2.48.2
hostname: selenium-hub
ports:
- 4444:4444
chrome:
image: selenium/node-chrome:2.48.2
links:
- hub
firefox:
image: selenium/node-firefox:2.48.2
links:
- hub
Basta executar o comando:
docker-compose up -d
Para criar novos nodes execute o comando:
docker-compose scale hub=1 chrome=3 firefox=3
Colocando a quantidade desejada para cada node.