Quanto mais complexos são os aplicativos em que trabalho, mais confio e invisto em testes. Quer se trate de tipagem de fluxo, testes jest, testes unitários ou testes selenium, confio em todos eles para garantir a integridade e me salvar de mim mesmo.

Um tipo de teste que é incrivelmente importante, mas frequentemente ignorado, é o teste visual. O teste funcional é extremamente importante, mas a verdade é que os usuários esperam que as coisas funcionem, mas a primeira coisa que eles notarão são coisas que o parecem quebrado. Muitas vezes, seus testes de selênio e de unidade serão aprovados apesar de uma regressão visual horrível. É aí que entra um serviço como o Percy. Percy torna fácil o teste de regressão visual!

Acesso rápido

  • Os defeitos de funcionalidade podem ser ocultados, mas os defeitos da interface do usuário ficam visíveis
  • A maioria dos testes unitários não detecta regressões visuais
  • A maioria das lojas virtuais não tem os recursos ou o prazo para contratar o controle de qualidade
  • Maior qualidade do que os utilitários de código aberto atuais
  • Integra-se com CIs (Travis, Circle, etc.) e GitHub para que o senhor possa detectar problemas antes que o código seja mesclado
  • É grátis para começar!

Primeiros passos

Após a inscrição gratuita, o Percy fornece um aplicativo de amostra para mostrar ao senhor como as coisas funcionam. O Percy funciona com base em um sistema de instantâneos, comparando um instantâneo desejado/conhecido com instantâneos automatizados pela CI ou instantâneos criados localmente.

Há uma série de SDKs com os quais o senhor pode trabalhar:

O senhor também pode usar o PercyScript do próprio Percy, um SDK para criar snapshots!

Para usar o PercyScript, adicione o Percy ao seu projeto usando o NPM:

$ npm install -D @percy/script

Em seguida, é hora de criar seu primeiro PercyScript para automatizar algumas ações e tirar uma foto do resultado:

// snapshots.js
const PercyScript = require('@percy/script');

// A script to navigate our app and take snapshots with Percy.
PercyScript.run(async (page, percySnapshot) => {
  await page.goto('http://localhost:8000');
  await percySnapshot('TodoMVC home page');

  // Enter a new to-do.
  await page.type('.new-todo', 'A really important todo');
  await page.keyboard.press('Enter');
  await percySnapshot('TodoMVC with a new todo', { widths: [768, 992, 1200] });
});

Como vivemos em um mundo de design responsivo, Percy tira instantâneos em larguras específicas para garantir que os designs de seu desktop, tablet e smartphone não regridam. Em seguida, o senhor pode executar o script:

$ npx percy exec -- node snapshots.js
[percy] created build #1: https://percy.io/test/example-todomvc/builds/1738842
[percy] percy has started.
[percy] snapshot taken: 'TodoMVC home page'
[percy] snapshot taken: 'TodoMVC with a new todo'
[percy] stopping percy...
[percy] waiting for 2 snapshots to complete...
[percy] done.
[percy] finalized build #1: https://percy.io/test/example-todomvc/builds/1738842

Acesse o link no final da resposta e você poderá comparar seu instantâneo com o instantâneo do mestre. Observe que os snapshots da ramificação principal são aprovados automaticamente porque a principal representa o trabalho de qualidade da produção.

Integrações

Os fluxos de trabalho automatizados são a norma hoje em dia, por isso é incrível que o Percy se integre a várias estruturas, serviços de CI e serviços de hospedagem de código:

Essas integrações são especialmente úteis quando se está trabalhando em um projeto de código aberto; os colaboradores podem vir de qualquer lugar e podem não estar cientes de todos os requisitos visuais importantes do projeto.

Depois que uma solicitação pull é enviada para revisão no GitHub, o Percy pode tirar instantâneos para comparar com o mestre. Se houver diferenças visuais, Percy marca o PR como necessitando de revisão visual:

Um membro da equipe com Percy o acesso irá para o painel de controle do Percy, verá as alterações visuais e aprovará as alterações ou informará ao remetente quais são as regressões e que o patch precisa ser corrigido.

Eu gostaria de ter conhecido o Percy há muito tempo… e aposto que outros membros da minha equipe também gostariam de ter feito isso! A quebra da interface do usuário é um problema sério sem muitas opções excelentes; o Percy é o melhor que já vi. Estou especialmente interessado nas diferentes resoluções que posso definir e na integração com o GitHub. Se tiver um tempinho, dê uma olhada no Percy – ele pode salvá-lo de si mesmo também!