Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implementar testes e2e para fluxos principais #1667

Open
nobregao opened this issue Apr 7, 2024 · 7 comments
Open

implementar testes e2e para fluxos principais #1667

nobregao opened this issue Apr 7, 2024 · 7 comments
Labels
novo recurso Nova funcionalidade/recurso testes Criação ou melhoria de testes

Comments

@nobregao
Copy link

nobregao commented Apr 7, 2024

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

  • Visualiza os botões “Login” e “Cadastrar”
  • Consegue visualizar os conteúdos nas abas “Relevantes” e “Recentes”
  • Não pode visualizar nenhuma opção de cadastrar conteúdo
  • Consegue visualizar detalhes de um conteúdo, mas não pode responder. ao tentar responder deve ser redirecionado para login.
  • Pode se cadastrar
  • Pode realizar login

🙃 Usuário padrão

  • Pode publicar nas 2 opções disponíveis (barra de título e menu).
  • Pode editar e excluir, apenas, suas publicações.
  • Sobre comentários em publicações:
    • Pode comentar em qualquer publicação.
    • Pode editar e excluir, apenas, seus comentários.
  • Pode visualizar todas suas publicações e comentários (menu > meus conteúdos)
  • Pode editar dados do seu perfil: nome, email, descrição e senha.
  • Pode marcar como relevante publicações e comentários apenas de outros usuários.

😎 Usuário privilegiado

  • Pode publicar nas 2 opções disponíveis (barra de título e menu)
  • Pode editar e excluir publicações.
  • Pode criar, editar e excluir comentários em publicações
  • Pode marcar como relevante publicações e comentários apenas de outros usuários.

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?

@nobregao nobregao added the novo recurso Nova funcionalidade/recurso label Apr 7, 2024
@Rafatcb Rafatcb added the testes Criação ou melhoria de testes label Apr 8, 2024
@Rafatcb
Copy link
Collaborator

Rafatcb commented Apr 8, 2024

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 (#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
Copy link
Author

nobregao commented Apr 8, 2024

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
Copy link
Collaborator

Rafatcb commented Apr 11, 2024

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
Copy link
Author

Vou seguir com isso 💪

@nobregao
Copy link
Author

nobregao commented Jun 3, 2024

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

o que temos?

tests/e2e/home.spec.js:

  • Usuário anônimo pode ver as abas de relevantes e recentes
  • Usuário padrão pode ver as abas de relevantes e recentes

tests/e2e/login.spec.js:

  • Usuário que não existe não pode fazer login
  • Usuário padrão pode fazer login

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

  • Usuário anônimo não deve publicar conteúdo pela header e menu
  • Usuário padrão pode publicar conteúdo pela header
  • Usuário padrão pode publicar conteúdo pelo menu

tests/e2e/register.spec.js:

  • Usuário anônimo pode se registrar, valida email e fazer login
  • Usuário padrão logado não pode se registrar com usuário já logado

status de outras coisas importantes:

  • Execução de testes em CI no browser Desktop Chrome
  • Atualizar documentação: como executar localmente por comando e utilizando UI

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
Copy link
Collaborator

Rafatcb commented Jun 4, 2024

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 #1687 (comment), 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
Copy link
Author

nobregao commented Jun 4, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
novo recurso Nova funcionalidade/recurso testes Criação ou melhoria de testes
Projects
None yet
Development

No branches or pull requests

2 participants