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.