Next generation testing framework powered by Vite.
Documentation | Getting Started | Examples | Why Vitest?
- 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. - Tinyspy built-in for 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.0.0 and Node >=v20.0.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 vitestThanks 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!
 
See Contributing Guide.
MIT License © 2021-Present VoidZero Inc. and Vitest contributors