@cucumber/query 13.2.0 → 13.3.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/.mocharc.json +1 -0
- package/.prettierrc.json +6 -0
- package/dist/src/Query.d.ts +12 -7
- package/dist/src/Query.d.ts.map +1 -1
- package/dist/src/Query.js +64 -34
- package/dist/src/Query.js.map +1 -1
- package/dist/src/helpers.d.ts +2 -8
- package/dist/src/helpers.d.ts.map +1 -1
- package/dist/src/helpers.js +3 -26
- package/dist/src/helpers.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/eslint.config.mjs +67 -0
- package/package.json +25 -32
- package/src/Query.spec.ts +86 -9
- package/src/Query.ts +127 -70
- package/src/acceptance.spec.ts +236 -160
- package/src/helpers.ts +16 -44
- package/src/helpers.spec.ts +0 -15
package/.mocharc.json
CHANGED
package/.prettierrc.json
ADDED
package/dist/src/Query.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as messages from '@cucumber/messages';
|
|
2
|
-
import { Attachment, Duration, Feature, Hook, Meta, Pickle, PickleStep, Step, TestCase, TestCaseFinished, TestCaseStarted, TestRunFinished, TestRunStarted, TestStep, TestStepFinished, TestStepResult, TestStepResultStatus } from '@cucumber/messages';
|
|
3
|
-
import { NamingStrategy } from
|
|
2
|
+
import { Attachment, Duration, Feature, Hook, Location, Meta, Pickle, PickleStep, Step, TestCase, TestCaseFinished, TestCaseStarted, TestRunFinished, TestRunStarted, TestStep, TestStepFinished, TestStepResult, TestStepResultStatus, TestStepStarted } from '@cucumber/messages';
|
|
3
|
+
import { Lineage, NamingStrategy } from './Lineage';
|
|
4
4
|
export default class Query {
|
|
5
5
|
private readonly testStepResultByPickleId;
|
|
6
6
|
private readonly testStepResultsByPickleStepId;
|
|
@@ -15,7 +15,7 @@ export default class Query {
|
|
|
15
15
|
private meta;
|
|
16
16
|
private testRunStarted;
|
|
17
17
|
private testRunFinished;
|
|
18
|
-
private readonly
|
|
18
|
+
private readonly testCaseStartedById;
|
|
19
19
|
private readonly lineageById;
|
|
20
20
|
private readonly stepById;
|
|
21
21
|
private readonly pickleById;
|
|
@@ -23,6 +23,7 @@ export default class Query {
|
|
|
23
23
|
private readonly testCaseById;
|
|
24
24
|
private readonly testStepById;
|
|
25
25
|
private readonly testCaseFinishedByTestCaseStartedId;
|
|
26
|
+
private readonly testStepStartedByTestCaseStartedId;
|
|
26
27
|
private readonly testStepFinishedByTestCaseStartedId;
|
|
27
28
|
private readonly attachmentsByTestCaseStartedId;
|
|
28
29
|
update(envelope: messages.Envelope): void;
|
|
@@ -34,6 +35,7 @@ export default class Query {
|
|
|
34
35
|
private updatePickle;
|
|
35
36
|
private updateTestCase;
|
|
36
37
|
private updateTestCaseStarted;
|
|
38
|
+
private updateTestStepStarted;
|
|
37
39
|
private updateAttachment;
|
|
38
40
|
private updateTestStepFinished;
|
|
39
41
|
private updateTestCaseFinished;
|
|
@@ -77,18 +79,21 @@ export default class Query {
|
|
|
77
79
|
findMeta(): Meta | undefined;
|
|
78
80
|
findMostSevereTestStepResultBy(testCaseStarted: TestCaseStarted): TestStepResult | undefined;
|
|
79
81
|
findNameOf(pickle: Pickle, namingStrategy: NamingStrategy): string;
|
|
80
|
-
|
|
82
|
+
findLocationOf(pickle: Pickle): Location | undefined;
|
|
83
|
+
findPickleBy(element: TestCaseStarted | TestStepStarted): Pickle | undefined;
|
|
81
84
|
findPickleStepBy(testStep: TestStep): PickleStep | undefined;
|
|
82
85
|
findStepBy(pickleStep: PickleStep): Step | undefined;
|
|
83
|
-
findTestCaseBy(
|
|
86
|
+
findTestCaseBy(element: TestCaseStarted | TestStepStarted): TestCase | undefined;
|
|
84
87
|
findTestCaseDurationBy(testCaseStarted: TestCaseStarted): Duration | undefined;
|
|
88
|
+
findTestCaseStartedBy(testStepStarted: TestStepStarted): TestCaseStarted | undefined;
|
|
85
89
|
findTestCaseFinishedBy(testCaseStarted: TestCaseStarted): TestCaseFinished | undefined;
|
|
86
90
|
findTestRunDuration(): Duration | undefined;
|
|
87
91
|
findTestRunFinished(): TestRunFinished | undefined;
|
|
88
92
|
findTestRunStarted(): TestRunStarted | undefined;
|
|
89
|
-
findTestStepBy(
|
|
93
|
+
findTestStepBy(element: TestStepStarted | TestStepFinished): TestStep | undefined;
|
|
94
|
+
findTestStepsStartedBy(testCaseStarted: TestCaseStarted): ReadonlyArray<TestStepStarted>;
|
|
90
95
|
findTestStepsFinishedBy(testCaseStarted: TestCaseStarted): ReadonlyArray<TestStepFinished>;
|
|
91
96
|
findTestStepFinishedAndTestStepBy(testCaseStarted: TestCaseStarted): ReadonlyArray<[TestStepFinished, TestStep]>;
|
|
92
|
-
|
|
97
|
+
findLineageBy(element: Pickle | TestCaseStarted): Lineage | undefined;
|
|
93
98
|
}
|
|
94
99
|
//# sourceMappingURL=Query.d.ts.map
|
package/dist/src/Query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/Query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EACL,UAAU,EACV,QAAQ,EACR,OAAO,EAGP,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,UAAU,EAGV,IAAI,EACJ,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,oBAAoB,
|
|
1
|
+
{"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/Query.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Query.js
CHANGED
|
@@ -32,10 +32,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
const messages = __importStar(require("@cucumber/messages"));
|
|
37
40
|
const messages_1 = require("@cucumber/messages");
|
|
38
41
|
const multimaps_1 = require("@teppeis/multimaps");
|
|
42
|
+
const lodash_sortby_1 = __importDefault(require("lodash.sortby"));
|
|
39
43
|
const helpers_1 = require("./helpers");
|
|
40
44
|
class Query {
|
|
41
45
|
constructor() {
|
|
@@ -49,7 +53,7 @@ class Query {
|
|
|
49
53
|
this.hooksById = new Map();
|
|
50
54
|
this.attachmentsByTestStepId = new multimaps_1.ArrayMultimap();
|
|
51
55
|
this.stepMatchArgumentsListsByPickleStepId = new Map();
|
|
52
|
-
this.
|
|
56
|
+
this.testCaseStartedById = new Map();
|
|
53
57
|
this.lineageById = new Map();
|
|
54
58
|
this.stepById = new Map();
|
|
55
59
|
this.pickleById = new Map();
|
|
@@ -57,6 +61,7 @@ class Query {
|
|
|
57
61
|
this.testCaseById = new Map();
|
|
58
62
|
this.testStepById = new Map();
|
|
59
63
|
this.testCaseFinishedByTestCaseStartedId = new Map();
|
|
64
|
+
this.testStepStartedByTestCaseStartedId = new multimaps_1.ArrayMultimap();
|
|
60
65
|
this.testStepFinishedByTestCaseStartedId = new multimaps_1.ArrayMultimap();
|
|
61
66
|
this.attachmentsByTestCaseStartedId = new multimaps_1.ArrayMultimap();
|
|
62
67
|
}
|
|
@@ -82,6 +87,9 @@ class Query {
|
|
|
82
87
|
if (envelope.testCaseStarted) {
|
|
83
88
|
this.updateTestCaseStarted(envelope.testCaseStarted);
|
|
84
89
|
}
|
|
90
|
+
if (envelope.testStepStarted) {
|
|
91
|
+
this.updateTestStepStarted(envelope.testStepStarted);
|
|
92
|
+
}
|
|
85
93
|
if (envelope.attachment) {
|
|
86
94
|
this.updateAttachment(envelope.attachment);
|
|
87
95
|
}
|
|
@@ -160,20 +168,25 @@ class Query {
|
|
|
160
168
|
});
|
|
161
169
|
}
|
|
162
170
|
updateTestCaseStarted(testCaseStarted) {
|
|
163
|
-
this.
|
|
171
|
+
this.testCaseStartedById.set(testCaseStarted.id, testCaseStarted);
|
|
164
172
|
/*
|
|
165
173
|
when a test case attempt starts besides the first one, clear all existing results
|
|
166
174
|
and attachments for that test case, so we always report on the latest attempt
|
|
167
175
|
(applies to legacy pickle-oriented query methods only)
|
|
168
176
|
*/
|
|
169
177
|
const testCase = this.testCaseById.get(testCaseStarted.testCaseId);
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
178
|
+
if (testCase) {
|
|
179
|
+
this.testStepResultByPickleId.delete(testCase.pickleId);
|
|
180
|
+
for (const testStep of testCase.testSteps) {
|
|
181
|
+
this.testStepResultsByPickleStepId.delete(testStep.pickleStepId);
|
|
182
|
+
this.testStepResultsbyTestStepId.delete(testStep.id);
|
|
183
|
+
this.attachmentsByTestStepId.delete(testStep.id);
|
|
184
|
+
}
|
|
175
185
|
}
|
|
176
186
|
}
|
|
187
|
+
updateTestStepStarted(testStepStarted) {
|
|
188
|
+
this.testStepStartedByTestCaseStartedId.put(testStepStarted.testCaseStartedId, testStepStarted);
|
|
189
|
+
}
|
|
177
190
|
updateAttachment(attachment) {
|
|
178
191
|
if (attachment.testStepId) {
|
|
179
192
|
this.attachmentsByTestStepId.put(attachment.testStepId, attachment);
|
|
@@ -269,7 +282,12 @@ class Query {
|
|
|
269
282
|
let pickleStepFound = false;
|
|
270
283
|
for (const step of testCase.testSteps) {
|
|
271
284
|
if (step.hookId) {
|
|
272
|
-
|
|
285
|
+
if (pickleStepFound) {
|
|
286
|
+
onAfterHookFound(step);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
onBeforeHookFound(step);
|
|
290
|
+
}
|
|
273
291
|
}
|
|
274
292
|
else {
|
|
275
293
|
pickleStepFound = true;
|
|
@@ -300,10 +318,7 @@ class Query {
|
|
|
300
318
|
[messages_1.TestStepResultStatus.UNKNOWN]: 0,
|
|
301
319
|
};
|
|
302
320
|
for (const testCaseStarted of this.findAllTestCaseStarted()) {
|
|
303
|
-
const mostSevereResult = this.findTestStepFinishedAndTestStepBy(testCaseStarted)
|
|
304
|
-
.map(([testStepFinished]) => testStepFinished.testStepResult)
|
|
305
|
-
.sort(helpers_1.comparatorByStatus)
|
|
306
|
-
.at(-1);
|
|
321
|
+
const mostSevereResult = (0, lodash_sortby_1.default)(this.findTestStepFinishedAndTestStepBy(testCaseStarted).map(([testStepFinished]) => testStepFinished.testStepResult), [(testStepResult) => (0, helpers_1.statusOrdinal)(testStepResult.status)]).at(-1);
|
|
307
322
|
if (mostSevereResult) {
|
|
308
323
|
result[mostSevereResult.status]++;
|
|
309
324
|
}
|
|
@@ -315,37 +330,38 @@ class Query {
|
|
|
315
330
|
}
|
|
316
331
|
findAllPickles() {
|
|
317
332
|
const pickles = [...this.pickleById.values()];
|
|
318
|
-
return
|
|
333
|
+
return (0, lodash_sortby_1.default)(pickles, ['id']);
|
|
319
334
|
}
|
|
320
335
|
findAllPickleSteps() {
|
|
321
336
|
const pickleSteps = [...this.pickleStepById.values()];
|
|
322
|
-
return
|
|
337
|
+
return (0, lodash_sortby_1.default)(pickleSteps, ['id']);
|
|
323
338
|
}
|
|
324
339
|
findAllTestCaseStarted() {
|
|
325
|
-
return this.
|
|
340
|
+
return (0, lodash_sortby_1.default)([...this.testCaseStartedById.values()].filter((testCaseStarted) => {
|
|
326
341
|
const testCaseFinished = this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id);
|
|
327
342
|
// only include if not yet finished OR won't be retried
|
|
328
343
|
return !(testCaseFinished === null || testCaseFinished === void 0 ? void 0 : testCaseFinished.willBeRetried);
|
|
329
|
-
})
|
|
344
|
+
}), [
|
|
345
|
+
(testCaseStarted) => messages_1.TimeConversion.timestampToMillisecondsSinceEpoch(testCaseStarted.timestamp),
|
|
346
|
+
'id',
|
|
347
|
+
]);
|
|
330
348
|
}
|
|
331
349
|
findAllTestCaseStartedGroupedByFeature() {
|
|
332
350
|
const results = new Map();
|
|
333
|
-
this.findAllTestCaseStarted()
|
|
334
|
-
.map(testCaseStarted => [this.findLineageBy(testCaseStarted), testCaseStarted])
|
|
335
|
-
.sort(([a], [b]) => (0, helpers_1.comparatorBy)(a.gherkinDocument, b.gherkinDocument, "uri"))
|
|
336
|
-
.forEach(([{ feature }, testCaseStarted]) => {
|
|
351
|
+
(0, lodash_sortby_1.default)(this.findAllTestCaseStarted().map((testCaseStarted) => [this.findLineageBy(testCaseStarted), testCaseStarted]), [([lineage]) => lineage.gherkinDocument.uri]).forEach(([{ feature }, testCaseStarted]) => {
|
|
337
352
|
var _a;
|
|
338
|
-
results.set(feature, [...(_a = results.get(feature)) !== null && _a !== void 0 ? _a : [], testCaseStarted]);
|
|
353
|
+
results.set(feature, [...((_a = results.get(feature)) !== null && _a !== void 0 ? _a : []), testCaseStarted]);
|
|
339
354
|
});
|
|
340
355
|
return results;
|
|
341
356
|
}
|
|
342
357
|
findAllTestSteps() {
|
|
343
358
|
const testSteps = [...this.testStepById.values()];
|
|
344
|
-
return
|
|
359
|
+
return (0, lodash_sortby_1.default)(testSteps, ['id']);
|
|
345
360
|
}
|
|
346
361
|
findAttachmentsBy(testStepFinished) {
|
|
347
|
-
return this.attachmentsByTestCaseStartedId
|
|
348
|
-
.
|
|
362
|
+
return this.attachmentsByTestCaseStartedId
|
|
363
|
+
.get(testStepFinished.testCaseStartedId)
|
|
364
|
+
.filter((attachment) => attachment.testStepId === testStepFinished.testStepId);
|
|
349
365
|
}
|
|
350
366
|
findFeatureBy(testCaseStarted) {
|
|
351
367
|
var _a;
|
|
@@ -361,17 +377,22 @@ class Query {
|
|
|
361
377
|
return this.meta;
|
|
362
378
|
}
|
|
363
379
|
findMostSevereTestStepResultBy(testCaseStarted) {
|
|
364
|
-
return this.findTestStepFinishedAndTestStepBy(testCaseStarted)
|
|
365
|
-
.map(([testStepFinished]) => testStepFinished.testStepResult)
|
|
366
|
-
.sort(helpers_1.comparatorByStatus)
|
|
367
|
-
.at(-1);
|
|
380
|
+
return (0, lodash_sortby_1.default)(this.findTestStepFinishedAndTestStepBy(testCaseStarted).map(([testStepFinished]) => testStepFinished.testStepResult), [(testStepResult) => (0, helpers_1.statusOrdinal)(testStepResult.status)]).at(-1);
|
|
368
381
|
}
|
|
369
382
|
findNameOf(pickle, namingStrategy) {
|
|
370
383
|
const lineage = this.findLineageBy(pickle);
|
|
371
384
|
return lineage ? namingStrategy.reduce(lineage, pickle) : pickle.name;
|
|
372
385
|
}
|
|
373
|
-
|
|
374
|
-
|
|
386
|
+
findLocationOf(pickle) {
|
|
387
|
+
var _a;
|
|
388
|
+
const lineage = this.findLineageBy(pickle);
|
|
389
|
+
if (lineage === null || lineage === void 0 ? void 0 : lineage.example) {
|
|
390
|
+
return lineage.example.location;
|
|
391
|
+
}
|
|
392
|
+
return (_a = lineage === null || lineage === void 0 ? void 0 : lineage.scenario) === null || _a === void 0 ? void 0 : _a.location;
|
|
393
|
+
}
|
|
394
|
+
findPickleBy(element) {
|
|
395
|
+
const testCase = this.findTestCaseBy(element);
|
|
375
396
|
helpers_1.assert.ok(testCase, 'Expected to find TestCase from TestCaseStarted');
|
|
376
397
|
return this.pickleById.get(testCase.pickleId);
|
|
377
398
|
}
|
|
@@ -386,7 +407,9 @@ class Query {
|
|
|
386
407
|
helpers_1.assert.ok(astNodeId, 'Expected PickleStep to have an astNodeId');
|
|
387
408
|
return this.stepById.get(astNodeId);
|
|
388
409
|
}
|
|
389
|
-
findTestCaseBy(
|
|
410
|
+
findTestCaseBy(element) {
|
|
411
|
+
const testCaseStarted = 'testCaseStartedId' in element ? this.findTestCaseStartedBy(element) : element;
|
|
412
|
+
helpers_1.assert.ok(testCaseStarted, 'Expected to find TestCaseStarted by TestStepStarted');
|
|
390
413
|
return this.testCaseById.get(testCaseStarted.testCaseId);
|
|
391
414
|
}
|
|
392
415
|
findTestCaseDurationBy(testCaseStarted) {
|
|
@@ -397,6 +420,9 @@ class Query {
|
|
|
397
420
|
return messages_1.TimeConversion.millisecondsToDuration(messages_1.TimeConversion.timestampToMillisecondsSinceEpoch(testCaseFinished.timestamp) -
|
|
398
421
|
messages_1.TimeConversion.timestampToMillisecondsSinceEpoch(testCaseStarted.timestamp));
|
|
399
422
|
}
|
|
423
|
+
findTestCaseStartedBy(testStepStarted) {
|
|
424
|
+
return this.testCaseStartedById.get(testStepStarted.testCaseStartedId);
|
|
425
|
+
}
|
|
400
426
|
findTestCaseFinishedBy(testCaseStarted) {
|
|
401
427
|
return this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id);
|
|
402
428
|
}
|
|
@@ -413,8 +439,12 @@ class Query {
|
|
|
413
439
|
findTestRunStarted() {
|
|
414
440
|
return this.testRunStarted;
|
|
415
441
|
}
|
|
416
|
-
findTestStepBy(
|
|
417
|
-
return this.testStepById.get(
|
|
442
|
+
findTestStepBy(element) {
|
|
443
|
+
return this.testStepById.get(element.testStepId);
|
|
444
|
+
}
|
|
445
|
+
findTestStepsStartedBy(testCaseStarted) {
|
|
446
|
+
// multimaps `get` implements `getOrDefault([])` behaviour internally
|
|
447
|
+
return [...this.testStepStartedByTestCaseStartedId.get(testCaseStarted.id)];
|
|
418
448
|
}
|
|
419
449
|
findTestStepsFinishedBy(testCaseStarted) {
|
|
420
450
|
// multimaps `get` implements `getOrDefault([])` behaviour internally
|
|
@@ -430,7 +460,7 @@ class Query {
|
|
|
430
460
|
});
|
|
431
461
|
}
|
|
432
462
|
findLineageBy(element) {
|
|
433
|
-
const pickle =
|
|
463
|
+
const pickle = 'testCaseId' in element ? this.findPickleBy(element) : element;
|
|
434
464
|
const deepestAstNodeId = pickle.astNodeIds.at(-1);
|
|
435
465
|
helpers_1.assert.ok(deepestAstNodeId, 'Expected Pickle to have at least one astNodeId');
|
|
436
466
|
return this.lineageById.get(deepestAstNodeId);
|
package/dist/src/Query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Query.js","sourceRoot":"","sources":["../../src/Query.ts"],"names":[],"mappings":"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","sourcesContent":["import * as messages from '@cucumber/messages'\nimport {\n Attachment,\n Duration,\n Feature,\n getWorstTestStepResult,\n GherkinDocument,\n Hook,\n Meta,\n Pickle,\n PickleStep,\n Rule,\n Scenario,\n Step,\n TestCase,\n TestCaseFinished,\n TestCaseStarted,\n TestRunFinished,\n TestRunStarted,\n TestStep,\n TestStepFinished,\n TestStepResult,\n TestStepResultStatus,\n TimeConversion,\n} from '@cucumber/messages'\nimport {ArrayMultimap} from '@teppeis/multimaps'\nimport {Lineage, NamingStrategy} from \"./Lineage\";\nimport { comparatorBy, comparatorById, comparatorByStatus, assert } from './helpers'\n\nexport default class Query {\n private readonly testStepResultByPickleId = new ArrayMultimap<string, messages.TestStepResult>()\n private readonly testStepResultsByPickleStepId = new ArrayMultimap<\n string,\n messages.TestStepResult\n >()\n private readonly testCaseByPickleId = new Map<string, messages.TestCase>()\n private readonly pickleIdByTestStepId = new Map<string, string>()\n private readonly pickleStepIdByTestStepId = new Map<string, string>()\n private readonly testStepResultsbyTestStepId = new ArrayMultimap<\n string,\n messages.TestStepResult\n >()\n private readonly testStepIdsByPickleStepId = new ArrayMultimap<string, string>()\n private readonly hooksById = new Map<string, messages.Hook>()\n private readonly attachmentsByTestStepId = new ArrayMultimap<string, messages.Attachment>()\n private readonly stepMatchArgumentsListsByPickleStepId = new Map<\n string,\n readonly messages.StepMatchArgumentsList[]\n >()\n\n private meta: Meta\n private testRunStarted: TestRunStarted\n private testRunFinished: TestRunFinished\n private readonly testCaseStarted: Array<TestCaseStarted> = []\n private readonly lineageById: Map<string, Lineage> = new Map()\n private readonly stepById: Map<string, Step> = new Map()\n private readonly pickleById: Map<string, Pickle> = new Map()\n private readonly pickleStepById: Map<string, PickleStep> = new Map()\n private readonly testCaseById: Map<string, TestCase> = new Map()\n private readonly testStepById: Map<string, TestStep> = new Map()\n private readonly testCaseFinishedByTestCaseStartedId: Map<string, TestCaseFinished> = new Map()\n private readonly testStepFinishedByTestCaseStartedId: ArrayMultimap<string, TestStepFinished> =\n new ArrayMultimap()\n private readonly attachmentsByTestCaseStartedId: ArrayMultimap<string, Attachment> =\n new ArrayMultimap()\n\n public update(envelope: messages.Envelope) {\n if (envelope.meta) {\n this.meta = envelope.meta\n }\n if (envelope.gherkinDocument) {\n this.updateGherkinDocument(envelope.gherkinDocument)\n }\n if (envelope.pickle) {\n this.updatePickle(envelope.pickle)\n }\n if (envelope.hook) {\n this.hooksById.set(envelope.hook.id, envelope.hook)\n }\n if (envelope.testRunStarted) {\n this.testRunStarted = envelope.testRunStarted\n }\n if (envelope.testCase) {\n this.updateTestCase(envelope.testCase)\n }\n if (envelope.testCaseStarted) {\n this.updateTestCaseStarted(envelope.testCaseStarted)\n }\n if (envelope.attachment) {\n this.updateAttachment(envelope.attachment)\n }\n if (envelope.testStepFinished) {\n this.updateTestStepFinished(envelope.testStepFinished)\n }\n if (envelope.testCaseFinished) {\n this.updateTestCaseFinished(envelope.testCaseFinished)\n }\n if (envelope.testRunFinished) {\n this.testRunFinished = envelope.testRunFinished\n }\n }\n\n private updateGherkinDocument(gherkinDocument: GherkinDocument) {\n if (gherkinDocument.feature) {\n this.updateFeature(gherkinDocument.feature, {\n gherkinDocument,\n })\n }\n }\n\n private updateFeature(feature: Feature, lineage: Lineage) {\n feature.children.forEach((featureChild) => {\n if (featureChild.background) {\n this.updateSteps(featureChild.background.steps)\n }\n if (featureChild.scenario) {\n this.updateScenario(featureChild.scenario, {\n ...lineage,\n feature,\n })\n }\n if (featureChild.rule) {\n this.updateRule(featureChild.rule, {\n ...lineage,\n feature,\n })\n }\n })\n }\n\n private updateRule(rule: Rule, lineage: Lineage) {\n rule.children.forEach((ruleChild) => {\n if (ruleChild.background) {\n this.updateSteps(ruleChild.background.steps)\n }\n if (ruleChild.scenario) {\n this.updateScenario(ruleChild.scenario, {\n ...lineage,\n rule,\n })\n }\n })\n }\n\n private updateScenario(scenario: Scenario, lineage: Lineage) {\n this.lineageById.set(scenario.id, {\n ...lineage,\n scenario,\n })\n scenario.examples.forEach((examples, examplesIndex) => {\n this.lineageById.set(examples.id, {\n ...lineage,\n scenario,\n examples,\n examplesIndex,\n })\n examples.tableBody.forEach((example, exampleIndex) => {\n this.lineageById.set(example.id, {\n ...lineage,\n scenario,\n examples,\n examplesIndex,\n example,\n exampleIndex,\n })\n })\n })\n this.updateSteps(scenario.steps)\n }\n\n private updateSteps(steps: ReadonlyArray<Step>) {\n steps.forEach((step) => this.stepById.set(step.id, step))\n }\n\n private updatePickle(pickle: Pickle) {\n this.pickleById.set(pickle.id, pickle)\n pickle.steps.forEach((pickleStep) => this.pickleStepById.set(pickleStep.id, pickleStep))\n }\n\n private updateTestCase(testCase: TestCase) {\n this.testCaseById.set(testCase.id, testCase)\n\n this.testCaseByPickleId.set(testCase.pickleId, testCase)\n testCase.testSteps.forEach((testStep) => {\n this.testStepById.set(testStep.id, testStep)\n this.pickleIdByTestStepId.set(testStep.id, testCase.pickleId)\n this.pickleStepIdByTestStepId.set(testStep.id, testStep.pickleStepId)\n this.testStepIdsByPickleStepId.put(testStep.pickleStepId, testStep.id)\n this.stepMatchArgumentsListsByPickleStepId.set(\n testStep.pickleStepId,\n testStep.stepMatchArgumentsLists\n )\n })\n }\n\n private updateTestCaseStarted(testCaseStarted: TestCaseStarted) {\n this.testCaseStarted.push(testCaseStarted)\n\n /*\n when a test case attempt starts besides the first one, clear all existing results\n and attachments for that test case, so we always report on the latest attempt\n (applies to legacy pickle-oriented query methods only)\n */\n const testCase = this.testCaseById.get(testCaseStarted.testCaseId)\n this.testStepResultByPickleId.delete(testCase.pickleId)\n for (const testStep of testCase.testSteps) {\n this.testStepResultsByPickleStepId.delete(testStep.pickleStepId)\n this.testStepResultsbyTestStepId.delete(testStep.id)\n this.attachmentsByTestStepId.delete(testStep.id)\n }\n }\n\n private updateAttachment(attachment: Attachment) {\n if (attachment.testStepId) {\n this.attachmentsByTestStepId.put(attachment.testStepId, attachment)\n }\n if (attachment.testCaseStartedId) {\n this.attachmentsByTestCaseStartedId.put(attachment.testCaseStartedId, attachment)\n }\n }\n\n private updateTestStepFinished(testStepFinished: TestStepFinished) {\n this.testStepFinishedByTestCaseStartedId.put(\n testStepFinished.testCaseStartedId,\n testStepFinished\n )\n\n const pickleId = this.pickleIdByTestStepId.get(testStepFinished.testStepId)\n this.testStepResultByPickleId.put(pickleId, testStepFinished.testStepResult)\n const testStep = this.testStepById.get(testStepFinished.testStepId)\n this.testStepResultsByPickleStepId.put(\n testStep.pickleStepId,\n testStepFinished.testStepResult\n )\n this.testStepResultsbyTestStepId.put(testStep.id, testStepFinished.testStepResult)\n }\n\n private updateTestCaseFinished(testCaseFinished: TestCaseFinished) {\n this.testCaseFinishedByTestCaseStartedId.set(\n testCaseFinished.testCaseStartedId,\n testCaseFinished\n )\n }\n\n /**\n * Gets all the results for multiple pickle steps\n * @param pickleStepIds\n */\n public getPickleStepTestStepResults(\n pickleStepIds: readonly string[]\n ): readonly messages.TestStepResult[] {\n if (pickleStepIds.length === 0) {\n return [\n {\n status: messages.TestStepResultStatus.UNKNOWN,\n duration: messages.TimeConversion.millisecondsToDuration(0),\n },\n ]\n }\n return pickleStepIds.reduce((testStepResults: messages.TestStepResult[], pickleId) => {\n return testStepResults.concat(this.testStepResultsByPickleStepId.get(pickleId))\n }, [])\n }\n\n /**\n * Gets all the results for multiple pickles\n * @param pickleIds\n */\n public getPickleTestStepResults(\n pickleIds: readonly string[]\n ): readonly messages.TestStepResult[] {\n if (pickleIds.length === 0) {\n return [\n {\n status: messages.TestStepResultStatus.UNKNOWN,\n duration: messages.TimeConversion.millisecondsToDuration(0),\n },\n ]\n }\n return pickleIds.reduce((testStepResults: messages.TestStepResult[], pickleId) => {\n return testStepResults.concat(this.testStepResultByPickleId.get(pickleId))\n }, [])\n }\n\n /**\n * Gets all the attachments for multiple pickle steps\n * @param pickleStepIds\n */\n public getPickleStepAttachments(\n pickleStepIds: readonly string[]\n ): readonly messages.Attachment[] {\n return this.getTestStepsAttachments(\n pickleStepIds.reduce((testStepIds: string[], pickleStepId: string) => {\n return testStepIds.concat(this.testStepIdsByPickleStepId.get(pickleStepId))\n }, [])\n )\n }\n\n public getTestStepsAttachments(testStepIds: readonly string[]): readonly messages.Attachment[] {\n return testStepIds.reduce((attachments: messages.Attachment[], testStepId) => {\n return attachments.concat(this.attachmentsByTestStepId.get(testStepId))\n }, [])\n }\n\n /**\n * Get StepMatchArguments for a pickle step\n * @param pickleStepId\n */\n public getStepMatchArgumentsLists(\n pickleStepId: string\n ): readonly messages.StepMatchArgumentsList[] | undefined {\n return this.stepMatchArgumentsListsByPickleStepId.get(pickleStepId)\n }\n\n public getHook(hookId: string): messages.Hook {\n return this.hooksById.get(hookId)\n }\n\n public getBeforeHookSteps(pickleId: string): readonly messages.TestStep[] {\n const hookSteps: messages.TestStep[] = []\n\n this.identifyHookSteps(\n pickleId,\n (hook) => hookSteps.push(hook),\n () => null\n )\n return hookSteps\n }\n\n public getAfterHookSteps(pickleId: string): readonly messages.TestStep[] {\n const hookSteps: messages.TestStep[] = []\n\n this.identifyHookSteps(\n pickleId,\n () => null,\n (hook) => hookSteps.push(hook)\n )\n return hookSteps\n }\n\n private identifyHookSteps(\n pickleId: string,\n onBeforeHookFound: (hook: messages.TestStep) => void,\n onAfterHookFound: (hook: messages.TestStep) => void\n ): void {\n const testCase = this.testCaseByPickleId.get(pickleId)\n\n if (!testCase) {\n return\n }\n\n let pickleStepFound = false\n\n for (const step of testCase.testSteps) {\n if (step.hookId) {\n pickleStepFound ? onAfterHookFound(step) : onBeforeHookFound(step)\n } else {\n pickleStepFound = true\n }\n }\n }\n\n public getTestStepResults(testStepId: string): messages.TestStepResult[] {\n return this.testStepResultsbyTestStepId.get(testStepId)\n }\n\n public getStatusCounts(\n pickleIds: readonly string[]\n ): Partial<Record<messages.TestStepResultStatus, number>> {\n const result: Partial<Record<messages.TestStepResultStatus, number>> = {}\n for (const pickleId of pickleIds) {\n const testStepResult = getWorstTestStepResult(this.getPickleTestStepResults([pickleId]))\n const count = result[testStepResult.status] || 0\n result[testStepResult.status] = count + 1\n }\n return result\n }\n\n /* new common interface with Java starts here */\n\n public countMostSevereTestStepResultStatus(): Record<TestStepResultStatus, number> {\n const result: Record<TestStepResultStatus, number> = {\n [TestStepResultStatus.AMBIGUOUS]: 0,\n [TestStepResultStatus.FAILED]: 0,\n [TestStepResultStatus.PASSED]: 0,\n [TestStepResultStatus.PENDING]: 0,\n [TestStepResultStatus.SKIPPED]: 0,\n [TestStepResultStatus.UNDEFINED]: 0,\n [TestStepResultStatus.UNKNOWN]: 0,\n }\n for (const testCaseStarted of this.findAllTestCaseStarted()) {\n const mostSevereResult = this.findTestStepFinishedAndTestStepBy(testCaseStarted)\n .map(([testStepFinished]) => testStepFinished.testStepResult)\n .sort(comparatorByStatus)\n .at(-1)\n if (mostSevereResult) {\n result[mostSevereResult.status]++\n }\n }\n return result\n }\n\n public countTestCasesStarted(): number {\n return this.findAllTestCaseStarted().length\n }\n\n public findAllPickles(): ReadonlyArray<Pickle> {\n const pickles = [...this.pickleById.values()]\n return pickles.sort(comparatorById)\n }\n\n public findAllPickleSteps(): ReadonlyArray<PickleStep> {\n const pickleSteps = [...this.pickleStepById.values()]\n return pickleSteps.sort(comparatorById)\n }\n\n public findAllTestCaseStarted(): ReadonlyArray<TestCaseStarted> {\n return this.testCaseStarted.filter((testCaseStarted) => {\n const testCaseFinished = this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id)\n // only include if not yet finished OR won't be retried\n return !testCaseFinished?.willBeRetried\n })\n }\n\n public findAllTestCaseStartedGroupedByFeature(): Map<Feature | undefined, ReadonlyArray<TestCaseStarted>> {\n const results = new Map();\n this.findAllTestCaseStarted()\n .map(testCaseStarted => ([this.findLineageBy(testCaseStarted), testCaseStarted] as const))\n .sort(([a], [b]) => comparatorBy(a.gherkinDocument, b.gherkinDocument, \"uri\"))\n .forEach(([{feature}, testCaseStarted]) => {\n results.set(feature, [...results.get(feature) ?? [], testCaseStarted])\n })\n return results\n }\n\n public findAllTestSteps(): ReadonlyArray<TestStep> {\n const testSteps = [...this.testStepById.values()]\n return testSteps.sort(comparatorById)\n }\n\n public findAttachmentsBy(testStepFinished: TestStepFinished): ReadonlyArray<Attachment> {\n return this.attachmentsByTestCaseStartedId.get(testStepFinished.testCaseStartedId)\n .filter(attachment => attachment.testStepId === testStepFinished.testStepId)\n }\n\n public findFeatureBy(testCaseStarted: TestCaseStarted): Feature | undefined {\n return this.findLineageBy(testCaseStarted)?.feature\n }\n\n public findHookBy(testStep: TestStep): Hook | undefined {\n if (!testStep.hookId){\n return undefined\n }\n return this.hooksById.get(testStep.hookId)\n }\n\n public findMeta(): Meta | undefined {\n return this.meta;\n }\n\n public findMostSevereTestStepResultBy(testCaseStarted: TestCaseStarted): TestStepResult | undefined {\n return this.findTestStepFinishedAndTestStepBy(testCaseStarted)\n .map(([testStepFinished]) => testStepFinished.testStepResult)\n .sort(comparatorByStatus)\n .at(-1)\n }\n\n public findNameOf(pickle: Pickle, namingStrategy: NamingStrategy): string {\n const lineage = this.findLineageBy(pickle)\n return lineage ? namingStrategy.reduce(lineage, pickle) : pickle.name\n }\n\n public findPickleBy(testCaseStarted: TestCaseStarted): Pickle | undefined {\n const testCase = this.findTestCaseBy(testCaseStarted)\n assert.ok(testCase, 'Expected to find TestCase from TestCaseStarted')\n return this.pickleById.get(testCase.pickleId)\n }\n\n public findPickleStepBy(testStep: TestStep): PickleStep | undefined {\n if (!testStep.pickleStepId){\n return undefined\n }\n return this.pickleStepById.get(testStep.pickleStepId)\n }\n\n public findStepBy(pickleStep: PickleStep): Step | undefined {\n const [astNodeId] = pickleStep.astNodeIds\n assert.ok(astNodeId, 'Expected PickleStep to have an astNodeId')\n return this.stepById.get(astNodeId)\n }\n\n public findTestCaseBy(testCaseStarted: TestCaseStarted): TestCase | undefined {\n return this.testCaseById.get(testCaseStarted.testCaseId)\n }\n\n public findTestCaseDurationBy(testCaseStarted: TestCaseStarted): Duration | undefined {\n const testCaseFinished = this.findTestCaseFinishedBy(testCaseStarted)\n if (!testCaseFinished) {\n return undefined\n }\n return TimeConversion.millisecondsToDuration(\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseFinished.timestamp) -\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseStarted.timestamp)\n )\n }\n\n public findTestCaseFinishedBy(testCaseStarted: TestCaseStarted): TestCaseFinished | undefined {\n return this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id)\n }\n\n public findTestRunDuration(): Duration | undefined {\n if (!this.testRunStarted || !this.testRunFinished) {\n return undefined\n }\n return TimeConversion.millisecondsToDuration(\n TimeConversion.timestampToMillisecondsSinceEpoch(this.testRunFinished.timestamp) -\n TimeConversion.timestampToMillisecondsSinceEpoch(this.testRunStarted.timestamp)\n )\n }\n\n public findTestRunFinished(): TestRunFinished | undefined {\n return this.testRunFinished\n }\n\n public findTestRunStarted(): TestRunStarted | undefined {\n return this.testRunStarted\n }\n\n public findTestStepBy(testStepFinished: TestStepFinished): TestStep | undefined {\n return this.testStepById.get(testStepFinished.testStepId)\n }\n\n public findTestStepsFinishedBy(testCaseStarted: TestCaseStarted): ReadonlyArray<TestStepFinished> {\n // multimaps `get` implements `getOrDefault([])` behaviour internally\n return [...this.testStepFinishedByTestCaseStartedId.get(testCaseStarted.id)]\n }\n\n public findTestStepFinishedAndTestStepBy(\n testCaseStarted: TestCaseStarted\n ): ReadonlyArray<[TestStepFinished, TestStep]> {\n return this.testStepFinishedByTestCaseStartedId\n .get(testCaseStarted.id)\n .map((testStepFinished) => {\n const testStep = this.findTestStepBy(testStepFinished)\n assert.ok(testStep, 'Expected to find TestStep by TestStepFinished')\n return [testStepFinished, testStep]\n })\n }\n\n private findLineageBy(element: Pickle | TestCaseStarted) {\n const pickle = \"testCaseId\" in element ? this.findPickleBy(element) : element\n const deepestAstNodeId = pickle.astNodeIds.at(-1)\n assert.ok(deepestAstNodeId, 'Expected Pickle to have at least one astNodeId')\n return this.lineageById.get(deepestAstNodeId)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Query.js","sourceRoot":"","sources":["../../src/Query.ts"],"names":[],"mappings":"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","sourcesContent":["import * as messages from '@cucumber/messages'\nimport {\n Attachment,\n Duration,\n Feature,\n getWorstTestStepResult,\n GherkinDocument,\n Hook,\n Location,\n Meta,\n Pickle,\n PickleStep,\n Rule,\n Scenario,\n Step,\n TestCase,\n TestCaseFinished,\n TestCaseStarted,\n TestRunFinished,\n TestRunStarted,\n TestStep,\n TestStepFinished,\n TestStepResult,\n TestStepResultStatus,\n TestStepStarted,\n TimeConversion,\n} from '@cucumber/messages'\nimport { ArrayMultimap } from '@teppeis/multimaps'\nimport sortBy from 'lodash.sortby'\n\nimport { assert, statusOrdinal } from './helpers'\nimport { Lineage, NamingStrategy } from './Lineage'\n\nexport default class Query {\n private readonly testStepResultByPickleId = new ArrayMultimap<string, messages.TestStepResult>()\n private readonly testStepResultsByPickleStepId = new ArrayMultimap<\n string,\n messages.TestStepResult\n >()\n private readonly testCaseByPickleId = new Map<string, messages.TestCase>()\n private readonly pickleIdByTestStepId = new Map<string, string>()\n private readonly pickleStepIdByTestStepId = new Map<string, string>()\n private readonly testStepResultsbyTestStepId = new ArrayMultimap<\n string,\n messages.TestStepResult\n >()\n private readonly testStepIdsByPickleStepId = new ArrayMultimap<string, string>()\n private readonly hooksById = new Map<string, messages.Hook>()\n private readonly attachmentsByTestStepId = new ArrayMultimap<string, messages.Attachment>()\n private readonly stepMatchArgumentsListsByPickleStepId = new Map<\n string,\n readonly messages.StepMatchArgumentsList[]\n >()\n\n private meta: Meta\n private testRunStarted: TestRunStarted\n private testRunFinished: TestRunFinished\n private readonly testCaseStartedById: Map<string, TestCaseStarted> = new Map()\n private readonly lineageById: Map<string, Lineage> = new Map()\n private readonly stepById: Map<string, Step> = new Map()\n private readonly pickleById: Map<string, Pickle> = new Map()\n private readonly pickleStepById: Map<string, PickleStep> = new Map()\n private readonly testCaseById: Map<string, TestCase> = new Map()\n private readonly testStepById: Map<string, TestStep> = new Map()\n private readonly testCaseFinishedByTestCaseStartedId: Map<string, TestCaseFinished> = new Map()\n private readonly testStepStartedByTestCaseStartedId: ArrayMultimap<string, TestStepStarted> =\n new ArrayMultimap()\n private readonly testStepFinishedByTestCaseStartedId: ArrayMultimap<string, TestStepFinished> =\n new ArrayMultimap()\n private readonly attachmentsByTestCaseStartedId: ArrayMultimap<string, Attachment> =\n new ArrayMultimap()\n\n public update(envelope: messages.Envelope) {\n if (envelope.meta) {\n this.meta = envelope.meta\n }\n if (envelope.gherkinDocument) {\n this.updateGherkinDocument(envelope.gherkinDocument)\n }\n if (envelope.pickle) {\n this.updatePickle(envelope.pickle)\n }\n if (envelope.hook) {\n this.hooksById.set(envelope.hook.id, envelope.hook)\n }\n if (envelope.testRunStarted) {\n this.testRunStarted = envelope.testRunStarted\n }\n if (envelope.testCase) {\n this.updateTestCase(envelope.testCase)\n }\n if (envelope.testCaseStarted) {\n this.updateTestCaseStarted(envelope.testCaseStarted)\n }\n if (envelope.testStepStarted) {\n this.updateTestStepStarted(envelope.testStepStarted)\n }\n if (envelope.attachment) {\n this.updateAttachment(envelope.attachment)\n }\n if (envelope.testStepFinished) {\n this.updateTestStepFinished(envelope.testStepFinished)\n }\n if (envelope.testCaseFinished) {\n this.updateTestCaseFinished(envelope.testCaseFinished)\n }\n if (envelope.testRunFinished) {\n this.testRunFinished = envelope.testRunFinished\n }\n }\n\n private updateGherkinDocument(gherkinDocument: GherkinDocument) {\n if (gherkinDocument.feature) {\n this.updateFeature(gherkinDocument.feature, {\n gherkinDocument,\n })\n }\n }\n\n private updateFeature(feature: Feature, lineage: Lineage) {\n feature.children.forEach((featureChild) => {\n if (featureChild.background) {\n this.updateSteps(featureChild.background.steps)\n }\n if (featureChild.scenario) {\n this.updateScenario(featureChild.scenario, {\n ...lineage,\n feature,\n })\n }\n if (featureChild.rule) {\n this.updateRule(featureChild.rule, {\n ...lineage,\n feature,\n })\n }\n })\n }\n\n private updateRule(rule: Rule, lineage: Lineage) {\n rule.children.forEach((ruleChild) => {\n if (ruleChild.background) {\n this.updateSteps(ruleChild.background.steps)\n }\n if (ruleChild.scenario) {\n this.updateScenario(ruleChild.scenario, {\n ...lineage,\n rule,\n })\n }\n })\n }\n\n private updateScenario(scenario: Scenario, lineage: Lineage) {\n this.lineageById.set(scenario.id, {\n ...lineage,\n scenario,\n })\n scenario.examples.forEach((examples, examplesIndex) => {\n this.lineageById.set(examples.id, {\n ...lineage,\n scenario,\n examples,\n examplesIndex,\n })\n examples.tableBody.forEach((example, exampleIndex) => {\n this.lineageById.set(example.id, {\n ...lineage,\n scenario,\n examples,\n examplesIndex,\n example,\n exampleIndex,\n })\n })\n })\n this.updateSteps(scenario.steps)\n }\n\n private updateSteps(steps: ReadonlyArray<Step>) {\n steps.forEach((step) => this.stepById.set(step.id, step))\n }\n\n private updatePickle(pickle: Pickle) {\n this.pickleById.set(pickle.id, pickle)\n pickle.steps.forEach((pickleStep) => this.pickleStepById.set(pickleStep.id, pickleStep))\n }\n\n private updateTestCase(testCase: TestCase) {\n this.testCaseById.set(testCase.id, testCase)\n\n this.testCaseByPickleId.set(testCase.pickleId, testCase)\n testCase.testSteps.forEach((testStep) => {\n this.testStepById.set(testStep.id, testStep)\n this.pickleIdByTestStepId.set(testStep.id, testCase.pickleId)\n this.pickleStepIdByTestStepId.set(testStep.id, testStep.pickleStepId)\n this.testStepIdsByPickleStepId.put(testStep.pickleStepId, testStep.id)\n this.stepMatchArgumentsListsByPickleStepId.set(\n testStep.pickleStepId,\n testStep.stepMatchArgumentsLists\n )\n })\n }\n\n private updateTestCaseStarted(testCaseStarted: TestCaseStarted) {\n this.testCaseStartedById.set(testCaseStarted.id, testCaseStarted)\n\n /*\n when a test case attempt starts besides the first one, clear all existing results\n and attachments for that test case, so we always report on the latest attempt\n (applies to legacy pickle-oriented query methods only)\n */\n const testCase = this.testCaseById.get(testCaseStarted.testCaseId)\n if (testCase) {\n this.testStepResultByPickleId.delete(testCase.pickleId)\n for (const testStep of testCase.testSteps) {\n this.testStepResultsByPickleStepId.delete(testStep.pickleStepId)\n this.testStepResultsbyTestStepId.delete(testStep.id)\n this.attachmentsByTestStepId.delete(testStep.id)\n }\n }\n }\n\n private updateTestStepStarted(testStepStarted: TestStepStarted) {\n this.testStepStartedByTestCaseStartedId.put(testStepStarted.testCaseStartedId, testStepStarted)\n }\n\n private updateAttachment(attachment: Attachment) {\n if (attachment.testStepId) {\n this.attachmentsByTestStepId.put(attachment.testStepId, attachment)\n }\n if (attachment.testCaseStartedId) {\n this.attachmentsByTestCaseStartedId.put(attachment.testCaseStartedId, attachment)\n }\n }\n\n private updateTestStepFinished(testStepFinished: TestStepFinished) {\n this.testStepFinishedByTestCaseStartedId.put(\n testStepFinished.testCaseStartedId,\n testStepFinished\n )\n\n const pickleId = this.pickleIdByTestStepId.get(testStepFinished.testStepId)\n this.testStepResultByPickleId.put(pickleId, testStepFinished.testStepResult)\n const testStep = this.testStepById.get(testStepFinished.testStepId)\n this.testStepResultsByPickleStepId.put(testStep.pickleStepId, testStepFinished.testStepResult)\n this.testStepResultsbyTestStepId.put(testStep.id, testStepFinished.testStepResult)\n }\n\n private updateTestCaseFinished(testCaseFinished: TestCaseFinished) {\n this.testCaseFinishedByTestCaseStartedId.set(\n testCaseFinished.testCaseStartedId,\n testCaseFinished\n )\n }\n\n /**\n * Gets all the results for multiple pickle steps\n * @param pickleStepIds\n */\n public getPickleStepTestStepResults(\n pickleStepIds: readonly string[]\n ): readonly messages.TestStepResult[] {\n if (pickleStepIds.length === 0) {\n return [\n {\n status: messages.TestStepResultStatus.UNKNOWN,\n duration: messages.TimeConversion.millisecondsToDuration(0),\n },\n ]\n }\n return pickleStepIds.reduce((testStepResults: messages.TestStepResult[], pickleId) => {\n return testStepResults.concat(this.testStepResultsByPickleStepId.get(pickleId))\n }, [])\n }\n\n /**\n * Gets all the results for multiple pickles\n * @param pickleIds\n */\n public getPickleTestStepResults(\n pickleIds: readonly string[]\n ): readonly messages.TestStepResult[] {\n if (pickleIds.length === 0) {\n return [\n {\n status: messages.TestStepResultStatus.UNKNOWN,\n duration: messages.TimeConversion.millisecondsToDuration(0),\n },\n ]\n }\n return pickleIds.reduce((testStepResults: messages.TestStepResult[], pickleId) => {\n return testStepResults.concat(this.testStepResultByPickleId.get(pickleId))\n }, [])\n }\n\n /**\n * Gets all the attachments for multiple pickle steps\n * @param pickleStepIds\n */\n public getPickleStepAttachments(\n pickleStepIds: readonly string[]\n ): readonly messages.Attachment[] {\n return this.getTestStepsAttachments(\n pickleStepIds.reduce((testStepIds: string[], pickleStepId: string) => {\n return testStepIds.concat(this.testStepIdsByPickleStepId.get(pickleStepId))\n }, [])\n )\n }\n\n public getTestStepsAttachments(testStepIds: readonly string[]): readonly messages.Attachment[] {\n return testStepIds.reduce((attachments: messages.Attachment[], testStepId) => {\n return attachments.concat(this.attachmentsByTestStepId.get(testStepId))\n }, [])\n }\n\n /**\n * Get StepMatchArguments for a pickle step\n * @param pickleStepId\n */\n public getStepMatchArgumentsLists(\n pickleStepId: string\n ): readonly messages.StepMatchArgumentsList[] | undefined {\n return this.stepMatchArgumentsListsByPickleStepId.get(pickleStepId)\n }\n\n public getHook(hookId: string): messages.Hook {\n return this.hooksById.get(hookId)\n }\n\n public getBeforeHookSteps(pickleId: string): readonly messages.TestStep[] {\n const hookSteps: messages.TestStep[] = []\n\n this.identifyHookSteps(\n pickleId,\n (hook) => hookSteps.push(hook),\n () => null\n )\n return hookSteps\n }\n\n public getAfterHookSteps(pickleId: string): readonly messages.TestStep[] {\n const hookSteps: messages.TestStep[] = []\n\n this.identifyHookSteps(\n pickleId,\n () => null,\n (hook) => hookSteps.push(hook)\n )\n return hookSteps\n }\n\n private identifyHookSteps(\n pickleId: string,\n onBeforeHookFound: (hook: messages.TestStep) => void,\n onAfterHookFound: (hook: messages.TestStep) => void\n ): void {\n const testCase = this.testCaseByPickleId.get(pickleId)\n\n if (!testCase) {\n return\n }\n\n let pickleStepFound = false\n\n for (const step of testCase.testSteps) {\n if (step.hookId) {\n if (pickleStepFound) {\n onAfterHookFound(step)\n } else {\n onBeforeHookFound(step)\n }\n } else {\n pickleStepFound = true\n }\n }\n }\n\n public getTestStepResults(testStepId: string): messages.TestStepResult[] {\n return this.testStepResultsbyTestStepId.get(testStepId)\n }\n\n public getStatusCounts(\n pickleIds: readonly string[]\n ): Partial<Record<messages.TestStepResultStatus, number>> {\n const result: Partial<Record<messages.TestStepResultStatus, number>> = {}\n for (const pickleId of pickleIds) {\n const testStepResult = getWorstTestStepResult(this.getPickleTestStepResults([pickleId]))\n const count = result[testStepResult.status] || 0\n result[testStepResult.status] = count + 1\n }\n return result\n }\n\n /* new common interface with Java starts here */\n\n public countMostSevereTestStepResultStatus(): Record<TestStepResultStatus, number> {\n const result: Record<TestStepResultStatus, number> = {\n [TestStepResultStatus.AMBIGUOUS]: 0,\n [TestStepResultStatus.FAILED]: 0,\n [TestStepResultStatus.PASSED]: 0,\n [TestStepResultStatus.PENDING]: 0,\n [TestStepResultStatus.SKIPPED]: 0,\n [TestStepResultStatus.UNDEFINED]: 0,\n [TestStepResultStatus.UNKNOWN]: 0,\n }\n for (const testCaseStarted of this.findAllTestCaseStarted()) {\n const mostSevereResult = sortBy(\n this.findTestStepFinishedAndTestStepBy(testCaseStarted).map(\n ([testStepFinished]) => testStepFinished.testStepResult\n ),\n [(testStepResult) => statusOrdinal(testStepResult.status)]\n ).at(-1)\n if (mostSevereResult) {\n result[mostSevereResult.status]++\n }\n }\n return result\n }\n\n public countTestCasesStarted(): number {\n return this.findAllTestCaseStarted().length\n }\n\n public findAllPickles(): ReadonlyArray<Pickle> {\n const pickles = [...this.pickleById.values()]\n return sortBy(pickles, ['id'])\n }\n\n public findAllPickleSteps(): ReadonlyArray<PickleStep> {\n const pickleSteps = [...this.pickleStepById.values()]\n return sortBy(pickleSteps, ['id'])\n }\n\n public findAllTestCaseStarted(): ReadonlyArray<TestCaseStarted> {\n return sortBy(\n [...this.testCaseStartedById.values()].filter((testCaseStarted) => {\n const testCaseFinished = this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id)\n // only include if not yet finished OR won't be retried\n return !testCaseFinished?.willBeRetried\n }),\n [\n (testCaseStarted) =>\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseStarted.timestamp),\n 'id',\n ]\n )\n }\n\n public findAllTestCaseStartedGroupedByFeature(): Map<\n Feature | undefined,\n ReadonlyArray<TestCaseStarted>\n > {\n const results = new Map()\n sortBy(\n this.findAllTestCaseStarted().map(\n (testCaseStarted) => [this.findLineageBy(testCaseStarted), testCaseStarted] as const\n ),\n [([lineage]) => lineage.gherkinDocument.uri]\n ).forEach(([{ feature }, testCaseStarted]) => {\n results.set(feature, [...(results.get(feature) ?? []), testCaseStarted])\n })\n return results\n }\n\n public findAllTestSteps(): ReadonlyArray<TestStep> {\n const testSteps = [...this.testStepById.values()]\n return sortBy(testSteps, ['id'])\n }\n\n public findAttachmentsBy(testStepFinished: TestStepFinished): ReadonlyArray<Attachment> {\n return this.attachmentsByTestCaseStartedId\n .get(testStepFinished.testCaseStartedId)\n .filter((attachment) => attachment.testStepId === testStepFinished.testStepId)\n }\n\n public findFeatureBy(testCaseStarted: TestCaseStarted): Feature | undefined {\n return this.findLineageBy(testCaseStarted)?.feature\n }\n\n public findHookBy(testStep: TestStep): Hook | undefined {\n if (!testStep.hookId) {\n return undefined\n }\n return this.hooksById.get(testStep.hookId)\n }\n\n public findMeta(): Meta | undefined {\n return this.meta\n }\n\n public findMostSevereTestStepResultBy(\n testCaseStarted: TestCaseStarted\n ): TestStepResult | undefined {\n return sortBy(\n this.findTestStepFinishedAndTestStepBy(testCaseStarted).map(\n ([testStepFinished]) => testStepFinished.testStepResult\n ),\n [(testStepResult) => statusOrdinal(testStepResult.status)]\n ).at(-1)\n }\n\n public findNameOf(pickle: Pickle, namingStrategy: NamingStrategy): string {\n const lineage = this.findLineageBy(pickle)\n return lineage ? namingStrategy.reduce(lineage, pickle) : pickle.name\n }\n\n public findLocationOf(pickle: Pickle): Location | undefined {\n const lineage = this.findLineageBy(pickle)\n if (lineage?.example) {\n return lineage.example.location\n }\n return lineage?.scenario?.location\n }\n\n public findPickleBy(element: TestCaseStarted | TestStepStarted): Pickle | undefined {\n const testCase = this.findTestCaseBy(element)\n assert.ok(testCase, 'Expected to find TestCase from TestCaseStarted')\n return this.pickleById.get(testCase.pickleId)\n }\n\n public findPickleStepBy(testStep: TestStep): PickleStep | undefined {\n if (!testStep.pickleStepId) {\n return undefined\n }\n return this.pickleStepById.get(testStep.pickleStepId)\n }\n\n public findStepBy(pickleStep: PickleStep): Step | undefined {\n const [astNodeId] = pickleStep.astNodeIds\n assert.ok(astNodeId, 'Expected PickleStep to have an astNodeId')\n return this.stepById.get(astNodeId)\n }\n\n public findTestCaseBy(element: TestCaseStarted | TestStepStarted): TestCase | undefined {\n const testCaseStarted =\n 'testCaseStartedId' in element ? this.findTestCaseStartedBy(element) : element\n assert.ok(testCaseStarted, 'Expected to find TestCaseStarted by TestStepStarted')\n return this.testCaseById.get(testCaseStarted.testCaseId)\n }\n\n public findTestCaseDurationBy(testCaseStarted: TestCaseStarted): Duration | undefined {\n const testCaseFinished = this.findTestCaseFinishedBy(testCaseStarted)\n if (!testCaseFinished) {\n return undefined\n }\n return TimeConversion.millisecondsToDuration(\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseFinished.timestamp) -\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseStarted.timestamp)\n )\n }\n\n public findTestCaseStartedBy(testStepStarted: TestStepStarted): TestCaseStarted | undefined {\n return this.testCaseStartedById.get(testStepStarted.testCaseStartedId)\n }\n\n public findTestCaseFinishedBy(testCaseStarted: TestCaseStarted): TestCaseFinished | undefined {\n return this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id)\n }\n\n public findTestRunDuration(): Duration | undefined {\n if (!this.testRunStarted || !this.testRunFinished) {\n return undefined\n }\n return TimeConversion.millisecondsToDuration(\n TimeConversion.timestampToMillisecondsSinceEpoch(this.testRunFinished.timestamp) -\n TimeConversion.timestampToMillisecondsSinceEpoch(this.testRunStarted.timestamp)\n )\n }\n\n public findTestRunFinished(): TestRunFinished | undefined {\n return this.testRunFinished\n }\n\n public findTestRunStarted(): TestRunStarted | undefined {\n return this.testRunStarted\n }\n\n public findTestStepBy(element: TestStepStarted | TestStepFinished): TestStep | undefined {\n return this.testStepById.get(element.testStepId)\n }\n\n public findTestStepsStartedBy(testCaseStarted: TestCaseStarted): ReadonlyArray<TestStepStarted> {\n // multimaps `get` implements `getOrDefault([])` behaviour internally\n return [...this.testStepStartedByTestCaseStartedId.get(testCaseStarted.id)]\n }\n\n public findTestStepsFinishedBy(\n testCaseStarted: TestCaseStarted\n ): ReadonlyArray<TestStepFinished> {\n // multimaps `get` implements `getOrDefault([])` behaviour internally\n return [...this.testStepFinishedByTestCaseStartedId.get(testCaseStarted.id)]\n }\n\n public findTestStepFinishedAndTestStepBy(\n testCaseStarted: TestCaseStarted\n ): ReadonlyArray<[TestStepFinished, TestStep]> {\n return this.testStepFinishedByTestCaseStartedId\n .get(testCaseStarted.id)\n .map((testStepFinished) => {\n const testStep = this.findTestStepBy(testStepFinished)\n assert.ok(testStep, 'Expected to find TestStep by TestStepFinished')\n return [testStepFinished, testStep]\n })\n }\n\n public findLineageBy(element: Pickle | TestCaseStarted): Lineage | undefined {\n const pickle = 'testCaseId' in element ? this.findPickleBy(element) : element\n const deepestAstNodeId = pickle.astNodeIds.at(-1)\n assert.ok(deepestAstNodeId, 'Expected Pickle to have at least one astNodeId')\n return this.lineageById.get(deepestAstNodeId)\n }\n}\n"]}
|
package/dist/src/helpers.d.ts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
id: string | number;
|
|
4
|
-
}
|
|
5
|
-
export declare function comparatorById(a: WithId, b: WithId): 0 | 1 | -1;
|
|
6
|
-
export declare function comparatorBy(a: any, b: any, key: string): 0 | 1 | -1;
|
|
7
|
-
export declare function comparatorByStatus(a: TestStepResult, b: TestStepResult): 0 | 1 | -1;
|
|
1
|
+
import { TestStepResultStatus } from '@cucumber/messages';
|
|
2
|
+
export declare function statusOrdinal(status: TestStepResultStatus): number;
|
|
8
3
|
export declare const assert: {
|
|
9
4
|
ok(target: unknown, message: string): void;
|
|
10
5
|
};
|
|
11
|
-
export {};
|
|
12
6
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,wBAAgB,aAAa,CAAC,MAAM,EAAE,oBAAoB,UAUzD;AAED,eAAO,MAAM,MAAM;eACN,OAAO,WAAW,MAAM;CAKpC,CAAA"}
|
package/dist/src/helpers.js
CHANGED
|
@@ -1,32 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assert = void 0;
|
|
4
|
-
exports.
|
|
5
|
-
exports.comparatorBy = comparatorBy;
|
|
6
|
-
exports.comparatorByStatus = comparatorByStatus;
|
|
4
|
+
exports.statusOrdinal = statusOrdinal;
|
|
7
5
|
const messages_1 = require("@cucumber/messages");
|
|
8
|
-
function
|
|
9
|
-
return comparatorBy(a, b, "id");
|
|
10
|
-
}
|
|
11
|
-
function comparatorBy(a, b, key) {
|
|
12
|
-
if (a[key] < b[key]) {
|
|
13
|
-
return -1;
|
|
14
|
-
}
|
|
15
|
-
if (a[key] > b[key]) {
|
|
16
|
-
return 1;
|
|
17
|
-
}
|
|
18
|
-
return 0;
|
|
19
|
-
}
|
|
20
|
-
function comparatorByStatus(a, b) {
|
|
21
|
-
if (ordinal(a.status) < ordinal(b.status)) {
|
|
22
|
-
return -1;
|
|
23
|
-
}
|
|
24
|
-
if (ordinal(a.status) > ordinal(b.status)) {
|
|
25
|
-
return 1;
|
|
26
|
-
}
|
|
27
|
-
return 0;
|
|
28
|
-
}
|
|
29
|
-
function ordinal(status) {
|
|
6
|
+
function statusOrdinal(status) {
|
|
30
7
|
return [
|
|
31
8
|
messages_1.TestStepResultStatus.UNKNOWN,
|
|
32
9
|
messages_1.TestStepResultStatus.PASSED,
|
|
@@ -42,6 +19,6 @@ exports.assert = {
|
|
|
42
19
|
if (!target) {
|
|
43
20
|
throw new Error(message);
|
|
44
21
|
}
|
|
45
|
-
}
|
|
22
|
+
},
|
|
46
23
|
};
|
|
47
24
|
//# sourceMappingURL=helpers.js.map
|
package/dist/src/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";;;AAEA,sCAUC;AAZD,iDAAyD;AAEzD,SAAgB,aAAa,CAAC,MAA4B;IACxD,OAAO;QACL,+BAAoB,CAAC,OAAO;QAC5B,+BAAoB,CAAC,MAAM;QAC3B,+BAAoB,CAAC,OAAO;QAC5B,+BAAoB,CAAC,OAAO;QAC5B,+BAAoB,CAAC,SAAS;QAC9B,+BAAoB,CAAC,SAAS;QAC9B,+BAAoB,CAAC,MAAM;KAC5B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AACnB,CAAC;AAEY,QAAA,MAAM,GAAG;IACpB,EAAE,CAAC,MAAe,EAAE,OAAe;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;CACF,CAAA","sourcesContent":["import { TestStepResultStatus } from '@cucumber/messages'\n\nexport function statusOrdinal(status: TestStepResultStatus) {\n return [\n TestStepResultStatus.UNKNOWN,\n TestStepResultStatus.PASSED,\n TestStepResultStatus.SKIPPED,\n TestStepResultStatus.PENDING,\n TestStepResultStatus.UNDEFINED,\n TestStepResultStatus.AMBIGUOUS,\n TestStepResultStatus.FAILED,\n ].indexOf(status)\n}\n\nexport const assert = {\n ok(target: unknown, message: string) {\n if (!target) {\n throw new Error(message)\n }\n },\n}\n"]}
|