Glossário · IA em testes
Self-healing locator
Também chamado de: self-healing locators, self-healing, locator auto-reparável, testes auto-reparáveis
Definição
Locator que, ao deixar de encontrar o elemento, faz a ferramenta escolher um substituto provável a partir de atributos salvos ou de um modelo e seguir com o teste.
Um self-healing locator (locator auto-reparável) é um locator de teste de UI apoiado por um mecanismo de recuperação. Quando o locator principal não encontra um elemento, por exemplo porque um id mudou, a ferramenta procura na página o elemento que melhor corresponde ao que ela sabia sobre o original (tag, texto, atributos, posição, vizinhos), usa esse elemento e normalmente registra o “reparo” (heal) para que alguém atualize o teste. O objetivo é ter menos falhas causadas por mudanças inofensivas no markup.
Como funciona na prática
A maioria das implementações segue o mesmo padrão:
- Nas execuções que passam, guarda uma impressão digital (fingerprint) de cada elemento que o teste toca.
- Quando um locator falha, pontua os elementos candidatos da página em relação a essa impressão digital.
- Se o melhor candidato fica acima de um limite, usa esse elemento e registra a substituição; caso contrário, falha normalmente.
Esse tipo de reparo por similaridade de atributos já está consolidado: ferramentas comerciais o oferecem, e o Healenium é uma opção open source para Selenium. O reparo baseado em LLM, no qual um modelo lê a página ou a árvore de acessibilidade e propõe um novo locator ou um teste corrigido, é mais recente. Os test agents do Playwright, introduzidos na versão 1.56, incluem um healer que sugere correções para testes que falham; trate-os como assistentes que propõem mudanças para revisão, e não como um piloto automático.
O risco real: “consertar” um bug de verdade
Um reparo pressupõe que a mudança foi cosmética. Às vezes não foi:
- O botão “Enviar” foi removido por engano, e o healer clica em “Salvar rascunho” no lugar.
- Um campo teve o rótulo trocado de “E-mail” para “Usuário”, uma mudança real de requisito que o teste deveria ter sinalizado.
- Existem duas linhas parecidas e o healer escolhe a errada, então o teste passa contra os dados errados.
Em todos esses casos, um teste que deveria falhar fica verde. Regras que mantêm o reparo honesto:
- Reporte cada reparo e reprove a execução (ou pelo menos sinalize) no gate de release.
- Transforme os reparos em mudanças de código. Aceite ou rejeite o locator sugerido na revisão; não deixe a ferramenta continuar usando-o silenciosamente.
- Verifique resultados, não só interações, para que clicar no elemento errado ainda falhe na assertion seguinte.
Corrija os locators primeiro
Boa parte da fragilidade que o self-healing tenta resolver vem de seletores frágeis: longas cadeias de XPath, nomes de classe gerados, caminhos baseados em índice. Locators voltados ao usuário, como getByRole('button', { name: 'Submit' }) do Playwright, ou atributos data-testid estáveis eliminam a maior parte dessa necessidade sem nenhum chute.