Что это такое?
Vitest — это тестовый фреймворк нового поколения для JavaScript и TypeScript, работающий на базе Vite. Он запускает модульные и компонентные тесты, используя вашу существующую настройку Vite.
Vitest — это фреймворк или библиотека, и как он связан с Jest?
Это полноценный тестовый фреймворк, построенный на Vite: он переиспользует конфиг Vite, его трансформеры, резолверы и плагины, а также предлагает Jest-совместимый API (expect, мокирование, spies, снапшоты), так что переход будет привычным.
Как подключить его в своём проекте?
Установите его как dev-зависимость (npm install -D vitest) и запускайте через CLI-команду 'vitest'. Он изначально рассчитан на ESM и подхватывает существующий конфиг и плагины vite вашего приложения, поэтому большинству проектов отдельная тестовая конфигурация не нужна.
Нужно ли что-то предварительно установить?
Да — в проекте нужен Node >=v22.12.0 (22.12, 24 или 26+) и Vite >=v6.4.0. Больше ничего обязательного нет; браузер задействуется, только если вы сами включите Browser Mode.
На что обратить внимание, если я перехожу с Jest или со старой настройки?
Главный нюанс — минимальные версии: проекты на старых Node или Vite сначала нужно обновить. Сама миграция с Jest простая, потому что expect API, мокирование, стабы, spies и снапшоты совместимы.
Что он умеет, кроме запуска модульных тестов?
Он считает покрытие нативного кода через v8 или istanbul, запускает бенчмарки с помощью Tinybench, умеет тестировать типы через expect-type и поддерживает шардирование, чтобы распределить прогон по нескольким машинам.
Он может тестировать компоненты Vue, React или Svelte?
Да — тестирование компонентов Vue, React, Svelte, Lit и Marko работает из коробки, плюс есть Browser Mode, который запускает тесты прямо в браузере. В Node он может замокать DOM и браузерные API через JSDOM или happy-dom.
Почему его называют быстрым?
Watch mode работает как HMR в Vite: умно и мгновенно — при правках перезапускается только затронутое, а не весь набор тестов. Тесты к тому же могут выполняться параллельно и фильтроваться.
Мне нужно отдельно настраивать поддержку TypeScript, JSX или ESM?
Нет — TypeScript и JSX работают из коробки, а Vitest изначально заточен под ESM, включая нативную поддержку top-level await.
What are similar projects?
mocha, pest, playwright, javascript-testing-best-practices, enzyme, todomvc, qiankun, karma
Which topics is it in?
test, jest, tdd, esm, testing-tools, benchmarking, unit-testing, svelte, vite, vue, testing, browser