vitest

Vitest fast Vite-native testing. Use for Vite projects.

7 stars

Best use case

vitest is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Vitest fast Vite-native testing. Use for Vite projects.

Teams using vitest should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/vitest/SKILL.md --create-dirs "https://raw.githubusercontent.com/G1Joshi/Agent-Skills/main/skills/testing/vitest/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/vitest/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How vitest Compares

Feature / AgentvitestStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Vitest fast Vite-native testing. Use for Vite projects.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Vitest

Vitest is a next-generation testing framework powered by Vite. It uses the same configuration (vite.config.ts), transforms, and plugins as your app, making it incredibly fast and creating a unified dev/test environment.

## When to Use

- **Vite Projects**: If you use Vite, Vitest is the no-brainer choice. It reuses your plugins/config.
- **Performance**: It is significantly faster than Jest because it uses native ESM and doesn't bundle the app.
- **Watch Mode**: Instant HMR-style updates for tests.

## Quick Start

```typescript
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from "vite";

export default defineConfig({
  test: {
    globals: true, // enables 'describe', 'test', 'expect' globally
    environment: "jsdom",
  },
});

// basic.test.ts
import { expect, test } from "vitest";

test("math", () => {
  expect(1 + 1).toBe(2);
});
```

## Core Concepts

### Jest Compatible

Vitest's API (`describe`, `it`, `expect`, `vi.fn`) is designed to be compatible with Jest. Migration is often just changing imports.

### In-Source Testing

Vitest allows running tests within your source code blocks (Rust-style), though separating them is still common practice.

```typescript
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest;
  it("add", () => {
    expect(add()).toBe(0);
  });
}
```

## Best Practices (2025)

**Do**:

- **Use Native ESM**: Stop fighting with Babel/ts-jest. Vitest handles ESM natively.
- **Use Workspace Mode**: For monorepos, Vitest works beautifully with workspace packages.
- **Switch from Jest**: If you are starting a new project, choose Vitest.

**Don't**:

- **Don't rely on global state**: Vitest runs tests in parallel.
- **Don't import Jest types**: Ensure `types` in `tsconfig.json` points to `vitest/globals` if using globals.

## References

- [Vitest Documentation](https://vitest.dev/)