sniff

Percorre um aplicativo web em execução em um navegador real e relata 12 classes de bugs com etapas de reprodução, uma captura de tela e uma severidade. npm: sniff-qa.

Documentação

sniff

npm version CI License Apache 2.0 Stars

English · 简体中文 · 日本語 · Español · Français

Aponte para o seu aplicativo em execução. Ele percorre seus fluxos de usuário reais em um navegador real e informa o que está realmente quebrado, com provas.

O que ele faz · Instalação · Como usar · O que você obtém · Funciona no seu editor · Informações importantes

sniff walking a buggy app and streaming findings with severity, confidence, steps to reproduce, and a fix
claude plugin marketplace add Aboudjem/10x
claude plugin install sniff@10x

O que ele faz

A maioria dos linters lê seu código-fonte sem nunca executar seu aplicativo, e frameworks de ponta a ponta pedem que você escreva e mantenha os testes você mesmo. O sniff abre seu aplicativo em execução em um navegador real, clica e preenche coisas como um usuário faria, e avalia o que realmente aconteceu.

  • Ele encontra 12 classes de bugs, desde rotas com HTTP 500 e links quebrados até dados de placeholder, botões de envio mortos, formulários apagados pelo botão voltar, spinners travados e overflow em dispositivos móveis.
  • Ele prova cada um deles. Cada descoberta traz a rota e as etapas ordenadas que a produziram, além da captura de tela e do trecho de console ou rede capturado pela verificação. Sem etapas, sem descoberta.
  • Ele foi medido. Em um aplicativo de teste com 21 bugs plantados em todas as 12 classes, além de uma página de controle limpa, o sniff encontra 21 de 21 e não relata nada na página de controle.

Instalação

O bloco acima é o caminho do Claude Code, através do marketplace 10x. Para qualquer outro agente, a CLI de skills da Vercel instala as mesmas três skills:

npx skills add Aboudjem/sniff

Para usá-lo como uma ferramenta de linha de comando simples, sem envolver editor:

npx sniff-qa --url http://localhost:3000

O pacote npm é sniff-qa e o binário que ele instala é sniff. Não execute npx sniff, que é um pacote não relacionado.

Versão do Node, instalação do projeto e CI

Node.js 22 ou mais recente. npm install -D sniff-qa o adiciona às devDependencies de um projeto, e npx sniff-qa ci escreve um workflow do GitHub Actions com cache de navegador e artefatos de relatório.

Como usar

1. Inicie seu aplicativo, com o servidor de desenvolvimento que seu projeto já usa.

npm run dev

2. Percorra-o, a partir de um segundo terminal. O sniff detecta automaticamente um servidor de desenvolvimento nas portas comuns, então --url é opcional, mas passá-lo elimina a adivinhação.

npx sniff-qa --url http://localhost:3000

3. Leia as descobertas. Elas são exibidas agrupadas por severidade. Abaixo está uma execução real resumida contra o fixture de bugs plantados deste próprio repositório, a partir de npx sniff-qa --url http://localhost:4321 --ci --max-pages 12:

sniff v0.8.0  walking http://localhost:4321

  26 findings (+1 low-confidence hidden; use --all)

  CRITICAL (1)
    • [confirmed] Page returns HTTP 500
      /crash  (route/broken-page)
        - Navigate to /crash
        - Server responded with HTTP 500
      fix: The route throws server-side. Check the server logs/handler for this path and return a valid page or a proper error page.
      shot: sniff-reports/crawl/_crash-desktop.png

✓ Scan complete: 26 issue(s) found. Exit code 1 so CI fails on bugs; pass --fail-on none to always exit 0.

Adicione --report para uma página HTML autônoma que você pode enviar para alguém. Execute npx sniff-qa doctor se o ambiente parecer errado.

How sniff works: crawl, act, assert, prove, report

O que você obtém

The 12 classes of bugs sniff finds
  • Um relatório de terminal agrupado por severidade, cada descoberta com etapas, uma correção e um caminho de captura de tela.
  • Um arquivo compartilhável, um relatório HTML autônomo com --report ou JSON com --json.
  • Um código de saída, diferente de zero quando as descobertas atingem a severidade --fail-on, para que o CI falhe em bugs reais.
  • Um rótulo de confiança em cada um. uncertain fica oculto no terminal a menos que você passe --all.

Novo na versão 0.8.0:

  • --caps scan,report restringe o servidor MCP à varredura de código-fonte e ao leitor de resultados salvos, sem iniciar navegador e sem baixar navegador.
  • --storage-state auth.json percorre um aplicativo com login. Valores de cookie e token desse arquivo são ocultados no texto de cada relatório escrito, embora não nos pixels das capturas de tela.
  • Um bloco assert em sniff.config limita as descobertas por severidade (maxCritical, maxHigh, maxTotal), aplicado na linha de comando pela caminhada, pela varredura de código-fonte e pela descoberta.

Funciona no seu editor

Funciona no Claude Code, Cursor, Codex, Copilot, Gemini CLI e em mais de 70 outros agentes através de npx skills add. As skills são em Markdown, então elas rodam em qualquer modelo que seu editor usar.

AgenteInstalação em uma linha
Claude Codeclaude plugin install sniff@10x
Qualquer um dos 70+ agentesnpx skills add Aboudjem/sniff
Codex, Gemini CLI, OpenCode, Pi./install.sh codex
VS Code (Copilot)./install.sh copilot
Todo o restoveja docs/editors.md
Adicione como servidor MCP em vez disso
claude mcp add sniff-qa npx -- -y sniff-qa --mcp
codex mcp add sniff-qa -- npx -y sniff-qa --mcp

Cursor, VS Code, Gemini CLI, Windsurf, Continue, OpenCode e Zed aceitam o mesmo comando como uma entrada JSON ou TOML. Cada trecho por editor está em docs/editors.md.

Informações importantes

[!IMPORTANT] Sem chave de API, sem conta, sem cadastro e sem provedor de IA, a menos que você configure um você mesmo. Percorrer e escanear nunca edita seu código-fonte. sniff fix é o único comando que reescreve código, e somente quando você o executa.

[!NOTE] Uma caminhada clica em botões e envia formulários reais, então ela pode criar dados reais. Aponte-a para um aplicativo de desenvolvimento ou staging, não para produção. A primeira caminhada também baixa uma compilação do Chromium e a armazena em cache, então essa execução precisa de acesso à internet.

  • Ele quer um aplicativo em execução. Sem um servidor de desenvolvimento ativo, ele recorre a uma varredura somente de código-fonte e informa como iniciar a caminhada real. npx sniff-qa scan executa essa varredura de propósito.
  • A verificação de links quebrados segue links externos, então uma caminhada faz requisições às URLs de terceiros que suas próprias páginas já linkam.
  • Uma caminhada que encontra bugs sai com código 1 de propósito, para que o CI falhe na compilação. Isso não é um travamento. --fail-on none desativa o limite de severidade, embora um orçamento de assert ainda possa falhar a execução.

Saiba mais


Construído por Adam Boudjemaa · Apache 2.0 · apoiado em Playwright e axe-core