Ir para o conteúdo
decodecodeveloper docs
Storefront → Templates → Validação da migração

parity run

Compara duas URLs (prod × cand) e produz um relatório de paridade — com seleção de módulos para execuções focadas (SEO, visual, cache, vitals, DOM/CSS).

parity run é o comando principal: ele conduz duas URLs — prod (a fonte da verdade) e cand (o site migrado / preview do PR) — pelos mesmos fluxos e checks, e reporta o que difere.

# Smoke rápido (~30s, sem LLM) — valida que as URLs respondem e renderizam
parity run --prod https://old.com --cand https://new.dev --preset smoke --open
 
# Auditoria completa com diff visual (precisa de chave de LLM)
parity run --prod https://old.com --cand https://new.dev --preset full --open

Presets

PresetO que roda
smokeHome, só mobile, sem LLM, sem crawl visual/vitals. ~30s — barato o suficiente para disparar depois de todo deploy.
fullJornada de compra + busca + interações de carrinho, os dois viewports, vitals-pages 10 / visual-pages 5. Auditoria profunda.
ciJornada de compra, mobile, vitals-pages 5 / visual-pages 3, --only e2e,html,console. Ajustado para CI.

Suas flags explícitas sempre vencem o preset.

Saída

Uma execução escreve parity-output/runs/<runId>/report.json (a fonte da verdade legível por máquina) e report.html. Campos principais do report.json:

  • verdict — status (pass/warn/fail), score (0–100), contagens por severidade, modulesRun. O score reflete apenas os módulos que rodaram e sobe conforme as issues são corrigidas.
  • topIssues — priorizadas por LLM, sem duplicatas (5–10 itens); cada uma tem severity, check e suggestedFix.
  • moduleVerdicts[] — score/status por módulo + pagesAnalyzed.
  • visualDiff — screenshots prod/cand por página, um heatmap do pixelmatch, seções faltando no cand e (com LLM) diffs semânticos. visualDiff.parityOk é o sinal binário de "está renderizando certo?".

Use --json runs.jsonl para transmitir uma linha por check conforme ele termina, e parity report <runId> --section <name> --json para extrair uma aba como JSON estruturado — os dois foram feitos para agentes conduzindo o parity em loop.

Execuções focadas

Todo check pertence a exatamente um módulo. Selecione o que roda com --only / --skip; o score reflete só o que rodou. --why imprime o raciocínio da seleção.

MóduloFocoExemplo
e2eJornada de compra, busca, carrinho, login, PDP/PLP--only e2e
seoMeta tags, auditoria profunda de SEO, 404, paginação, status HTTP--only seo
visualPixel-perfect — regressão visual + heatmap do pixelmatch + diff por LLM Vision--only visual
vitalsWeb Vitals (LCP/FCP/TTFB/INP/CLS)--only vitals
cacheCobertura de cache / oportunidades de MISS--only cache
consoleErros de console + avisos de hidratação--only console
htmlDOM/CSS de componente — diff estrutural, seções lazy, dimensões de imagem--only html
networkDeltas de contagem de requisições / payload--only network
# Só SEO
parity run --prod ... --cand ... --only seo
 
# Tudo menos o visual (pula o custo do LLM Vision)
parity run --prod ... --cand ... --skip visual
 
# Um check específico, explicando a seleção
parity run --prod ... --cand ... --only check:meta-seo-parity --why

Para o loop pixel-perfect mais profundo numa única seção (screenshots + heatmap + estilos computados + um prompt pronto para LLM), use parity fix / parity section em vez de uma execução completa.

Escolhendo páginas

Por padrão o run amostra um conjunto representativo do sitemap de prod. Force a cobertura exata com --pages "/,/account,/p/known" ou --pages-file targets.txt. Isso delimita as passagens de diff visual / vitals; o crawl dos fluxos roda sempre.

Flags principais

FlagPadrãoO que faz
--prod / --candobrigatóriasAs duas URLs a comparar
--preset—smoke | full | ci
--only / --skip / --why—Seleção de módulo/check (acima)
--viewportsmobile,desktopViewports a testar
--no-visual-diffvisual ligadoPula a passagem de diff visual
--no-cache / --bypass-cachecache ligadoIgnora / limpa o cache de veredito entre execuções
--fail-oncriticalSai com 1 quando uma issue nesta severidade ou acima aparece
--llmautoanthropic | openrouter | claude-code | none | auto
--jsondesligadoTransmite JSONL dos resultados de check

Veja também