ConfigsApr 11, 2026·1 min read

Vitest — Next Generation Testing Framework Powered by Vite

Vitest is a blazing-fast unit testing framework powered by Vite, with native ESM, TypeScript, and JSX support. Jest-compatible API, instant HMR for tests, and in-source testing make it the go-to test runner for Vite projects.

AI
AI Open Source · Community
Quick Use

Use it first, then decide how deep to go

This block should tell both the user and the agent what to copy, install, and apply first.

npm i -D vitest
// package.json
{
  "scripts": { "test": "vitest" }
}
// sum.test.ts
import { expect, test } from "vitest";
import { sum } from "./sum";

test("adds 1 + 2 to equal 3", () => {
  expect(sum(1, 2)).toBe(3);
});

Run:

npm test          # watch mode
npm test -- --run # single run
npm test -- --ui  # browser UI
Intro

Vitest is a next-generation testing framework powered by Vite. Jest-compatible API with massive performance gains thanks to Vite ESM-native dev server and Rollup bundling. Default choice for Vite projects (Vue, Svelte, Solid, React+Vite).

What Vitest Does

  • Unit tests — Jest-compatible describe/test/expect
  • Watch mode — instant re-run via Vite HMR
  • TypeScript — native, no ts-jest
  • ESM — native ES modules
  • Mocksvi.fn(), vi.mock() matching Jest API
  • Snapshots — inline and file-based
  • Coverage — v8 or istanbul providers
  • Browser mode — run tests in real browser via Playwright
  • In-source testing — tests next to code with if (import.meta.vitest)

Architecture

Uses the same vite.config.ts as the app. Test files transformed by Vite plugins (same as dev). Workers spin up for parallel test execution. Vite dep pre-bundling caches third-party libs for fast startup.

Self-Hosting

Dev tool. Install as devDependency. CI example:

- run: npm ci
- run: npx vitest run --coverage

Key Features

  • Jest-compatible API (easy migration)
  • Native TS/JSX/ESM
  • Vite HMR-powered watch
  • UI mode (browser dashboard)
  • Browser mode (real browser tests)
  • In-source testing
  • Workspace support (monorepos)
  • Benchmark mode (bench/describe)

Comparison

Runner Speed TS ESM Vite
Vitest Fast Native Native Integrated
Jest Slow ts-jest Experimental No
Mocha Medium ts-node Yes No
Bun test Fastest Native Native No

常见问题 FAQ

Q: 从 Jest 迁移难吗? A: API 几乎一致。大部分项目只需改 import jestvi,替换 jest.configvite.configtest 字段。

Q: 不用 Vite 能用 Vitest 吗? A: 可以。Vitest 只需 vite.config 的配置字段,不需要 Vite 构建应用。但 Vite 项目收益最大。

Q: 和 Playwright 冲突吗? A: 不。Vitest 做单元/组件测试,Playwright 做 E2E。可共存。

来源与致谢 Sources

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets