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.