Los tres modos de auditoría y para qué sirve cada uno
Navegación, intervalo e instantánea: qué mide cada modo, qué categorías puede evaluar, y cómo cubrir con ellos lo que el modo por defecto deja fuera.
El modo por defecto de la auditoría mide una carga de página, y por eso la crítica más justa a esta herramienta —que ignora todo lo que ocurre después de cargar— se resuelve en buena medida usando los otros dos modos, que casi nadie usa. Uno mide un intervalo de uso real de la aplicación; el otro analiza el estado actual de la página tal y como está. Entre los tres cubren la carga, la interacción y el estado, que es prácticamente todo lo que una auditoría automática puede cubrir.
- Elegir el modo adecuado según lo que se quiera medir.
- Ejecutar una auditoría de intervalo sobre un flujo de uso concreto.
- Usar el modo de instantánea sobre un estado difícil de alcanzar.
- Encadenar los tres modos en un recorrido de usuario completo.
Los tres modos
Navegación. Recarga la página y mide la carga completa desde cero. Es el modo por defecto y el único que produce la puntuación de rendimiento con sus cinco métricas, porque las métricas de carga solo tienen sentido en una carga.
Intervalo. Empieza a grabar cuando lo pides, tú usas la aplicación, y para cuando lo dices. Mide lo que ocurre durante ese periodo: tareas largas, saltos de disposición, trabajo del hilo principal, peticiones. No produce las métricas de carga porque no hay carga.
Instantánea. Analiza el estado del documento tal y como está en este instante, sin recargar y sin medir tiempo. Es puramente estructural: comprueba accesibilidad, buenas prácticas y aspectos del marcado.
| Modo | Mide | Categorías útiles | Caso de uso |
|---|---|---|---|
| Navegación | La carga completa | Rendimiento, accesibilidad, buenas prácticas, SEO | Página de entrada |
| Intervalo | Un periodo de uso | Rendimiento de interacción, buenas prácticas | Un flujo concreto |
| Instantánea | El estado actual | Accesibilidad, buenas prácticas, SEO | Un estado difícil de alcanzar |
El modo de instantánea es el que más veces se necesita sin que nadie caiga en él, y su caso de uso es concreto: auditar la accesibilidad de un estado que solo existe tras varias interacciones. Un diálogo abierto, un menú desplegado, un formulario con errores mostrados, un paso intermedio de un asistente. En modo navegación esos estados no existen porque la auditoría recarga; en modo instantánea se llega al estado a mano y se analiza lo que hay.
El modo de intervalo en la práctica
Es el que responde a la crítica de que la auditoría solo mide la carga, y su procedimiento es sencillo.
Uno: lleva la aplicación al punto de partida y espera a que se calme. Cualquier trabajo de arranque pendiente contaminaría la medición.
Dos: empieza el intervalo.
Tres: ejecuta el flujo que quieres auditar, una sola vez, sin prisa pero sin pausas largas.
Cuatro: para.
Lo que se obtiene son los diagnósticos relacionados con el trabajo del hilo principal durante ese periodo: tareas largas con su atribución, saltos de disposición con sus elementos responsables, y trabajo de terceros. Es decir, exactamente la información que hace falta para diagnosticar una interacción lenta.
Lo que no se obtiene son las métricas de carga ni la puntuación de rendimiento, y eso confunde a quien lo prueba esperando un número. No hay número porque no hay carga que puntuar; hay diagnósticos, que es lo que se puede medir de un intervalo de uso.
Un uso menos evidente y muy rentable: auditar el periodo inmediatamente posterior a la carga. Muchas aplicaciones terminan de cargar y siguen trabajando durante segundos —hidratación, analítica, precargas—, y ese trabajo no aparece en la auditoría de navegación porque ocurre después de que termine. Un intervalo que empiece justo cuando la página parece lista y dure diez segundos revela ese trabajo invisible.
Encadenar los tres
Un recorrido de usuario completo se audita combinando modos, y esa combinación es la forma más completa de evaluar una aplicación con herramientas automáticas.
Para un flujo de compra, por ejemplo: navegación sobre la página de producto, intervalo mientras se añade al carrito y se abre, instantánea con el carrito abierto para auditar su accesibilidad, navegación sobre la página de pago, e intervalo mientras se rellena el formulario.
La misma secuencia se puede automatizar con la API de flujos de usuario, que es la forma programática de encadenar modos y producir un informe único:
// Flujo de usuario que combina los tres modos. Se ejecuta en Node.
// npm install lighthouse puppeteer
import puppeteer from 'puppeteer';
import { startFlow } from 'lighthouse';
const navegador = await puppeteer.launch({ headless: true });
const pagina = await navegador.newPage();
const flujo = await startFlow(pagina, { name: 'Recorrido de compra' });
// 1. Modo navegacion: la carga de la pagina de producto
await flujo.navigate('https://ejemplo.com/producto/42');
// 2. Modo intervalo: anadir al carrito y abrirlo
await flujo.startTimespan({ name: 'Anadir al carrito' });
await pagina.click('[data-anadir-carrito]');
await pagina.waitForSelector('[data-carrito-abierto]');
await flujo.endTimespan();
// 3. Modo instantanea: auditar el estado con el carrito abierto
await flujo.snapshot({ name: 'Carrito abierto' });
// 4. Modo navegacion sobre el pago
await flujo.navigate('https://ejemplo.com/pago');
// 5. Modo intervalo: rellenar el formulario
await flujo.startTimespan({ name: 'Rellenar datos' });
await pagina.type('#nombre', 'Nombre de prueba');
await pagina.type('#email', 'prueba@ejemplo.com');
await flujo.endTimespan();
// Informe unico con los cinco pasos
const informe = await flujo.generateReport();
await (await import('node:fs/promises')).writeFile('flujo.html', informe);
// Y los datos en bruto, para comprobaciones automaticas
const resultado = await flujo.createFlowResult();
for (const paso of resultado.steps) {
console.log(paso.name, '->', paso.lhr.gatherMode);
const rendimiento = paso.lhr.categories.performance?.score;
if (rendimiento !== undefined && rendimiento !== null) {
console.log(' puntuacion de rendimiento:', Math.round(rendimiento * 100));
}
const accesibilidad = paso.lhr.categories.accessibility?.score;
if (accesibilidad !== undefined && accesibilidad !== null) {
console.log(' puntuacion de accesibilidad:', Math.round(accesibilidad * 100));
}
}
await navegador.close();
El informe resultante presenta los pasos en secuencia, lo que permite ver el recorrido entero de un vistazo. Y el resultado en bruto es lo que permite convertirlo en una comprobación automática, que es el tema del nivel de automatización.
Las otras categorías
Conviene recordar que la puntuación de rendimiento no es la única, y que las otras tres tienen una propiedad interesante: son mucho más estables. No dependen de tiempos, no varían entre ejecuciones, y por tanto son mucho mejores candidatas para comprobaciones automáticas estrictas.
Accesibilidad comprueba un subconjunto de las condiciones automatizables. Es un suelo, no un techo: pasar todas las comprobaciones no significa que la aplicación sea accesible, porque la mayoría de los problemas reales no son automatizables. Pero fallar alguna sí significa que hay un problema.
Buenas prácticas comprueba cosas heterogéneas: errores en consola, APIs obsoletas, problemas de seguridad, imágenes con proporción incorrecta.
SEO comprueba condiciones básicas de indexación.
Para las tres, un umbral estricto en integración continua es razonable, porque su variabilidad es prácticamente nula. Para rendimiento, no.
La objeción más repetida contra las auditorías automáticas —que miden una carga en frío que no representa el uso real— es correcta y se ha convertido en una excusa muy cómoda para no medir nada. Los modos de intervalo e instantánea existen precisamente para cubrir ese hueco, y su adopción es bajísima por dos razones que merece la pena nombrar. La primera es de descubrimiento: el botón que los ofrece está en el mismo panel de siempre y la mayoría de la gente nunca ha cambiado el desplegable. La segunda es más de fondo: el modo de intervalo no produce un número, y una herramienta que no produce un número no encaja en el flujo mental de “ejecutar auditoría, mirar nota, celebrar o preocuparse”. Produce diagnósticos, que exigen leerlos y pensarlos, que es exactamente el trabajo que la puntuación permitía evitar. Ahí está la ironía de todo este nivel: la parte más valiosa de la herramienta es la que no da nota, y la parte que da nota es la que más distorsiona el trabajo. La recomendación práctica que se deriva tiene dos mitades. En la revisión manual, usa el modo de intervalo sobre los tres o cuatro flujos que definen tu producto, con la ralentización puesta, una vez cada ciclo de trabajo. Encontrarás cosas que ninguna auditoría de carga habría señalado, porque están en el noventa por ciento de la sesión que la auditoría de carga no mira. Y en la automatización, encadena modos con la API de flujos para que la comprobación automática recorra el producto en lugar de recargar la portada: es más trabajo de montar, se rompe más cuando cambia la interfaz, y es la única forma de que una comprobación automática se parezca a lo que hace un usuario. La alternativa cómoda —auditar la portada en cada despliegue y llamarlo control de rendimiento— produce una sensación de rigor sobre un escenario que puede no representar nada de lo que tus usuarios hacen.