Configuração de testes E2E usando cypress

Proposta

Realizar o desenvolvimento de uma estrutura de testes ponta a ponta na aplicação (e2e) com objetivo de garantir que as principais funcionalidades no portal estejam funcionando corretamente. Para tal utilizar o framework Cypress por ser uma ferramenta de simples compreensão e de baixa curva de aprendizado.

Configurações iniciais

Antes mesmo de começar a instalar e criar os testes com o Cypress, notamos erros ao tentarmos criar a infraestrutura para rodar o OpenRedu localmente via Docker, tais erros persistiram mesmo seguindo o passo a passo de instalação do ambiente disponível em: Setup para desenvolvimento com Docker - Colabore - Openredu .

Primeiramente, precisamos atualizar o pacote utilizado para inicializar o nginx do “python-certbot-nginx” para “python3-certbot-nginx” que utiliza a versão do python3. Além disso, foi necessário rodar alguns comandos para criação dos Networks presentes no docker-compose.

Com isso, realizamos uma Pull Request que:

  • Atualização da versão do pacote “python3-certbot-nginx” presentes no Dockerfile do Nginx

  • Criação de um arquivo em formato de script bash no caminho “scripts/setup/setup_docker” contendo as etapas definidas no artigo relativo à configuração do docker estão disponíveis, tais como:

    • Instalar o ‘docker’ e o ‘docker-compose’ na máquina do usuário
    • Configurar as redes necessárias para o docker-compose
    • Construir o container
    • Configura o banco no container
    • Subir o container para utilização do sistema.
  • Adicionado os comandos necessários para rodar localmente também no README.

Além disso, ao realizarmos a configuração do Openredu notamos alguns comportamentos fora dos padrões convencionais de desenvolvimento principalmente com relação ao login. Pois, o retorno do endpoint de login é um script Javascript executado na página. Esse ponto pode ser alvo de melhorias futuras no projeto.

Uso do Cypress

O processo de testes com o Cypress consiste na utilização de um script onde é mapeado o fluxo de utilização do usuário em formato de testes. O framework irá então abrir a aplicação e aplicar as ações do usuário (inserir texto em inputs, clicar em botões e até subir imagens). Focamos realizar o setup inicial do Cypress e permitir que esse framework seja utilizado no Openredu, além disso realizamos alguns testes em algumas das principais funcionalidades do portal para exemplificar, essas funcionalidades sendo:

  • Registro de conta
  • Login
  • Criação de ambiente de aprendizagem.

A configuração dos fluxos é realizada através da análise do código da aplicação, utilizando os identificadores de entradas de usuário para tal. Desse modo é possível realizar as mesmas interações que o usuário faz dentro da plataforma. Permitindo também que qualquer pessoa desenvolvedora adicione novos fluxos para os testes automatizados.

Resumo das contribuições

Nossas adições ao código contribuem com o projeto através da implementação de um mecanismos de testes ponta a ponta que possa ser aplicado em toda a aplicação. Facilitando a manutenção dos recursos disponíveis e podendo também ser utilizado no mapeamento das funcionalidades existentes, para facilitar o processo de integração de novos desenvolvedores.

2 curtidas

Link do pull-request relacionado aos testes E2E: [feat] Projeto de testes fim-a-fim utilizando Cypress by alaurentinoofficial · Pull Request #318 · Openredu/Openredu · GitHub

1 curtida