Skip to content

Commit a11d027

Browse files
author
Szymon.Poltorak
committed
refactor(testing): standardize Vitest configuration and improve setup file management
1 parent 4f6d737 commit a11d027

16 files changed

+811
-1651
lines changed

e2e/ci-e2e/vitest.e2e.config.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
/// <reference types="vitest" />
2-
import { createE2eConfig } from '../../testing/test-setup-config/src/lib/vitest-setup-presets.js';
2+
import type { UserConfig } from 'vite';
3+
import { createE2ETestConfig } from '../../testing/test-setup-config/src/index.js';
34

4-
export default createE2eConfig(
5-
'ci-e2e',
6-
{
7-
projectRoot: new URL('../../', import.meta.url),
8-
cacheKey: 'ci-e2e',
9-
},
10-
{
11-
test: {
12-
testTimeout: 60_000,
13-
globalSetup: ['./global-setup.ts'],
14-
coverage: { enabled: false },
15-
},
5+
const baseConfig = createE2ETestConfig('ci-e2e', {
6+
testTimeout: 60_000,
7+
disableCoverage: true,
8+
});
9+
10+
export default {
11+
...baseConfig,
12+
test: {
13+
...(baseConfig as any).test,
14+
globalSetup: ['./global-setup.ts'],
1615
},
17-
);
16+
} as UserConfig;
Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,6 @@
11
/// <reference types="vitest" />
2-
import { createE2eConfig } from '../../testing/test-setup-config/src/lib/vitest-setup-presets.js';
2+
import { createE2ETestConfig } from '../../testing/test-setup-config/src/index.js';
33

4-
export default createE2eConfig(
5-
'plugin-typescript-e2e',
6-
{
7-
projectRoot: new URL('../../', import.meta.url),
8-
cacheKey: 'plugin-typescript-e2e',
9-
},
10-
{
11-
test: {
12-
testTimeout: 20_000,
13-
coverage: { enabled: true },
14-
},
15-
},
16-
);
4+
export default createE2ETestConfig('plugin-typescript-e2e', {
5+
testTimeout: 20_000,
6+
});

packages/core/vitest.int.config.ts

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,4 @@
11
/// <reference types="vitest" />
2-
import {
3-
createIntConfig,
4-
setupPresets,
5-
} from '../../testing/test-setup-config/src/lib/vitest-setup-presets.js';
2+
import { createIntTestConfig } from '../../testing/test-setup-config/src/index.js';
63

7-
export default createIntConfig(
8-
'core',
9-
{
10-
projectRoot: new URL('../../', import.meta.url),
11-
},
12-
{
13-
test: {
14-
setupFiles: [...setupPresets.int.base, ...setupPresets.int.portalClient],
15-
},
16-
},
17-
);
4+
export default createIntTestConfig('core');
Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,4 @@
11
/// <reference types="vitest" />
2-
import {
3-
createUnitConfig,
4-
setupPresets,
5-
} from '../../testing/test-setup-config/src/lib/vitest-setup-presets.js';
2+
import { createUnitTestConfig } from '../../testing/test-setup-config/src/index.js';
63

7-
export default createUnitConfig(
8-
'core',
9-
{
10-
projectRoot: new URL('../../', import.meta.url),
11-
},
12-
{
13-
test: {
14-
setupFiles: [
15-
...setupPresets.unit.base,
16-
...setupPresets.unit.git,
17-
...setupPresets.unit.portalClient,
18-
...setupPresets.unit.matchersCore,
19-
],
20-
},
21-
},
22-
);
4+
export default createUnitTestConfig('core');
Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,4 @@
11
/// <reference types="vitest" />
2-
import {
3-
createIntConfig,
4-
setupPresets,
5-
} from '../../testing/test-setup-config/src/lib/vitest-setup-presets.js';
2+
import { createIntTestConfig } from '../../testing/test-setup-config/src/index.js';
63

7-
export default createIntConfig(
8-
'utils',
9-
{
10-
projectRoot: new URL('../../', import.meta.url),
11-
},
12-
{
13-
test: {
14-
coverage: { exclude: ['perf/**'] },
15-
setupFiles: [...setupPresets.int.base, ...setupPresets.int.cliui],
16-
},
17-
},
18-
);
4+
export default createIntTestConfig('utils');
Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,4 @@
11
/// <reference types="vitest" />
2-
import {
3-
createUnitConfig,
4-
setupPresets,
5-
} from '../../testing/test-setup-config/src/lib/vitest-setup-presets.js';
2+
import { createUnitTestConfig } from '../../testing/test-setup-config/src/index.js';
63

7-
export default createUnitConfig(
8-
'utils',
9-
{
10-
projectRoot: new URL('../../', import.meta.url),
11-
},
12-
{
13-
test: {
14-
include: ['src/**/*.{unit,type}.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
15-
typecheck: { include: ['**/*.type.test.ts'] },
16-
coverage: { exclude: ['perf/**'] },
17-
setupFiles: [
18-
...setupPresets.unit.base,
19-
...setupPresets.unit.matchersCore,
20-
...setupPresets.unit.matcherPath,
21-
],
22-
},
23-
},
24-
);
4+
export default createUnitTestConfig('utils');
Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,50 @@
1-
## Vitest config factory and setup presets
1+
## Vitest Config Factory
22

3-
Utilities to centralize and standardize Vitest configuration across the monorepo.
3+
Standardized Vitest configuration for the Code PushUp monorepo.
44

5-
- `vitest-config-factory.ts`: builds typed Vitest configs with sensible defaults
6-
- `vitest-setup-presets.ts`: provides create functions and exportable setup file groups
5+
### Usage
76

8-
The create functions (`createUnitConfig`, `createIntConfig`, `createE2eConfig`) automatically include appropriate setup files for each test type. See the unit tests for detailed documentation of defaults, coverage settings, and setup file presets.
7+
**Unit tests:**
98

10-
### Examples
9+
```typescript
10+
import { createUnitTestConfig } from '@code-pushup/test-setup-config';
1111

12-
**Using defaults:**
12+
export default createUnitTestConfig('my-package');
13+
```
14+
15+
**Integration tests:**
16+
17+
```typescript
18+
import { createIntTestConfig } from '@code-pushup/test-setup-config';
1319

14-
```ts
15-
export default createUnitConfig('my-package', import.meta.url);
20+
export default createIntTestConfig('my-package');
1621
```
1722

18-
**Extending default setup files:**
23+
**E2E tests:**
24+
25+
```typescript
26+
import { createE2ETestConfig } from '@code-pushup/test-setup-config';
27+
28+
export default createE2ETestConfig('my-e2e');
1929

20-
```ts
21-
export default createIntConfig('my-package', import.meta.url, {
22-
setupFiles: [...setupPresets.int.base, ...setupPresets.int.git, './custom-setup.ts'],
30+
// With options:
31+
export default createE2ETestConfig('my-e2e', {
32+
testTimeout: 60_000,
33+
disableCoverage: true,
2334
});
2435
```
36+
37+
### Advanced: Overriding Config
38+
39+
For edge cases, use the spread operator to override any property:
40+
41+
```typescript
42+
const baseConfig = createE2ETestConfig('my-e2e');
43+
export default {
44+
...baseConfig,
45+
test: {
46+
...(baseConfig as any).test,
47+
globalSetup: ['./custom-setup.ts'],
48+
},
49+
};
50+
```
Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
export {
2-
createVitestConfig,
3-
type TestKind,
4-
type VitestConfigFactoryOptions,
5-
type VitestOverrides,
6-
type ConfigRestParams,
7-
} from './lib/vitest-config-factory.js';
8-
9-
export {
10-
setupPresets,
11-
createUnitConfig,
12-
createIntConfig,
13-
createE2eConfig,
2+
createUnitTestConfig,
3+
createIntTestConfig,
4+
createE2ETestConfig,
145
} from './lib/vitest-setup-presets.js';
6+
7+
export type { E2ETestOptions } from './lib/vitest-config-factory.js';
8+
9+
export { getSetupFiles } from './lib/vitest-setup-files.js';

0 commit comments

Comments
 (0)