Como dockerizar seu teste end-to-end

Emerson Pereira
Wirecard Brasil
Published in
4 min readAug 30, 2018

Olá pessoal,

Participando de alguns eventos, observei a dificuldade que temos para configurar nossos ambientes, isso se dá por vários fatores, partindo dos mais simples aos mais complexos o que acaba impactando qualquer tipo de atividade.

Esse foi o motivo de criar um projeto de testes end-to-end ruby dockerizado. Procurando a respeito não achei nada que explicasse de forma simples e que fosse entendido facilmente por qualquer pessoa. Dessa maneira me senti motivado a criar algo que pudesse ajudar a todos que estiveram na mesma situação e neste artigo vou compartilhar minha experiência com Docker e testes na camada de UI com vocês.

Tá, mas o que é Docker? Docker é uma ferramenta que permite que desenvolvedores, administradores de sistemas, etc, implantem facilmente seus aplicativos em uma caixa de proteção (chamados containers) para serem executados no sistema operacional host, ou seja, no Linux. O principal benefício do Docker é que ele permite que os usuários empacotem um aplicativo com todas as suas dependências em uma unidade padronizada para desenvolvimento de software. Ao contrário das máquinas virtuais, os contêineres não têm a alta sobrecarga e, permitem um uso mais eficiente do sistema e dos recursos fornecidos.

Abaixo irei mostrar apenas como deve ficar os arquivos responsáveis por essa execução, para mais detalhes acesse o repositório no GitHub, lá tem o passo a passo desde a criação do teste end-to-end até a criação da imagem do Docker, caso queiram aprender um pouco mais.

Vamos começar!

Neste exemplo irei mostrar a configuração de instalação do chrome dentro do container e a instalação de dependências do projeto para rodar nossos testes. Lembrando que precisamos configurar os capabilities do chrome para que ele possa rodar em modo headless. Neste exemplo estou usando o chrome, mas isso não impede de você usar o browser que preferir.

Pré-requisitos:

  • Ter o Docker instalado para o seu sistema operacional, caso utilize linux, no repositório compartilhado mais acima tem um tópico de como instalar. Para outros sistemas operacionais recomendo consultar a documentação do Docker
  1. Vamos criar o Dockerfile na raiz do projeto, este arquivo será responsável pela instalação da imagem e consequentemente pela montagem de toda estrutura dentro do container criado.
Dockerfile

2. Incluir os capabilities do chrome no arquivo env.rb para que ele possa ser executado em modo headless dentro do container.

env.rb

Simples né, nossas configurações estão prontas, agora é executar dentro do container Docker.

Criando imagem do projeto

Para criar imagem dentro do projeto execute o comando:

╰─➤  docker build -t <nome_imagem> .

Ao executar este comando será criado uma imagem do Docker com todas as configurações passadas no arquivo Dockerfile.

Executando o teste

╰─➤  docker run --rm <nome de sua imagem> bundle exec cucumber

Este comando executa o teste dentro do container e após sua execução remove o container.

Lembrando que estes comandos dentro do arquivo Dockerfile são para uso do projeto mencionado no post, mas que serve para muitos outros, caso tenha problemas de execução talvez seja preciso fazer alguns ajustes.

Caso queira saber mais sobre Docker acesse os links da referência e saiba mais.

É isso pessoal.
Espero ter ajudado vocês com essas configurações simples e o mais legal de tudo é que você pode incrementar esse arquivo com outros tipos de testes e de acordo com sua necessidade. Fica a dica ;)

Nos próximos posts pretendo falar de docker-compose e testes paralelos e de integração contínua.

Aguardem…

Referências:
https://docker-curriculum.com/
https://www.mundodocker.com.br/o-que-e-docker/

--

--