About Vitest
Vitest is a unit testing framework designed for the Vite ecosystem, offering a Jest-compatible API. It supports modern JavaScript features, snapshot testing, and TypeScript, and integrates with the Vite development server for rapid feedback. Coding agents and development teams use it to automate and accelerate test workflows.
Key features
- 01Run unit tests with a Jest-compatible API
- 02Support snapshot testing, mocking, and code coverage analysis
- 03Seamless integration with Vite development server for fast feedback
Use cases
- 01Verify code logic in modern JavaScript projects
- 02Automate testing in CI/CD pipelines and coding agents
Install
Pick your OS or package manager and run the command in a terminal.
Once installed, runvitest --versionto confirm it works.
Example commands
Common commands in the order you’d use them.
Details
From the project READMEVitest
Next generation testing framework powered by Vite.
Documentation | Getting Started | Examples | Why Vitest?
Features
- Vite's config, transformers, resolvers, and plugins. Use the same setup from your app!
- Jest Snapshot
- Chai built-in for assertions, with Jest expect compatible APIs
- Smart & instant watch mode, like HMR for tests!
- Native code coverage via
v8oristanbul. - Jest-compatible mocking, stubbing, and spies.
- JSDOM and happy-dom for DOM and browser API mocking
- Browser Mode for running component tests in the browser
- Components testing (Vue, React, Svelte, Lit, Marko)
- Benchmarking support with Tinybench
- Projects support
- expect-type for type-level testing
- ESM first, top level await
- Out-of-box TypeScript / JSX support
- Filtering, timeouts, concurrent for suite and tests
- Sharding support
- Reporting Uncaught Errors
- Run your tests in the browser natively
Vitest requires Vite >=v6.4.0 and Node >=v22.12.0
import { assert, describe, expect, it } from 'vitest'
describe('suite name', () => {
it('foo', () => {
expect(1 + 1).toEqual(2)
expect(true).to.be.true
})
it('bar', () => {
assert.equal(Math.sqrt(4), 2)
})
it('snapshot', () => {
expect({ foo: 'bar' }).toMatchSnapshot()
})
})
$ npx vitest
Sponsors
Credits
Thanks to:
- The Jest team and community for creating a delightful testing API
- @lukeed for the work on uvu where we are inspired a lot from.
- @pi0 for the idea and implementation of using Vite to transform and bundle the server code.
- The Vite team for brainstorming the initial idea.
- @patak-dev for the awesome package name!
Contribution
See Contributing Guide.
License
MIT License © 2021-Present VoidZero Inc. and Vitest contributors