Pular para o conteúdo
Test Automation Lab
  • Aprender
  • Praticar
  • Referência
  • Qualidade
Menu
  • Aprender
  • Praticar
  • Referência
  • Qualidade
PT
  • Português
  • English
Tema

Test Automation Lab

GitHub© 2026 LCDS IT
← Todos os guias
🎭Praticante·8 min de leitura

Como projetar testes E2E confiáveis

Testes ponta a ponta pegam o que os de unidade não pegam, mas só se você eliminar a instabilidade na origem.

Testes ponta a ponta (E2E) exercitam o sistema real do jeito que uma pessoa usa. Esse é o valor deles e também a maldição: cada camada que tocam é uma chance de ficarem lentos ou instáveis. Uma suíte E2E instável é pior que nenhuma, porque ensina o time a ignorar o vermelho.

Selecione elementos pela intenção, não pela estrutura

Seletores CSS e XPath amarrados ao layout quebram a cada redesenho. Prefira seletores semânticos e acessíveis, que espelham como uma pessoa encontra as coisas: papéis, rótulos e, para os poucos casos sem uma alça natural, identificadores de teste explícitos.

// ❌ Frágil: quebra quando a marcação ou o estilo muda
await page.click('div.toolbar > button:nth-child(2)');

// ✅ Resiliente: expressa a intenção de quem usa
await page.getByRole('button', { name: 'Save' }).click();
await page.getByLabel('Email').fill('user@example.com');

Nunca durma, espere por condições

Um sleep(2000) fixo é uma aposta de que o app sempre responde em menos de dois segundos. É lento demais numa máquina rápida e curto demais num runner de CI sobrecarregado. Espere, em vez disso, pelo estado que realmente importa.

// ❌ Tempo arbitrário: lento e ainda instável
await page.waitForTimeout(2000);

// ✅ Espere pelo resultado observável
await expect(page.getByText('Saved')).toBeVisible();
⚠️

Atenção: Quase toda instabilidade em E2E é uma condição de corrida escondida: o teste confere antes de o app terminar. Asserções que tentam de novo sozinhas, e esperam pelo resultado na tela, eliminam a corrida em vez de disfarçá-la com pausas.

Mantenha os testes independentes e herméticos

  • Cada teste monta e desmonta seus próprios dados, sem dependência de ordem entre testes.
  • Controle o relógio, a rede e a aleatoriedade para que as execuções sejam determinísticas.
  • Teste um resultado visível por teste; um megateste de 30 passos falha por cem motivos.
  • Ponha em quarentena, nunca ignore: um teste instável pulado é uma lacuna silenciosa.

Compare como cada runner expressa essas ideias no playground Framework Comparison antes de amarrar a sua suíte a um só.

Pratique isto

  • E2E Selector Playground →
  • Framework Comparison →
  • Vitrine de testes →

Leia a seguir

  • 🎚️ Mocks e dublês de testeStub, spy, mock, fake: cinco ferramentas diferentes que acabam sob uma palavra só. Saiba qual escolher.
  • 🔄 TDD na práticaVermelho, verde, refatorar como ferramenta de design, não como cerimônia, com os erros comuns a evitar.