CI / verify (push) Failing after 5m43s
- Biome: formatacao, ordem de imports, max-width duplicado no cabecalho de secao, supressao justificada para nomes de view-transition, ajustes nos scripts de auditoria de SEO - next 16.3.3 -> 16.3.8: GHSA-vcvr-r3jv-pc5j (execucao remota de codigo em next/og ImageResponse, usado nas imagens de compartilhamento) - overrides de brace-expansion (GHSA-qhr7-859c-m2p7, GHSA-6j4f-fj2g-mc7p, GHSA-q2hr-2g5m-vwhr), dependencia de desenvolvimento via jest - visibilidade das cenas le as posicoes a cada quadro e o GSAP remede as passagens quando a pagina muda de altura (fontes, imagens, Experiencia) Co-Authored-By: Claude Opus 5.5 <[email protected]>
45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
#!/usr/bin/env node
|
|
/** Compara duas execuções de scripts/seo-audit.mjs: node scripts/seo-compare.mjs antes.json depois.json */
|
|
import { readFileSync } from "node:fs";
|
|
|
|
const [beforePath, afterPath] = process.argv.slice(2);
|
|
if (!beforePath || !afterPath) {
|
|
console.error("uso: node scripts/seo-compare.mjs antes.json depois.json");
|
|
process.exit(1);
|
|
}
|
|
const before = JSON.parse(readFileSync(beforePath, "utf8"));
|
|
const after = JSON.parse(readFileSync(afterPath, "utf8"));
|
|
const key = (c) => `${c.scope}::${c.id}`;
|
|
const prev = new Map(before.checks.map((c) => [key(c), c]));
|
|
const next = new Map(after.checks.map((c) => [key(c), c]));
|
|
|
|
console.log(
|
|
`\nAntes: ${before.base} (${before.urls} URLs) Depois: ${after.base} (${after.urls} URLs)\n`,
|
|
);
|
|
console.log("grupo antes depois");
|
|
for (const g of new Set([
|
|
...Object.keys(before.groups),
|
|
...Object.keys(after.groups),
|
|
])) {
|
|
const a = before.groups[g] ?? { ok: 0, total: 0 };
|
|
const b = after.groups[g] ?? { ok: 0, total: 0 };
|
|
console.log(
|
|
`${g.padEnd(20)} ${`${a.ok}/${a.total}`.padEnd(9)} ${b.ok}/${b.total}`,
|
|
);
|
|
}
|
|
const fixed = [];
|
|
const regressed = [];
|
|
for (const [k, c] of next) {
|
|
const p = prev.get(k);
|
|
if (p && !p.ok && c.ok) fixed.push(c);
|
|
if (p?.ok && !c.ok) regressed.push(c);
|
|
if (!p && !c.ok)
|
|
regressed.push({ ...c, detail: `novo e falhando: ${c.detail}` });
|
|
}
|
|
console.log(`\nCorrigidos (${fixed.length}):`);
|
|
for (const c of fixed) console.log(` + ${c.scope} ${c.id}`);
|
|
console.log(`\nPiorou (${regressed.length}):`);
|
|
for (const c of regressed)
|
|
console.log(` - ${c.scope} ${c.id} ${c.detail ?? ""}`);
|
|
process.exit(regressed.length ? 2 : 0);
|