🃏 Jest 19: Modo de Vigilancia Inmersivo y Mejoras en la Plataforma de Pruebas
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Hoy nos complace lanzar la versión 19 de la plataforma de pruebas Jest. Es el lanzamiento más grande de Jest hasta la fecha y estamos muy entusiasmados de mostrarles lo que hemos construido en los últimos dos meses:
Modo de Vigilancia Inmersivo
Hemos reescrito por completo el modo de vigilancia para que sea instantáneo y más extensible. Como resultado, la experiencia de uso es verdaderamente inmersiva: las pruebas se vuelven a ejecutar inmediatamente tras un cambio en los archivos y hemos facilitado la selección de las pruebas relevantes.
Actualizaciones de Snapshots
Hemos realizado algunos cambios en el formato de los snapshots. No modificamos esto frecuentemente y solo lo consideramos cuando realmente mejora el funcionamiento de los snapshots. Además de introducir un número de versión para snapshots, hemos implementado varias mejoras acumuladas que queríamos hacer al formato desde hace tiempo:
-
Eliminamos el prefijo "test" en los nombres de snapshots provenientes de llamadas
testoitde nivel superior. -
Mejoramos la representación de elementos de React para minimizar cambios cuando se modifica la última propiedad de un elemento.
-
Perfeccionamos el mecanismo de escape de caracteres para que sea más robusto.
Antes:
exports[`test snap 1`] = `
<header>
<h1>
Jest \"19\"
</h1>
<Subtitle
name="Painless JavaScript Testing" />
</header>
`;
Después (sin prefijo "test", mejor renderizado de JSX, encabezado de versión):
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`snap 1`] = `
<header>
<h1>
Jest "19"
</h1>
<Subtitle
name="Painless JavaScript Testing"
/>
</header>
`;
Consideramos que es el momento ideal para introducir snapshots versionados y asegurar que todos los desarrolladores usen una versión compatible de Jest. Así advertimos sobre la necesidad de actualizar tus snapshots:

Por favor, asegúrate de revertir cualquier cambio local antes de actualizar para facilitar la transición y evitar incluir modificaciones no deseadas de pruebas fallidas en tus nuevos snapshots.
Mejor visualización de pruebas omitidas
Ahora las pruebas omitidas se muestran en una sola línea, en lugar de individualmente cuando se ejecuta en modo detallado o en un único conjunto. Esto te permitirá enfocarte en las pruebas relevantes actualmente. ¡Además ocupa mucho menos espacio!

Nuevos argumentos de CLI
Jest 19 incluye dos nuevos argumentos relacionados con cobertura que puedes ejecutar desde la CLI:
-
--collectCoverageFrom -
--coverageDirectory
Ahora también mostramos errores ante argumentos de CLI inválidos en lugar de ignorarlos. Pero te respaldamos con mensajes de error útiles como el siguiente, por ejemplo al ejecutar jest --watc:

Mejoras en expect
Estamos cerca de alcanzar paridad de características casi completa con el paquete npm expect. Michael Jackson, autor del paquete, accedió a donarlo al proyecto Jest, lo que significa que jest-matchers pasará a llamarse expect. Dado que nuestra versión de expect no busca ser totalmente compatible, Christopher Chedeau está desarrollando un codemod para facilitar la transición. Christopher también implementó mejoras en jest-matchers que permiten su uso fuera de Jest e incluso funciona en navegadores.
eslint-plugin-jest – nuestro propio plugin de ESLint
Gracias a Jonathan Kim, Jest finalmente tiene su propio plugin oficial de ESLint. Expone tres reglas:
-
no-disabled-tests - esta regla evita que cometas accidentalmente pruebas deshabilitadas.
-
no-focused-tests - esta regla evita que comites pruebas enfocadas, lo que deshabilitaría todas las demás pruebas en el mismo conjunto.
-
no-identical-title - prohíbe títulos idénticos en los nombres de las pruebas.
Puedes instalarlo usando npm install --save-dev eslint-plugin-jest o yarn add --dev eslint eslint-plugin-jest, y se puede habilitar agregando {"plugins": ["jest"]} a tu configuración de eslint.
Nuevo paquete público: jest-validate
Mientras refactorizábamos el código de validación y normalización para la configuración de Jest, nos gustó tanto el nuevo sistema de mensajes de error que lo extrajimos a su propio módulo para compartirlo con todos. Con Jest 19 damos la bienvenida a jest-validate a nuestra familia de paquetes autosuficientes.
jest-validate es una herramienta genérica de validación de configuración que te ayuda con advertencias, errores y mensajes de desaprobación en tus herramientas JavaScript. También muestra a los usuarios ejemplos claros de configuración correcta y viene con una API simple pero potente. ¡Esperamos que sea un gran aporte para tus proyectos!

