1

Pitch: blastproof: testes end-to-end escritos em inglês, sem nenhum seletor CSS

Opa pessoal!

Quem mantém suíte de testes end-to-end conhece aquela típica falha intermitente em que o teste quebra mesmo sem ter alterado nada no sistema.

Trocaram uma classe, moveram um elemento, e dezenas de testes quebraram sem nenhuma alteração de comportamento. O seletor CSS ou XPAth não é legal para descrever o que o usuário faz, ele descreve onde a coisa está no HTML, e o HTML muda por motivo de layout, de framework e de refatoração.

O blastproof aposta em trocar esse endereço estrutural por uma descrição de comportamento. Um teste é um YAML com frases:

priority: P0
routes: [/checkout]
steps:
  - Navigate to the checkout page at /checkout
  - Verify the page displays a heading that says "Order placed"

Um agente executa isso num Chromium e resolve cada elemento pela árvore de acessibilidade. Não existe seletor em lugar nenhum do projeto, nem mecanismo de fallback para seletor.

Além da execução, ele faz três coisas que existem por causa do pull request:

  • Mapeia o diff para rotas e roda só os testes que a mudança pode afetar, em vez da suíte inteira.
  • Pontua o resultado com peso por prioridade (P0 vale 3, P1 vale 2, P2 vale 1) e falha o merge abaixo de um mínimo.

Instalação simples via npm. Roda local e pode ser com a sua própria chave (Anthropic, OpenAI ou modelo local). Tem GitHub Action pronta.

O projeto é recente e existem ainda limitações que são importantes saber antes de tentar. A principal é que ferramenta só alcança o que a acessibilidade sabe. Exemplos como interface em canvas ou amontoado de div sem rótulo não vai dar boa. E claro, a necessidade de um modelo de IA para execução dos testes.

github.com/hamc/blastproof

Qualquer comentário é bem-vindo.

Carregando publicação patrocinada...