# @manacore/test-config Shared test configurations for all projects in the Manacore monorepo. ## Available Configurations ### Jest Configuration for NestJS Backends ```javascript // jest.config.js const baseConfig = require('@manacore/test-config/jest-backend'); module.exports = { ...baseConfig, // Your project-specific overrides }; ``` ### Jest Configuration for React Native Mobile ```javascript // jest.config.js module.exports = { preset: '@manacore/test-config/jest-mobile', // Your project-specific overrides }; ``` ### Vitest Configuration for Shared Packages ```typescript // vitest.config.ts import { defineConfig, mergeConfig } from 'vitest/config'; import baseConfig from '@manacore/test-config/vitest-base'; export default mergeConfig( baseConfig, defineConfig({ // Your project-specific overrides }) ); ``` ### Vitest Configuration for SvelteKit Web Apps ```typescript // vitest.config.ts import { defineConfig, mergeConfig } from 'vitest/config'; import svelteConfig from '@manacore/test-config/vitest-svelte'; import { sveltekit } from '@sveltejs/kit/vite'; export default mergeConfig( svelteConfig, defineConfig({ plugins: [sveltekit()], // Your project-specific overrides }) ); ``` ### Playwright Configuration for E2E Tests ```typescript // playwright.config.ts import { defineConfig } from '@playwright/test'; import baseConfig from '@manacore/test-config/playwright'; export default defineConfig({ ...baseConfig, use: { ...baseConfig.use, baseURL: 'http://localhost:5173', }, // Your project-specific overrides }); ``` ## Features ### Common Settings Across All Configs - **Coverage Thresholds**: 80% for lines, functions, branches, statements - **Mock Management**: Auto-clear, restore, and reset mocks between tests - **Timeout**: 10s default for tests - **Verbose Output**: In CI environments - **Error Handling**: Fail on deprecated APIs ### NestJS Backend Config - TypeScript support via ts-jest - Automatic exclusion of modules, DTOs, entities - Module path aliases support - Coverage collection from source files ### React Native Mobile Config - jest-expo preset - Transform ignore patterns for React Native modules - Support for @manacore packages - Coverage from src/ and app/ directories ### Vitest Configs - Modern, fast test runner - Coverage via v8 - ESM support - Global test APIs (describe, it, expect) ### Playwright Config - Multi-browser testing (Chromium, Firefox, WebKit) - Mobile viewport testing - Built-in retry logic - Video/screenshot on failure - Auto-start web server ## Adding to Your Project 1. **Install peer dependencies**: ```bash # For NestJS backend pnpm add -D jest ts-jest @types/jest # For React Native mobile pnpm add -D jest jest-expo @testing-library/react-native # For SvelteKit web pnpm add -D vitest @vitest/coverage-v8 jsdom # For E2E tests pnpm add -D @playwright/test ``` 2. **Create config file** in your project root (see examples above) 3. **Add test scripts** to package.json: ```json { "scripts": { "test": "jest", // or "vitest run" "test:watch": "jest --watch", // or "vitest" "test:cov": "jest --coverage", // or "vitest run --coverage" "test:e2e": "playwright test" } } ``` ## Customization Each config can be extended with project-specific settings: ```typescript // Override coverage thresholds export default mergeConfig(baseConfig, { test: { coverage: { thresholds: { lines: 90, // More strict for critical packages }, }, }, }); ``` ## Related Documentation - [Testing Strategy](../../docs/TESTING.md) - [Jest Documentation](https://jestjs.io/) - [Vitest Documentation](https://vitest.dev/) - [Playwright Documentation](https://playwright.dev/)