Voydevich
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: представлено новий експериментальний API pointer для браузерного режиму.

Покриття коду (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 за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо