O Lighthouse estava medindo a página errada
Eu estava endurecendo o gate de Lighthouse do devfrs.com: sair de warn e passar para error, com SEO em 100. O primeiro resultado veio estranho.
| rota | perf | seo |
|---|---|---|
/ | 75 | 100 |
/en/ | 38 | 100 |
/projeto/<slug>/ | 79 | 100 |
Trinta e oito. Em páginas praticamente idênticas, geradas pelo mesmo build. E o SEO, que era o que eu estava mexendo, tinha chegado em 100 — então a tentação era comemorar e tratar a performance como ruído.
O sintoma que não fechava
Junto com os números veio uma reprovação em link-text: um link com o texto “Learn more” apontando para docs.astro.build. Eu não tenho esse link em lugar nenhum. Procurei no dist/ inteiro:
grep -r "docs.astro.build" dist/
Nada. O link não existia no que eu tinha construído — mas existia na página que o Lighthouse mediu. Só há uma explicação para isso: a página medida não era a minha.
A causa
Aquele “Learn more” é da barra de ferramentas do Astro, que só existe em modo dev. O que o Lighthouse auditou foi o dev server, não o dist/.
O motivo é bobo e é justamente por isso que passa despercebido: eu tinha um npm run dev aberto na porta 4321, e meu servidor de teste tentava subir na mesma porta. Ele falhava, o processo morria em silêncio, e o Lighthouse encontrava alguém respondendo em 4321. Mediu com prazer.
Perf 62 num site em dev é um número perfeitamente plausível. É esse o problema. Um erro que grita é barato; um erro que devolve um número crível custa horas.
As duas correções
A primeira é óbvia: porta separada para o gate. A segunda é a que importa:
server.on("error", (err) => {
if (err.code === "EADDRINUSE") {
console.error(
`[serve-dist] porta ${PORT} já está em uso — abortando.\n` +
`Outro processo responderia no lugar do dist/ e o Lighthouse mediria a página errada.`,
);
}
process.exit(1);
});
Falhar alto em vez de baixo. Se a porta está ocupada, ninguém mede nada — melhor derrubar o gate com uma mensagem clara do que publicar um número inventado.
Com o servidor certo e mediana de três execuções, os números viraram 95 e 99. E aí sim dava para travar o gate.
O que eu tiro disso
Antes de acreditar numa medição, vale perguntar o que ela mediria se estivesse quebrada. Se a resposta for “um número parecido com o certo”, falta um sinal — não falta precisão.