vitest --changed: por qué omite pruebas y la solución con cobertura runtime

¿Tu CI ejecuta todas las pruebas? Descubre por qué vitest --changed omite pruebas dinámicas y cómo la cobertura runtime lo soluciona. ¡Ahorra tiempo!

18 jun 2026 • 4 min read • Q2BSTUDIO Team

Cobertura runtime: solución para pruebas que vitest --changed ignora

En los pipelines modernos de integración continua, cada confirmación de código desencadena una ejecución completa de pruebas. Con el tiempo, el conjunto de tests crece y los tiempos de espera se vuelven un cuello de botella. Para aliviar esto, herramientas como vitest --changed o jest --findRelatedTests prometen ejecutar solo las pruebas afectadas por los cambios. Su estrategia se basa en el análisis estático del grafo de importaciones: recorren los módulos, siguen las sentencias import y require, y determinan qué archivos de test importan transitivamente el archivo modificado. En la mayoría de los casos, este enfoque funciona de manera impecable y ahorra recursos valiosos.

Sin embargo, existe un punto ciego importante que puede convertir una herramienta útil en una fuente de errores silenciosos. El análisis estático falla cuando la ruta del módulo no es un literal sino un valor calculado en tiempo de ejecución. Imaginar un sistema de registro de plugins que carga módulos a partir de un mapa de nombres a rutas, o un contenedor de inyección de dependencias que resuelve implementaciones dinámicamente. En esos escenarios, el enlace entre el test y el archivo fuente no aparece en el grafo de imports estático. Si modificamos un fichero que solo se referencia a través de esa lógica dinámica, vitest --changed y jest --findRelatedTests responderán que no hay pruebas que ejecutar, cuando en realidad sí las hay. Es el peor fracaso de un selector de pruebas: un falso negativo que deja pasar una regresión.

La solución a este problema no proviene de mejorar el análisis estático, sino de cambiar el enfoque: usar la cobertura en tiempo de ejecución como mapa de dependencias. En lugar de preguntar '¿qué podría importar este archivo?', preguntamos '¿qué archivos tocó realmente esta prueba durante su última ejecución?'. La cobertura por test registra qué líneas de qué ficheros se ejecutaron. Si un test ejecuta un módulo cargado dinámicamente, esa conexión queda registrada. Así, cuando un cambio afecta a un archivo, podemos consultar el mapa de cobertura y saber exactamente qué tests deben volver a ejecutarse. Este enfoque funciona tanto para Vitest como para Jest, y maneja de forma natural los casos de registro de plugins, inyección de dependencias, barreras de características y cualquier otro patrón que dependa de rutas calculadas en tiempo de ejecución.

Construir ese mapa de cobertura por test parecería costoso: ejecutar cada archivo de test por separado con cobertura activada multiplica el tiempo de ejecución. Sin embargo, es posible hacerlo en una sola pasada: dividiendo los tests en lotes (shards), ejecutando cada lote en serie dentro de un proceso, y capturando la cobertura acumulativa después de cada archivo. Comparando el estado anterior con el posterior, deducimos qué cobertura fue aportada por ese test concreto. Este método resulta más rápido y consume menos CPU que la ejecución paralela individual. El mapa se vuelve incremental: si un test no ha cambiado, se reutiliza su registro anterior, por lo que las actualizaciones son prácticamente instantáneas.

Ninguna herramienta de selección de pruebas es perfecta. El mapa de cobertura captura relaciones que el análisis estático pierde, pero este último gana cuando un cambio afecta a una rama del código que aún no ha sido ejercitada por ninguna ejecución de test previa. Por eso, un selector robusto debe aplicar una regla de seguridad: ante la duda, ejecutar más, nunca menos. Cuando un archivo modificado no aparece en el mapa de cobertura, lo sensato es ejecutar toda la suite. También es recomendable que la herramienta explique por qué cada test fue seleccionado o saltado, eliminando la opacidad. Algunas soluciones exploran incluso el uso de modelos de lenguaje para refinar la selección de cambios no mapeados, pero siempre con el mismo principio: pueden añadir tests, nunca quitarlos.

En entornos empresariales, especialmente en desarrollo de software a medida y en servicios cloud AWS y Azure, los pipelines de CI/CD gestionan decenas de miles de pruebas a diario. La eficiencia no puede comprometer la fiabilidad. Una estrategia de selección de pruebas basada en cobertura runtime, combinada con el análisis estático tradicional, ofrece lo mejor de ambos mundos: velocidad y seguridad. En Q2BSTUDIO acompañamos a las empresas en la implementación de estas arquitecturas de pruebas robustas, integradas con herramientas de inteligencia de negocio como Power BI para monitorizar la calidad, y apoyadas en inteligencia artificial para empresas que optimizan la toma de decisiones. Además, nuestros equipos de ciberseguridad aseguran que ningún cambio malicioso pase desapercibido, y nuestras soluciones de automatización de procesos permiten que los pipelines se adapten dinámicamente.

En definitiva, herramientas como testpick demuestran que es posible reducir drásticamente el tiempo de espera en CI sin sacrificar la detección de regresiones. La clave está en cambiar la pregunta: de '¿qué podría importar?' a '¿qué se ejecutó realmente?'. Para los equipos que trabajan con patrones dinámicos - registros de plugins, inyección de dependencias o arquitecturas modulares - este enfoque no es una mejora menor, sino una necesidad para mantener la confianza en el pipeline. En Q2BSTUDIO creemos que la calidad del software se construye con procesos inteligentes, y la selección de pruebas basada en cobertura es un pilar fundamental para lograrlo.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat