Vitest 5: node 22 obligatorio y tests más estrictos
Vitest 5 sube los requisitos mínimos, cambia comportamientos por defecto en mocks y assertions, y reorganiza dónde se guardan reportes y attachments.
Requisitos más altos y limpieza de API
Necesitás Node.js 22 y Vite 6.4 como mínimo para correr esta versión. El paquete expect y @vitest/runner ahora están inlineados dentro de Vitest y dejan de publicarse por separado, así que si los importabas directamente tenés que revisar tus dependencias. También se eliminaron los entry points deprecados y se sacó el paquete webdriverio.
Tests fallan en casos que antes pasaban
Los mocks se limpian automáticamente antes de cada test por defecto, algo que antes tenías que configurar vos. expect.poll ahora falla si la función no resuelve dentro del tiempo esperado, en vez de quedar en un estado ambiguo. Si tenés una assertion asíncrona sin await, el test falla en lugar de pasar silenciosamente. Y si usás métodos hoisteables (como vi.mock) fuera del scope de nivel superior, Vitest tira un error explícito.
Convención de directorio .vitest
Los reportes, attachments y archivos de blob ahora se guardan por defecto bajo .vitest/ en vez de estar dispersos en distintas carpetas. Esto afecta a attachmentsDir (que pasó de .vitest-attachements/ a .vitest/attachments/), al reporter blob, a los reportes JSON y JUnit, y al reporter HTML. Si tenés scripts o CI que buscan estos archivos en rutas viejas, hay que actualizarlos.
Proyectos anidados y configuración compartida
Vitest 5 soporta proyectos anidados, y los proyectos inline ahora extienden la configuración raíz por defecto en vez de partir de cero. Además, los proyectos inline comparten el mismo servidor de Vite, lo que reduce overhead cuando tenés varios proyectos corriendo en el mismo repo.
Qué te llevas
Antes de migrar, chequeá que tu entorno tenga Node 22 y Vite 6.4 o más nuevo.
Revisá tus tests que dependían de mocks sin limpiar entre corridas: ahora se limpian por defecto.
Actualizá rutas de CI o scripts que lean reportes/attachments desde ubicaciones viejas, ahora todo va a
.vitest/.Si usás proyectos múltiples, la configuración inline ahora hereda de la raíz por defecto.
¿Quieres una clase de esto?
Si varias personas lo piden, entra al programa. No hace falta dejar mail ni nombre.