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
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
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.
O que você obtém
- 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
--reportou 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.
uncertainfica oculto no terminal a menos que você passe--all.
Novo na versão 0.8.0:
--caps scan,reportrestringe o servidor MCP à varredura de código-fonte e ao leitor de resultados salvos, sem iniciar navegador e sem baixar navegador.--storage-state auth.jsonpercorre 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
assertemsniff.configlimita 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.
| Agente | Instalação em uma linha |
|---|---|
| Claude Code | claude plugin install sniff@10x |
| Qualquer um dos 70+ agentes | npx skills add Aboudjem/sniff |
| Codex, Gemini CLI, OpenCode, Pi | ./install.sh codex |
| VS Code (Copilot) | ./install.sh copilot |
| Todo o resto | veja 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 scanexecuta 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 nonedesativa o limite de severidade, embora um orçamento deassertainda possa falhar a execução.
Saiba mais
- docs/editors.md, instalação e trechos MCP para cada agente suportado
- docs/authenticated-walks.md, percorrendo um aplicativo com login usando
--storage-state - docs/assert-budgets.md, limitando descobertas por severidade em
sniff.config - docs/comparison.md, como o sniff difere de linters, verificadores de links e frameworks E2E
- docs/faq.md, as perguntas que esta página não responde
- CHANGELOG.md · CONTRIBUTING.md · LICENSE
Construído por Adam Boudjemaa · Apache 2.0 · apoiado em Playwright e axe-core