Nos complace anunciar que jest-validate está validando las opciones de configuración de prettier desde la v0.12. Siéntete libre de agregarlo a tu proyecto, probarlo, enviarnos comentarios y mejorarlo mediante pull requests en GitHub.
Mejoras en los comparadores asimétricos
Trasladamos la implementación de los comparadores asimétricos de Jasmine a Jest, lo que nos permitió mejorar aún más la experiencia del usuario. Como resultado, los comparadores asimétricos ahora se muestran con mejor formato, añadimos el nuevo comparador expect.stringContaining() y también los combinamos con expect.toMatchObject() para que puedas aprovechar lo mejor de ambos:

Mejores mocks manuales
Con esta última versión, los mocks manuales ahora funcionan finalmente con carpetas anidadas. Por ejemplo, __mocks__/react-native/Libraries/Text/Text.js ahora funcionará como se espera y simulará el módulo correcto. También corregimos problemas con mocks virtuales y dependencias transitivas, y mejoramos moduleNameMapper para que no sobrescriba mocks cuando varios patrones apuntan al mismo archivo.
Cambios Rompedores
Como parte de nuestras limpiezas y correcciones, eliminamos la opción de configuración mocksPattern que nunca fue oficialmente compatible. También renombramos la opción de configuración testPathDirs a roots, lo que explica mejor su propósito. La configuración predeterminada para roots es ["<rootDir>"] y puede personalizarse para incluir cualquier número de directorios. La opción rootDir siempre se usó principalmente como token para otras configuraciones, y este cambio debería hacer que configurar Jest sea más claro.
Documentación renovada
Como ya habrás visto, Hector Ramos y Kevin Lacker le dieron un nuevo y fresco aspecto a la documentación de Jest. Cambiamos la forma en que organizamos el sitio web y ahora incluye Documentación y API como páginas separadas:
-
En la sección Documentación encontrarás una introducción a Jest, incluyendo Primeros Pasos, Pruebas de Código Asíncrono y guías prácticas como Pruebas con Snapshots, Pruebas en Apps de React Native, Uso con webpack, Migración a Jest ¡y mucho más!
-
Por otro lado, la sección de API enumera todos los métodos disponibles que expone Jest: los objetos
expectyjest, funciones mock, globales, junto con opciones de configuración desde package.json y la CLI.
Hemos rediseñado completamente la página de inicio para describir mejor qué es Jest: "Plataforma de pruebas con configuración cero". También nos aseguramos de que tenga mejor lectura en dispositivos móviles. Y para quienes usan RSS: finalmente ofrecemos un feed para nuestro blog.
Actualizaciones de la Comunidad
-
Nos encantó esta charla: "Introducción a Jest" de Vas Boroviak.
-
Síguenos en @jestjs_ en Twitter.
-
El equipo central de Jest se sincroniza semanalmente para discutir problemas actuales y futuros. Si te gustaría contribuir a Jest, avísanos, envía algunos pull requests y únete a nuestras reuniones semanales.
-
Los ingenieros de Artsy escribieron sobre Jest como parte de su stack frontend 2017.
-
Stephen Scott escribió un artículo detallado sobre pruebas de componentes React donde analiza pros y contras de diferentes enfoques.
-
Usar Jest con vue.js se volvió mucho más fácil gracias al artículo de Cristian Carlesso.
-
Michele Bertoli publicó un libro sobre Patrones de Diseño y Mejores Prácticas en React que incluye una sección completa sobre Jest.
-
Mejora en el comando
--notifyque muestra notificaciones del sistema operativo y que ahora puede reejecutar pruebas desde la notificación. Esta es realmente una función de Jest, y solo estamos verificando si aún estás leyendo esta entrada 😉. -
Jest ahora forma parte de react-boilerplate.
-
Descubre los poderes ocultos de los matchers de Jest.
Finalmente, nos complace anunciar que el ejecutor de pruebas ava ha adoptado partes de la plataforma Jest y ahora incluye soporte básico para snapshots y utiliza pretty-format. La consolidación de infraestructuras de pruebas facilita el aprendizaje sobre cómo probar aplicaciones y permite compartir mejores prácticas. Esperamos aprender más de las bibliotecas de pruebas existentes en el futuro.
El registro de cambios completo está disponible en GitHub. Jest 19 fue un verdadero esfuerzo comunitario de JavaScript con 17 contribuyentes en esta versión. Agradecemos a cada uno de ustedes por ayudar a hacer este proyecto grandioso.
Este artículo fue escrito por Rogelio Guzman y Michał Pierzchała.
