Por que os bugs de vibe coding se concentram

Um agente otimiza para o caminho que você descreveu. Você descreve aquilo que quer que aconteça, então o caminho feliz é construído com cuidado e tudo ao redor dele é construído de forma plausível. Plausível é a palavra decisiva aqui: o código compila, a tela renderiza e as suposições nunca foram confrontadas com a realidade.

É por isso que as falhas são previsíveis. Elas estão sempre nas bordas da descrição.

Os quatro grupos, na ordem em que pegam você

  • Persistência. A tela é atualizada, o banco de dados não. Recarregar a página revela isso na hora. Recarregue depois de cada gravação, antes de acreditar em qualquer coisa.

  • Estados vazios e de erro. Zero resultados, uma requisição que falha, uma entrada rejeitada. Nada disso estava no seu prompt. Teste cada um deles de propósito. Eles quebram com mais frequência do que o caminho feliz.

  • A segunda conta. Propriedade, permissões e visibilidade são presumidas a partir da única sessão que construiu o app. Faça login como outra pessoa antes que outra pessoa faça isso.

O quarto é mais sutil: as funcionalidades de ontem. Cada nova instrução pode desfazer em silêncio algo que funcionava, e ninguém está verificando o comportamento antigo porque a conversa já seguiu adiante.

A verificação que escala junto com os prompts

Verificar na mão funciona por uma tarde e depois se degrada, porque a superfície cresce a cada prompt que você escreve e a sua paciência não. O que você quer são verificações escritas em linguagem simples e executadas automaticamente, para que as funcionalidades de ontem sejam reverificadas sem que você precise decidir por isso.

A configuração coloca isso nas mãos do agente, então a verificação acontece junto com a construção, em vez de virar uma tarefa à parte.

Nada disso exige um terminal. Crie um projeto no dashboard do TestSprite, descreva a verificação em linguagem simples e aponte para o seu app. Os desenvolvedores do seu time podem fazer a mesma coisa pela linha de comando, se preferirem, o que está no repositório do CLI.

Dez minutos que pegam a maior parte disso

  • Cadastre-se, saia e entre de novo. A falha total mais comum, e a primeira coisa que um usuário real faz.

  • Crie algo, recarregue e confirme que sobreviveu. Pega o grupo de persistência de cara.

  • Envie algo inválido. Você está verificando se ele falha de forma clara, em vez de ter sucesso silenciosamente.

  • Percorra o fluxo principal com uma conta recém-criada. Pega o grupo de permissões.

Nenhuma dessas verificações exige ler código, e juntas elas encontram a maior parte do que, de outra forma, seria encontrado por um estranho.

Por que o mesmo bug sempre volta

A queixa mais comum sobre construir dessa forma não é que as coisas quebram, é que consertar uma coisa quebra outra, repetidamente. Isso não é falha do modelo. É a falta de um registro.

Cada instrução é interpretada em relação ao estado atual do código e nada mais. Não existe uma lista dos comportamentos que já precisavam continuar funcionando, então o agente não tem como saber que a mudança que você pediu entra em conflito com algo que você estabeleceu na terça passada. Do ponto de vista dele não há conflito, porque a terça passada não está na sala.

Verificações escritas são esse registro. Elas não deixam o agente mais inteligente, elas tornam a sua intenção duradoura. O efeito prático é que a terceira e a quarta rodada de mudanças param de desfazer as duas primeiras, e é nesse ponto que construir dessa forma começa a parecer confiável em vez de exaustivo.

Antes de ir para algum lugar de verdade

A partir do momento em que outras pessoas vão usar o app, as verificações devem rodar a cada mudança, e não quando você lembrar.

  • O GitHub App é um webhook que você configura no dashboard do TestSprite. Ele escuta o evento de deploy que o seu pipeline já produz, então nada no seu repositório muda.

  • GitHub Actions coloca a etapa dentro do seu próprio workflow, configurada pelo terminal.

Deixando as verificações rodarem sozinhas

O TestSprite é como os dez minutos de verificação desta página deixam de ser algo que você faz na mão. Você descreve cada fluxo uma vez, em linguagem simples, e ele roda esses fluxos no seu app depois de cada mudança.

Isso resolve diretamente aquilo que as pessoas acham mais frustrante em construir dessa forma. As verificações escritas são o registro do que já precisava continuar funcionando, então uma nova instrução é verificada em relação a elas em vez de interpretada isoladamente. O ciclo em que consertar uma coisa quebra outra deixa de ser o padrão.

Nada aqui exige um terminal ou um arquivo de teste. Crie um projeto no dashboard, aponte para o seu app e descreva as quatro verificações acima. Os desenvolvedores do seu time podem fazer a mesma coisa pela linha de comando, se preferirem.

Vibe coding é simplesmente mais arriscado?

Isso muda o lugar onde o risco fica. Menos risco de um erro de digitação, mais risco de uma suposição nunca examinada. A resposta não é voltar a ler cada linha, é verificar o comportamento de forma sistemática.

Por que consertar uma coisa quebra outra?

Porque cada instrução é interpretada no contexto do código atual, e não em relação a um registro do que já precisava continuar funcionando. Verificações escritas fornecem esse registro.

Eu preciso escrever testes?

Em código, não. Descreva o fluxo em linguagem simples, guarde essa descrição e faça com que ela rode automaticamente depois de cada mudança.

Como eu sei que a verificação é de verdade?

Quebre algo de propósito e confirme que a verificação falha. Uma verificação que nunca falha não está protegendo nada, e isso leva um minuto para conferir.

Quando eu devo começar a verificar?

Antes de mostrar para qualquer pessoa. O custo de uma verificação escrita agora é de alguns minutos; o custo depois que outra pessoa encontrou o bug é muito mais alto.

A versão curta

Verifique os quatro grupos, não o código.

Os bugs de vibe coding se acumulam em torno de persistência, estados vazios, segundas contas e funcionalidades que você construiu ontem. Dez minutos cobrem a maior parte deles, e colocar essas verificações no papel é o que impede que voltem conforme você continua escrevendo prompts.