Olá, Fernanda! Entendo que você está com dúvidas sobre a utilização de mecanismos assíncronos em testes de integração, especificamente quando se espera que uma mensagem apareça na tela após o clique em um botão.
Sim, é uma boa prática usar a assincronicidade nesses casos. Isso porque, em muitas situações, a resposta de uma ação (como o clique de um botão) pode não ser instantânea, como quando esperamos que uma mensagem apareça na tela. Se você espera receber algo de uma API por exemplo, terá que esperar essa resposta assíncrona da API e por isso deve usar assincronicidade. Nesses casos, o teste precisa aguardar essa resposta para poder prosseguir, e é aí que entram os mecanismos assíncronos.
No exemplo da aula que você está estudando, o teste está verificando se, após o clique no link "Cartões", o usuário é redirecionado para a página correspondente. Para isso, o teste precisa ser assíncrono, pois o redirecionamento para uma nova página não é instantâneo. Veja o trecho do código:
userEvent.click(linkPaginaCartoes);
const tituloPaginaCartoes = await screen.findByText('Meus cartões');
expect(tituloPaginaCartoes).toBeInTheDocument();
Aqui, após o clique no link, o teste está aguardando (await
) encontrar na tela o texto 'Meus cartões'. Somente após encontrar esse texto é que o teste prossegue para a próxima linha, onde verifica se o texto realmente está na tela.
Outros usos práticos desse mecanismo seriam, por exemplo, quando se faz uma requisição a uma API e se espera por uma resposta, ou quando se faz uma operação que leva um tempo para ser concluída (como um upload de arquivo, por exemplo). Em todos esses casos, os mecanismos assíncronos permitem que o teste aguarde a conclusão dessas operações para poder prosseguir.
Espero ter ajudado e bons estudos!