Snapshots no Jest DOM


Os snapshots no Jest DOM são uma ferramenta poderosa para verificar e rastrear alterações em componentes React ao longo do tempo. Essa abordagem simplifica a criação e manutenção de testes visuais, permitindo que os desenvolvedores capturem a representação serializada de um componente e a comparem com versões futuras para identificar mudanças não intencionais.

Criando e Atualizando Snapshots

Ao escrever um teste com snapshots, o Jest DOM gera automaticamente um arquivo de snapshot no primeiro teste e o utiliza como referência nas execuções subsequentes. Se houver alterações no componente, o Jest DOM alertará sobre as discrepâncias e fornecerá opções para aceitar ou rejeitar as alterações.

import { render } from '@testing-library/react';
import MyComponent from './MyComponent';
 
const props = {
	id: 1,
	title: "title 1",
	body: "body 1",
	cover: "img/img.png"
};
 
it("should match snapshot", () => {
  const { container } = render(<PostCard {...props} />);
  expect(container.firstChild).toMatchSnapshot();
});

Ao executar este teste pela primeira vez, o Jest DOM cria um arquivo de snapshot. Nas execuções subsequentes, ele compara o snapshot atual com o snapshot salvo anteriormente no diretório __snapshots__. É fundamental que esse diretório seja versionado pelo Git e enviado para o GitHub.

Customizando Snapshots

É possível customizar snapshots para cenários específicos, como quando se lida com dados dinâmicos ou props variáveis. O Jest DOM oferece opções para atualizar snapshots, aceitar alterações, ou até mesmo gerar snapshots interativos.

Vantagens dos Snapshots

  1. Fácil manutenção: Os snapshots simplificam a manutenção, especialmente em componentes que geram uma saída visual significativa. É mais fácil revisar e aceitar alterações visuais do que reescrever testes.

  2. Detecção de alterações inesperadas: Os snapshots ajudam a detectar mudanças não intencionais no componente. Se algo foi alterado, o desenvolvedor é notificado durante a execução do teste.

  3. Integração com ferramentas: Os snapshots podem ser integrados com ferramentas de CI/CD, permitindo a execução automática de testes visuais em ambientes de integração contínua.

Referências