Configurando Selenium Grid com Docker — Parte 2
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!