Pruebas unitarias de CSS con Jest
Pruebe salidas de CSS-in-JS y componentes styled mediante snapshots con Jest y matchers relacionados.
Pruebas unitarias de CSS con Jest es una lección gratuita de CSS Academy en CoddyKit. Esta es la lección 3 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 CSS Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CSS Academy incluye 4 lecciones en total.
¿Por qué probar el CSS con Jest?
Las pruebas unitarias de CSS verifican los estilos calculados, la aplicación de clases y el comportamiento del diseño de forma programática. Detectan regresiones en la lógica de CSS (aplicación de una clase incorrecta o ausencia de un modificador) sin necesitar una captura de pantalla del navegador ni una inspección visual manual.
JSDOM y compatibilidad con CSS
Jest utiliza JSDOM de forma predeterminada, que ofrece una compatibilidad limitada con CSS: no calcula el diseño ni evalúa selectores complejos. Para probar la presencia de clases y los estilos en línea, JSDOM es suficiente; para probar propiedades calculadas, utilice jest-environment-jsdom con simulaciones de módulos CSS.
Pruebas de aplicación de clases
Renderice un componente y compruebe que se apliquen las clases CSS correctas según las propiedades o el estado. Esto verifica que la lógica de clases condicionales (activo, deshabilitado, variante de error) funcione correctamente sin comprobar valores de estilo específicos.
<button class="btn-primary">Primary Button</button>
Módulos CSS en las pruebas
Jest transforma las importaciones de módulos CSS mediante identity-obj-proxy. Este proxy devuelve la cadena del nombre de la clase para cualquier propiedad a la que se acceda: styles.primary devuelve "primary". Las pruebas comprueban los nombres de clase sin necesidad de aplicar CSS real.
jest-styled-components
En los proyectos de Styled Components, jest-styled-components añade el comparador toHaveStyleRule. Compruebe que un componente con estilos aplique los valores correctos de las propiedades CSS según las propiedades, sin necesitar un navegador real que calcule los estilos.
<button class="btn">Enabled</button>
<button class="btn" disabled>Disabled (0.5 opacity)</button>
@testing-library/jest-dom
jest-dom amplía Jest con comparadores específicos del DOM: toHaveStyle (comprueba el estilo en línea o calculado), toHaveClass (comprueba la lista de clases) y toBeVisible (comprueba display, visibility y opacity). Estos comparadores hacen que las comprobaciones de CSS sean legibles y expresivas.
Pruebas de instantáneas para nombres de clase
Las instantáneas de componentes capturan el marcado renderizado, incluidos los nombres de clase. Los cambios de renombrado de módulos CSS o de la lógica de clases condicionales aparecen como diferencias en las instantáneas. Son útiles para detectar rápidamente cambios de clase no intencionados, pero requieren disciplina al revisar las instantáneas.
Limitaciones de las pruebas de CSS con Jest
Jest no puede calcular el diseño (offsetWidth, getBoundingClientRect), evaluar consultas de medios ni ejecutar animaciones CSS. Para ello se necesita un entorno de navegador real mediante Playwright o Cypress. Las pruebas de CSS con Jest complementan las pruebas en navegador, pero no las sustituyen.
Pruebas de propiedades personalizadas de CSS
Establezca propiedades personalizadas de CSS en un elemento contenedor durante las pruebas: element.style.setProperty("--color-primary", "red"). Lea los valores calculados con getComputedStyle(el).getPropertyValue("--color-primary"). JSDOM admite la lectura de propiedades personalizadas, pero no la cascada.
Pruebas de clases de animación
Verifique que las clases que activan las animaciones se añadan o eliminen en el momento correcto: compruebe que un componente de cuadro de diálogo añada la clase animate-enter al abrirse y la clase animate-exit antes de desmontarse. El CSS de la animación se prueba mediante VRT.
Cobertura de la lógica de CSS
La lógica de CSS reside en JavaScript: cadenas de clases condicionales, valores del proveedor de temas y generación de objetos de estilos. La cobertura de Jest (Istanbul) cubre esta lógica de CSS en JavaScript. Escriba pruebas que cubran todas las ramas para garantizar que se ejerciten todas las combinaciones de variantes y estados.
Comprobación de conocimientos
¿Qué hace identity-obj-proxy al utilizarse con módulos CSS en Jest?
Resumen
Las pruebas unitarias de CSS con Jest verifican la lógica de aplicación de clases, los estilos condicionales y el comportamiento de los módulos CSS sin un navegador real. Utilice identity-obj-proxy para los módulos CSS, jest-styled-components para Styled Components y los comparadores de jest-dom para realizar comprobaciones legibles. Combine estas herramientas con VRT para obtener una cobertura completa de la calidad del CSS.
Preguntas frecuentes
¿La lección «Pruebas unitarias de CSS con Jest» es gratis?
Sí — el texto completo de «Pruebas unitarias de CSS con Jest» 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 CSS Academy, actualiza a CoddyKit PRO. El curso de CSS Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Pruebas unitarias de CSS con Jest»?
Pruebe salidas de CSS-in-JS y componentes styled mediante snapshots con Jest y matchers relacionados. Practicas CSS 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 CSS Academy?
No se requiere experiencia previa. CSS 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 3 de 4.
¿Cuánto tiempo toma la lección «Pruebas unitarias de CSS con Jest»?
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 CSS Academy?
Sí. Cada lección de CSS 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
- Conceptos de pruebas de regresión visual
- Percy y Chromatic para Storybook
- Pruebas unitarias de CSS con Jest
- Pruebas de accesibilidad: color-contrast y focus