(85) 99645-7140 nelclassico@gmail.com Praça Coronel Melquiades, 124
Articles chromatic Tecnologia visual testing vitest

Testando o que os usuários realmente veem com Vitest e Chromatic | Codrops

Vitest browser test results with Chromatic plugin

Nota do editor: Hoje, nossos amigos da Chromatic estão compartilhando uma prévia de seu novo plugin de teste visual para Viteste. Temos o prazer de apresentar este artigo convidado de Kyle Gach, que explica como os testes visuais complementam os testes de componentes tradicionais e ajudam a detectar regressões da IU antes que cheguem à produção.

Seu PR para inserir um botão “adicionar aos favoritos” é verde. Todo teste automatizado é aprovado. CI não relata falhas.

Em seguida, um usuário relata que o cartão do produto não parece correto em seu telefone.

O conjunto de testes verificou a lógica do componente, mas perdeu o estado renderizado que o usuário viu: o ponto de interrupção, o espaçamento, o encapsulamento e o layout pintado final.

Seus testes Vitest não conseguem ver sua IU. Os testes visuais fecham essa lacuna.

É por isso que estamos abrindo o acesso antecipado ao nosso novo plugin Chromatic para Vitest.

Two product cards. The first one is wider and looks correct. It is labeled with a green checkmark. The second one is narrower and the layout has broken. It is labeled with a red x.

Visual componente testes são perfeitos para desenvolvimento de UI

Testes visuais são mais fáceis de escrever e manter do que os tradicionais testes de componentes. Ao mesmo tempo, proporcionam mais confiança porque testam mais.

Um teste de componente tradicional para um cartão de produto pode verificar se o título e o preço corretos são renderizados e se o CTA tem o texto correto e é clicável. Os testes visuais vão além disso e verificam se cada detalhe da aparência do cartão está correto: as fontes em uso, cores, espaçamento, layout, pontos de interrupção, etc.

Ao adicionar testes visuais aos seus testes Vitest, você obtém o melhor dos dois mundos: afirmações regulares para comportamento interativo e saída não visual, como propriedades de acessibilidade, além de testes visuais para aparência. Os usuários se preocupam com ambos, por isso devemos testar ambos.

Teste visual com Vitest e Chromatic

Se você estiver testando seus componentes com o modo de navegador do Vitest, o plugin cromático pode adicionar testes visuais sem alterações necessárias em seu arquivos de teste .

ℹ️ O que é o modo de navegador?

Vitest é executado no nó. Por padrão, ele também renderiza os componentes em seus testes no nó, usando um ambiente de navegador simulado, como jsdom ou happydom. Como é apenas simulado, muitas vezes você precisa simular vários navegadores e APIs DOM. Ou pior, pule o teste de uso deles pelos seus componentes.

Com Browser Mode , o Vitest cria um navegador real (normalmente sem cabeça) e renderiza seus componentes lá. Chega de zombar de APIs de navegador. Você testa todas as formas como seus componentes interagem com o navegador real.

A compensação é fidelidade versus velocidade. Os testes do Modo Navegador são muito mais realistas e capazes, mas um pouco mais lentos por causa do navegador real.

O modo navegador é um requisito para testes visuais com Vitest.

Como funciona?

Começar é tão simples quanto registrar o plugin na configuração do Vitest:

// vitest.config.ts
import { defineProject } from 'vitest/config';
import { playwright } from '@vitest/browser-playwright';
import { chromaticPlugin } from '@chromatic-com/vitest/plugin'; 

export default defineProject({
  plugins: [chromaticPlugin()], // 👈 Add this; no test file changes required
  test: {
    browser: {
      provider: playwright(),
      enabled: true,
      instances: [{ browser: 'chromium' }],
    },
  },
});

Com o plugin instalado, a execução de um teste coletará o resultado renderizado em final de cada teste. (Você também pode coletar a saída renderizada em pontos arbitrários durante um teste.)

Em seguida, você executa o Chromatic, que carrega esses resultados para a nuvem, tira instantâneos em paralelo, calcula suas diferenças, localiza e reduz automaticamente o flake e, finalmente, relata o resultado como uma verificação de PR.

A última etapa é a revisão. Você aprova as diferenças que parecem corretas e rejeita as que não parecem. Em seguida, envie as alterações para corrigir os snapshots rejeitados até que você consiga aprovar tudo e mesclar seu PR.

Como o Chromatic é diferente do teste visual do Vitest?

Vitest oferece um recurso de teste visual integrado, que também requer o Modo Navegador. Ele tira capturas de tela dos resultados do seu teste e produz diferenças para revisão. A principal diferença é que ele armazena essas capturas de tela em seu repositório, o que significa que você deve armazená-las com git e gerenciar atualizações. Você também deve fornecer o ambiente para capturar essas capturas de tela, o que é difícil de manter estável, porque pode variar de acordo com o sistema operacional, navegador, fontes instaladas, localidade, etc.

Chromatic, por outro lado, coleta o resultado renderizado de seus testes localmente, mas captura os instantâneos visuais reais em um ambiente de nuvem estável. Isso oferece vários benefícios:

  • Linhas de base com reconhecimento de ramificação rastreie ramificações principais e de recursos para você, para que você não precise armazená-las no git.
  • Renderização em nuvem tira snapshots em uma plataforma controlada e consistente para reduzir falhas ambientais
  • SteadySnap estabiliza instantâneos em relação à animação, variação de carregamento e tempo de captura.
  • Snapshot paralelo executa seus testes visuais o mais rápido possível
  • Cromático coleta o HTML renderizado, CSS e ativos por trás de cada captura de tela, para que você possa inspecionar o DOM e reproduzir falhas sem executar testes localmente.

Ou, para resumir com uma tabela:

Comparação Teste visual integrado do Vitest Plugin Chromatic Vitest
Requer modo de navegador Sim Sim
Armazenamento No seu repositório Na nuvem
Ambiente do navegador Exclusivo para cada configuração Ambiente de nuvem estável
Reproduções Captura de tela estática Captura de tela estática e componente ativo inspecionável
Revisão de diferenças Terminal, registros de CI, verificações de PR Verificações de PR, aplicativo web dedicado
Melhor para Desenvolvedores individuais, pequenas bibliotecas Equipes com aplicativos de produção, sistemas de design

Obtenha acesso antecipado

Estamos abrindo o acesso antecipado ao plugin Chromatic para equipes que já usam o Vitest Browser Mode ou estão movendo ativamente testes de componentes para lá. A versão beta é privada, com integração prática para um número limitado de equipes e instantâneos gratuitos durante a avaliação do produto.

Traga um repositório real e validaremos a coleção do modo navegador, o comportamento do CI, a revisão de PR, as linhas de base da ramificação e a depuração juntos. As equipes de acesso antecipado podem influenciar o produto antes do lançamento, com acesso prioritário à medida que a versão beta se expande.

Esta é uma boa opção se sua equipe já usa o Vitest para testes de componentes, começou a adotar o Modo Navegador e deseja cobertura de regressão visual sem construir infraestrutura de captura de tela em torno da API integrada.

Requer Vitest Modo navegador usando Playwright. Acompanharemos os detalhes de integração.

Deixe um comentário

Seu email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.