@nest-yalc-2/jest-config 1.3.3
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/LICENSE +661 -0
- package/README.md +31 -0
- package/package.json +31 -0
- package/src/CHANGELOG.md +8 -0
- package/src/README.md +31 -0
- package/src/config/CHANGELOG.md +8 -0
- package/src/config/README.md +31 -0
- package/src/config/gql-plugin.js +25 -0
- package/src/config/index.d.ts +2 -0
- package/src/config/index.js +19 -0
- package/src/config/index.js.map +1 -0
- package/src/config/index.ts +2 -0
- package/src/config/jest-conf.generator.d.ts +53 -0
- package/src/config/jest-conf.generator.js +228 -0
- package/src/config/jest-conf.generator.js.map +1 -0
- package/src/config/jest-conf.generator.ts +368 -0
- package/src/config/jest-def.config.d.ts +20 -0
- package/src/config/jest-def.config.js +172 -0
- package/src/config/jest-def.config.js.map +1 -0
- package/src/config/jest-def.config.ts +210 -0
- package/src/config/jest.setup.d.ts +0 -0
- package/src/config/jest.setup.js +9 -0
- package/src/config/jest.setup.js.map +1 -0
- package/src/config/jest.setup.ts +39 -0
- package/src/config/package.json +22 -0
- package/src/config/tsconfig.dev.json +3 -0
- package/src/config/tsconfig.json +9 -0
- package/src/gql-plugin.js +25 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +19 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +2 -0
- package/src/jest-conf.generator.d.ts +53 -0
- package/src/jest-conf.generator.js +227 -0
- package/src/jest-conf.generator.js.map +1 -0
- package/src/jest-conf.generator.ts +362 -0
- package/src/jest-def.config.d.ts +20 -0
- package/src/jest-def.config.js +187 -0
- package/src/jest-def.config.js.map +1 -0
- package/src/jest-def.config.ts +225 -0
- package/src/jest.setup.d.ts +0 -0
- package/src/jest.setup.js +25 -0
- package/src/jest.setup.js.map +1 -0
- package/src/jest.setup.ts +58 -0
- package/src/package.json +22 -0
- package/src/tsconfig.dev.json +3 -0
- package/src/tsconfig.json +9 -0
package/README.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# @nest-yalc-2/jest-config
|
|
2
|
+
|
|
3
|
+
Reusable Jest configuration generators for YALC-style TypeScript and NestJS
|
|
4
|
+
projects.
|
|
5
|
+
|
|
6
|
+
Use this package when a consuming workspace wants the same ts-jest defaults,
|
|
7
|
+
coverage threshold handling, GraphQL AST transformer, and project generation
|
|
8
|
+
used by the YALC monorepo.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install --save-dev @nest-yalc-2/jest-config
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Main Exports
|
|
17
|
+
|
|
18
|
+
- `jestConfGenerator` for creating multi-project Jest configs.
|
|
19
|
+
- `createE2EConfig` for e2e Jest configuration.
|
|
20
|
+
- `tsJestConfig` and `tsJestConfigE2E` for ts-jest setup.
|
|
21
|
+
- `coverageThreshold`, `coveragePathIgnorePatterns`, and default globals.
|
|
22
|
+
|
|
23
|
+
## Example
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { jestConfGenerator } from '@nest-yalc-2/jest-config';
|
|
27
|
+
|
|
28
|
+
export default jestConfGenerator(rootPath, projects, appProjects, {
|
|
29
|
+
skipProjects: ['types'],
|
|
30
|
+
});
|
|
31
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nest-yalc-2/jest-config",
|
|
3
|
+
"version": "1.3.3",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "./src/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./src/index.js",
|
|
8
|
+
"./*": "./src/*.js"
|
|
9
|
+
},
|
|
10
|
+
"author": "",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"types": "./src/index.d.ts",
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"src"
|
|
16
|
+
],
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"tslib": "^2.6.3"
|
|
19
|
+
},
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/Nek97/nestjs-yalc.git"
|
|
23
|
+
},
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/Nek97/nestjs-yalc/issues"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://github.com/Nek97/nestjs-yalc#readme",
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
}
|
|
31
|
+
}
|
package/src/CHANGELOG.md
ADDED
package/src/README.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# @nest-yalc-2/jest-config
|
|
2
|
+
|
|
3
|
+
Reusable Jest configuration generators for YALC-style TypeScript and NestJS
|
|
4
|
+
projects.
|
|
5
|
+
|
|
6
|
+
Use this package when a consuming workspace wants the same ts-jest defaults,
|
|
7
|
+
coverage threshold handling, GraphQL AST transformer, and project generation
|
|
8
|
+
used by the YALC monorepo.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install --save-dev @nest-yalc-2/jest-config
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Main Exports
|
|
17
|
+
|
|
18
|
+
- `jestConfGenerator` for creating multi-project Jest configs.
|
|
19
|
+
- `createE2EConfig` for e2e Jest configuration.
|
|
20
|
+
- `tsJestConfig` and `tsJestConfigE2E` for ts-jest setup.
|
|
21
|
+
- `coverageThreshold`, `coveragePathIgnorePatterns`, and default globals.
|
|
22
|
+
|
|
23
|
+
## Example
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { jestConfGenerator } from '@nest-yalc-2/jest-config';
|
|
27
|
+
|
|
28
|
+
export default jestConfGenerator(rootPath, projects, appProjects, {
|
|
29
|
+
skipProjects: ['types'],
|
|
30
|
+
});
|
|
31
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# @nest-yalc-2/jest-config
|
|
2
|
+
|
|
3
|
+
Reusable Jest configuration generators for YALC-style TypeScript and NestJS
|
|
4
|
+
projects.
|
|
5
|
+
|
|
6
|
+
Use this package when a consuming workspace wants the same ts-jest defaults,
|
|
7
|
+
coverage threshold handling, GraphQL AST transformer, and project generation
|
|
8
|
+
used by the YALC monorepo.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install --save-dev @nest-yalc-2/jest-config
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Main Exports
|
|
17
|
+
|
|
18
|
+
- `jestConfGenerator` for creating multi-project Jest configs.
|
|
19
|
+
- `createE2EConfig` for e2e Jest configuration.
|
|
20
|
+
- `tsJestConfig` and `tsJestConfigE2E` for ts-jest setup.
|
|
21
|
+
- `coverageThreshold`, `coveragePathIgnorePatterns`, and default globals.
|
|
22
|
+
|
|
23
|
+
## Example
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { jestConfGenerator } from '@nest-yalc-2/jest-config';
|
|
27
|
+
|
|
28
|
+
export default jestConfGenerator(rootPath, projects, appProjects, {
|
|
29
|
+
skipProjects: ['types'],
|
|
30
|
+
});
|
|
31
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* istanbul ignore file */
|
|
2
|
+
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
4
|
+
const transformer = require('@nestjs/graphql/plugin');
|
|
5
|
+
|
|
6
|
+
module.exports.name = 'nestjs-graphql-transformer';
|
|
7
|
+
// you should change the version number anytime you change the configuration below - otherwise, jest will not detect changes
|
|
8
|
+
module.exports.version = 4;
|
|
9
|
+
|
|
10
|
+
module.exports.factory = (cs) => {
|
|
11
|
+
return transformer.before(
|
|
12
|
+
{
|
|
13
|
+
typeFileNameSuffix: [
|
|
14
|
+
'.input.ts',
|
|
15
|
+
'.args.ts',
|
|
16
|
+
'.arg.ts',
|
|
17
|
+
'.entity.ts',
|
|
18
|
+
'.type.ts',
|
|
19
|
+
'.dto.ts',
|
|
20
|
+
],
|
|
21
|
+
introspectComments: true,
|
|
22
|
+
},
|
|
23
|
+
cs.program, // "cs.tsCompiler.program" for older versions of Jest (<= v27)
|
|
24
|
+
);
|
|
25
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./jest-conf.generator.js"), exports);
|
|
18
|
+
__exportStar(require("./jest-def.config.js"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,uDAAqC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { JestConfigWithTsJest } from 'ts-jest';
|
|
2
|
+
import { IDefaultConfOptions } from './jest-def.config.js';
|
|
3
|
+
interface IAppDep {
|
|
4
|
+
name: string;
|
|
5
|
+
path: string;
|
|
6
|
+
}
|
|
7
|
+
export interface IAppProjSetting {
|
|
8
|
+
confOverride?: any;
|
|
9
|
+
deps: IAppDep[];
|
|
10
|
+
}
|
|
11
|
+
export interface IProjectInfo {
|
|
12
|
+
path: string;
|
|
13
|
+
sourcePath: string;
|
|
14
|
+
type: 'library' | 'application' | string;
|
|
15
|
+
}
|
|
16
|
+
export interface IOptions {
|
|
17
|
+
skipProjects?: string[];
|
|
18
|
+
confOverrides?: {
|
|
19
|
+
[key: string]: any;
|
|
20
|
+
};
|
|
21
|
+
defaultCoverageThreshold?: {
|
|
22
|
+
branches: number;
|
|
23
|
+
functions: number;
|
|
24
|
+
lines: number;
|
|
25
|
+
statements: number;
|
|
26
|
+
};
|
|
27
|
+
tsConfigPath?: {
|
|
28
|
+
(proj: IProjectInfo): string;
|
|
29
|
+
};
|
|
30
|
+
coverageOutputPath?: {
|
|
31
|
+
(subProjectPath: string): string;
|
|
32
|
+
};
|
|
33
|
+
defaultConfOptions?: IDefaultConfOptions;
|
|
34
|
+
tsJestConfig?: any;
|
|
35
|
+
extraSetupFiles?: string[];
|
|
36
|
+
setupFilesAfterEnv?: string[];
|
|
37
|
+
}
|
|
38
|
+
export declare function jestConfGenerator(rootPath: string, projectList: {
|
|
39
|
+
[key: string]: IProjectInfo;
|
|
40
|
+
}, appProjectsSettings: {
|
|
41
|
+
[key: string]: IAppProjSetting;
|
|
42
|
+
}, options: IOptions): JestConfigWithTsJest;
|
|
43
|
+
export interface E2EOptions {
|
|
44
|
+
alias?: string;
|
|
45
|
+
e2eDirname: string;
|
|
46
|
+
rootDirname: string;
|
|
47
|
+
defaultConfOptions?: IDefaultConfOptions;
|
|
48
|
+
confOverride?: JestConfigWithTsJest;
|
|
49
|
+
withGqlPlugins?: boolean;
|
|
50
|
+
tsJestConfig?: any;
|
|
51
|
+
}
|
|
52
|
+
export declare const createE2EConfig: (options: E2EOptions) => JestConfigWithTsJest;
|
|
53
|
+
export {};
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.createE2EConfig = void 0;
|
|
40
|
+
exports.jestConfGenerator = jestConfGenerator;
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const os_1 = __importDefault(require("os"));
|
|
43
|
+
const jest_def_config_js_1 = __importStar(require("./jest-def.config.js"));
|
|
44
|
+
const yargs_1 = __importDefault(require("yargs/yargs"));
|
|
45
|
+
const helpers_1 = require("yargs/helpers");
|
|
46
|
+
const maxWorkers = process.env.npm_config_jestworkers ||
|
|
47
|
+
process.env.JEST_WORKERS ||
|
|
48
|
+
os_1.default.cpus().length ||
|
|
49
|
+
10;
|
|
50
|
+
console.log(`Max workers: ${maxWorkers}`);
|
|
51
|
+
function jestConfGenerator(rootPath, projectList, appProjectsSettings, options) {
|
|
52
|
+
const createProjectSets = (projects) => {
|
|
53
|
+
const _projectSets = {};
|
|
54
|
+
for (const app in appProjectsSettings) {
|
|
55
|
+
_projectSets[app] = projects.filter((p) => appProjectsSettings[app].deps.some((v) => p.displayName.startsWith(`unit/${v.name}`)));
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
..._projectSets,
|
|
59
|
+
all: projects,
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
const cacheDirBase = '/tmp/jest_rs/';
|
|
63
|
+
let projects = [];
|
|
64
|
+
const confFactory = (projName, proj, projects) => ({
|
|
65
|
+
...(0, jest_def_config_js_1.default)(`${rootPath}/`, options.defaultConfOptions, (0, jest_def_config_js_1.tsJestConfig)(options.tsConfigPath?.(proj) ??
|
|
66
|
+
`${rootPath}/${proj.path}/tsconfig.${proj.type === 'library' ? 'lib' : 'app'}.json`, options.tsJestConfig)),
|
|
67
|
+
globals: (0, jest_def_config_js_1.globals)(),
|
|
68
|
+
displayName: `unit/${projName}`,
|
|
69
|
+
cacheDirectory: `${cacheDirBase}/unit/${projName}`,
|
|
70
|
+
rootDir: `${rootPath}/${proj.sourcePath}/`,
|
|
71
|
+
roots: [`${rootPath}/${proj.path}`],
|
|
72
|
+
maxWorkers,
|
|
73
|
+
setupFiles: [
|
|
74
|
+
`${__dirname}/jest.setup.js`,
|
|
75
|
+
...(options.extraSetupFiles ?? []),
|
|
76
|
+
],
|
|
77
|
+
coverageThreshold: (0, jest_def_config_js_1.coverageThreshold)(projects, options.defaultCoverageThreshold),
|
|
78
|
+
coveragePathIgnorePatterns: jest_def_config_js_1.coveragePathIgnorePatterns,
|
|
79
|
+
});
|
|
80
|
+
for (const projName of Object.keys(projectList)) {
|
|
81
|
+
const proj = projectList[projName];
|
|
82
|
+
if (!options.skipProjects?.includes(proj.path)) {
|
|
83
|
+
let conf = confFactory(projName, proj);
|
|
84
|
+
if (appProjectsSettings[projName]?.confOverride) {
|
|
85
|
+
conf = { ...conf, ...appProjectsSettings[projName].confOverride };
|
|
86
|
+
}
|
|
87
|
+
if (options.confOverrides) {
|
|
88
|
+
const overrideKey = Object.keys(options.confOverrides).find((v) => projName === v && v);
|
|
89
|
+
const overrideConf = overrideKey && options.confOverrides[overrideKey]
|
|
90
|
+
? options.confOverrides[overrideKey]
|
|
91
|
+
: {};
|
|
92
|
+
conf = { ...conf, ...overrideConf };
|
|
93
|
+
}
|
|
94
|
+
projects.push(conf);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const projectSets = createProjectSets(projects);
|
|
98
|
+
const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
|
|
99
|
+
.command('$0 [paths]', 'test paths', (yargs) => {
|
|
100
|
+
return yargs
|
|
101
|
+
.positional('path', {
|
|
102
|
+
describe: 'test path',
|
|
103
|
+
type: 'string',
|
|
104
|
+
coerce: (arg) => {
|
|
105
|
+
return arg.split(',');
|
|
106
|
+
},
|
|
107
|
+
})
|
|
108
|
+
.option('proj', {
|
|
109
|
+
describe: 'comma-separated project names',
|
|
110
|
+
type: 'string',
|
|
111
|
+
coerce: (arg) => {
|
|
112
|
+
return arg.split(',');
|
|
113
|
+
},
|
|
114
|
+
})
|
|
115
|
+
.option('paths', {
|
|
116
|
+
describe: 'comma-separated test paths',
|
|
117
|
+
type: 'string',
|
|
118
|
+
coerce: (arg) => {
|
|
119
|
+
return arg.split(',');
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
})
|
|
123
|
+
.showHelpOnFail(false)
|
|
124
|
+
.fail(() => {
|
|
125
|
+
}).argv;
|
|
126
|
+
const selectedProj = argv.proj || process.env.npm_config_projects?.split(',') || 'all';
|
|
127
|
+
projects = Array.isArray(selectedProj)
|
|
128
|
+
? Object.values(projectSets)
|
|
129
|
+
.flat()
|
|
130
|
+
.filter((value) => {
|
|
131
|
+
return selectedProj.some((projName) => {
|
|
132
|
+
return value.displayName === `unit/${projName}`;
|
|
133
|
+
});
|
|
134
|
+
})
|
|
135
|
+
: projectSets[selectedProj];
|
|
136
|
+
const paths = [];
|
|
137
|
+
if (argv.path) {
|
|
138
|
+
paths.push(argv.path);
|
|
139
|
+
}
|
|
140
|
+
if (argv.paths) {
|
|
141
|
+
paths.push(...argv.paths);
|
|
142
|
+
}
|
|
143
|
+
const possiblePath = (paths.length > 0 ? paths : null) ??
|
|
144
|
+
argv.testPathPattern?.[0] ??
|
|
145
|
+
argv.coverage ??
|
|
146
|
+
'';
|
|
147
|
+
console.debug('possiblePaths', possiblePath);
|
|
148
|
+
let config = {};
|
|
149
|
+
function getSubprojectPath(testPath) {
|
|
150
|
+
let subProjectPath = testPath.startsWith('.')
|
|
151
|
+
? testPath.slice(1)
|
|
152
|
+
: testPath;
|
|
153
|
+
subProjectPath = subProjectPath.startsWith(rootPath)
|
|
154
|
+
? subProjectPath.slice(rootPath.length)
|
|
155
|
+
: subProjectPath;
|
|
156
|
+
subProjectPath = subProjectPath.startsWith('/')
|
|
157
|
+
? subProjectPath
|
|
158
|
+
: `/${subProjectPath}`;
|
|
159
|
+
for (const proj of Object.values(projectList)) {
|
|
160
|
+
const root = proj.path;
|
|
161
|
+
if (testPath.startsWith(root) && subProjectPath.length < root.length) {
|
|
162
|
+
subProjectPath = `/${root}`;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const lastIndexOfSrc = subProjectPath.lastIndexOf(`/src/`);
|
|
166
|
+
if (lastIndexOfSrc >= 0)
|
|
167
|
+
subProjectPath = subProjectPath.substring(0, lastIndexOfSrc);
|
|
168
|
+
return subProjectPath;
|
|
169
|
+
}
|
|
170
|
+
let selectedProjects = [];
|
|
171
|
+
if (possiblePath === true) {
|
|
172
|
+
if (Array.isArray(selectedProj)) {
|
|
173
|
+
selectedProjects.push(...projects.filter((p) => selectedProj.some((projName) => p.displayName.startsWith(`unit/${projName}`))));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
selectedProjects = projects;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
const testPaths = Array.isArray(possiblePath)
|
|
181
|
+
? possiblePath
|
|
182
|
+
: [possiblePath];
|
|
183
|
+
console.debug('testPaths', testPaths);
|
|
184
|
+
const subProjectPathList = testPaths.map((v) => getSubprojectPath(v));
|
|
185
|
+
selectedProjects = projects.filter((v) => subProjectPathList.some((subProjectPath) => v.rootDir.startsWith(`${rootPath}${subProjectPath}`)));
|
|
186
|
+
if (Array.isArray(selectedProj)) {
|
|
187
|
+
selectedProjects.push(...projects.filter((p) => selectedProj.some((projName) => p.displayName.startsWith(`unit/${projName}`))));
|
|
188
|
+
}
|
|
189
|
+
console.debug('Subproject path:', subProjectPathList ?? ['']);
|
|
190
|
+
}
|
|
191
|
+
console.debug('selectedProjects', selectedProjects.map((v) => v.displayName));
|
|
192
|
+
const coverageFolder = selectedProjects.length > 1 ? '' : selectedProj;
|
|
193
|
+
config = {
|
|
194
|
+
coverageReporters: ['json-summary', 'json', 'lcov', 'text', 'clover'],
|
|
195
|
+
rootDir: `${rootPath}`,
|
|
196
|
+
coverageThreshold: (0, jest_def_config_js_1.coverageThreshold)(selectedProjects, options.defaultCoverageThreshold),
|
|
197
|
+
coverageDirectory: path.join(rootPath, options.coverageOutputPath?.(coverageFolder) ??
|
|
198
|
+
`var/coverage/${coverageFolder}`),
|
|
199
|
+
collectCoverageFrom: [
|
|
200
|
+
`**/*.{js,ts}`,
|
|
201
|
+
'!**/node_modules/**',
|
|
202
|
+
'!**/.warmup/**',
|
|
203
|
+
],
|
|
204
|
+
};
|
|
205
|
+
config.projects = selectedProjects;
|
|
206
|
+
return config;
|
|
207
|
+
}
|
|
208
|
+
const createE2EConfig = (options) => {
|
|
209
|
+
let conf = {
|
|
210
|
+
...(0, jest_def_config_js_1.default)(`${options.rootDirname}`, options.defaultConfOptions, (0, jest_def_config_js_1.tsJestConfigE2E)(path.resolve(`${options.e2eDirname}/tsconfig.json`), options.withGqlPlugins ?? false, options.tsJestConfig)),
|
|
211
|
+
testRegex: '.*\\.e2e-spec\\.ts$',
|
|
212
|
+
setupFilesAfterEnv: [`${options.e2eDirname}/jest.e2e-setup.ts`],
|
|
213
|
+
roots: [`${options.e2eDirname}`],
|
|
214
|
+
bail: 1,
|
|
215
|
+
};
|
|
216
|
+
if (options.alias) {
|
|
217
|
+
conf.displayName = `e2e/${options.alias}`;
|
|
218
|
+
}
|
|
219
|
+
if (options.confOverride) {
|
|
220
|
+
conf = {
|
|
221
|
+
...conf,
|
|
222
|
+
...options.confOverride,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
return conf;
|
|
226
|
+
};
|
|
227
|
+
exports.createE2EConfig = createE2EConfig;
|
|
228
|
+
//# sourceMappingURL=jest-conf.generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest-conf.generator.js","sourceRoot":"","sources":["jest-conf.generator.ts"],"names":[],"mappings":"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"}
|