HTML Academy · Lección

Pruebas de instantáneas HTML

Detecte cambios HTML no deseados con pruebas de instantáneas

Lección 4 de 414 pasos

Pruebas de instantáneas HTML es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.

Qué son las pruebas de snapshots

Las pruebas de snapshots registran en la primera ejecución el resultado renderizado de un componente o una página y, en las ejecuciones posteriores, comparan el resultado nuevo con el snapshot guardado. Cualquier cambio en el resultado HTML hace que la prueba falle hasta que el snapshot se actualice de forma intencionada.

Pruebas de snapshots con Jest

El matcher toMatchSnapshot() de Jest serializa un valor (incluido JSX renderizado como HTML) y lo compara con un archivo guardado. npx jest -u actualiza los snapshots cuando se producen cambios intencionados. Las pruebas funcionan como una red de seguridad frente a cambios accidentales en el renderizado.

import { render } from "@testing-library/react";
import Button from "./Button";

test("Button renders consistently", () => {
  const { container } = render(<Button>Save</Button>);
  expect(container.innerHTML).toMatchSnapshot();
});

Storybook Test Runner

Storybook Test Runner ejecuta cada story y crea un snapshot de su resultado mediante axe (accesibilidad) y la serialización del DOM. Combinado con Chromatic, añade regresiones visuales: diferencias a nivel de píxel además de diferencias en el DOM.

Regresión visual con Percy o Chromatic

Percy y Chromatic crean snapshots de las páginas renderizadas como imágenes y muestran las diferencias visuales. Detectan regresiones de CSS que los snapshots del DOM no detectan (un cambio de fuente, un ajuste del margen o una variación de color). Combine snapshots del DOM (económicos y rápidos) con snapshots visuales (costosos y exhaustivos).

Mantenimiento de snapshots

Los snapshots que cambian "con demasiada facilidad" se convierten en ruido. Evite crear snapshots de valores inestables (fechas, ids, claves aleatorias). Utilice los property matchers de Jest (expect.any(String)) para los campos que varían legítimamente entre ejecuciones. Mantenga los snapshots pequeños y centrados.

Revisión de código para snapshots

Las diferencias de archivos de snapshots en los pull requests son material de revisión de primera clase. Los revisores comprueban que los cambios del DOM sean intencionados y deseables, y detectan efectos en cascada accidentales derivados de un cambio de CSS "sencillo". Trate las diferencias de snapshots como cualquier otra diferencia.

No haga snapshots de todo

Hacer snapshots de renderizados enormes de páginas de nivel superior es frágil: cada cambio menor se propaga y genera un diff gigantesco. Haga snapshots a nivel de componente: cada Button, cada Card y cada FormField. Para el renderizado a nivel de página, es preferible usar pruebas de regresión visual.

Serialización de snapshots

Elija cómo serializar: HTML completo, DOM simplificado, solo props o árbol de accesibilidad. Cada formato detecta regresiones diferentes. Para componentes de UI, el HTML completo es el más exhaustivo; para lógica basada en props, usar solo props es más económico y rara vez produce falsos positivos.

Cuando se rompen los snapshots

La causa más común es una refactorización que produce un HTML equivalente, pero con una estructura diferente. Inspeccione el diff: si el cambio es intencionado y positivo, actualice el snapshot. Si es inesperado, corrija el código subyacente. Nunca ejecute jest -u a ciegas sin inspeccionarlo.

Snapshots entre navegadores

Las herramientas de regresión visual renderizan en varios navegadores e informan de las diferencias específicas de cada uno. Utilícelas para detectar CSS que se renderiza de forma diferente en Safari y Chrome, algo habitual en las nuevas funciones de layout durante sus primeras etapas de adopción. Sin snapshots entre navegadores, estas regresiones solo se detectan mediante QA manual.

Combinación con otras pruebas

Las pruebas de snapshot son necesarias, pero no suficientes. Detectan cambios de renderizado no intencionados, pero no errores de lógica (por ejemplo, que al hacer clic en el botón ocurra lo correcto). Combínelas con pruebas unitarias para el comportamiento y pruebas end-to-end para los flujos de usuario; cada capa detecta fallos diferentes.

Rendimiento

Las pruebas de snapshot son rápidas: comparan cadenas o archivos. Las pruebas de regresión visual son más lentas (renderizan píxeles, comparan imágenes y, a menudo, usan varios navegadores). Ejecute los snapshots en cada build de CI; ejecute la regresión visual en cada PR, aunque quizá no en cada commit, según el presupuesto de CI.

Comprobación de conocimientos

¿Por qué las pruebas de snapshot del DOM suelen complementarse con pruebas de regresión visual como Percy o Chromatic?

Resumen

Las pruebas de snapshot capturan el HTML renderizado en la primera ejecución y señalan cualquier cambio en las ejecuciones posteriores. Utilice Jest toMatchSnapshot para el DOM de los componentes, Storybook Test Runner para las stories y Percy/Chromatic para la regresión visual a nivel de píxel. Haga snapshots a nivel de componente (no de página), excluya los valores inestables y revise cuidadosamente los diffs en los PR. Combínelas con pruebas unitarias y end-to-end para lograr una cobertura completa.

Gratis para empezar

Aprende HTML con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
40
Lecciones
159

Preguntas frecuentes

¿La lección «Pruebas de instantáneas HTML» es gratis?

Sí — el texto completo de «Pruebas de instantáneas HTML» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Pruebas de instantáneas HTML»?

Detecte cambios HTML no deseados con pruebas de instantáneas Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar HTML Academy?

No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Pruebas de instantáneas HTML»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de HTML Academy?

Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El validador de marcado del W3C
  2. Auditoría HTML con Lighthouse
  3. Pa11y y axe para pruebas de accesibilidad
  4. Pruebas de instantáneas HTML
← Volver a HTML Academy