mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 23:21:08 +02:00
172 lines
3.6 KiB
Markdown
172 lines
3.6 KiB
Markdown
# @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/)
|