mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 00:01:10 +02:00
| .. | ||
| jest.config.backend.js | ||
| jest.config.mobile.js | ||
| package.json | ||
| playwright.config.base.ts | ||
| README.md | ||
| tsconfig.json | ||
| vitest.config.base.ts | ||
| vitest.config.svelte.ts | ||
@manacore/test-config
Shared test configurations for all projects in the Manacore monorepo.
Available Configurations
Jest Configuration for NestJS Backends
// jest.config.js
const baseConfig = require('@manacore/test-config/jest-backend');
module.exports = {
...baseConfig,
// Your project-specific overrides
};
Jest Configuration for React Native Mobile
// jest.config.js
module.exports = {
preset: '@manacore/test-config/jest-mobile',
// Your project-specific overrides
};
Vitest Configuration for Shared Packages
// 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
// 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
// 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
- Install peer dependencies:
# 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
-
Create config file in your project root (see examples above)
-
Add test scripts to package.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:
// Override coverage thresholds
export default mergeConfig(baseConfig, {
test: {
coverage: {
thresholds: {
lines: 90, // More strict for critical packages
},
},
},
});