Durante a evolução de um framework Playwright profissional, alguns erros aparecem não porque a ferramenta está incorreta, mas porque a arquitetura ainda precisa amadurecer.

O cenário

Login
 ↓
Cria sessão autenticada
 ↓
Salva storageState
 ↓
Testes reutilizam a sessão

Primeiro problema: locator ambíguo

strict mode violation:
getByText('My account') resolved to 2 elements

O Playwright encontrou mais de um elemento com o mesmo texto. A solução foi utilizar um seletor estável:


await expect(
  page.locator('[data-test="page-title"]')
).toHaveText('My account');

Segundo problema: storageState sem autenticação

O arquivo de sessão era criado, porém não continha o estado autenticado do usuário.

A correção


await button.click();

await expect(
  page.locator('[data-test="page-title"]')
).toHaveText('My account');

await page.context().storageState({
  path: 'auth/user.json'
});

Lições aprendidas

  • Locators fazem parte da qualidade do framework.
  • storageState não substitui o teste de login.
  • Persistir estado deve acontecer após validar a condição esperada.
  • Testes devem possuir responsabilidades claras.

Conclusão

A evolução de uma automação profissional acontece melhorando confiabilidade, manutenção e arquitetura.