Como automatizar testes com Playwright usando IA
Guia para quem testa na mão e quer o primeiro teste automatizado rodando · 29 de setembro de 2026
Se toda sprint você refaz a mesma regressão clicando pelo sistema, este guia é para você. Em vez de decorar a API do Playwright antes de começar, você vai escrever o caso do jeito que já escreve hoje e usar a IA para transformar esse caso em código, sem cair nos erros mais comuns de quem faz isso pela primeira vez.
Por que Playwright
- Espera sozinho. Antes de clicar, ele aguarda o elemento aparecer e ficar clicável. Isso elimina boa parte dos testes que falham "às vezes".
- Seletores pensados para gente. Você encontra os elementos pelo que o usuário vê: o texto do botão, o rótulo do campo.
- Relatório com vídeo e trace. Quando um teste falha, dá para ver passo a passo o que a página mostrava.
- Gratuito e aberto, com Chrome, Firefox e Safari (WebKit) no mesmo teste.
1. Crie o projeto
Você precisa do Node.js 20 ou mais novo. Numa pasta vazia (ou no repositório do seu sistema), rode:
npm init playwright@latest
Aceite as opções padrão (TypeScript, pasta tests). O comando instala os
navegadores e cria o playwright.config.ts e um teste de exemplo. Para conferir
que está tudo certo:
npx playwright test
2. Comece pelo caso, não pelo código
O melhor ponto de partida é o caso de teste que você já escreveria para rodar na mão. Um fluxo por caso, passos na ordem e, principalmente, o que conferir no fim:
- Abrir a página de login
- Preencher o e-mail
qa@exemplo.come a senhasenha-errada - Clicar em "Entrar"
- Conferir: aparece "E-mail ou senha inválidos"
Sem a última linha, o teste só prova que nada quebrou no caminho. Mais dicas em como escrever um bom caso.
3. Como fica em Playwright
O caso acima vira este arquivo, tests/login.spec.ts:
import { test, expect } from '@playwright/test';
test('login com senha errada mostra erro', async ({ page }) => {
await page.goto('https://seu-sistema.com/login');
await page.getByLabel('E-mail').fill('qa@exemplo.com');
await page.getByLabel('Senha').fill('senha-errada');
await page.getByRole('button', { name: 'Entrar' }).click();
await expect(page.getByText('E-mail ou senha inválidos')).toBeVisible();
});
Repare que cada linha do caso virou uma linha do teste. getByLabel acha o campo pelo rótulo, getByRole acha o botão pelo texto, e o expect é a conferência do fim.
4. Usando a IA para escrever o teste
O Claude e o ChatGPT escrevem Playwright muito bem. Um pedido que funciona:
getByRole,
getByLabel e getByText, nunca seletores CSS de classe. Não use
waitForTimeout. Termine com um expect que confere o resultado.Caso: (cole aqui os passos do seu caso)
O problema: a IA não está vendo o seu sistema. Ela adivinha que o botão se chama "Entrar" e que o campo tem o rótulo "E-mail". Quando a adivinhação erra, o teste falha e você volta ao chat. Três formas de diminuir isso:
- Mostre a página. Cole o HTML do formulário (clique direito → Inspecionar → copiar elemento) junto do pedido.
- Pegue os seletores reais. Rode
npx playwright codegen https://seu-sistema.com, clique pelo fluxo e copie os localizadores que ele gera para a IA usar. - Mande o erro de volta. Se falhar, cole a mensagem de erro do Playwright no chat. Ela diz exatamente qual elemento não foi encontrado.
5. Rode e veja o que aconteceu
npx playwright test # roda todos os testes
npx playwright test --ui # modo visual: passo a passo, com a página ao lado
npx playwright show-report # relatório da última rodada
O modo --ui é o melhor amigo de quem está começando: dá para ver cada passo, o que a página mostrava e onde o teste parou.
Erros comuns de quem está começando
- Esperas fixas (
waitForTimeout(3000)). Deixam o teste lento e ainda falham quando o sistema demora mais. O Playwright já espera sozinho; confie nosexpect. - Seletores frágeis como
.btn-primary > div:nth-child(2). Quebram na próxima mudança de layout. Prefira o texto que o usuário vê. - Login em todo teste. Faça o login uma vez e reaproveite a sessão com
storageState, recurso do próprio Playwright. - Senha no código. Use variáveis de ambiente, e nos secrets do CI. Veja credenciais.
- Teste sem conferência. Todo teste termina com um
expect.
6. Rodando sozinho a cada mudança (CI)
O npm init playwright oferece criar um workflow do GitHub Actions. Com ele, os testes rodam a cada push e o relatório fica salvo na execução. Detalhes em rodar os testes no CI.
O caminho mais curto: a IA vendo o seu site
O maior atrito do passo 4 é a IA escrever sem ver a página. O
KraniQA resolve exatamente isso: você escreve o caso em português, o Claude
abre o seu sistema numa janela do app, faz o caminho de verdade e escreve o teste Playwright
com os seletores que existem. O arquivo fica no seu repositório e roda com
npx playwright test, com ou sem o app.