HTML Academy · Aula

Testes de instantâneos de HTML

Detecte alterações não intencionais no HTML com testes de instantâneos.

Aula 4 de 414 etapas

Testes de instantâneos de HTML é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.

O que é o teste de instantâneo

O teste de instantâneo registra a saída renderizada de um componente ou página na primeira execução e, nas execuções seguintes, compara a nova saída com o instantâneo salvo. Qualquer alteração na saída HTML faz o teste falhar até que o instantâneo seja atualizado intencionalmente.

Teste de instantâneo com Jest

O comparador toMatchSnapshot() do Jest serializa um valor (incluindo JSX renderizado como HTML) e o compara com um arquivo salvo. npx jest -u atualiza os instantâneos quando ocorrem alterações intencionais. Os testes funcionam como uma rede contra regressões causadas por alterações acidentais na renderização.

import { render } from "@testing-library/react";
import Button from "./Button";

test("Button renders consistently", () => {
  const { container } = render(<Button>Save</Button>);
  expect(container.innerHTML).toMatchSnapshot();
});

Executor de testes do Storybook

O Storybook Test Runner executa cada história e registra sua saída como instantâneo por meio do axe (acessibilidade) e da serialização do DOM. Em conjunto com o Chromatic, ele adiciona regressão visual — diferenças em nível de pixel além das diferenças do DOM.

Regressão visual com Percy ou Chromatic

Percy e Chromatic registram páginas renderizadas como imagens e evidenciam diferenças visuais. Eles detectam regressões de CSS que os instantâneos do DOM não identificam (uma troca de fonte, um ajuste de margem ou uma mudança de cor). Combine instantâneos do DOM (baratos e rápidos) com instantâneos visuais (caros e abrangentes).

Manutenção de instantâneos

Instantâneos que mudam "com facilidade demais" tornam-se ruído. Evite incluir valores instáveis nos instantâneos (datas, IDs e chaves aleatórias). Use os comparadores de propriedades do Jest (expect.any(String)) para campos que variam legitimamente entre as execuções. Mantenha os instantâneos pequenos e focados.

Revisão de código para instantâneos

As diferenças nos arquivos de instantâneos dos PRs são material prioritário de revisão. Os revisores verificam se as alterações do DOM são intencionais e desejáveis — detectando efeitos em cascata acidentais causados por uma alteração "simples" de CSS. Trate as diferenças dos instantâneos como qualquer outra diferença.

Não Faça Capturas de Tudo

Capturar renderizações enormes de páginas de nível superior é frágil — cada pequena alteração se propaga para uma diferença gigantesca. Faça capturas no nível do componente: cada botão, cada cartão, cada FormField. A renderização no nível da página merece, em vez disso, testes de regressão visual.

Serialização de Capturas

Escolha como serializar: HTML completo, DOM simplificado, somente propriedades ou árvore de acessibilidade. Cada formato detecta regressões diferentes. Para componentes de interface, o HTML completo é o mais abrangente; para lógica orientada por propriedades, usar somente propriedades é mais barato e raramente gera falsos positivos.

Quando as Capturas Falham

A causa mais comum é uma refatoração que produz HTML equivalente, mas com estrutura diferente. Inspecione a diferença: se a alteração for intencional e boa, atualize a captura. Se for inesperada, corrija o código subjacente. Nunca execute jest -u às cegas, sem fazer uma inspeção.

Capturas Entre Navegadores

As ferramentas de regressão visual fazem a renderização em vários navegadores e relatam diferenças específicas de cada navegador. Use isso para detectar CSS que é renderizado de forma diferente no Safari e no Chrome — algo comum em novos recursos de layout durante a fase inicial de adoção. Sem capturas entre navegadores, essas regressões só são detectadas pela QA manual.

Combinando com Outros Testes

Os testes de captura são necessários, mas não suficientes. Eles detectam alterações não intencionais na renderização, mas não erros de lógica, como clicar no botão e a ação correta não acontecer. Combine-os com testes de unidade para o comportamento e testes de ponta a ponta para os fluxos do usuário — cada camada detecta falhas diferentes.

Desempenho

Os testes de captura são rápidos — eles comparam strings e arquivos. Os testes de regressão visual são mais lentos, pois renderizam pixels, comparam imagens e geralmente fazem isso em vários navegadores. Execute as capturas em cada compilação de CI; execute a regressão visual em cada PR, mas talvez não em cada confirmação, dependendo do orçamento de CI.

Verificação de Conhecimento

Por que os testes de captura do DOM geralmente são complementados por testes de regressão visual, como os do Percy ou do Chromatic?

Resumo

Os testes de captura registram o HTML renderizado na primeira execução e sinalizam qualquer alteração nas execuções seguintes. Use Jest toMatchSnapshot para o DOM dos componentes, Storybook Test Runner para histórias e Percy/Chromatic para regressão visual no nível dos pixels. Faça capturas no nível do componente, não no nível da página, exclua valores instáveis e analise cuidadosamente as diferenças nas PRs. Combine-os com testes de unidade e de ponta a ponta para obter cobertura completa.

Grátis para começar

Aprenda HTML com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
40
Aulas
159

Perguntas Frequentes

A aula “Testes de instantâneos de HTML” é grátis?

Sim — o texto completo de “Testes de instantâneos de HTML” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.

O que vou aprender em “Testes de instantâneos de HTML”?

Detecte alterações não intencionais no HTML com testes de instantâneos. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar HTML Academy?

Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Testes de instantâneos de HTML”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de HTML Academy?

Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O validador de marcação W3C
  2. Auditoria de HTML com Lighthouse
  3. Pa11y e axe para testes de acessibilidade
  4. Testes de instantâneos de HTML
← Voltar para HTML Academy