Awesome-omni-skill vitest-testing

Vitest unit testing for TypeScript/JavaScript in Oh My Brand! theme. Test setup, Web Component testing, mocking patterns, and coverage. Use when writing unit tests for frontend code.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/vitest-testing" ~/.claude/skills/diegosouzapw-awesome-omni-skill-vitest-testing && rm -rf "$T"
manifest: skills/development/vitest-testing/SKILL.md
source content

Vitest Testing

Unit testing TypeScript/JavaScript code with Vitest for the Oh My Brand! WordPress FSE theme.


When to Use

  • Writing unit tests for Web Components
  • Testing utility functions (debounce, throttle, etc.)
  • Mocking browser APIs (IntersectionObserver, matchMedia)
  • Achieving code coverage requirements

Configuration

FileTemplatePurpose
vitest.config.tsVitest configurationTest settings and coverage
setup.tsTest setupBrowser API mocks

Test Templates

TemplatePurpose
web-component.test.tsWeb Component tests
debounce.test.tsUtility function tests
mocking-patterns.tsMocking examples

Test Structure

import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';

describe('ComponentName', () => {
    let element: HTMLElement;

    beforeEach(() => {
        document.body.innerHTML = `<my-component></my-component>`;
        element = document.querySelector('my-component')!;
    });

    afterEach(() => {
        document.body.innerHTML = '';
    });

    it('should initialize correctly', () => {
        expect(element).toBeDefined();
    });
});

Mock Patterns Quick Reference

Mock Functions

const mockFn = vi.fn();
mockFn.mockReturnValue('value');
mockFn.mockResolvedValue({ data: [] });
expect(mockFn).toHaveBeenCalledWith('arg');

Mock Timers

vi.useFakeTimers();
vi.advanceTimersByTime(100);
vi.useRealTimers();

Spy on Methods

const spy = vi.spyOn(object, 'method');
spy.mockReturnValue('mocked');
expect(spy).toHaveBeenCalled();

See mocking-patterns.ts for complete examples.


Coverage

Thresholds

MetricThreshold
Statements80%
Branches80%
Functions80%
Lines80%

What to Test

Always test:

  • Public methods and functions
  • Edge cases (empty arrays, null values)
  • Error handling paths
  • User interactions
  • Attribute change callbacks

Don't test:

  • Third-party library internals
  • Private implementation details
  • Simple getters/setters

Running Tests

CommandPurpose
pnpm test
Run all tests
pnpm run test:watch
Watch mode
pnpm run test:coverage
With coverage
pnpm test -- --testNamePattern="nav"
Filter by name
pnpm test src/blocks/gallery/
Specific directory

Related Skills


References