O problema de revisar código que você não escreveu
Um agente de codificação de IA pode produzir uma funcionalidade funcional em minutos. O gargalo mudou de lugar: a restrição não é mais a velocidade com que o código é escrito, é a confiança com que alguém pode afirmar que o código faz o que deveria fazer. Ler cuidadosamente um diff grande leva mais tempo do que gerá-lo levou.
Verificações de tipo e testes unitários confirmam que o código faz o que foi escrito para fazer. Eles não conseguem dizer se a aplicação implantada ainda funciona, porque nunca abrem uma. É nessa lacuna que as regressões geradas por IA realmente vivem.
comandos no ciclo de verificação: criar, executar, corrigir
O ciclo, em três comandos
Instale o TestSprite CLI de código aberto — gratuito, Apache-2.0, Node 20.19+, 22.13+ ou 24+:
npm install -g @testsprite/testsprite-cli
testsprite setup
Depois o ciclo. Descreva o comportamento que você quer garantido, execute-o contra um navegador real e leia o veredito a partir do código de saída:
# 1 — create the test and run it
testsprite test create --project prj_abc123 --type frontend \
--plan-from ./checkout-flow.plan.json --run --wait --output json
# → exit 1: the run failed
# 2 — pull ONE self-consistent failure bundle
testsprite test failure get test_3a9f21c7 --out ./.testsprite/failure
# 3 — fix the code, then replay the same test
testsprite test rerun test_3a9f21c7 --wait --output json
# → exit 0: passed
O pacote na segunda etapa é a parte que importa. Ele contém a etapa que falhou, suas etapas vizinhas, capturas de tela, snapshots do DOM, o código-fonte do teste, uma hipótese de causa raiz e um alvo de correção recomendado — tudo compartilhando um único id de snapshot. O CLI se recusa a combinar dados de duas execuções diferentes, então um agente nunca está raciocinando sobre um contexto montado a partir de dois estados diferentes da aplicação.
Por que uma suíte durável supera uma janela de contexto maior
Todo teste que passa fica registrado. Na próxima vez que o agente tocar no código-fonte, aquele requisito ainda está sendo verificado — esteja ou não em algum lugar da conversa atual.
Este é o argumento estrutural para a verificação externa. Uma janela de contexto guarda o que o agente está pensando agora. Uma suíte de testes guarda todo requisito que o projeto já acertou, e continua guardando isso entre sessões, entre agentes e ao longo dos meses em que ninguém mais lembra por que um determinado caso extremo importava.
Ainda não coberto
testsprite test create — descreva o novo comportamento em linguagem simples e execute-o. O requisito se torna permanente.
Já coberto
testsprite test rerun — reproduza os testes existentes para que nada que costumava funcionar quebre silenciosamente.
Algo falhou
testsprite test failure get — um pacote, um snapshot, uma hipótese de causa raiz. Corrija e reproduza.
Configure seu agente para fazer isso sozinho
Você não deveria precisar retransmitir comandos entre uma página web e seu agente de codificação. Um único comando de configuração instala um arquivo de skill no repositório descrevendo o ciclo na forma que um agente realmente consome:
TESTSPRITE_API_KEY=sk-... testsprite setup --from-env --yes --agent claude
Os harnesses suportados são claude, codex, cursor, cline, antigravity, kiro, windsurf e copilot. A instalação é puramente local. Depois disso, o agente sabe como criar, executar e triar testes sem precisar ser informado novamente em cada sessão.
Antes de gastar um turno em um comando que vai falhar por motivos ambientais, verifique o ambiente:
testsprite doctor # CLI and Node versions, profile, credentials, connectivity
O que verificar primeiro
Nem tudo merece um teste de ponta a ponta. Em uma base de código mudando rapidamente sob um agente de IA, a cobertura de maior valor é estreita:
Os fluxos que geram receita. Cadastro, checkout e cobrança. Uma regressão aqui custa dinheiro imediatamente e é frequentemente invisível em testes unitários.
Qualquer coisa envolvendo autenticação. Gerenciamento de sessão, redirecionamentos após login e limites de permissão são onde uma refatoração aparentemente plausível causa mais dano.
Formulários e validação. Baratos de descrever, desproporcionalmente propensos a quebrar quando uma biblioteca de componentes é atualizada ou um campo é renomeado.
Os últimos três bugs que você lançou. Um teste de regressão escrito depois de uma correção é o teste de maior retorno em qualquer suíte.
Se você preferir que o primeiro conjunto seja proposto para você, a exploração pode rascunhá-los. As propostas ficam em espera para revisão e nada é gravado no seu disco até que você aceite:
testsprite test plan generate --project prj_abc123
testsprite test plan accept --project prj_abc123 # all of them
testsprite test plan accept --project prj_abc123 --only prop_2 prop_5
Tornando a verificação obrigatória
Uma etapa de verificação que só roda quando alguém lembra de executá-la não é verificação. Coloque-a no CI:
testsprite ci init github
Isso monta .github/workflows/testsprite.yml usando TestSprite/testsprite-action@v1, que anota a aba de checks do PR com um erro por falha, adiciona uma tabela de resultados ao resumo do job, envia um relatório JUnit e — o mais importante — falha o job em uma execução parcial em vez de reportá-la como verde.
Esse é o caminho em que seu workflow conduz a execução. O TestSprite também se instala como um GitHub App que escuta os eventos de implantação que seu pipeline já produz e comenta os resultados de volta no pull request, o que não exige arquivo de workflow nem nenhuma alteração no repositório.
Em qualquer outro sistema de CI, o CLI precisa apenas de uma chave de API no ambiente:
export TESTSPRITE_API_KEY="$TESTSPRITE_API_KEY"
testsprite test run --all --project prj_abc123 --wait \
--report junit --report-file testsprite-junit.xml \
--summary-file testsprite-summary.json
Códigos de saída que vale a pena ramificar
| Saída | Significado | A resposta certa |
|---|---|---|
0 | Todo teste passou | Merge |
1 | Um teste falhou | test failure get, corrigir, test rerun |
3 | Erro de autenticação | Chave ausente ou inválida — pare, não tente novamente |
5 | Erro de validação | Arquivo de plano malformado — execute test lint |
7 | Timeout ou não suportado | Execute novamente para reconectar, ou aumente --timeout |
11 | Limite de taxa atingido | Pode tentar novamente — recue e espere |
12 | Créditos insuficientes | Não pode tentar novamente — um humano precisa agir |
14 | Cliente muito antigo | Atualize o CLI |
Os códigos 129, 130 e 143 significam que o processo foi interrompido por um sinal (128 mais o número do sinal), não que um teste falhou — vale a pena distinguir isso antes de reportar uma execução como quebrada.
Perguntas frequentes
Isso substitui os testes unitários?
Não, e não deveria. Testes unitários são a verificação mais barata possível e um agente deveria executá-los constantemente. A verificação de ponta a ponta responde a uma pergunta diferente — se a aplicação implantada funciona — que os testes unitários estruturalmente não conseguem responder.
O agente precisa escrever código de automação de navegador?
Não. Um teste é um arquivo de plano em linguagem simples com etapas de ação e asserção. Execute testsprite test create --plan-template para obter um esqueleto correto no esquema, alinhado à sua versão instalada.
Posso experimentar os comandos sem gastar créditos?
Sim. --dry-run exercita todo o caminho de código offline com dados fictícios, e test scaffold e test lint nunca tocam na rede nem nas suas credenciais.
O CLI é de código aberto?
Sim — Apache-2.0, no GitHub, e gratuito para instalar via npm. A execução dos testes roda na nuvem e consome créditos do workspace.
Como ele sabe que uma falha é um bug real e não um teste instável?
O pacote de falha inclui uma hipótese de causa raiz e um alvo de correção recomendado em vez de apenas uma marca vermelha. testsprite test flaky reproduz um teste várias vezes com o autorreparo desativado e reporta uma pontuação de estabilidade quando você precisa resolver a questão diretamente.
Quais agentes de codificação são suportados?
Claude Code, Codex, Cursor, Cline, Antigravity, Kiro, Windsurf e Copilot, via testsprite agent install <agent> ou a flag --agent na configuração.
Gere rápido, verifique externamente.
A velocidade da geração de código por IA só é útil se algo independente confirmar o resultado. Uma suíte de testes durável é essa coisa independente — ela sobrevive à janela de contexto, captura as regressões que uma revisão de diff perde, e transforma uma execução vermelha em um alvo de correção específico em vez de um mistério. Instale o CLI em uma linha, leia a referência em docs.testsprite.com, e dê uma estrela ao CLI de código aberto no GitHub.