Skip to content
Skillpedia
Testing48k · #4511

vitest-skill

Helps your agent create tests for JavaScript and TypeScript code. Ensures the code works correctly and without errors.

What it does

This tool helps you write automatic tests for your JavaScript or TypeScript code. It uses Vitest, which is fast and compatible with tools like Jest.

When to use it

  • ✓When you need to write tests for your code.
  • ✓When using Vitest, vi.mock, or vitest.config.
  • ✓To test React components or mock functions.

Example of what to ask your AI

“Write a test for the `add` function that checks if 2 + 2 equals 4.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/vitest-skill/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/vitest-skill/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

The tool generates test code using Vitest syntax. It can create basic tests, simulate parts of your code (mocking), or even test components.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add sickn33/agentic-awesome-skills --skill vitest-skill

Or download just the file:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/vitest-skill/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Vitest Testing Skill

When to Use

Use this skill when you need generates Vitest tests in JavaScript/TypeScript with Vite-native speed. Jest-compatible API with ESM support and HMR. Use when user mentions "Vitest", "vi.mock", "vitest.config". Triggers on: "Vitest", "vi.mock", "vi.fn", "Vite test", "vitest config".

Core Patterns

Basic Test

import { describe, it, expect, vi, beforeEach } from 'vitest';
import { Calculator } from './calculator';

describe('Calculator', () => {
  let calc: Calculator;
  beforeEach(() => { calc = new Calculator(); });

  it('adds two numbers', () => {
    expect(calc.add(2, 3)).toBe(5);
  });

  it('throws on divide by zero', () => {
    expect(() => calc.divide(10, 0)).toThrow();
  });
});

Mocking (vi instead of jest)

import { vi } from 'vitest';

// Mock module
vi.mock('./database', () => ({
  getUser: vi.fn().mockResolvedValue({ name: 'Alice' }),
  saveUser: vi.fn().mockResolvedValue(true),
}));

// Mock function
const mockFn = vi.fn();
mockFn.mockReturnValue(42);
mockFn.mockResolvedValue({ data: 'test' });

// Spy
const spy = vi.spyOn(console, 'log').mockImplementation(() => {});
expect(spy).toHaveBeenCalledWith('message');
spy.mockRestore();

// Timers
vi.useFakeTimers();
vi.advanceTimersByTime(1000);
vi.runAllTimers();
vi.useRealTimers();

In-Source Testing

// src/math.ts — tests alongside code!
export function add(a: number, b: number) { return a + b; }
export function multiply(a: number, b: number) { return a * b; }

if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest;
  it('adds', () => { expect(add(2, 3)).toBe(5); });
  it('multiplies', () => { expect(multiply(3, 4)).toBe(12); });
}

Snapshot Testing

it('serializes user', () => {
  expect(serializeUser(user)).toMatchSnapshot();
});

it('inline snapshot', () => {
  expect(serializeUser(user)).toMatchInlineSnapshot(`
    { "name": "Alice", "email": "alice@test.com" }
  `);
});

React Component Testing

import { render, screen } from '@testing-library/react';
import { describe, it, expect } from 'vitest';
import Button from './Button';

describe('Button', () => {
  it('renders with label', () => {
    render(<Button label="Click me" />);
    expect(screen.getByText('Click me')).toBeDefined();
  });
});

Anti-Patterns

Bad Good Why
jest.fn() vi.fn() Vitest uses vi
jest.mock() vi.mock() Different namespace
No type safety TypeScript + strict Vitest is TS-first

Quick Reference

Task Command
Run once npx vitest run
Watch npx vitest (default)
UI npx vitest --ui
Coverage npx vitest --coverage
Specific file npx vitest run src/math.test.ts
Filter npx vitest run -t "adds"

vitest.config.ts

import { defineConfig } from 'vitest/config';
export default defineConfig({
  test: {
    globals: true,
    environment: 'jsdom',
    coverage: { provider: 'v8', reporter: ['text', 'html'] },
    include: ['src/**/*.{test,spec}.{js,ts,tsx}'],
    includeSource: ['src/**/*.{js,ts}'],
  },
});

Deep Patterns → reference/playbook.md

§ Section Lines
1 Production Configuration Config, workspace, setup file
2 Mocking Patterns vi.mock, spies, timers, fetch
3 React Testing Library Components, hooks, providers
4 Snapshot & Inline Snapshots File, inline, serializers
5 Table-Driven Tests test.each, describe.each
6 In-Source Testing Co-located tests in source
7 API / Integration Testing Server tests with fetch
8 CI/CD Integration GitHub Actions, scripts
9 Debugging Quick-Reference 10 common problems
10 Best Practices Checklist 13 items

Limitations

  • Use this skill only when the task clearly matches its upstream source and local project context.
  • Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
  • Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.
FAQ

What's the difference between Vitest and Jest?

Vitest is faster and uses modern JavaScript features, being compatible with most Jest functions.

What is 'mocking'?

Mocking is creating fake versions of parts of your code to test other parts in isolation.

What is 'snapshot testing'?

It's a way to test your code's output by comparing it to a previous 'snapshot' (a recording).

Details

Original description by the author

Generates Vitest tests in JavaScript/TypeScript with Vite-native speed. Jest-compatible API with ESM support and HMR. Use when user mentions "Vitest", "vi.mock", "vitest.config". Triggers on: "Vitest", "vi.mock", "vi.fn", "Vite test", "vitest config".

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#4511
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills