/samuraibs-universo-cypress

Código usado na primeira edição do Universo Cypress

Primary LanguageJavaScript

Universo Cypress Bootcamp

Código implementado durante a 1° edição do BootCamp Universo Cypress da QANinja, atualmente QAcademy.

O sistema a ser testado é o Samurai Barber Shop, sistema de agendamento de horários em uma barbearia. Serão utilizadas as ferramentas Cypress e Insomnia. E também serão utilizadas as plataformas github, ElephantSQL, dashboard cypress e heroku.

Clique aqui e acesse o Samurai Barber Shop, o sistema que será testado nesse projeto!

Fique à vontade para criar sua conta e testar!

  • Lembrando que a aplicação apenas consulta agendamentos e para marcar algum agendamento é necessário fazê-lo via API, pois originalmente os agendamentos seriam realizados via mobile (o que não foi implementado).
  • Contexto: Quando você se cadastra, seu papel é de prestador de serviços. O cliente que tem o aplicativo no celular móvel pode agendar algum serviço com você. E pelo sistema web, você consulta os clientes e as datas dos agendamentos.

Módulos

O intuito do bootcamp é partir do nível básico ao Devops, seguindo a seguinte estrutura:

  • Instalações Básicas
  • Manipulação de elementos WEB
  • Preparação do Ambiente de teste (Aplicação e banco de dados)
  • Início dos testes de ponta a ponta (E2E)
  • Reorganização do código com page objects
  • Git e github
  • Testes de API
  • Tópicos avançados e configurações
  • Infra e Continuous Testing

Teste você mesmo!

A seguir, estarão as instruções para rodar o projeto em sua máquina e ver os testes rodando!

Instalação

Atualmente a aplicação encontra-se hospedada no Heroku, então não é necessário preparar o ambiente . Apenas será necessário baixar a automação (Cypress).

É necessário ter instalado:

  1. Clone do repositório

    Para facilitar o download da automação, aqui será pulado o passo de clone com o github e será disponibilizado o link para download o arquivo compactado.

    Baixe a automação aqui!

    Dentro do seu computador, descompacte o arquivo.

    Agora será necessário navegar até a pasta através de um terminal (ou prompt de comando).

    Windows:

    Pressione "bandeira do windows" + "R", digite "cmd" (sem aspas) e tecle executar. Quando o prompt de comando for aberto, navegue até a pasta descompactada.

    cd {caminho do arquivo} - O caminho do arquivo deve ser informado sem chaves.

    Ubuntu:

    Segue a mesma lógica, porém o atalho para abrir o terminal é: "CRTL" + "ALT" + "T". Após isso basta navegar até a pasta descompactada.

    Como exemplo, segue o código para linux: cd /home/lucasrodrigues/Downloads/samuraibs-universo-cypress-main

    Uma vez que estamos dentro da pasta do projeto, rodamos o seguinte comando:

    npm install - Para baixar as dependências

  2. Execução dos testes

    Basta rodar o comando: npm test e será aberta a interface do cypress com os cenários a serem testados.

    cenários cypress

    E é isso! ;)

Para quem tem interesse no Devops e continuous testing, continue lendo!

Continuous testing

A ferramenta de CI que foi que utilizada nesse projeto, foi o github actions. Nele foram configurados jobs que executam os testes automatizados diretamente pela nuvem. Foram criados 3 workflows, para o teste multibrowser.

workflows - Github Actions

Para executar os testes na nuvem, basta selecionar algum desses workflows e rodar o job.

Running a Workflow

Os testes serão executados e caso não seja exibido o job rodando, basta pressionar "F5". Isso leva algum tempo, tendo em vista que o actions vai criar um container, baixar a imagem, preparar todo o ambiente para depois rodar os testes. E todo esse fluxo pode ser acompanhado a nível de terminal clicando no job que está sendo executado.

Após finalizar, os resultados do teste serão enviados para o dashboard do cypress, que é integrado ao github actions, e por lá dá pra ver várias informações legais!

Quando finalizar o teste, será disponibilizado o link para o dashboard: Terminal running job

Ao clicar no link, o dashboard será exibido:

dashboard with tests results

É isso! =D