Configurando Selenium Grid com Docker — Parte 2

Bárbara Cabral
4 min readFeb 4, 2019

--

O Docker está disponível em duas edições:

  • Community Edition (CE)
  • Enterprise Edition (EE)

O Docker CE é ideal para desenvolvedores individuais e pequenos times (como é o meu caso) e o Docker EE é projetado para times que realizam compilam, lançam e executam aplicações críticas em produção em escala.

Como estou usando Ubuntu e gosto de instalar tudo através de linha de comando, a instalação é em simples, só executar os passos que o próprio site do Docker indica (link) ou a Parte 1 deste artigo. Ou, se preferir, você pode seguir este tutorial da Digital Ocean que está bem bacana!

Se tudo der certo, você pode verificar que o serviço do docker está funcionando, desta forma:

O comando “systemctl status” provê não somente informação sobre se o serviço / processo do docker está executando (active), como também se ele está habilitado para iniciar no boot da máquina.

Você pode executar o comando $ docker ps, para visualizar quais containers estão rodando (no nosso caso ainda não subimos nenhum container, mas é importante perceber se ao executar esse comando acima você obtém o seguinte erro:

Ou seja, se você tentar executar algum comando docker sem prefixar com sudo ou sem ser do grupo docker, você obterá essa saída. Uma forma de resolver é adicionando o seu usuário ao grupo docker:

$ sudo usermod -aG docker $(whoami)

Daí você precisa sair do terminal e entrar novamente e o problema vai estar resolvido.

Dica: um artigo bacana para você entender como funcionam os comandos básicos do docker, você pode encontrar aqui:

2. Como baixar imagens prontas do Docker

É possível usar imagens prontas, bem como alterá-las e criar novas a partir do zero.

No repositório oficial do Docker — ou Docker Hub — você pode trabalhar com imagens criadas por outros profissionais, o que é ideal para quem está começando! =D

Aliás, você pode entender mais como escolher sua distribuição com este post do colega Elias Praciano.

3. Baixar a Imagem do Selenium Grid e subir o Container

O Selenium-grid permite que você execute seus testes em diferentes máquinas contra diferentes browsers, executando em paralelo. Ou seja, você pode executar múltiplos testes ao mesmo tempo executando em browsers diferentes e SOs diferentes.

No repositório do Selenium, existem várias opções para baixar:

http://github.com/SeleniumHQ/docker-selenium

Eu escolhi a opção o hub junto com o Chrome node apenas porque ainda não vou executar vários browsers em paralelo, mas a idéia final será ter essa possibilidade.

Para baixar uma imagem do Selenium na sua máquina usando docker, podemos usar este comando:

$ docker pull selenium/hub

E, para subir o container, podemos usar o comando:

$ docker run -d -P — name selenium-hub selenium/hub

E verificar se o container está funcionando:

Para parar o container, podemos usar o id, desta forma:

$ docker stop 73e

$ docker rm 73e

Ah… alias, se você quiser criar o link entre o SelenuimHub e o módulo do Firefox, você pode subir o container com este comando aqui:

$ docker run -d — link selenium-hub:hub selenium/node-firefox

Obs: lembrando que você precisa ter executado o comando anterior para subir o SeleniumHub antes.

Desta forma, estamos executando tudo localmente. Mas existe uma forma mais fácil de tudo funcionar, que seria utilizando o Docker Compose.

E, finalmente, a parte mais interessante do artigo…

4. Configurando o Docker Compose com Selenium Grid

O Docker Compose é um orquestrador dos containers. Ele te ajuda a criar toda a infra de containers que precisa subir sem precisar executar vários comandos usando um arquivo YAML. Com este, você pode configurar quais containers quer subir e aí executar apenas o comando do docker-compose.

O interessante de usar ele, é que ele funciona da mesma forma para todos os ambientes: de desenvolvimento, de testes, de homologação e de produção. Assim, você pode promover seus testes na esteira, no ambiente de continuous delivery.

Para instalar, você pode seguir os passos do próprio site.

E depois de instalado, você pode ir no seu arquivo .yml e configurar os seguintes serviços:

Agora, você precisa entrar dentro do repositório onde está seu arquivo yml e executar o seguinte comando:

$ docker-compose build

Este comando vai montar os containers com o SeleniuHub e os “Nodes” (ou módulos) do Firefox e do Chrome. Ao executar o comando abaixo, você vai subir os containers:

$ docker-compose up

E na sequência você confere seu SeleniumGrid executando localmente os 2 browsers:

http://localhost:4444/grid/console#

Ebaaaa!!! Deu tudo certo aí? Se não der… entra em contato que eu posso te dar uma forcinha!

--

--