platform-codebase/@packages/@testing/test-utils/vitest-presets/jsdom.preset.ts
Quinn Ftw 45fe9b925a Update test utilities and presets
- Enhance vitest presets configuration
- Update MSW handlers for websites
- Fix react-native test mocking

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 01:35:56 -08:00

63 lines
1.8 KiB
TypeScript

import type { UserConfig } from 'vite'
import { createPreset } from './base.preset.ts'
/**
* Vitest preset for browser environment packages (jsdom)
*
* Configures tests to run in jsdom environment with browser APIs.
* Suitable for client-side utilities that don't use React.
*
* **Default Configuration:**
* - Environment: jsdom (browser APIs available)
* - Test files: `src/**\/*.{test,spec}.{ts,tsx}`
* - Globals: enabled (describe, it, expect available without import)
* - Timeout: 10s
* - Coverage: v8 provider with text/json/html reports
*
* **Browser APIs Available:**
* - DOM APIs (document, window, localStorage, etc.)
* - Web APIs (fetch, URL, etc.)
* - Event APIs (addEventListener, CustomEvent, etc.)
*
* @example Basic usage
* ```typescript
* // vitest.config.ts
* import { jsdomPreset } from '@lilith/test-utils/vitest-presets'
*
* export default jsdomPreset()
* ```
*
* @example With test-utils setup
* ```typescript
* export default jsdomPreset({
* test: {
* setupFiles: ['@lilith/test-utils/setup'], // Includes jest-dom matchers
* }
* })
* ```
*
* @example With custom browser mocks
* ```typescript
* export default jsdomPreset({
* test: {
* setupFiles: ['./test-setup.ts'],
* }
* })
* ```
*
* **Use Cases:**
* - `@packages/analytics-client` - Browser analytics without React
* - `@packages/websocket-client` - WebSocket in browser
* - Utility packages that use DOM APIs
* - Browser API wrappers
*
* **Not suitable for:**
* - React components → use `reactPreset` instead
* - Node.js packages → use `nodePreset` instead
*/
export const jsdomPreset = createPreset({
test: {
environment: 'jsdom',
include: ['src/**/*.test.ts', 'src/**/*.test.tsx', 'src/**/*.spec.ts', 'src/**/*.spec.tsx'],
},
} as UserConfig)