VitestЩо нового у Vitest 5.1
Реліз Vitest 5.1 додає прапорці --last-failed та --since-last-run, підтримку Temporal у vi.setSystemTime(), мокінг через import map у браузерному режимі та стабільний trace view.
Реліз від 2 листопада 2026 · оновлено 8 листопада 2026
Головне
- Прапорець --last-failed для запуску лише тих тестів, що впали
- Новий прапорець --since-last-run для вибіркового запуску тестів
- Підтримка Temporal.Instant та Temporal.ZonedDateTime у vi.setSystemTime()
- Мокінг модулів через import map у браузерному режимі
- Trace view вийшов зі статусу експериментального та отримав нові функції
Коротко
Vitest 5.1 представляє нові CLI-прапорці --last-failed та --since-last-run для гнучкішого вибору тестів під час перезапуску. Оновлення розширює роботу з часом, додаючи підтримку об'єктів Temporal у vi.setSystemTime() та фейкові таймери для node:timers. Браузерний режим отримав мокінг модулів через import map, експериментальний pointer API та стабільний trace view з режимом відображення лише помилок за замовчуванням.
Нові можливості
CLI та керування запусками
- Запуск лише провалених тестів: додано прапорець
--last-failed, який виконує тільки ті тести, що завершилися помилкою під час попереднього прогону. - Прапорець
--since-last-run: додано можливість фільтрувати та запускати тести з урахуванням змін від останнього запуску. - Інтерактивний перегляд снепшотів: додано інтерактивний перегляд для снепшотів, що завершилися невдачею.
- Деталізація повторних спроб: тепер надається доступ до результатів кожної окремої спроби для тестів із retry або repeat.
Таймери та робота з часом
- Підтримка
Temporal: функціяvi.setSystemTime()тепер підтримує роботу з об'єктамиTemporal.InstantтаTemporal.ZonedDateTime. - Фейкові таймери для Node.js: додано підтримку fake timers для вбудованих модулів
node:timersтаnode:timers/promise.
Браузерний режим
- Мокінг через import map: додано можливість мокати модулі за допомогою import map у браузерному середовищі.
- Стабільний trace view: позначку експериментальної функції знято з trace view.
- Захоплення aria snapshot: у trace view додано збереження aria snapshot.
- Таймлайн кроків у терміналі: у разі падіння тесту в терміналі відображається таймлайн кроків трасування.
- Режим відображення лише помилок у trace view: додано режим failure-only для trace view, який тепер увімкнено за замовчуванням.
- Експериментальний API
pointer: представлено новий експериментальний APIpointerдля браузерного режиму.
Покриття коду (Coverage)
- Кеш файлової системи для провайдерів: провайдерам покриття дозволено зберігати дані у кеші модулів fs (
fs module cache). - Опція
ignoreNodeу V8: провайдер V8 тепер підтримує опціюignoreNode.
Експериментальні функції
- Таймлайн трасування для Node: додано trace timeline для середовища Node.
- Параметр повідомлення в очікуваннях: для функцій
vi.waitForтаvi.waitUntilдодано опціюmessage.
Виправлення та покращення
Загальні виправлення
- Виправлено перезапуск файлів налаштувань (
setup files) після фільтрації за прапорцем--changed. - Забезпечено повернення мока при одночасних (concurrent) імпортах.
- Тести більше не падають через завислі виклики
console.logна етапі teardown. - Додано виявлення циклів у фабриках моків, які утворюються пізніше під час виконання.
- Виправлено запуск тестів, які імпортують видалений файл.
- Збережено підсвічування синтаксису у фрагментах коду (
code frames). - Додано успадкування параметра
watchіз кореневої конфігурації у проєктах. - Повідомлення
expect.pollтепер додається як префікс до всіх помилок. - Додано підтримку значення
0дляapi.port. - У логах помилок тестів із повторними спробами тепер відображаються номери спроб.
- Виправлено збереження
rootDirу шляхах проєктів.
Браузерний режим та UI
- Стандартний порт для браузерного режиму змінено на
23315. - Забезпечено просування фейкових таймерів під час дій та перевірок
expect.element. - Прибрано попередження trace view за відсутності HTML-репортера.
- Скриншоти помилок та таймлайн трасування тепер зберігаються окремо для кожної спроби тесту.
- Виправлено зависання виклику
page.viewport(). - У Playwright додано фокусування на
iframeперед виконанням кліку. - Тепер прогін завершується помилкою, якщо тестувальник не може підключитися.
- У перевірці
toHaveStyleбраузер Edge тепер обробляється аналогічно до Chromium. - Виправлено падіння HTML-репортера, коли прапорець
--bailскасовує виконання файлів. - Звіт про покриття коду тепер підлаштовується під колірну схему інтерфейсу.
- Trace view тепер відкривається лише для тих тестів, які мають дані трасування.
Модуль кешування та VM
- Реалізовано коректну обробку одночасного очищення кешу, а відсутність прав на запис у директорію кешу більше не призводить до збою.
- Виправлено видалення hashbang перед компіляцією залежностей CommonJS у VM.
- Глобальні змінні Node зберігаються після teardown, а фейкові таймери скидаються після кожного тестового файлу.
Продуктивність
- Оптимізовано повторне використання
fsModuleCacheпід час статичного збору тестів. - Додано кешування резолвів setup-файлів та моків для повторно використовуваних воркерів.
- Скасовано повторний запит «розігрітих» модулів у повторно використовуваних ранерах.
- Провайдер Istanbul переведено на використання
magic-stringтаrolldownдля інструментації коду, збір непокритих файлів переведено наPromise.all, а вхідні source maps більше не зберігаються у даних покриття. - Порівняння типізованих масивів у
expectпереведено на один цикл.
Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо