filipedeschamps / tabnews.com.br

Conteúdos para quem trabalha com Programação e Tecnologia.
https://tabnews.com.br
GNU General Public License v3.0
5.32k stars 388 forks source link

implementar testes e2e para fluxos principais #1667

Open nobregao opened 7 months ago

nobregao commented 7 months ago

Descrição

Houve uma discussão em #255 sobre a implementação desse tipo de teste, mas como faz um tempo e não teve andamento gostaria de priorizar esse desenvolvimento para os fluxos principais.

Sugestão de implementação

Divido em sessões para organizar a minha mente kk

Sobre ferramenta

Na issue foi mencionada o Playwright, mas também existe Cypress. No artigo Playwright vs. Cypress — Uma Análise Detalhada do @RodrigoOBC cita semelhanças e diferenças. Além de ambas serem open-source, também suportam múltiplos navegadores e geram evidências de teste.

Pelo contexto atual do que já temos, percebo que o Cypress poderia nos atender. Porém, com o avanço do projeto, talvez, faça mais sentindo utilizar o Playwright dado que é possível paralelizar os testes.

Independente da ferramenta é interessante abstrair a implementação com o uso da abstração Page Objects (mencionado na issue) utilizando Playwright tem esse exemplo e Cypress tem esse aqui.

Sobre fluxos

Futucando o projeto localmente pensei nesses fluxos por tipo de usuário:

😶‍🌫️ Anônimo

🙃 Usuário padrão

😎 Usuário privilegiado

Posso ter me empolgado nesses cenários kk e, com certeza, não pensei em todos os possíveis. Vamos nos somando!

O que acham da ideia? e dos fluxos? fazem sentido?

Rafatcb commented 7 months ago

Os cenários a serem testados devem ser os mais importantes, e vendo "por alto", parece que você listou bons cenários. Tem alguns detalhes como Visualiza os botões “Login” e “Cadastrar” pode ser removido, já que isso seria testado pelo Pode se cadastrar e Pode realizar login.

Já usei o Cypress em 2019/20 e não me lembro de ter tido problemas com ele. Nunca usei o Playwright, então não consigo dizer qual faz mais sentido aqui. Não sei se é tão simples migrar entre um e outro quanto foi quando migramos do Jest para o Vitest (https://github.com/filipedeschamps/tabnews.com.br/pull/1642).

Você já teve experiências com algum dos dois?

Uma opção para começar essa implementação é criar um PR com alguns testes relacionados, que irá realizar todo o setup necessário (instalação de dependências e configurações), e assim não fica um PR muito denso com várias coisas diferentes para serem analisadas.


@aprendendofelipe acha melhor abrir o issue #255 de novo e concentrar todas as informações lá ou continuar aqui?

nobregao commented 7 months ago

tenho experiência de estudo. uma sugestão para sairmos do lugar: implementar poucos cenários importantes nas duas ferramentas (em 2 PR diferentes) daí podemos comparar tempo de execução, sintaxe e configuração.

caso seja uma ideia a seguir, sugiro seguirmos nessa issue porque a #255 é focada em playwright.

Rafatcb commented 7 months ago

uma sugestão para sairmos do lugar: implementar poucos cenários importantes nas duas ferramentas (em 2 PR diferentes) daí podemos comparar tempo de execução, sintaxe e configuração.

É o ideal, sim. Assim, já descobrimos o que funciona e o que não funciona para nosso caso.

nobregao commented 7 months ago

Vou seguir com isso 💪

nobregao commented 5 months ago

olá, seguindo com a discussão dos testes.

o que temos?

tests/e2e/home.spec.js:

tests/e2e/login.spec.js:

tests/e2e/publish-content.spec.js:

tests/e2e/register.spec.js:

status de outras coisas importantes:

gostaria de combinar para abrir o PR com esses primeiros testes + documentação, daí os demais e outros cenários que pensarmos posso fazer em outro. o que acham?

Rafatcb commented 5 months ago

Pode abrir o PR quando achar que está pronto para mesclar, ou seja, ao ter os testes prontos, a documentação e resolver as revisões do PR #1687. Como o Felipe mencionou em https://github.com/filipedeschamps/tabnews.com.br/pull/1687#issuecomment-2143595807, sugiro também diminuir a quantidade de commits, para facilitar a revisão e separação em etapas do que foi resolvido.

Quanto tempo esses testes levam para serem executados na sua máquina? E, como comparação, quanto tempo levam todos os outros testes?

nobregao commented 5 months ago

massa! ✌️ tenho algumas métricas de duração dessas execuções. na última execução da pipeline (aqui) durou 1m14s e localmente 1m.1s ⬇️

image