Pular para o conteúdo
Todos os posts

O Lighthouse estava medindo a página errada

2 min de leitura

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.

rotaperfseo
/75100
/en/38100
/projeto/<slug>/79100

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.