@application-kit/testing 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +5 -8
- package/dist/cjs/vitest/application-vitest-config.d.ts +0 -1
- package/dist/cjs/vitest/application-vitest-config.js +4 -7
- package/dist/esm/vitest/application-vitest-config.d.ts +0 -1
- package/dist/esm/vitest/application-vitest-config.js +3 -5
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @application-kit/testing
|
|
2
2
|
|
|
3
|
+
## 0.8.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 32fb131: Фабрики `defineApplicationUnitConfig` и `defineApplicationEndToEndConfig` сами распознают прогон Stryker по
|
|
8
|
+
`STRYKER_MUTATOR_WORKER`: выключают кеш модулей и на vitest 5 изолируют файлы спек. Отдельный конфиг vitest для Stryker
|
|
9
|
+
больше не нужен: `defineApplicationMutationConfig` удалена, `vitestConfigFile` указывает на обычный `vitest.config`.
|
|
10
|
+
|
|
3
11
|
## 0.7.1
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -92,10 +92,10 @@ export default defineApplicationEndToEndConfig({
|
|
|
92
92
|
ячейки шарда CI и `ProjectShardSequencer` (ниже);
|
|
93
93
|
- e2e — окружение `node` и алиас `graphql` на CJS-вход `node_modules/graphql/index.js` под `root`: Vite для SSR берёт
|
|
94
94
|
ESM-сборку `graphql`, внешний `mercurius` — CJS, и без алиаса схема и валидация запроса живут в разных realm;
|
|
95
|
-
- мутации —
|
|
96
|
-
(под Stryker он отдаёт тестам трансформ без активного мутанта)
|
|
97
|
-
vitest-runner Stryker собирает покрытие по тестам только с первого
|
|
98
|
-
|
|
95
|
+
- мутации — отдельного конфига не нужно: `vitestConfigFile` Stryker указывает на обычный `vitest.config`, а фабрики,
|
|
96
|
+
увидев `STRYKER_MUTATOR_WORKER`, выключают кеш модулей (под Stryker он отдаёт тестам трансформ без активного мутанта)
|
|
97
|
+
и на vitest 5 ставят `isolate: true`: без изоляции vitest-runner Stryker собирает покрытие по тестам только с первого
|
|
98
|
+
файла спек воркера.
|
|
99
99
|
|
|
100
100
|
## Вход `/vitest/fast-bcrypt`: дешёвый bcrypt
|
|
101
101
|
|
|
@@ -136,14 +136,11 @@ export default defineStrykerConfig({
|
|
|
136
136
|
ignorePatterns: ['docs', 'tasks'],
|
|
137
137
|
mutate: { exclude: ['src/**/*.spec.ts', 'src/**/*.vue', 'src/**/tests/**'], include: ['src/modules/**/*.ts', 'src/libs/**/*.ts'] },
|
|
138
138
|
thresholds: { break: 94, high: 100, low: 95 },
|
|
139
|
-
vitestConfigFile: 'vitest.
|
|
139
|
+
vitestConfigFile: 'vitest.config.mts',
|
|
140
140
|
})
|
|
141
141
|
|
|
142
142
|
// vitest.config.mts
|
|
143
143
|
coverage: { exclude: [...CODE_WITHOUT_LOGIC, '**/*.html'], include: ['src'], thresholds: { lines: 95 } }
|
|
144
|
-
|
|
145
|
-
// vitest.stryker.config.mts — defineApplicationMutationConfig из входа /vitest
|
|
146
|
-
export default defineApplicationMutationConfig(unitConfig)
|
|
147
144
|
```
|
|
148
145
|
|
|
149
146
|
`defineStrykerLayers` режет прогон на группы каталогов: ячейка CI мутирует одну группу со своим порогом `break` (общий
|
|
@@ -2,4 +2,3 @@ import type { ViteUserConfig } from 'vitest/config';
|
|
|
2
2
|
import type { ApplicationTestConfigOptionsInterface, ApplicationUnitConfigOptionsInterface } from './application-vitest-config-options.interface.js';
|
|
3
3
|
export declare const defineApplicationUnitConfig: (options: ApplicationUnitConfigOptionsInterface) => ViteUserConfig;
|
|
4
4
|
export declare const defineApplicationEndToEndConfig: (options: ApplicationTestConfigOptionsInterface) => ViteUserConfig;
|
|
5
|
-
export declare const defineApplicationMutationConfig: (unitConfig: ViteUserConfig) => ViteUserConfig;
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.defineApplicationEndToEndConfig = exports.defineApplicationUnitConfig = void 0;
|
|
7
7
|
const node_module_1 = require("node:module");
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
9
|
const node_process_1 = __importDefault(require("node:process"));
|
|
@@ -35,10 +35,11 @@ const coverageOf = (scope) => ({
|
|
|
35
35
|
skipFull: true,
|
|
36
36
|
thresholds: scope.thresholds,
|
|
37
37
|
});
|
|
38
|
+
const isMutationRun = () => node_process_1.default.env.STRYKER_MUTATOR_WORKER !== undefined;
|
|
38
39
|
const sharedTestOptions = (options) => ({
|
|
39
|
-
...moduleCacheOf(
|
|
40
|
+
...moduleCacheOf(!isMutationRun()),
|
|
40
41
|
globals: true,
|
|
41
|
-
isolate:
|
|
42
|
+
isolate: isMutationRun() && IS_VITEST_5,
|
|
42
43
|
server: { deps: { inline: [...PACKAGES_THROUGH_VITE, ...(options.inlineDependencies ?? [])] } },
|
|
43
44
|
setupFiles: [...options.setupFiles],
|
|
44
45
|
testTimeout: TEST_TIMEOUT,
|
|
@@ -104,7 +105,3 @@ const defineApplicationEndToEndConfig = (options) => {
|
|
|
104
105
|
});
|
|
105
106
|
};
|
|
106
107
|
exports.defineApplicationEndToEndConfig = defineApplicationEndToEndConfig;
|
|
107
|
-
const defineApplicationMutationConfig = (unitConfig) => (0, vite_1.mergeConfig)(unitConfig, {
|
|
108
|
-
test: { ...moduleCacheOf(false), ...(IS_VITEST_5 && { isolate: true }) },
|
|
109
|
-
});
|
|
110
|
-
exports.defineApplicationMutationConfig = defineApplicationMutationConfig;
|
|
@@ -2,4 +2,3 @@ import type { ViteUserConfig } from 'vitest/config';
|
|
|
2
2
|
import type { ApplicationTestConfigOptionsInterface, ApplicationUnitConfigOptionsInterface } from './application-vitest-config-options.interface.js';
|
|
3
3
|
export declare const defineApplicationUnitConfig: (options: ApplicationUnitConfigOptionsInterface) => ViteUserConfig;
|
|
4
4
|
export declare const defineApplicationEndToEndConfig: (options: ApplicationTestConfigOptionsInterface) => ViteUserConfig;
|
|
5
|
-
export declare const defineApplicationMutationConfig: (unitConfig: ViteUserConfig) => ViteUserConfig;
|
|
@@ -29,10 +29,11 @@ const coverageOf = (scope) => ({
|
|
|
29
29
|
skipFull: true,
|
|
30
30
|
thresholds: scope.thresholds,
|
|
31
31
|
});
|
|
32
|
+
const isMutationRun = () => process.env.STRYKER_MUTATOR_WORKER !== undefined;
|
|
32
33
|
const sharedTestOptions = (options) => ({
|
|
33
|
-
...moduleCacheOf(
|
|
34
|
+
...moduleCacheOf(!isMutationRun()),
|
|
34
35
|
globals: true,
|
|
35
|
-
isolate:
|
|
36
|
+
isolate: isMutationRun() && IS_VITEST_5,
|
|
36
37
|
server: { deps: { inline: [...PACKAGES_THROUGH_VITE, ...(options.inlineDependencies ?? [])] } },
|
|
37
38
|
setupFiles: [...options.setupFiles],
|
|
38
39
|
testTimeout: TEST_TIMEOUT,
|
|
@@ -96,6 +97,3 @@ export const defineApplicationEndToEndConfig = (options) => {
|
|
|
96
97
|
},
|
|
97
98
|
});
|
|
98
99
|
};
|
|
99
|
-
export const defineApplicationMutationConfig = (unitConfig) => mergeConfig(unitConfig, {
|
|
100
|
-
test: { ...moduleCacheOf(false), ...(IS_VITEST_5 && { isolate: true }) },
|
|
101
|
-
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@application-kit/testing",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Тестовая инфраструктура NestJS-приложений: шины CQRS, логгер, фейковый microservice, сборка web-приложения, Postgres в testcontainers, запуск e2e-приложения, изоляция окружения прогона, дешёвый bcrypt для unit-прогона, раскладка ячеек CI по проектам vitest и фабрики конфигов vitest",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cqrs",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"test:unit": "vitest run"
|
|
82
82
|
},
|
|
83
83
|
"dependencies": {
|
|
84
|
-
"@application-kit/bootstrap": "^0.2.
|
|
84
|
+
"@application-kit/bootstrap": "^0.2.3"
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
87
|
"@nestjs/common": "^11.2.7",
|