spec-box-tms-sync 0.3.0 → 0.3.1
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/README.md +11 -2
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +9 -3
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/upload-stat.d.ts +2 -2
- package/dist/commands/upload-stat.d.ts.map +1 -1
- package/dist/commands/upload-stat.js +15 -8
- package/dist/commands/upload-stat.js.map +1 -1
- package/dist/commands/validate-only.d.ts.map +1 -1
- package/dist/commands/validate-only.js +9 -3
- package/dist/commands/validate-only.js.map +1 -1
- package/dist/lib/config/models.d.ts +6 -2
- package/dist/lib/config/models.d.ts.map +1 -1
- package/dist/lib/config/models.js +4 -3
- package/dist/lib/config/models.js.map +1 -1
- package/dist/lib/test-matcher/index.d.ts +7 -0
- package/dist/lib/test-matcher/index.d.ts.map +1 -0
- package/dist/lib/test-matcher/index.js +47 -0
- package/dist/lib/test-matcher/index.js.map +1 -0
- package/dist/lib/test-matcher/jest/index.d.ts +3 -0
- package/dist/lib/test-matcher/jest/index.d.ts.map +1 -0
- package/dist/lib/test-matcher/jest/index.js +40 -0
- package/dist/lib/test-matcher/jest/index.js.map +1 -0
- package/dist/lib/{jest → test-matcher/jest}/models.d.ts +8 -7
- package/dist/lib/test-matcher/jest/models.d.ts.map +1 -0
- package/dist/lib/test-matcher/jest/models.js.map +1 -0
- package/dist/lib/test-matcher/junit/index.d.ts +3 -0
- package/dist/lib/test-matcher/junit/index.d.ts.map +1 -0
- package/dist/lib/test-matcher/junit/index.js +43 -0
- package/dist/lib/test-matcher/junit/index.js.map +1 -0
- package/dist/lib/test-matcher/junit/models.d.ts +40 -0
- package/dist/lib/test-matcher/junit/models.d.ts.map +1 -0
- package/dist/lib/test-matcher/junit/models.js +42 -0
- package/dist/lib/test-matcher/junit/models.js.map +1 -0
- package/dist/lib/test-matcher/models.d.ts +13 -0
- package/dist/lib/test-matcher/models.d.ts.map +1 -0
- package/dist/lib/test-matcher/models.js +3 -0
- package/dist/lib/test-matcher/models.js.map +1 -0
- package/dist/lib/upload/upload-jest-stat.d.ts +2 -2
- package/dist/lib/upload/upload-jest-stat.d.ts.map +1 -1
- package/dist/lib/upload/upload-jest-stat.js +6 -9
- package/dist/lib/upload/upload-jest-stat.js.map +1 -1
- package/package.json +3 -1
- package/dist/lib/jest/index.d.ts +0 -24
- package/dist/lib/jest/index.d.ts.map +0 -1
- package/dist/lib/jest/index.js +0 -57
- package/dist/lib/jest/index.js.map +0 -1
- package/dist/lib/jest/models.d.ts.map +0 -1
- package/dist/lib/jest/models.js.map +0 -1
- /package/dist/lib/{jest → test-matcher/jest}/models.js +0 -0
package/README.md
CHANGED
|
@@ -209,10 +209,13 @@ trees:
|
|
|
209
209
|
jest --json --outputFile=jest-report.json
|
|
210
210
|
```
|
|
211
211
|
|
|
212
|
-
Чтобы добавить в выгрузку ФТ информацию из отчета jest, добавьте в корень [конфигурационного файла](#формат-конфига) секцию `"jest"
|
|
212
|
+
Чтобы добавить в выгрузку ФТ информацию из отчета jest или JUnit, добавьте в корень [конфигурационного файла](#формат-конфига) секцию `"jest"` или `"JUnit"`
|
|
213
|
+
|
|
214
|
+
Если в проекте один набор тестов, то указать следует только один отчет.
|
|
215
|
+
|
|
216
|
+
Если в проекте выполняется несколько наборов тестов с разными форматами отчетов, то можно указать обе секции
|
|
213
217
|
|
|
214
218
|
```js
|
|
215
|
-
{
|
|
216
219
|
// ...
|
|
217
220
|
"jest": {
|
|
218
221
|
// путь к файлу с отчетом о выполнении тестов
|
|
@@ -221,6 +224,12 @@ jest --json --outputFile=jest-report.json
|
|
|
221
224
|
// сегменты идентификатора для сопоставления автотестов с ФТ
|
|
222
225
|
"keys": ["featureTitle", "groupTitle", "assertionTitle"]
|
|
223
226
|
}
|
|
227
|
+
|
|
228
|
+
"JUnit": {
|
|
229
|
+
"reportPath": "test-results/junit.xml",
|
|
230
|
+
|
|
231
|
+
"keys": ["featureCode", "featureTitle", "groupTitle", "assertionTitle"]
|
|
232
|
+
}
|
|
224
233
|
```
|
|
225
234
|
|
|
226
235
|
Для каждого ФТ, описанного в yml файлах проекта, будет сформирован уникальный идентификатор на основе поля `"keys"`. Если в отчете jest есть тест, полное имя которого совпадает с идентификатором ФТ, то считается, что проверка этого ФТ — автоматизирована.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAU7C,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CAyCpD,CAAC"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -6,16 +6,18 @@ const fast_glob_1 = tslib_1.__importDefault(require("fast-glob"));
|
|
|
6
6
|
const config_1 = require("../lib/config");
|
|
7
7
|
const yaml_1 = require("../lib/yaml");
|
|
8
8
|
const upload_entities_1 = require("../lib/upload/upload-entities");
|
|
9
|
-
const jest_1 = require("../lib/jest");
|
|
9
|
+
const jest_1 = require("../lib/test-matcher/jest");
|
|
10
10
|
const domain_1 = require("../lib/domain");
|
|
11
11
|
const validators_1 = require("../lib/validators");
|
|
12
|
+
const test_matcher_1 = require("../lib/test-matcher");
|
|
13
|
+
const junit_1 = require("../lib/test-matcher/junit");
|
|
12
14
|
exports.cmdSync = {
|
|
13
15
|
command: 'sync',
|
|
14
16
|
handler: async (args) => {
|
|
15
17
|
console.log('SYNC');
|
|
16
18
|
const { config, prjversion: version } = args;
|
|
17
19
|
const validationContext = new validators_1.Validator();
|
|
18
|
-
const { yml, api, jest, projectPath } = await (0, config_1.loadConfig)(config);
|
|
20
|
+
const { yml, api, jest, JUnit, projectPath } = await (0, config_1.loadConfig)(config);
|
|
19
21
|
const meta = await (0, config_1.loadMeta)(validationContext, yml.metaPath, projectPath);
|
|
20
22
|
const files = await (0, fast_glob_1.default)(yml.files, { cwd: projectPath });
|
|
21
23
|
const yamls = await Promise.all(files.map((path) => (0, yaml_1.loadYaml)(validationContext, path, projectPath)));
|
|
@@ -25,7 +27,11 @@ exports.cmdSync = {
|
|
|
25
27
|
validationContext.validate(projectData);
|
|
26
28
|
if (jest) {
|
|
27
29
|
const jestReport = await (0, jest_1.loadJestReport)(jest.reportPath, projectPath);
|
|
28
|
-
(0,
|
|
30
|
+
(0, test_matcher_1.applyTestReport)(validationContext, projectData, jestReport, jest.keys);
|
|
31
|
+
}
|
|
32
|
+
if (JUnit) {
|
|
33
|
+
const junitReport = await (0, junit_1.loadJUnitReport)(JUnit.reportPath, projectPath);
|
|
34
|
+
(0, test_matcher_1.applyTestReport)(validationContext, projectData, junitReport, JUnit.keys);
|
|
29
35
|
}
|
|
30
36
|
validationContext.printReport();
|
|
31
37
|
if (validationContext.hasCriticalErrors) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":";;;;AACA,kEAA6B;AAG7B,0CAAqD;AACrD,sCAAiD;AACjD,mEAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":";;;;AACA,kEAA6B;AAG7B,0CAAqD;AACrD,sCAAiD;AACjD,mEAA+D;AAC/D,mDAA0D;AAC1D,0CAAiD;AACjD,kDAA8C;AAC9C,sDAAsD;AACtD,qDAA4D;AAE/C,QAAA,OAAO,GAAqC;IACvD,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,iBAAiB,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QAExE,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAI,EAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,iBAAiB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CACpE,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,KAAK,EAAY,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,IAAA,yBAAgB,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzD,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAExC,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEtE,IAAA,8BAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxE;QAED,IAAI,KAAK,EAAE;YACT,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzE,IAAA,8BAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1E;QAED,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,iBAAiB,CAAC,iBAAiB,EAAE;YACvC,MAAM,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACrE;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,OAAO,WAAW,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,IAAA,gCAAc,EAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;CACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CommandModule } from
|
|
2
|
-
import { CommonOptions } from
|
|
1
|
+
import { CommandModule } from 'yargs';
|
|
2
|
+
import { CommonOptions } from '../lib/utils';
|
|
3
3
|
export declare const cmdUploadStat: CommandModule<{}, CommonOptions>;
|
|
4
4
|
//# sourceMappingURL=upload-stat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-stat.d.ts","sourceRoot":"","sources":["../../src/commands/upload-stat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"upload-stat.d.ts","sourceRoot":"","sources":["../../src/commands/upload-stat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CAyB1D,CAAC"}
|
|
@@ -3,19 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.cmdUploadStat = void 0;
|
|
4
4
|
const config_1 = require("../lib/config");
|
|
5
5
|
const upload_jest_stat_1 = require("../lib/upload/upload-jest-stat");
|
|
6
|
-
const jest_1 = require("../lib/jest");
|
|
6
|
+
const jest_1 = require("../lib/test-matcher/jest");
|
|
7
|
+
const junit_1 = require("../lib/test-matcher/junit");
|
|
7
8
|
exports.cmdUploadStat = {
|
|
8
|
-
command:
|
|
9
|
+
command: 'upload-stat',
|
|
9
10
|
handler: async (args) => {
|
|
10
|
-
console.log(
|
|
11
|
+
console.log('Upload Jest stat');
|
|
11
12
|
const { config, prjversion: version } = args;
|
|
12
|
-
const { api, jest, projectPath } = await (0, config_1.loadConfig)(config);
|
|
13
|
-
if (!jest) {
|
|
14
|
-
console.log(
|
|
13
|
+
const { api, jest, JUnit, projectPath } = await (0, config_1.loadConfig)(config);
|
|
14
|
+
if (!jest && !JUnit) {
|
|
15
|
+
console.log('Jest settings are not specified');
|
|
15
16
|
process.exit(1);
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
if (jest) {
|
|
19
|
+
const jestReport = await (0, jest_1.loadJestReport)(jest.reportPath, projectPath);
|
|
20
|
+
await (0, upload_jest_stat_1.uploadTestStat)(jestReport, api, version);
|
|
21
|
+
}
|
|
22
|
+
if (JUnit) {
|
|
23
|
+
const junitReport = await (0, junit_1.loadJUnitReport)(JUnit.reportPath, projectPath);
|
|
24
|
+
await (0, upload_jest_stat_1.uploadTestStat)(junitReport, api, version);
|
|
25
|
+
}
|
|
19
26
|
},
|
|
20
27
|
};
|
|
21
28
|
//# sourceMappingURL=upload-stat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-stat.js","sourceRoot":"","sources":["../../src/commands/upload-stat.ts"],"names":[],"mappings":";;;AAGA,0CAA2C;AAC3C,qEAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"upload-stat.js","sourceRoot":"","sources":["../../src/commands/upload-stat.ts"],"names":[],"mappings":";;;AAGA,0CAA2C;AAC3C,qEAAgE;AAChE,mDAA0D;AAC1D,qDAA4D;AAE/C,QAAA,aAAa,GAAqC;IAC7D,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAE7C,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QAED,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEtE,MAAM,IAAA,iCAAc,EAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SAChD;QAED,IAAI,KAAK,EAAE;YACT,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzE,MAAM,IAAA,iCAAc,EAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SACjD;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-only.d.ts","sourceRoot":"","sources":["../../src/commands/validate-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"validate-only.d.ts","sourceRoot":"","sources":["../../src/commands/validate-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAS7C,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CAmC5D,CAAC"}
|
|
@@ -6,12 +6,14 @@ const validators_1 = require("../lib/validators");
|
|
|
6
6
|
const fast_glob_1 = require("fast-glob");
|
|
7
7
|
const yaml_1 = require("../lib/yaml");
|
|
8
8
|
const domain_1 = require("../lib/domain");
|
|
9
|
-
const jest_1 = require("../lib/jest");
|
|
9
|
+
const jest_1 = require("../lib/test-matcher/jest");
|
|
10
|
+
const test_matcher_1 = require("../lib/test-matcher");
|
|
11
|
+
const junit_1 = require("../lib/test-matcher/junit");
|
|
10
12
|
exports.cmdValidateOnly = {
|
|
11
13
|
command: 'validate',
|
|
12
14
|
handler: async (args) => {
|
|
13
15
|
console.log('VALIDATION');
|
|
14
|
-
const { yml, jest, projectPath } = await (0, config_1.loadConfig)(args.config);
|
|
16
|
+
const { yml, jest, JUnit, projectPath } = await (0, config_1.loadConfig)(args.config);
|
|
15
17
|
const validationContext = new validators_1.Validator();
|
|
16
18
|
const meta = await (0, config_1.loadMeta)(validationContext, yml.metaPath, projectPath);
|
|
17
19
|
const files = await (0, fast_glob_1.glob)(yml.files, { cwd: projectPath });
|
|
@@ -22,7 +24,11 @@ exports.cmdValidateOnly = {
|
|
|
22
24
|
validationContext.validate(projectData);
|
|
23
25
|
if (jest) {
|
|
24
26
|
const jestReport = await (0, jest_1.loadJestReport)(jest.reportPath, projectPath);
|
|
25
|
-
(0,
|
|
27
|
+
(0, test_matcher_1.applyTestReport)(validationContext, projectData, jestReport, jest.keys);
|
|
28
|
+
}
|
|
29
|
+
if (JUnit) {
|
|
30
|
+
const junitReport = await (0, junit_1.loadJUnitReport)(JUnit.reportPath, projectPath);
|
|
31
|
+
(0, test_matcher_1.applyTestReport)(validationContext, projectData, junitReport, JUnit.keys);
|
|
26
32
|
}
|
|
27
33
|
validationContext.printReport();
|
|
28
34
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-only.js","sourceRoot":"","sources":["../../src/commands/validate-only.ts"],"names":[],"mappings":";;;AAEA,0CAAqD;AAErD,kDAA8C;AAC9C,yCAAiC;AACjC,sCAAiD;AACjD,0CAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"validate-only.js","sourceRoot":"","sources":["../../src/commands/validate-only.ts"],"names":[],"mappings":";;;AAEA,0CAAqD;AAErD,kDAA8C;AAC9C,yCAAiC;AACjC,sCAAiD;AACjD,0CAAiD;AACjD,mDAA0D;AAC1D,sDAAsD;AACtD,qDAA4D;AAE/C,QAAA,eAAe,GAAqC;IAC/D,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE1B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,iBAAiB,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAI,EAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,iBAAiB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CACpE,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,KAAK,EAAY,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,IAAA,yBAAgB,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAEzD,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAExC,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEtE,IAAA,8BAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxE;QAED,IAAI,KAAK,EAAE;YACT,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzE,IAAA,8BAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1E;QAED,iBAAiB,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;CACF,CAAC"}
|
|
@@ -45,7 +45,7 @@ export declare const ymlConfigDecoder: d.Decoder<unknown, Partial<{
|
|
|
45
45
|
}>;
|
|
46
46
|
export declare const literalKeyPartDecoder: d.Decoder<unknown, "filePath" | "featureCode" | "featureTitle" | "groupTitle" | "assertionTitle" | "fileName">;
|
|
47
47
|
export declare const attributeKeyPartDecoder: d.Decoder<unknown, string>;
|
|
48
|
-
export declare const
|
|
48
|
+
export declare const testReportConfigDecoder: d.Decoder<unknown, {
|
|
49
49
|
reportPath: string;
|
|
50
50
|
keys: string[];
|
|
51
51
|
}>;
|
|
@@ -55,6 +55,10 @@ export declare const configDecoder: d.Decoder<unknown, Partial<{
|
|
|
55
55
|
reportPath: string;
|
|
56
56
|
keys: string[];
|
|
57
57
|
};
|
|
58
|
+
JUnit: {
|
|
59
|
+
reportPath: string;
|
|
60
|
+
keys: string[];
|
|
61
|
+
};
|
|
58
62
|
}> & {
|
|
59
63
|
api: {
|
|
60
64
|
host: string;
|
|
@@ -69,7 +73,7 @@ export declare const configDecoder: d.Decoder<unknown, Partial<{
|
|
|
69
73
|
export type RootConfig = d.TypeOf<typeof configDecoder>;
|
|
70
74
|
export type ApiConfig = d.TypeOf<typeof apiConfigDecoder>;
|
|
71
75
|
export type YmlConfig = d.TypeOf<typeof ymlConfigDecoder>;
|
|
72
|
-
export type JestConfig = d.TypeOf<typeof
|
|
76
|
+
export type JestConfig = d.TypeOf<typeof testReportConfigDecoder>;
|
|
73
77
|
export type Meta = d.TypeOf<typeof metaDecoder>;
|
|
74
78
|
export type Tree = d.TypeOf<typeof treeDecoder>;
|
|
75
79
|
export type Attribute = d.TypeOf<typeof attributeDecoder>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/lib/config/models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAGnC,eAAO,MAAM,qBAAqB;;;EAGhC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;EAItB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;GAMtB,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;EAG3B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;EAQ5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,gHAOjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,4BASnC,CAAC;AAEF,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/lib/config/models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAGnC,eAAO,MAAM,qBAAqB;;;EAGhC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;EAItB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;GAMtB,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;EAG3B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;EAQ5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,gHAOjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,4BASnC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;EAGlC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;EAWzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAElE,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.configDecoder = exports.
|
|
3
|
+
exports.configDecoder = exports.testReportConfigDecoder = exports.attributeKeyPartDecoder = exports.literalKeyPartDecoder = exports.ymlConfigDecoder = exports.apiConfigDecoder = exports.metaDecoder = exports.treeDecoder = exports.attributeDecoder = exports.attributeValueDecoder = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const function_1 = require("fp-ts/lib/function");
|
|
6
6
|
const d = tslib_1.__importStar(require("io-ts/Decoder"));
|
|
@@ -43,7 +43,7 @@ exports.attributeKeyPartDecoder = (0, function_1.pipe)(d.string, d.parse((str) =
|
|
|
43
43
|
}
|
|
44
44
|
return d.failure(str, "starts with @ or $ symbol");
|
|
45
45
|
}));
|
|
46
|
-
exports.
|
|
46
|
+
exports.testReportConfigDecoder = d.struct({
|
|
47
47
|
reportPath: d.string,
|
|
48
48
|
keys: d.array(d.union(exports.literalKeyPartDecoder, exports.attributeKeyPartDecoder)),
|
|
49
49
|
});
|
|
@@ -52,6 +52,7 @@ exports.configDecoder = d.intersect(d.struct({
|
|
|
52
52
|
yml: exports.ymlConfigDecoder,
|
|
53
53
|
}))(d.partial({
|
|
54
54
|
projectPath: d.string,
|
|
55
|
-
jest: exports.
|
|
55
|
+
jest: exports.testReportConfigDecoder,
|
|
56
|
+
JUnit: exports.testReportConfigDecoder,
|
|
56
57
|
}));
|
|
57
58
|
//# sourceMappingURL=models.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/lib/config/models.ts"],"names":[],"mappings":";;;;AAAA,iDAA0C;AAC1C,yDAAmC;AAEnC,OAAO;AACM,QAAA,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;CAChB,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC;CACvC,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CAC9B,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,WAAW,EAAE,CAAC,CAAC,MAAM;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM;IACpB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAgB,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAW,CAAC;CAC5B,CAAC,CAAC;AAEH,SAAS;AACI,QAAA,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,OAAO,EAAE,CAAC,CAAC,MAAM;CAClB,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,CAAC,CAAC,SAAS,CACzC,CAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CACzB,CAAC,CACH,CACC,CAAC,CAAC,OAAO,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC,MAAM;CACnB,CAAC,CACH,CAAC;AAEW,QAAA,qBAAqB,GAAG,CAAC,CAAC,OAAO,CAC5C,cAAc,EACd,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,UAAU,CACX,CAAC;AAEW,QAAA,uBAAuB,GAAG,IAAA,eAAI,EACzC,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACd,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;KAC9B;IAED,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;AACrD,CAAC,CAAC,CACH,CAAC;AAEW,QAAA,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/lib/config/models.ts"],"names":[],"mappings":";;;;AAAA,iDAA0C;AAC1C,yDAAmC;AAEnC,OAAO;AACM,QAAA,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;CAChB,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC;CACvC,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CAC9B,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,WAAW,EAAE,CAAC,CAAC,MAAM;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM;IACpB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAgB,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAW,CAAC;CAC5B,CAAC,CAAC;AAEH,SAAS;AACI,QAAA,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,OAAO,EAAE,CAAC,CAAC,MAAM;CAClB,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,CAAC,CAAC,SAAS,CACzC,CAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CACzB,CAAC,CACH,CACC,CAAC,CAAC,OAAO,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC,MAAM;CACnB,CAAC,CACH,CAAC;AAEW,QAAA,qBAAqB,GAAG,CAAC,CAAC,OAAO,CAC5C,cAAc,EACd,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,UAAU,CACX,CAAC;AAEW,QAAA,uBAAuB,GAAG,IAAA,eAAI,EACzC,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACd,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;KAC9B;IAED,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;AACrD,CAAC,CAAC,CACH,CAAC;AAEW,QAAA,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,UAAU,EAAE,CAAC,CAAC,MAAM;IACpB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,6BAAqB,EAAE,+BAAuB,CAAC,CAAC;CACvE,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,CAAC,CAAC,SAAS,CACtC,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,EAAE,wBAAgB;IACrB,GAAG,EAAE,wBAAgB;CACtB,CAAC,CACH,CACC,CAAC,CAAC,OAAO,CAAC;IACR,WAAW,EAAE,CAAC,CAAC,MAAM;IACrB,IAAI,EAAE,+BAAuB;IAC7B,KAAK,EAAE,+BAAuB;CAC/B,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ProjectData } from '../domain';
|
|
2
|
+
import { Validator } from '../validators';
|
|
3
|
+
import { AssertionStatus, TestReport } from './models';
|
|
4
|
+
export declare const getFullName: (...parts: string[]) => string;
|
|
5
|
+
export declare const ignoredStatuses: Set<AssertionStatus>;
|
|
6
|
+
export declare const applyTestReport: (validationContext: Validator, { features, attributes }: ProjectData, report: TestReport, keyParts: string[]) => void;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/test-matcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,WAAW,EACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEvD,eAAO,MAAM,WAAW,aAAc,MAAM,EAAE,WAAoB,CAAC;AAEnE,eAAO,MAAM,eAAe,sBAI1B,CAAC;AAEH,eAAO,MAAM,eAAe,sBACP,SAAS,4BACF,WAAW,UAC7B,UAAU,YACR,MAAM,EAAE,SAgDnB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyTestReport = exports.ignoredStatuses = exports.getFullName = void 0;
|
|
4
|
+
const domain_1 = require("../domain");
|
|
5
|
+
const getFullName = (...parts) => parts.join(' ');
|
|
6
|
+
exports.getFullName = getFullName;
|
|
7
|
+
exports.ignoredStatuses = new Set([
|
|
8
|
+
'pending',
|
|
9
|
+
'todo',
|
|
10
|
+
'skipped',
|
|
11
|
+
]);
|
|
12
|
+
const applyTestReport = (validationContext, { features, attributes }, report, keyParts) => {
|
|
13
|
+
const names = new Map();
|
|
14
|
+
for (let { name, filePath } of report.testResults) {
|
|
15
|
+
const paths = names.get(name) || [];
|
|
16
|
+
paths.push(filePath || '');
|
|
17
|
+
names.set(name, paths);
|
|
18
|
+
}
|
|
19
|
+
const attributesCtx = (0, domain_1.getAttributesContext)(attributes);
|
|
20
|
+
// заполняем поле isAutomated
|
|
21
|
+
for (let { title: featureTitle, code: featureCode, groups, fileName, filePath, attributes = {}, } of features) {
|
|
22
|
+
for (let { title: groupTitle, assertions } of groups || []) {
|
|
23
|
+
for (let assertion of assertions || []) {
|
|
24
|
+
// TODO: перенести в domain?
|
|
25
|
+
const assertionCtx = {
|
|
26
|
+
featureTitle,
|
|
27
|
+
featureCode,
|
|
28
|
+
groupTitle,
|
|
29
|
+
assertionTitle: assertion.title,
|
|
30
|
+
attributes,
|
|
31
|
+
fileName,
|
|
32
|
+
filePath,
|
|
33
|
+
};
|
|
34
|
+
const parts = (0, domain_1.getKey)(keyParts, assertionCtx, attributesCtx);
|
|
35
|
+
const fullName = (0, exports.getFullName)(...parts);
|
|
36
|
+
assertion.isAutomated = names.has(fullName);
|
|
37
|
+
names.delete(fullName);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
Array.from(names.keys()).forEach((name) => {
|
|
42
|
+
const paths = names.get(name);
|
|
43
|
+
paths === null || paths === void 0 ? void 0 : paths.forEach((path) => validationContext.registerJestUnusedTests(name, path));
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
exports.applyTestReport = applyTestReport;
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/test-matcher/index.ts"],"names":[],"mappings":";;;AAAA,sCAKmB;AAIZ,MAAM,WAAW,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAAtD,QAAA,WAAW,eAA2C;AAEtD,QAAA,eAAe,GAAG,IAAI,GAAG,CAAkB;IACtD,SAAS;IACT,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAEI,MAAM,eAAe,GAAG,CAC7B,iBAA4B,EAC5B,EAAE,QAAQ,EAAE,UAAU,EAAe,EACrC,MAAkB,EAClB,QAAkB,EAClB,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE1C,KAAK,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACxB;IAED,MAAM,aAAa,GAAG,IAAA,6BAAoB,EAAC,UAAU,CAAC,CAAC;IAEvD,6BAA6B;IAC7B,KAAK,IAAI,EACP,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,WAAW,EACjB,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,GAAG,EAAE,GAChB,IAAI,QAAQ,EAAE;QACb,KAAK,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,MAAM,IAAI,EAAE,EAAE;YAC1D,KAAK,IAAI,SAAS,IAAI,UAAU,IAAI,EAAE,EAAE;gBACtC,4BAA4B;gBAC5B,MAAM,YAAY,GAAqB;oBACrC,YAAY;oBACZ,WAAW;oBACX,UAAU;oBACV,cAAc,EAAE,SAAS,CAAC,KAAK;oBAC/B,UAAU;oBACV,QAAQ;oBACR,QAAQ;iBACT,CAAC;gBAEF,MAAM,KAAK,GAAG,IAAA,eAAM,EAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,GAAG,KAAK,CAAC,CAAC;gBAEvC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5C,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aACxB;SACF;KACF;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AApDW,QAAA,eAAe,mBAoD1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/test-matcher/jest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AAuCxD,eAAO,MAAM,cAAc,SACnB,MAAM,aACD,MAAM,KAChB,QAAQ,UAAU,CAOpB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadJestReport = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const models_1 = require("./models");
|
|
6
|
+
const getFullName = (...parts) => parts.join(' ');
|
|
7
|
+
const mapTestResults = (testResult) => {
|
|
8
|
+
const results = new Array();
|
|
9
|
+
// формируем список ключей тест-кейсов из отчета jest
|
|
10
|
+
for (let { assertionResults, name: filePath } of testResult) {
|
|
11
|
+
for (let { title, ancestorTitles, status } of assertionResults) {
|
|
12
|
+
const name = getFullName(...ancestorTitles, title);
|
|
13
|
+
results.push({
|
|
14
|
+
name,
|
|
15
|
+
filePath,
|
|
16
|
+
status,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return results;
|
|
21
|
+
};
|
|
22
|
+
const mapTestReport = (jestReport) => {
|
|
23
|
+
const { startTime, numTotalTests: total } = jestReport;
|
|
24
|
+
// Сумма затраченного времени на все тест сьюты
|
|
25
|
+
const duration = jestReport.testResults.reduce((sum, item) => sum + item.endTime - item.startTime, 0);
|
|
26
|
+
return {
|
|
27
|
+
startTime,
|
|
28
|
+
total,
|
|
29
|
+
duration,
|
|
30
|
+
testResults: mapTestResults(jestReport.testResults),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const loadJestReport = async (path, basePath) => {
|
|
34
|
+
const json = await (0, utils_1.readTextFile)(path, basePath);
|
|
35
|
+
const data = JSON.parse(json);
|
|
36
|
+
const entity = (0, utils_1.parseObject)(data, models_1.jestReportDecoder);
|
|
37
|
+
return mapTestReport(entity);
|
|
38
|
+
};
|
|
39
|
+
exports.loadJestReport = loadJestReport;
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/test-matcher/jest/index.ts"],"names":[],"mappings":";;;AACA,uCAAwD;AACxD,qCAAyE;AAEzE,MAAM,WAAW,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE5D,MAAM,cAAc,GAAG,CAAC,UAA4B,EAAqB,EAAE;IACzE,MAAM,OAAO,GAAG,IAAI,KAAK,EAAmB,CAAC;IAC7C,qDAAqD;IACrD,KAAK,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,UAAU,EAAE;QAC3D,KAAK,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,gBAAgB,EAAE;YAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,QAAQ;gBACR,MAAM;aACP,CAAC,CAAC;SACJ;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,UAAsB,EAAc,EAAE;IAC3D,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAEvD,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAC5C,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAClD,CAAC,CACF,CAAC;IAEF,OAAO;QACL,SAAS;QACT,KAAK;QACL,QAAQ;QACR,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC;KACpD,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,KAAK,EACjC,IAAY,EACZ,QAAiB,EACI,EAAE;IACvB,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,0BAAiB,CAAC,CAAC;IAEpD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as d from "io-ts/Decoder";
|
|
2
|
-
export declare const jestSuiteStatusDecoder: d.Decoder<unknown, "passed" | "failed" | "
|
|
3
|
-
export declare const jestAssertionStatusDecoder: d.Decoder<unknown, "todo" | "passed" | "failed" | "
|
|
2
|
+
export declare const jestSuiteStatusDecoder: d.Decoder<unknown, "passed" | "failed" | "skipped" | "pending" | "focused">;
|
|
3
|
+
export declare const jestAssertionStatusDecoder: d.Decoder<unknown, "todo" | "passed" | "failed" | "skipped" | "pending">;
|
|
4
4
|
export declare const jestAssertionResultDecoder: d.Decoder<unknown, {
|
|
5
5
|
title: string;
|
|
6
6
|
fullName: string;
|
|
7
7
|
ancestorTitles: string[];
|
|
8
|
-
status: "todo" | "passed" | "failed" | "
|
|
8
|
+
status: "todo" | "passed" | "failed" | "skipped" | "pending";
|
|
9
9
|
}>;
|
|
10
10
|
export declare const jestTestResultDecoder: d.Decoder<unknown, {
|
|
11
11
|
name: string;
|
|
12
|
-
status: "passed" | "failed" | "
|
|
12
|
+
status: "passed" | "failed" | "skipped" | "pending" | "focused";
|
|
13
13
|
message: string;
|
|
14
14
|
startTime: number;
|
|
15
15
|
endTime: number;
|
|
@@ -17,7 +17,7 @@ export declare const jestTestResultDecoder: d.Decoder<unknown, {
|
|
|
17
17
|
title: string;
|
|
18
18
|
fullName: string;
|
|
19
19
|
ancestorTitles: string[];
|
|
20
|
-
status: "todo" | "passed" | "failed" | "
|
|
20
|
+
status: "todo" | "passed" | "failed" | "skipped" | "pending";
|
|
21
21
|
}[];
|
|
22
22
|
}>;
|
|
23
23
|
export declare const jestReportDecoder: d.Decoder<unknown, {
|
|
@@ -25,7 +25,7 @@ export declare const jestReportDecoder: d.Decoder<unknown, {
|
|
|
25
25
|
numTotalTests: number;
|
|
26
26
|
testResults: {
|
|
27
27
|
name: string;
|
|
28
|
-
status: "passed" | "failed" | "
|
|
28
|
+
status: "passed" | "failed" | "skipped" | "pending" | "focused";
|
|
29
29
|
message: string;
|
|
30
30
|
startTime: number;
|
|
31
31
|
endTime: number;
|
|
@@ -33,10 +33,11 @@ export declare const jestReportDecoder: d.Decoder<unknown, {
|
|
|
33
33
|
title: string;
|
|
34
34
|
fullName: string;
|
|
35
35
|
ancestorTitles: string[];
|
|
36
|
-
status: "todo" | "passed" | "failed" | "
|
|
36
|
+
status: "todo" | "passed" | "failed" | "skipped" | "pending";
|
|
37
37
|
}[];
|
|
38
38
|
}[];
|
|
39
39
|
}>;
|
|
40
40
|
export type JestReport = d.TypeOf<typeof jestReportDecoder>;
|
|
41
|
+
export type JestTestResult = d.TypeOf<typeof jestTestResultDecoder>;
|
|
41
42
|
export type JestAssertionStatus = d.TypeOf<typeof jestAssertionStatusDecoder>;
|
|
42
43
|
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/lib/test-matcher/jest/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAEnC,eAAO,MAAM,sBAAsB,6EAMlC,CAAC;AAEF,eAAO,MAAM,0BAA0B,0EAMtC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;EAKrC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAOhC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/lib/test-matcher/jest/models.ts"],"names":[],"mappings":";;;;AAAA,yDAAmC;AAEtB,QAAA,sBAAsB,GAAG,CAAC,CAAC,OAAO,CAC7C,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;AAEW,QAAA,0BAA0B,GAAG,CAAC,CAAC,OAAO,CACjD,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,CACV,CAAC;AAEW,QAAA,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM;IAClB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,kCAA0B;CACnC,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,MAAM,EAAE,8BAAsB;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,kCAA0B,CAAC;CACtD,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM;IACnB,aAAa,EAAE,CAAC,CAAC,MAAM;IACvB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC;CAC5C,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/test-matcher/junit/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AAwCxD,eAAO,MAAM,eAAe,SACpB,MAAM,aACD,MAAM,KAChB,QAAQ,UAAU,CASpB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadJUnitReport = void 0;
|
|
4
|
+
const xml2js_1 = require("xml2js");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const models_1 = require("./models");
|
|
7
|
+
const mapTestResults = (testResult) => {
|
|
8
|
+
const results = new Array();
|
|
9
|
+
for (let { testcase: testCases } of testResult) {
|
|
10
|
+
for (let { name, status } of testCases) {
|
|
11
|
+
results.push({
|
|
12
|
+
name,
|
|
13
|
+
filePath: 'unknown',
|
|
14
|
+
status,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return results;
|
|
19
|
+
};
|
|
20
|
+
const mapTestReport = (junitReport) => {
|
|
21
|
+
const { testsuites } = junitReport;
|
|
22
|
+
const total = testsuites.tests;
|
|
23
|
+
const startTime = testsuites.testsuite.reduce((acc, item) => Math.min(acc, item.timestamp.getTime()), Number.MAX_VALUE);
|
|
24
|
+
// Сумма затраченного времени на все тест сьюты
|
|
25
|
+
const duration = testsuites.testsuite.reduce((sum, item) => sum + item.time, 0) * 1000;
|
|
26
|
+
return {
|
|
27
|
+
startTime,
|
|
28
|
+
total,
|
|
29
|
+
duration,
|
|
30
|
+
testResults: mapTestResults(testsuites.testsuite),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const loadJUnitReport = async (path, basePath) => {
|
|
34
|
+
const xml = await (0, utils_1.readTextFile)(path, basePath);
|
|
35
|
+
const data = await (0, xml2js_1.parseStringPromise)(xml, {
|
|
36
|
+
explicitArray: false,
|
|
37
|
+
mergeAttrs: true,
|
|
38
|
+
});
|
|
39
|
+
const entity = (0, utils_1.parseObject)(data, models_1.junitReportDecoder);
|
|
40
|
+
return mapTestReport(entity);
|
|
41
|
+
};
|
|
42
|
+
exports.loadJUnitReport = loadJUnitReport;
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/test-matcher/junit/index.ts"],"names":[],"mappings":";;;AAAA,mCAA4C;AAC5C,uCAAwD;AAExD,qCAA2E;AAE3E,MAAM,cAAc,GAAG,CAAC,UAA4B,EAAqB,EAAE;IACzE,MAAM,OAAO,GAAG,IAAI,KAAK,EAAmB,CAAC;IAE7C,KAAK,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,UAAU,EAAE;QAC9C,KAAK,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE;YACtC,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,QAAQ,EAAE,SAAS;gBACnB,MAAM;aACP,CAAC,CAAC;SACJ;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,WAAwB,EAAc,EAAE;IAC7D,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAC3C,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EACtD,MAAM,CAAC,SAAS,CACjB,CAAC;IAEF,+CAA+C;IAC/C,MAAM,QAAQ,GACZ,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAExE,OAAO;QACL,SAAS;QACT,KAAK;QACL,QAAQ;QACR,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC;KAClD,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,KAAK,EAClC,IAAY,EACZ,QAAiB,EACI,EAAE;IACvB,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAY,MAAM,IAAA,2BAAkB,EAAC,GAAG,EAAE;QAClD,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,2BAAkB,CAAC,CAAC;IAErD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC,CAAC;AAZW,QAAA,eAAe,mBAY1B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as d from 'io-ts/Decoder';
|
|
2
|
+
export type JUnitStatuses = 'skipped' | 'failed' | 'passed';
|
|
3
|
+
declare const junitTestCaseStatusDecoder: d.Decoder<unknown, Partial<{
|
|
4
|
+
skipped: string;
|
|
5
|
+
failed: string;
|
|
6
|
+
}>>;
|
|
7
|
+
export type JUnitTestCaseStatus = d.TypeOf<typeof junitTestCaseStatusDecoder>;
|
|
8
|
+
declare const junitTestCaseDecoder: d.Decoder<unknown, {
|
|
9
|
+
status: JUnitStatuses;
|
|
10
|
+
} & {
|
|
11
|
+
name: string;
|
|
12
|
+
}>;
|
|
13
|
+
declare const junitTestSuiteDecoder: d.Decoder<unknown, {
|
|
14
|
+
timestamp: Date;
|
|
15
|
+
time: number;
|
|
16
|
+
testcase: ({
|
|
17
|
+
status: JUnitStatuses;
|
|
18
|
+
} & {
|
|
19
|
+
name: string;
|
|
20
|
+
})[];
|
|
21
|
+
}>;
|
|
22
|
+
export declare const junitReportDecoder: d.Decoder<unknown, {
|
|
23
|
+
testsuites: {
|
|
24
|
+
tests: number;
|
|
25
|
+
testsuite: {
|
|
26
|
+
timestamp: Date;
|
|
27
|
+
time: number;
|
|
28
|
+
testcase: ({
|
|
29
|
+
status: JUnitStatuses;
|
|
30
|
+
} & {
|
|
31
|
+
name: string;
|
|
32
|
+
})[];
|
|
33
|
+
}[];
|
|
34
|
+
};
|
|
35
|
+
}>;
|
|
36
|
+
export type JUnitReport = d.TypeOf<typeof junitReportDecoder>;
|
|
37
|
+
export type JUnitTestSuite = d.TypeOf<typeof junitTestSuiteDecoder>;
|
|
38
|
+
export type JUnitTestCase = d.TypeOf<typeof junitTestCaseDecoder>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/lib/test-matcher/junit/models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAanC,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE5D,QAAA,MAAM,0BAA0B;;;GAG9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAa9E,QAAA,MAAM,oBAAoB;;;;EASzB,CAAC;AAEF,QAAA,MAAM,qBAAqB;;;;;;;;EAUzB,CAAC;AAUH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;EAE7B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.junitReportDecoder = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const function_1 = require("fp-ts/lib/function");
|
|
6
|
+
const d = tslib_1.__importStar(require("io-ts/Decoder"));
|
|
7
|
+
const singleItemOrArray = (decoder) => (0, function_1.pipe)(d.union(decoder, d.array(decoder)), d.parse((value) => {
|
|
8
|
+
if (Array.isArray(value)) {
|
|
9
|
+
return d.success(value);
|
|
10
|
+
}
|
|
11
|
+
return d.success([value]);
|
|
12
|
+
}));
|
|
13
|
+
const junitTestCaseStatusDecoder = d.partial({
|
|
14
|
+
skipped: d.string,
|
|
15
|
+
failed: d.string,
|
|
16
|
+
});
|
|
17
|
+
const mapStatus = (testCase) => {
|
|
18
|
+
const { skipped, failed } = testCase;
|
|
19
|
+
if (skipped !== undefined) {
|
|
20
|
+
return 'skipped';
|
|
21
|
+
}
|
|
22
|
+
if (failed !== undefined) {
|
|
23
|
+
return 'failed';
|
|
24
|
+
}
|
|
25
|
+
return 'passed';
|
|
26
|
+
};
|
|
27
|
+
const junitTestCaseDecoder = d.intersect(d.struct({
|
|
28
|
+
name: d.string,
|
|
29
|
+
}))((0, function_1.pipe)(junitTestCaseStatusDecoder, d.parse((s) => d.success({ status: mapStatus(s) }))));
|
|
30
|
+
const junitTestSuiteDecoder = d.struct({
|
|
31
|
+
timestamp: (0, function_1.pipe)(d.string, d.parse((s) => d.success(new Date(s)))),
|
|
32
|
+
time: (0, function_1.pipe)(d.string, d.parse((v) => d.success(Number(v)))),
|
|
33
|
+
testcase: singleItemOrArray(junitTestCaseDecoder),
|
|
34
|
+
});
|
|
35
|
+
const junitTestSuitesDecoder = d.struct({
|
|
36
|
+
tests: (0, function_1.pipe)(d.string, d.parse((v) => d.success(Number(v)))),
|
|
37
|
+
testsuite: singleItemOrArray(junitTestSuiteDecoder),
|
|
38
|
+
});
|
|
39
|
+
exports.junitReportDecoder = d.struct({
|
|
40
|
+
testsuites: junitTestSuitesDecoder,
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/lib/test-matcher/junit/models.ts"],"names":[],"mappings":";;;;AAAA,iDAA0C;AAC1C,yDAAmC;AAEnC,MAAM,iBAAiB,GAAG,CAAI,OAA8B,EAAE,EAAE,CAC9D,IAAA,eAAI,EACF,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAClC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACzB;IACD,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC,CACH,CAAC;AAIJ,MAAM,0BAA0B,GAAG,CAAC,CAAC,OAAO,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM;CACjB,CAAC,CAAC;AAIH,MAAM,SAAS,GAAG,CAAC,QAA6B,EAAiB,EAAE;IACjE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,SAAS,CAAC;KAClB;IACD,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,CAAC,SAAS,CACtC,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,MAAM;CACf,CAAC,CACH,CACC,IAAA,eAAI,EACF,0BAA0B,EAC1B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACpD,CACF,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,IAAA,eAAI,EACb,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACvC;IACD,IAAI,EAAE,IAAA,eAAI,EACR,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACrC;IACD,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,IAAA,eAAI,EACT,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACrC;IACD,SAAS,EAAE,iBAAiB,CAAC,qBAAqB,CAAC;CACpD,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,UAAU,EAAE,sBAAsB;CACnC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type AssertionStatus = 'passed' | 'failed' | 'skipped' | 'pending' | 'todo';
|
|
2
|
+
export interface AssertionResult {
|
|
3
|
+
name: string;
|
|
4
|
+
filePath?: string;
|
|
5
|
+
status: AssertionStatus;
|
|
6
|
+
}
|
|
7
|
+
export interface TestReport {
|
|
8
|
+
total: number;
|
|
9
|
+
startTime: number;
|
|
10
|
+
duration: number;
|
|
11
|
+
testResults: AssertionResult[];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/lib/test-matcher/models.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/lib/test-matcher/models.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ApiConfig } from '../config/models';
|
|
2
|
-
import {
|
|
3
|
-
export declare const
|
|
2
|
+
import { TestReport } from '../test-matcher/models';
|
|
3
|
+
export declare const uploadTestStat: (testReport: TestReport, config: ApiConfig, version?: string) => Promise<void>;
|
|
4
4
|
//# sourceMappingURL=upload-jest-stat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-jest-stat.d.ts","sourceRoot":"","sources":["../../../src/lib/upload/upload-jest-stat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"upload-jest-stat.d.ts","sourceRoot":"","sources":["../../../src/lib/upload/upload-jest-stat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,eAAO,MAAM,cAAc,eACb,UAAU,UACd,SAAS,YACP,MAAM,kBAcjB,CAAC"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.uploadTestStat = void 0;
|
|
4
4
|
const api_1 = require("../../api");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
|
-
const
|
|
6
|
+
const uploadTestStat = async (testReport, config, version) => {
|
|
7
7
|
const { host, project } = config;
|
|
8
|
-
const { startTime,
|
|
9
|
-
// считаем суммарную длительность всех тестов
|
|
10
|
-
// (как при выполнении в одном потоке)
|
|
11
|
-
const totalDuration = testResults.reduce((sum, { startTime, endTime }) => sum + (endTime - startTime), 0);
|
|
8
|
+
const { startTime, total, duration } = testReport;
|
|
12
9
|
const client = new api_1.SpecBoxWebApi(host, utils_1.DEFAULT_API_OPTIONS);
|
|
13
10
|
const body = {
|
|
14
11
|
timestamp: new Date(startTime),
|
|
15
|
-
assertionsCount:
|
|
16
|
-
duration
|
|
12
|
+
assertionsCount: total,
|
|
13
|
+
duration,
|
|
17
14
|
};
|
|
18
15
|
await client.statUploadAutotests({ project, version, body });
|
|
19
16
|
};
|
|
20
|
-
exports.
|
|
17
|
+
exports.uploadTestStat = uploadTestStat;
|
|
21
18
|
//# sourceMappingURL=upload-jest-stat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-jest-stat.js","sourceRoot":"","sources":["../../../src/lib/upload/upload-jest-stat.ts"],"names":[],"mappings":";;;AAAA,mCAGmB;AAGnB,oCAA+C;AAExC,MAAM,cAAc,GAAG,KAAK,EACjC,UAAsB,EACtB,MAAiB,EACjB,OAAgB,EAChB,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"upload-jest-stat.js","sourceRoot":"","sources":["../../../src/lib/upload/upload-jest-stat.ts"],"names":[],"mappings":";;;AAAA,mCAGmB;AAGnB,oCAA+C;AAExC,MAAM,cAAc,GAAG,KAAK,EACjC,UAAsB,EACtB,MAAiB,EACjB,OAAgB,EAChB,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,mBAAa,CAAC,IAAI,EAAE,2BAAmB,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAkD;QAC1D,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;QAC9B,eAAe,EAAE,KAAK;QACtB,QAAQ;KACT,CAAC;IAEF,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spec-box-tms-sync",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"bin": {
|
|
6
6
|
"spec-box": "./bin/spec-box"
|
|
@@ -22,12 +22,14 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@azure/core-client": "^1.7.3",
|
|
24
24
|
"@azure/core-rest-pipeline": "^1.11.0",
|
|
25
|
+
"@types/xml2js": "0.4.14",
|
|
25
26
|
"chalk": "^4.1.0",
|
|
26
27
|
"fast-glob": "^3.3.0",
|
|
27
28
|
"fp-ts": "^2.16.0",
|
|
28
29
|
"fs-extra": "^11.1.1",
|
|
29
30
|
"io-ts": "^2.2.20",
|
|
30
31
|
"tslib": "^2.6.0",
|
|
32
|
+
"xml2js": "0.6.2",
|
|
31
33
|
"yaml": "^2.3.1",
|
|
32
34
|
"yargs": "^17.7.2"
|
|
33
35
|
},
|
package/dist/lib/jest/index.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ProjectData } from '../domain';
|
|
2
|
-
import { Validator } from '../validators';
|
|
3
|
-
import { JestReport } from './models';
|
|
4
|
-
export declare const getFullName: (...parts: string[]) => string;
|
|
5
|
-
export declare const ignoredStatuses: Set<"todo" | "passed" | "failed" | "pending" | "skipped">;
|
|
6
|
-
export declare const applyJestReport: (validationContext: Validator, { features, attributes }: ProjectData, report: JestReport, keyParts: string[]) => void;
|
|
7
|
-
export declare const loadJestReport: (path: string, basePath?: string) => Promise<{
|
|
8
|
-
startTime: number;
|
|
9
|
-
numTotalTests: number;
|
|
10
|
-
testResults: {
|
|
11
|
-
name: string;
|
|
12
|
-
status: "passed" | "failed" | "pending" | "focused" | "skipped";
|
|
13
|
-
message: string;
|
|
14
|
-
startTime: number;
|
|
15
|
-
endTime: number;
|
|
16
|
-
assertionResults: {
|
|
17
|
-
title: string;
|
|
18
|
-
fullName: string;
|
|
19
|
-
ancestorTitles: string[];
|
|
20
|
-
status: "todo" | "passed" | "failed" | "pending" | "skipped";
|
|
21
|
-
}[];
|
|
22
|
-
}[];
|
|
23
|
-
}>;
|
|
24
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/jest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAGZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAuB,UAAU,EAAqB,MAAM,UAAU,CAAC;AAE9E,eAAO,MAAM,WAAW,aAAc,MAAM,EAAE,WAAsB,CAAC;AAErE,eAAO,MAAM,eAAe,2DAA+D,CAAC;AAE5F,eAAO,MAAM,eAAe,sBACP,SAAS,4BACF,WAAW,UAC7B,UAAU,YACR,MAAM,EAAE,SAuDnB,CAAC;AAEF,eAAO,MAAM,cAAc,SAAgB,MAAM,aAAa,MAAM;;;;;;;;;;;;;;;;EAOnE,CAAC"}
|
package/dist/lib/jest/index.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadJestReport = exports.applyJestReport = exports.ignoredStatuses = exports.getFullName = void 0;
|
|
4
|
-
const domain_1 = require("../domain");
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
|
-
const models_1 = require("./models");
|
|
7
|
-
const getFullName = (...parts) => parts.join(' / ');
|
|
8
|
-
exports.getFullName = getFullName;
|
|
9
|
-
exports.ignoredStatuses = new Set(['pending', 'todo', 'skipped']);
|
|
10
|
-
const applyJestReport = (validationContext, { features, attributes }, report, keyParts) => {
|
|
11
|
-
const names = new Map();
|
|
12
|
-
// формируем список ключей тест-кейсов из отчета jest
|
|
13
|
-
for (let { assertionResults, name: path } of report.testResults) {
|
|
14
|
-
const assertions = assertionResults.filter(a => !exports.ignoredStatuses.has(a.status));
|
|
15
|
-
for (let { title, ancestorTitles } of assertions) {
|
|
16
|
-
const name = (0, exports.getFullName)(...ancestorTitles, title);
|
|
17
|
-
const pathes = names.get(name) || [];
|
|
18
|
-
pathes.push(path);
|
|
19
|
-
names.set(name, pathes);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
const attributesCtx = (0, domain_1.getAttributesContext)(attributes);
|
|
23
|
-
// заполняем поле isAutomated
|
|
24
|
-
for (let { title: featureTitle, code: featureCode, groups, fileName, filePath, attributes = {}, } of features) {
|
|
25
|
-
for (let { title: groupTitle, assertions } of groups || []) {
|
|
26
|
-
for (let assertion of assertions || []) {
|
|
27
|
-
// TODO: перенести в domain?
|
|
28
|
-
const assertionCtx = {
|
|
29
|
-
featureTitle,
|
|
30
|
-
featureCode,
|
|
31
|
-
groupTitle,
|
|
32
|
-
assertionTitle: assertion.title,
|
|
33
|
-
attributes,
|
|
34
|
-
fileName,
|
|
35
|
-
filePath,
|
|
36
|
-
};
|
|
37
|
-
const parts = (0, domain_1.getKey)(keyParts, assertionCtx, attributesCtx);
|
|
38
|
-
const fullName = (0, exports.getFullName)(...parts);
|
|
39
|
-
assertion.isAutomated = names.has(fullName);
|
|
40
|
-
names.delete(fullName);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
Array.from(names.keys()).forEach((name) => {
|
|
45
|
-
const pathes = names.get(name);
|
|
46
|
-
pathes === null || pathes === void 0 ? void 0 : pathes.forEach((path) => validationContext.registerJestUnusedTests(name, path));
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
exports.applyJestReport = applyJestReport;
|
|
50
|
-
const loadJestReport = async (path, basePath) => {
|
|
51
|
-
const json = await (0, utils_1.readTextFile)(path, basePath);
|
|
52
|
-
const data = JSON.parse(json);
|
|
53
|
-
const entity = (0, utils_1.parseObject)(data, models_1.jestReportDecoder);
|
|
54
|
-
return entity;
|
|
55
|
-
};
|
|
56
|
-
exports.loadJestReport = loadJestReport;
|
|
57
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/jest/index.ts"],"names":[],"mappings":";;;AAAA,sCAKmB;AACnB,oCAAqD;AAErD,qCAA8E;AAEvE,MAAM,WAAW,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAAxD,QAAA,WAAW,eAA6C;AAExD,QAAA,eAAe,GAAG,IAAI,GAAG,CAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAErF,MAAM,eAAe,GAAG,CAC7B,iBAA4B,EAC5B,EAAE,QAAQ,EAAE,UAAU,EAAe,EACrC,MAAkB,EAClB,QAAkB,EAClB,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE1C,qDAAqD;IACrD,KAAK,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;QAC/D,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,uBAAe,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhF,KAAK,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,UAAU,EAAE;YAChD,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACzB;KACF;IAED,MAAM,aAAa,GAAG,IAAA,6BAAoB,EAAC,UAAU,CAAC,CAAC;IAEvD,6BAA6B;IAC7B,KAAK,IAAI,EACP,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,WAAW,EACjB,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,GAAG,EAAE,GAChB,IAAI,QAAQ,EAAE;QACb,KAAK,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,MAAM,IAAI,EAAE,EAAE;YAC1D,KAAK,IAAI,SAAS,IAAI,UAAU,IAAI,EAAE,EAAE;gBACtC,4BAA4B;gBAC5B,MAAM,YAAY,GAAqB;oBACrC,YAAY;oBACZ,WAAW;oBACX,UAAU;oBACV,cAAc,EAAE,SAAS,CAAC,KAAK;oBAC/B,UAAU;oBACV,QAAQ;oBACR,QAAQ;iBACT,CAAC;gBAEF,MAAM,KAAK,GAAG,IAAA,eAAM,EAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,GAAG,KAAK,CAAC,CAAC;gBAEvC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAE5C,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aACxB;SACF;KACF;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACvB,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA3DW,QAAA,eAAe,mBA2D1B;AAEK,MAAM,cAAc,GAAG,KAAK,EAAE,IAAY,EAAE,QAAiB,EAAE,EAAE;IACtE,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,0BAAiB,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/lib/jest/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAEnC,eAAO,MAAM,sBAAsB,6EAMlC,CAAC;AAEF,eAAO,MAAM,0BAA0B,0EAMtC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;EAKrC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAOhC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/lib/jest/models.ts"],"names":[],"mappings":";;;;AAAA,yDAAmC;AAEtB,QAAA,sBAAsB,GAAG,CAAC,CAAC,OAAO,CAC7C,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;AAEW,QAAA,0BAA0B,GAAG,CAAC,CAAC,OAAO,CACjD,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,CACV,CAAC;AAEW,QAAA,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM;IAClB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,kCAA0B;CACnC,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,MAAM,EAAE,8BAAsB;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,kCAA0B,CAAC;CACtD,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM;IACnB,aAAa,EAAE,CAAC,CAAC,MAAM;IACvB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC;CAC5C,CAAC,CAAC"}
|
|
File without changes
|