Aguarde elementos na tela com waitFor em testes React

Entenda como a função waitFor pode ajudar a garantir que elementos apareçam em seus testes React.

Como utilizar waitFor para esperar que um elemento apareça na tela em testes React?

Os testes são uma parte essencial do desenvolvimento de software moderno, especialmente quando trabalhamos com bibliotecas como React. Um dos desafios que os desenvolvedores enfrentam é garantir que elementos sejam renderizados corretamente antes de interagir com eles. Aqui, entra a função waitFor, uma ferramenta poderosa que permite que você espere até que um elemento específico esteja presente na tela antes de prosseguir com o teste.

O que é a função waitFor?

A função waitFor faz parte da biblioteca de testes do React, @testing-library/react. Ela ajuda a lidar com a natureza assíncrona das aplicações React, onde os elementos podem demorar para serem renderizados devido a chamadas de API ou outras operações assíncronas. Basicamente, waitFor espera até que uma condição específica seja verdadeira, permitindo que você escreva testes mais robustos e confiáveis.

Como usar a função waitFor?

Para começar a usar waitFor, você precisa ter a biblioteca de testes instalada. Se ainda não a possui, você pode instalar usando o npm:

npm install --save-dev @testing-library/react @testing-library/jest-dom

Uma vez que você tenha a biblioteca instalada, você pode começar a escrever seus testes. Aqui está um exemplo básico de como usar waitFor:

import { render, screen, waitFor } from '@testing-library/react';
import MyComponent from './MyComponent';

test('renders the element after API call', async () => {
  render(<MyComponent />);

  await waitFor(() => {
    expect(screen.getByText(/elemento esperado/i)).toBeInTheDocument();
  });
});

Neste exemplo, estamos testando um componente chamado MyComponent. Após renderizá-lo, chamamos waitFor para esperar até que um texto específico esteja presente no documento. Isso é útil quando você sabe que um elemento deve aparecer após uma ação assíncrona, como uma chamada de API.

Quando usar waitFor?

Usar waitFor é especialmente útil em situações como:

  • Quando você está esperando por uma resposta de uma API que vai renderizar dados no componente.
  • Quando um elemento depende de uma interação do usuário que pode levar tempo para ser processada.
  • Quando você está lidando com animações ou transições que podem atrasar a renderização de um elemento.

Alternativas ao waitFor

Embora waitFor seja uma ferramenta extremamente útil, existem outras opções que você também pode considerar, dependendo do seu caso de uso. Por exemplo, se você está testando um elemento que deve estar visível após uma interação, você pode usar findBy:

const element = await screen.findByText(/elemento esperado/i);
expect(element).toBeInTheDocument();

A função findBy automaticamente espera até que o elemento apareça, eliminando a necessidade de usar waitFor manualmente.

Conclusão

Testar aplicações React pode ser desafiador, mas ferramentas como waitFor ajudam a simplificar o processo. Ao garantir que seus testes sejam robustos e que elementos apareçam antes de serem interagidos, você pode melhorar significativamente a qualidade do seu código. Não hesite em explorar essa função e suas alternativas para tornar seus testes ainda mais eficazes.

O uso de testes em aplicações React é um aspecto fundamental para garantir a qualidade e a confiabilidade do software. À medida que as aplicações se tornam mais complexas, a necessidade de ferramentas que ajudem a lidar com interações assíncronas se torna cada vez mais importante. waitFor é uma dessas ferramentas, permitindo que os desenvolvedores esperem por elementos específicos antes de prosseguir com os testes. Neste contexto, entender como e quando utilizar essa função pode fazer a diferença entre um teste bem-sucedido e um que falha devido a condições inesperadas.

Algumas aplicações:

  • Testar a renderização de componentes após chamadas API
  • Verificar a visibilidade de elementos após interações do usuário
  • Garantir que animações e transições não quebrem testes

Dicas para quem está começando

  • Comece escrevendo testes simples e vá aumentando a complexidade
  • Utilize waitFor em situações assíncronas
  • Leia a documentação da Testing Library para entender melhor as ferramentas disponíveis
  • Pratique a escrita de testes em componentes que você já conhece

Contribuições de Amanda Oliveira

Compartilhe este tutorial: Como utilizar waitFor para esperar que um elemento apareça na tela em testes React?

Compartilhe este tutorial

Continue aprendendo:

Como verificar se uma classe CSS foi aplicada corretamente a um elemento React?

Entenda como validar a aplicação de classes CSS em elementos React de forma eficaz.

Tutorial anterior

Como testar a saída de um console.warn dentro de um teste no React?

Um guia completo sobre como testar a saída de console.warn em React, com exemplos práticos e dicas úteis.

Próximo tutorial