Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Necessidade do findByText no evento de clique

Olá!

Neste vídeo, o teste para verificar se a página muda ao clicar em um link foi feito utilizando a função findByText(), o que tornou esse teste assíncrono. Isso foi feito por conta do evento de clique do userEvent.

No entanto, eu fiz o teste utilizando a função getByText(), sem precisar deixar o teste assíncrono, e também funcionou.

Então eu fiquei na dúvida se é realmente necessário utilizar o findByText() quando testamos evento de clique. O teste fica mais confiável dessa forma? Existe a possibilidade de o evento de clique demorar, e por isso a necessidade de um teste assíncrono?

Obrigado.

1 resposta
solução!

Olá Matheus, tudo bem?

A utilização da função findByText() torna o teste assíncrono porque ela espera até que o texto buscado seja encontrado na página. Já a função getByText() busca o texto imediatamente e, caso não encontre, retorna um erro.

A utilização do findByText() é recomendada em testes que envolvem interações do usuário, como no caso do evento de clique, porque pode haver uma demora na atualização da página após a interação. Dessa forma, o teste assíncrono garante que a página foi atualizada corretamente antes de prosseguir com o teste.

No entanto, se o seu teste funcionou corretamente utilizando a função getByText(), é possível que o evento de clique tenha sido rápido o suficiente para que a atualização da página tenha ocorrido imediatamente. Como é o caso de aplicações SPA que não precisão recarregar todo o HTML da página, apenas a parte que foi atualizada.

Em resumo, a utilização do findByText() é recomendada em testes que envolvem interações do usuário. Se o seu teste funcionou corretamente utilizando a função getByText(), não há problema em utilizá-la, desde que você tenha plena convicção que o elemento eperado não vai demorar para aparecer em tela, o que acredito ser díficil calcular, então neste caso opte sempre pelo findByText().

Espero ter ajudado e bons estudos!