Jest es uno de los frameworks de pruebas más populares en JavaScript. Su facilidad de uso y rapidez lo convierten en la opción preferida de muchos desarrolladores. Sin embargo, a medida que los proyectos crecen y el número de pruebas aumenta, los tiempos de ejecución pueden volverse un problema.
Afortunadamente, Jest ofrece un parámetro poco conocido que puede mejorar significativamente el rendimiento de las pruebas: --maxWorkers. En esta entrada, explicaremos cómo afecta este parámetro a la ejecución de las pruebas, analizaremos distintos tiempos de ejecución con varias configuraciones y daremos recomendaciones para optimizar Jest en cada caso. Si quieres reducir el tiempo de espera y aumentar tu productividad, sigue leyendo.
Tabla de contenidos
Cuando ejecutas Jest sin parámetros adicionales, ejecutando simplemente:
npx jest
Jest determina automáticamente el número óptimo de procesos de prueba paralelos (workers) según los recursos de tu máquina, generalmente en función del número de núcleos disponibles. Aunque esta configuración suele ser eficiente, no siempre es la mejor opción.
El parámetro --maxWorkers permite ajustar manualmente la cantidad de procesos concurrentes que Jest utilizará. En proyectos grandes, Jest puede consumir demasiados recursos si ejecuta muchas pruebas en paralelo. Ajustar correctamente --maxWorkers puede reducir la carga en la CPU y mejorar la velocidad general de las pruebas.
--maxWorkersPara ilustrar el impacto de --maxWorkers, ejecutamos Jest con diferentes configuraciones en un proyecto con 132 pruebas en 31 suites.
En la configuración básica se ejecuta el siguiente comando:
npx jest
Resultados:
Test Suites: 31 passed, 31 total
Tests: 132 passed, 132 total
Snapshots: 0 total
Time: 18.769 s
Las pruebas se ejecutaron en 18.7 segundos.
--maxWorkers=1 (un solo proceso)Ahora se puede evaluar cual sería el tiempo que necesita JEST para ejecutar las pruebas solo con un proceso:
npx jest --maxWorkers=1
Resultados:
Test Suites: 31 passed, 31 total
Tests: 132 passed, 132 total
Snapshots: 0 total
Time: 13.261 s
El tiempo se redujo a 13.2 segundos (una mejora de casi el 30%).
--maxWorkers=2 (dos procesos)Tras ves la mejora con un proceso, se puede ver lo que pasaría con dos:
npx jest --maxWorkers=2
Resultados:
Test Suites: 31 passed, 31 total
Tests: 132 passed, 132 total
Snapshots: 0 total
Time: 8.515 s
Ahora, el tiempo de ejecución se reduce a 8.5 segundos, menos de la mitad en comparación con la configuración por defecto.
--maxWorkers=8 (ocho procesos)Visto la mejora con 2, se puede probar con 8, a ver si el tiempo sigue reduciéndose:
npx jest --maxWorkers=8
Resultados:
Test Suites: 31 passed, 31 total
Tests: 132 passed, 132 total
Snapshots: 0 total
Time: 11.306 s
Curiosamente, el tiempo aumentó a 11.3 segundos. Esto sugiere que existe un punto óptimo para la cantidad de workers.
En base a los resultados que se han visto en el proyecto de ejemplo se pueden extraer algunas conclusiones respecto al efecto de --maxWorkers en los tiempos de ejecución de las pruebas:
--maxWorkers=1) mejora el tiempo con respecto a la configuración predeterminada (18.7s → 13.2s), eliminando la sobrecarga de la paralelización.--maxWorkers=2) optimiza significativamente la ejecución (13.2s → 8.5s), equilibrando paralelismo y gestión de procesos.--maxWorkers=8) empeora el rendimiento (8.5s → 11.3s), debido al sobrecarga que require administrar demasiados procesos en paralelo.Estos resultados demuestran que más workers no siempre significan mejor rendimiento. En cada proyecto, existe un punto óptimo que depende del hardware y tipo de las pruebas que se debe terminar de forma empírica.
Cada proyecto es diferente, por lo que es recomendable probar distintas configuraciones de --maxWorkers. Una estrategia efectiva puede ser:
maxWorkers: prueba con 1, 2, 4, 8 y auto.El parámetro --maxWorkers en Jest puede reducir significativamente el tiempo de ejecución de las pruebas si se configura correctamente. En nuestro caso de prueba, --maxWorkers=2 fue la mejor opción, pero los resultados variarán según el hardware y la naturaleza de las pruebas.
Recomendaciones finales:
--maxWorkers para encontrar el número óptimo.Si Jest es una parte fundamental de tu desarrollo, invertir unos minutos en optimizar su rendimiento puede ahorrarte un tiempo valioso en cada ejecución. ¡Prueba esta configuración y acelera tus pruebas unitarias hoy mismo!
Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.
En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…
En la serie Creación de una API REST con Express y TypeScript construimos una API…
Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…
En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…
Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…
En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…
This website uses cookies.