@lynxwall/cucumber-tsflow 6.4.0 → 6.5.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/README.md +105 -20
- package/lib/cucumber/binding-registry.d.ts +1 -0
- package/lib/cucumber/binding-registry.js +16 -1
- package/lib/cucumber/managed-scenario-context.d.ts +30 -1
- package/lib/cucumber/managed-scenario-context.js +62 -9
- package/lib/cucumber/message-collector.d.ts +1 -1
- package/lib/cucumber/message-collector.js +4 -5
- package/lib/cucumber/parallel/worker.js +2 -2
- package/lib/cucumber/test-case-runner.d.ts +48 -0
- package/lib/cucumber/test-case-runner.js +318 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -538,34 +538,89 @@ Like 'specflow', cucumber-tsflow supports a simple dependency injection framewor
|
|
|
538
538
|
|
|
539
539
|
Each scenario in a feature will get a new instance of the *Context* object when the steps associated with a scenario are executed. Hooks and steps used by the scenario will have access to the same instance of a "Scenario Context" during execution of the test steps. In addition, if steps of a scenario are implemented in separate bindings, those steps will still have access to the same instance of the *Context* object created for the scenario.
|
|
540
540
|
|
|
541
|
-
**
|
|
541
|
+
**Recent Updates:**
|
|
542
542
|
|
|
543
|
-
-
|
|
543
|
+
- versions >= 6.5.0
|
|
544
|
+
- Context classes now support an `initialize()` function that can be defined synchronous or asynchronous. The `initialize()` function is called after the `BeforeAll` hook and before any other hooks or steps. This provides the ability to initialize a scenario context before any tests are executed with support for async operations.
|
|
545
|
+
- Context classes have always supported a `dispose()` function for cleanup. However, with latest updates the `dispose()` function can be defined synchronously or asynchronously.
|
|
544
546
|
|
|
545
|
-
|
|
547
|
+
- versions >= 6.4.0
|
|
548
|
+
- The current Cucumber World object is now available as a constructor parameter on all classes defined for Context Injection. For more information on the World object see: [Access to Cucumber.js World object](#access-to-cucumber.js-world-object).
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
### Using Context Injection
|
|
552
|
+
|
|
553
|
+
With Context Injection you first need to define one or more classes that will be injected into a binding instance. Next, you'll need to add the context types to the `@binding` decorator and implement a constructor that passes initialized instances of the context type into the binding instance.
|
|
554
|
+
|
|
555
|
+
**Defining a Context class:**
|
|
546
556
|
|
|
547
557
|
- Create a simple *Context* class representing the shared data. The class can have no constructor or a default empty constructor. However, to access the Cucumber World object you should define a constructor as shown in the example below.
|
|
548
558
|
|
|
549
|
-
|
|
550
|
-
import { World } from '@cucumber/cucumber';
|
|
551
|
-
|
|
552
|
-
export class ScenarioContext {
|
|
553
|
-
public world: World;
|
|
554
|
-
public someValue = '';
|
|
555
|
-
|
|
556
|
-
constructor(worldObj: World) {
|
|
557
|
-
this.world = worldObj;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
public dispose(): void {
|
|
561
|
-
this.someValue = '';
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
```
|
|
559
|
+
**Synchronous example:**
|
|
565
560
|
|
|
566
|
-
|
|
561
|
+
```typescript
|
|
562
|
+
import { World } from '@cucumber/cucumber';
|
|
563
|
+
|
|
564
|
+
export class ScenarioContext {
|
|
565
|
+
public world: World;
|
|
566
|
+
public someValue = '';
|
|
567
|
+
private id: string = '';
|
|
568
|
+
|
|
569
|
+
constructor(worldObj: World) {
|
|
570
|
+
this.world = worldObj;
|
|
571
|
+
}
|
|
572
|
+
public initialize(): void {
|
|
573
|
+
this.id = this.makeid(5);
|
|
574
|
+
console.log(`Sync init: ${this.id}`);
|
|
575
|
+
}
|
|
576
|
+
public dispose(): void {
|
|
577
|
+
console.log(`Sync dispose: ${this.id}`);
|
|
578
|
+
}
|
|
579
|
+
makeid(length: number) {
|
|
580
|
+
...
|
|
581
|
+
return result;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
**Asynchronous example:**
|
|
587
|
+
|
|
588
|
+
```typescript
|
|
589
|
+
import { World } from '@cucumber/cucumber';
|
|
590
|
+
|
|
591
|
+
export class ScenarioContext {
|
|
592
|
+
public world: World;
|
|
593
|
+
public someValue = '';
|
|
594
|
+
private id: string = '';
|
|
595
|
+
|
|
596
|
+
constructor(worldObj: World) {
|
|
597
|
+
this.world = worldObj;
|
|
598
|
+
}
|
|
599
|
+
public async initialize(): Promise<void> {
|
|
600
|
+
this.id = this.makeid(5);
|
|
601
|
+
await this.logTest(`Async init: ${this.id}`);
|
|
602
|
+
}
|
|
603
|
+
public async dispose(): Promise<void> {
|
|
604
|
+
await this.logTest(`Async dispose: ${this.id}`);
|
|
605
|
+
}
|
|
606
|
+
async logTest(text: string): Promise<void> {
|
|
607
|
+
await Promise.resolve(console.log(text));
|
|
608
|
+
}
|
|
609
|
+
makeid(length: number) {
|
|
610
|
+
...
|
|
611
|
+
return result;
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
**Initialize Binding in Step class:**
|
|
567
619
|
|
|
568
620
|
- Update the `@binding()` decorator to indicate the types of context objects that are required by the 'binding' class. You can include up to nine separate *Context* objects.
|
|
621
|
+
- Define a constructor on the `@binding` class with steps that need access to the shared data that accepts one or more context objects as parameters based on initialization of the `@binding` decorator.
|
|
622
|
+
|
|
623
|
+
**Single Context class example:**
|
|
569
624
|
|
|
570
625
|
```typescript
|
|
571
626
|
import { binding, given, when } from '@lynxwall/cucumber-tsflow';
|
|
@@ -589,6 +644,36 @@ export default class InjectionTestSteps1 {
|
|
|
589
644
|
}
|
|
590
645
|
```
|
|
591
646
|
|
|
647
|
+
**Multiple Context classes example:**
|
|
648
|
+
|
|
649
|
+
```typescript
|
|
650
|
+
import { binding, given, when } from '@lynxwall/cucumber-tsflow';
|
|
651
|
+
import { ScenarioContext } from '../fixtures/scenario-context';
|
|
652
|
+
import { SyncContext } from '../fixtures/sync-context';
|
|
653
|
+
import { expect } from 'chai';
|
|
654
|
+
|
|
655
|
+
@binding([ScenarioContext, SyncContext])
|
|
656
|
+
export default class InjectionTestSteps1 {
|
|
657
|
+
constructor(private context: ScenarioContext, private syncContext: SyncContext) {}
|
|
658
|
+
|
|
659
|
+
@given('The Workspace is available and valid')
|
|
660
|
+
theWorkspaceIsAvailableAndValid() {
|
|
661
|
+
expect(this.context).not.to.be.undefined;
|
|
662
|
+
expect(this.context.world).not.to.be.undefined;
|
|
663
|
+
|
|
664
|
+
expect(this.syncContext).not.to.be.undefined;
|
|
665
|
+
expect(this.syncContext.world).not.to.be.undefined;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
@when('I change the workspace in one step definition class')
|
|
669
|
+
whenIChangeTheWorkspaceInOneStep() {
|
|
670
|
+
this.context.someValue = 'value changed';
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
592
677
|
### Access to Cucumber.js World object
|
|
593
678
|
|
|
594
679
|
The context object that you inject can also be configured to access the [World](https://github.com/cucumber/cucumber-js/blob/main/docs/support_files/world.md) object from Cucumber.js, which provides the following:
|
|
@@ -63,6 +63,7 @@ export declare class BindingRegistry {
|
|
|
63
63
|
* @returns An array of [[StepBinding]] that map to the given step pattern and set of tag names.
|
|
64
64
|
*/
|
|
65
65
|
getStepBindings(stepPattern: StepPattern, tags: TagName[]): StepBinding[];
|
|
66
|
+
getStepBindingByCucumberKey(cucumberKey: string): StepBinding | undefined;
|
|
66
67
|
/**
|
|
67
68
|
* Updates the SupportCodeLibrary from Cucumber with
|
|
68
69
|
* callsite information from tsflow bindings
|
|
@@ -152,6 +152,21 @@ class BindingRegistry {
|
|
|
152
152
|
}
|
|
153
153
|
return this.mapTagNamesToStepBindings(['*'], tagMap);
|
|
154
154
|
}
|
|
155
|
+
getStepBindingByCucumberKey(cucumberKey) {
|
|
156
|
+
let result = undefined;
|
|
157
|
+
for (const [_, binding] of this._targetBindings) {
|
|
158
|
+
for (const stepBinding of binding.stepBindings) {
|
|
159
|
+
if (stepBinding.cucumberKey === cucumberKey) {
|
|
160
|
+
result = stepBinding;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (result) {
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
155
170
|
/**
|
|
156
171
|
* Updates the SupportCodeLibrary from Cucumber with
|
|
157
172
|
* callsite information from tsflow bindings
|
|
@@ -213,4 +228,4 @@ class BindingRegistry {
|
|
|
213
228
|
}
|
|
214
229
|
}
|
|
215
230
|
exports.BindingRegistry = BindingRegistry;
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdWN1bWJlci9iaW5kaW5nLXJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLDREQUEyQjtBQUMzQix3REFBc0U7QUFrQnRFOztHQUVHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyxNQUFNLENBQUM7QUFFM0M7O0dBRUc7QUFDVSxRQUFBLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFFL0I7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFDbkIsU0FBUyxHQUFHLElBQUksR0FBRyxFQUE0QyxDQUFDO0lBQ2hFLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztJQUV4RDs7OztPQUlHO0lBQ0ksTUFBTSxLQUFLLFFBQVE7UUFDekIsTUFBTSx5QkFBeUIsR0FBRyxtQ0FBbUMsQ0FBQztRQUV0RSxNQUFNLFFBQVEsR0FBSSxNQUFjLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBYyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztTQUNuRTtRQUVELE9BQU8sUUFBUSxJQUFLLE1BQWMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksNkJBQTZCLENBQUMsZUFBb0IsRUFBRSxZQUE0QjtRQUN0RixJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2xCLE9BQU87U0FDUDtRQUVELElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3ZCLGlCQUFpQixHQUFHO2dCQUNuQixZQUFZLEVBQUUsRUFBRTtnQkFDaEIsWUFBWSxFQUFFLEVBQUU7YUFDaEIsQ0FBQztZQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsR0FB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
|
|
@@ -15,8 +15,37 @@ export declare class ManagedScenarioContext implements ScenarioContext {
|
|
|
15
15
|
*/
|
|
16
16
|
get scenarioInfo(): ScenarioInfo;
|
|
17
17
|
getOrActivateBindingClass(targetPrototype: any, contextTypes: ContextType[], worldObj: World): any;
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* If context objects are passed into our step, this function will
|
|
20
|
+
* call initialize on the context objects only once.
|
|
21
|
+
* Using Promise.resolve so that initialize can be synchronous or async.
|
|
22
|
+
*/
|
|
23
|
+
initialize(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* All objects support dispose, which is executed when a
|
|
26
|
+
* test run is ended. Using Promise.resolve to support
|
|
27
|
+
* synchronous or async functions.
|
|
28
|
+
*/
|
|
29
|
+
dispose(): Promise<void>;
|
|
19
30
|
private activateBindingClass;
|
|
31
|
+
/**
|
|
32
|
+
* Get or activate any object
|
|
33
|
+
*
|
|
34
|
+
* @param targetPrototype prototype for the object
|
|
35
|
+
* @param activatorFunc callback function used to create an instance of the object
|
|
36
|
+
* @param optional optional parameter passed into constructors
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
20
39
|
private getOrActivateObject;
|
|
40
|
+
/**
|
|
41
|
+
* Get or activate Context objects. Marks an object as a context
|
|
42
|
+
* object in ActiveInfo to let the system know it supports an initialize function.
|
|
43
|
+
*
|
|
44
|
+
* @param targetPrototype prototype for the object
|
|
45
|
+
* @param activatorFunc callback function used to create an instance of the object
|
|
46
|
+
* @param optional optional parameter passed into constructors
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
private getOrActivateContext;
|
|
21
50
|
}
|
|
22
51
|
export * from '../types/scenario-context';
|
|
@@ -20,6 +20,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
20
20
|
exports.ManagedScenarioContext = void 0;
|
|
21
21
|
const underscore_1 = __importDefault(require("underscore"));
|
|
22
22
|
const scenario_context_1 = require("../types/scenario-context");
|
|
23
|
+
class ActiveInfo {
|
|
24
|
+
constructor(obj, isContext = false) {
|
|
25
|
+
this.activeObject = obj;
|
|
26
|
+
this.isContext = isContext;
|
|
27
|
+
}
|
|
28
|
+
activeObject;
|
|
29
|
+
isContext;
|
|
30
|
+
initialized = false;
|
|
31
|
+
}
|
|
23
32
|
/**
|
|
24
33
|
* Represents a [[ScenarioContext]] implementation that manages a collection of context objects that
|
|
25
34
|
* are created and used by binding classes during a running Cucumber scenario.
|
|
@@ -42,12 +51,30 @@ class ManagedScenarioContext {
|
|
|
42
51
|
return this.activateBindingClass(targetPrototype, contextTypes, worldObj);
|
|
43
52
|
});
|
|
44
53
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
54
|
+
/**
|
|
55
|
+
* If context objects are passed into our step, this function will
|
|
56
|
+
* call initialize on the context objects only once.
|
|
57
|
+
* Using Promise.resolve so that initialize can be synchronous or async.
|
|
58
|
+
*/
|
|
59
|
+
async initialize() {
|
|
60
|
+
for (const [_key, value] of this._activeObjects) {
|
|
61
|
+
if (value.isContext && !value.initialized && typeof value.activeObject.initialize === 'function') {
|
|
62
|
+
await Promise.resolve(value.activeObject.initialize());
|
|
63
|
+
value.initialized = true;
|
|
49
64
|
}
|
|
50
|
-
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* All objects support dispose, which is executed when a
|
|
69
|
+
* test run is ended. Using Promise.resolve to support
|
|
70
|
+
* synchronous or async functions.
|
|
71
|
+
*/
|
|
72
|
+
async dispose() {
|
|
73
|
+
for (const [_key, value] of this._activeObjects) {
|
|
74
|
+
if (typeof value.activeObject.dispose === 'function') {
|
|
75
|
+
await Promise.resolve(value.activeObject.dispose());
|
|
76
|
+
}
|
|
77
|
+
}
|
|
51
78
|
}
|
|
52
79
|
activateBindingClass(targetPrototype, contextTypes, worldObj) {
|
|
53
80
|
const invokeBindingConstructor = (args) => {
|
|
@@ -76,21 +103,47 @@ class ManagedScenarioContext {
|
|
|
76
103
|
return new targetPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
|
|
77
104
|
}
|
|
78
105
|
};
|
|
79
|
-
const contextObjects = underscore_1.default.map(contextTypes, contextType => this.
|
|
106
|
+
const contextObjects = underscore_1.default.map(contextTypes, contextType => this.getOrActivateContext(contextType.prototype, (worldObj) => {
|
|
80
107
|
return new contextType(worldObj);
|
|
81
108
|
}, worldObj));
|
|
82
109
|
return invokeBindingConstructor(contextObjects);
|
|
83
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Get or activate any object
|
|
113
|
+
*
|
|
114
|
+
* @param targetPrototype prototype for the object
|
|
115
|
+
* @param activatorFunc callback function used to create an instance of the object
|
|
116
|
+
* @param optional optional parameter passed into constructors
|
|
117
|
+
* @returns
|
|
118
|
+
*/
|
|
84
119
|
getOrActivateObject(targetPrototype, activatorFunc, optional) {
|
|
85
|
-
let activeObject = this._activeObjects.get(targetPrototype);
|
|
120
|
+
let activeObject = this._activeObjects.get(targetPrototype)?.activeObject;
|
|
121
|
+
if (activeObject) {
|
|
122
|
+
return activeObject;
|
|
123
|
+
}
|
|
124
|
+
activeObject = activatorFunc(optional);
|
|
125
|
+
this._activeObjects.set(targetPrototype, new ActiveInfo(activeObject));
|
|
126
|
+
return activeObject;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get or activate Context objects. Marks an object as a context
|
|
130
|
+
* object in ActiveInfo to let the system know it supports an initialize function.
|
|
131
|
+
*
|
|
132
|
+
* @param targetPrototype prototype for the object
|
|
133
|
+
* @param activatorFunc callback function used to create an instance of the object
|
|
134
|
+
* @param optional optional parameter passed into constructors
|
|
135
|
+
* @returns
|
|
136
|
+
*/
|
|
137
|
+
getOrActivateContext(targetPrototype, activatorFunc, optional) {
|
|
138
|
+
let activeObject = this._activeObjects.get(targetPrototype)?.activeObject;
|
|
86
139
|
if (activeObject) {
|
|
87
140
|
return activeObject;
|
|
88
141
|
}
|
|
89
142
|
activeObject = activatorFunc(optional);
|
|
90
|
-
this._activeObjects.set(targetPrototype, activeObject);
|
|
143
|
+
this._activeObjects.set(targetPrototype, new ActiveInfo(activeObject, true));
|
|
91
144
|
return activeObject;
|
|
92
145
|
}
|
|
93
146
|
}
|
|
94
147
|
exports.ManagedScenarioContext = ManagedScenarioContext;
|
|
95
148
|
__exportStar(require("../types/scenario-context"), exports);
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1zY2VuYXJpby1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1Y3VtYmVyL21hbmFnZWQtc2NlbmFyaW8tY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDREQUEyQjtBQUUzQixnRUFBMEU7QUFJMUUsTUFBTSxVQUFVO0lBQ2YsWUFBWSxHQUFRLEVBQUUsWUFBcUIsS0FBSztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBQ0QsWUFBWSxDQUFNO0lBQ2xCLFNBQVMsQ0FBVTtJQUNuQixXQUFXLEdBQVksS0FBSyxDQUFDO0NBQzdCO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxzQkFBc0I7SUFDMUIsYUFBYSxDQUFlO0lBQzVCLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUVwRCxZQUFZLGFBQXFCLEVBQUUsSUFBYztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksK0JBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDM0IsQ0FBQztJQUVNLHlCQUF5QixDQUFDLGVBQW9CLEVBQUUsWUFBMkIsRUFBRSxRQUFlO1FBQ2xHLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7WUFDckQsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxF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
|
|
@@ -66,7 +66,7 @@ export default class MessageCollector {
|
|
|
66
66
|
* this message to dispose and clear the ScenarioContext
|
|
67
67
|
* @param testCaseFinished
|
|
68
68
|
*/
|
|
69
|
-
|
|
69
|
+
endTestCase(testCaseStartedId: string): Promise<void>;
|
|
70
70
|
/**
|
|
71
71
|
* Uses the testCaleId passed in to find the associated Pickle (scenario)
|
|
72
72
|
* @param testCaseId
|
|
@@ -122,7 +122,6 @@ class MessageCollector {
|
|
|
122
122
|
}
|
|
123
123
|
else if (envelope.testCaseFinished) {
|
|
124
124
|
this.storeTestCaseResult(envelope.testCaseFinished);
|
|
125
|
-
this.endTestCase(envelope.testCaseFinished);
|
|
126
125
|
}
|
|
127
126
|
}
|
|
128
127
|
initTestCaseAttempt(testCaseStarted) {
|
|
@@ -223,12 +222,12 @@ class MessageCollector {
|
|
|
223
222
|
* this message to dispose and clear the ScenarioContext
|
|
224
223
|
* @param testCaseFinished
|
|
225
224
|
*/
|
|
226
|
-
endTestCase(
|
|
227
|
-
const testCase = this.testCaseRunningMap[
|
|
225
|
+
async endTestCase(testCaseStartedId) {
|
|
226
|
+
const testCase = this.testCaseRunningMap[testCaseStartedId];
|
|
228
227
|
if (testCase) {
|
|
229
228
|
const scenario = this.getScenarioForTest(testCase.testCaseId);
|
|
230
229
|
if (scenario && scenario.scenarioContext) {
|
|
231
|
-
scenario.scenarioContext.dispose();
|
|
230
|
+
await scenario.scenarioContext.dispose();
|
|
232
231
|
scenario.scenarioContext = undefined;
|
|
233
232
|
}
|
|
234
233
|
}
|
|
@@ -256,4 +255,4 @@ class MessageCollector {
|
|
|
256
255
|
}
|
|
257
256
|
}
|
|
258
257
|
exports.default = MessageCollector;
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1jb2xsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvbWVzc2FnZS1jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUErQztBQUMvQyx3RUFBd0U7QUFFeEUseUVBQW9FO0FBQ3BFLG1DQUEyRDtBQUMzRCw4Q0FBa0Q7QUFDbEQsaURBQTBEO0FBQzFELG9EQUFrQztBQTBCbEM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBcUIsZ0JBQWdCO0lBQzVCLGtCQUFrQixHQUE2QyxFQUFFLENBQUM7SUFDbEUsU0FBUyxHQUFvQyxFQUFFLENBQUM7SUFDaEQsV0FBVyxHQUFzQyxFQUFFLENBQUM7SUFDcEQsc0JBQXNCLEdBQXlDLEVBQUUsQ0FBQztJQUNqRSx1QkFBdUIsR0FBc0MsRUFBRSxDQUFDO0lBQ2pFLGtCQUFrQixHQUE2QyxFQUFFLENBQUM7SUFFbEUsZUFBZSxHQUFHLElBQUksZ0JBQVksRUFBRSxDQUFDO0lBRTdDLGFBQWEsQ0FBQyxPQUE4RDtRQUMzRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxtREFBbUQ7SUFDbkQsb0JBQW9CLENBQUMsTUFBdUIsRUFBRSxRQUEyQjtRQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXO1FBQ1YsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFD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
|
|
@@ -9,7 +9,7 @@ const url_1 = require("url");
|
|
|
9
9
|
const index_1 = __importDefault(require("@cucumber/cucumber/lib/support_code_library_builder/index"));
|
|
10
10
|
const run_test_run_hooks_1 = require("@cucumber/cucumber/lib/runtime/run_test_run_hooks");
|
|
11
11
|
const stopwatch_1 = require("@cucumber/cucumber/lib/runtime/stopwatch");
|
|
12
|
-
const test_case_runner_1 = __importDefault(require("
|
|
12
|
+
const test_case_runner_1 = __importDefault(require("../test-case-runner"));
|
|
13
13
|
const message_collector_1 = __importDefault(require("../message-collector"));
|
|
14
14
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
15
15
|
const { importer } = require('@cucumber/cucumber/lib/importer');
|
|
@@ -101,4 +101,4 @@ class Worker {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
exports.default = Worker;
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1Y3VtYmVyL3BhcmFsbGVsL3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLGlEQUFpRDtBQUNqRCxtQ0FBc0M7QUFDdEMsNkJBQW9DO0FBQ3BDLHNHQUFrRztBQUVsRywwRkFBMEc7QUFDMUcsd0VBQWtFO0FBQ2xFLDJFQUFpRDtBQU9qRCw2RUFBb0Q7QUFFcEQsOERBQThEO0FBQzlELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUNoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsc0JBQVcsQ0FBQztBQUs3Qjs7O0dBR0c7QUFDSCxNQUFxQixNQUFNO0lBQ1QsR0FBRyxDQUFTO0lBQ1osSUFBSSxDQUFnQjtJQUVwQixFQUFFLENBQVM7SUFDWCxnQkFBZ0IsQ0FBZTtJQUN4QyxpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDMUIsS0FBSyxDQUFvQjtJQUN6QixXQUFXLENBQWlCO0lBQ3JDLGtCQUFrQixDQUF1QjtJQUN6QyxlQUFlLENBQU07SUFDckIsZUFBZSxDQUFvQjtJQUUzQyxZQUFZLEVBQ1gsR0FBRyxFQUNILElBQUksRUFDSixFQUFFLEVBQ0YsV0FBVyxFQU1YO1FBQ0EsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUkscUJBQVksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBMkIs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
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { INewTestCaseRunnerOptions } from '@cucumber/cucumber/lib/runtime/test_case_runner';
|
|
2
|
+
import * as messages from '@cucumber/messages';
|
|
3
|
+
import { ITestCaseHookParameter } from '@cucumber/cucumber/lib/support_code_library_builder/types';
|
|
4
|
+
import TestCaseHookDefinition from '@cucumber/cucumber/lib/models/test_case_hook_definition';
|
|
5
|
+
import TestStepHookDefinition from '@cucumber/cucumber/lib/models/test_step_hook_definition';
|
|
6
|
+
import { IDefinition } from '@cucumber/cucumber/lib/models/definition';
|
|
7
|
+
import { StepBinding } from '../types/step-binding';
|
|
8
|
+
import { ManagedScenarioContext } from './managed-scenario-context';
|
|
9
|
+
export default class TestCaseRunner {
|
|
10
|
+
private readonly attachmentManager;
|
|
11
|
+
private currentTestCaseStartedId?;
|
|
12
|
+
private currentTestStepId?;
|
|
13
|
+
private readonly eventBroadcaster;
|
|
14
|
+
private readonly stopwatch;
|
|
15
|
+
private readonly gherkinDocument;
|
|
16
|
+
private readonly newId;
|
|
17
|
+
private readonly pickle;
|
|
18
|
+
private readonly testCase;
|
|
19
|
+
private readonly maxAttempts;
|
|
20
|
+
private readonly skip;
|
|
21
|
+
private readonly filterStackTraces;
|
|
22
|
+
private readonly supportCodeLibrary;
|
|
23
|
+
private testStepResults?;
|
|
24
|
+
private world;
|
|
25
|
+
private readonly worldParameters;
|
|
26
|
+
private bindingRegistry;
|
|
27
|
+
constructor({ eventBroadcaster, stopwatch, gherkinDocument, newId, pickle, testCase, retries, skip, filterStackTraces, supportCodeLibrary, worldParameters }: INewTestCaseRunnerOptions);
|
|
28
|
+
resetTestProgressData(): void;
|
|
29
|
+
getBeforeStepHookDefinitions(): TestStepHookDefinition[];
|
|
30
|
+
getAfterStepHookDefinitions(): TestStepHookDefinition[];
|
|
31
|
+
getWorstStepResult(): messages.TestStepResult;
|
|
32
|
+
invokeStep(stepParam: messages.PickleStep | null, stepDefinition: IDefinition, hookParameter?: any): Promise<messages.TestStepResult>;
|
|
33
|
+
isSkippingSteps(): boolean;
|
|
34
|
+
shouldSkipHook(isBeforeHook: boolean): boolean;
|
|
35
|
+
aroundTestStep(testStepId: string, runStepFn: () => Promise<messages.TestStepResult>): Promise<void>;
|
|
36
|
+
run(): Promise<messages.TestStepResultStatus>;
|
|
37
|
+
runAttempt(attempt: number, moreAttemptsRemaining: boolean): Promise<boolean>;
|
|
38
|
+
runHook(hookDefinition: TestCaseHookDefinition, hookParameter: ITestCaseHookParameter, isBeforeHook: boolean): Promise<messages.TestStepResult>;
|
|
39
|
+
runStepHooks(stepHooks: TestStepHookDefinition[], pickleStep: messages.PickleStep, stepResult?: messages.TestStepResult): Promise<messages.TestStepResult[]>;
|
|
40
|
+
runStep(pickleStep: messages.PickleStep, testStep: messages.TestStep): Promise<messages.TestStepResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Helper used to initialize any context types that are passed into
|
|
43
|
+
* a binding class before any hooks or steps are executed.
|
|
44
|
+
* @param stepBinding
|
|
45
|
+
* @param scenarioContext
|
|
46
|
+
*/
|
|
47
|
+
initializeContext(stepBinding: StepBinding, scenarioContext: ManagedScenarioContext): Promise<void>;
|
|
48
|
+
}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const helpers_1 = require("@cucumber/cucumber/lib/runtime/helpers");
|
|
30
|
+
const index_1 = __importDefault(require("@cucumber/cucumber/lib/runtime/attachment_manager/index"));
|
|
31
|
+
const step_runner_1 = __importDefault(require("@cucumber/cucumber/lib/runtime/step_runner"));
|
|
32
|
+
const messages = __importStar(require("@cucumber/messages"));
|
|
33
|
+
const messages_1 = require("@cucumber/messages");
|
|
34
|
+
const value_checker_1 = require("@cucumber/cucumber/lib/value_checker");
|
|
35
|
+
const binding_registry_1 = require("./binding-registry");
|
|
36
|
+
const console_1 = require("console");
|
|
37
|
+
class TestCaseRunner {
|
|
38
|
+
attachmentManager;
|
|
39
|
+
currentTestCaseStartedId;
|
|
40
|
+
currentTestStepId;
|
|
41
|
+
eventBroadcaster;
|
|
42
|
+
stopwatch;
|
|
43
|
+
gherkinDocument;
|
|
44
|
+
newId;
|
|
45
|
+
pickle;
|
|
46
|
+
testCase;
|
|
47
|
+
maxAttempts;
|
|
48
|
+
skip;
|
|
49
|
+
filterStackTraces;
|
|
50
|
+
supportCodeLibrary;
|
|
51
|
+
testStepResults;
|
|
52
|
+
world;
|
|
53
|
+
worldParameters;
|
|
54
|
+
bindingRegistry;
|
|
55
|
+
constructor({ eventBroadcaster, stopwatch, gherkinDocument, newId, pickle, testCase, retries = 0, skip, filterStackTraces, supportCodeLibrary, worldParameters }) {
|
|
56
|
+
this.attachmentManager = new index_1.default(({ data, media, fileName }) => {
|
|
57
|
+
if ((0, value_checker_1.doesNotHaveValue)(this.currentTestStepId)) {
|
|
58
|
+
throw new Error('Cannot attach when a step/hook is not running. Ensure your step/hook waits for the attach to finish.');
|
|
59
|
+
}
|
|
60
|
+
const attachment = {
|
|
61
|
+
attachment: {
|
|
62
|
+
body: data,
|
|
63
|
+
contentEncoding: media.encoding,
|
|
64
|
+
mediaType: media.contentType,
|
|
65
|
+
fileName,
|
|
66
|
+
testCaseStartedId: this.currentTestCaseStartedId,
|
|
67
|
+
testStepId: this.currentTestStepId
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
this.eventBroadcaster.emit('envelope', attachment);
|
|
71
|
+
});
|
|
72
|
+
this.eventBroadcaster = eventBroadcaster;
|
|
73
|
+
this.stopwatch = stopwatch;
|
|
74
|
+
this.gherkinDocument = gherkinDocument;
|
|
75
|
+
this.maxAttempts = 1 + (skip ? 0 : retries);
|
|
76
|
+
this.newId = newId;
|
|
77
|
+
this.pickle = pickle;
|
|
78
|
+
this.testCase = testCase;
|
|
79
|
+
this.skip = skip;
|
|
80
|
+
this.filterStackTraces = filterStackTraces;
|
|
81
|
+
this.supportCodeLibrary = supportCodeLibrary;
|
|
82
|
+
this.worldParameters = worldParameters;
|
|
83
|
+
this.resetTestProgressData();
|
|
84
|
+
this.bindingRegistry = binding_registry_1.BindingRegistry.instance;
|
|
85
|
+
}
|
|
86
|
+
resetTestProgressData() {
|
|
87
|
+
this.world = new this.supportCodeLibrary.World({
|
|
88
|
+
attach: this.attachmentManager.create.bind(this.attachmentManager),
|
|
89
|
+
log: this.attachmentManager.log.bind(this.attachmentManager),
|
|
90
|
+
parameters: this.worldParameters
|
|
91
|
+
});
|
|
92
|
+
this.testStepResults = [];
|
|
93
|
+
}
|
|
94
|
+
getBeforeStepHookDefinitions() {
|
|
95
|
+
return this.supportCodeLibrary.beforeTestStepHookDefinitions.filter(hookDefinition => hookDefinition.appliesToTestCase(this.pickle));
|
|
96
|
+
}
|
|
97
|
+
getAfterStepHookDefinitions() {
|
|
98
|
+
return this.supportCodeLibrary.afterTestStepHookDefinitions
|
|
99
|
+
.slice(0)
|
|
100
|
+
.reverse()
|
|
101
|
+
.filter(hookDefinition => hookDefinition.appliesToTestCase(this.pickle));
|
|
102
|
+
}
|
|
103
|
+
getWorstStepResult() {
|
|
104
|
+
if (!this.testStepResults || this.testStepResults.length === 0) {
|
|
105
|
+
return {
|
|
106
|
+
status: this.skip ? messages.TestStepResultStatus.SKIPPED : messages.TestStepResultStatus.PASSED,
|
|
107
|
+
duration: messages.TimeConversion.millisecondsToDuration(0)
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return (0, messages_1.getWorstTestStepResult)(this.testStepResults);
|
|
111
|
+
}
|
|
112
|
+
async invokeStep(stepParam, stepDefinition, hookParameter) {
|
|
113
|
+
const step = stepParam;
|
|
114
|
+
return await step_runner_1.default.run({
|
|
115
|
+
defaultTimeout: this.supportCodeLibrary.defaultTimeout,
|
|
116
|
+
filterStackTraces: this.filterStackTraces,
|
|
117
|
+
hookParameter,
|
|
118
|
+
step,
|
|
119
|
+
stepDefinition,
|
|
120
|
+
world: this.world
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
isSkippingSteps() {
|
|
124
|
+
return this.getWorstStepResult().status !== messages.TestStepResultStatus.PASSED;
|
|
125
|
+
}
|
|
126
|
+
shouldSkipHook(isBeforeHook) {
|
|
127
|
+
return this.skip || (this.isSkippingSteps() && isBeforeHook);
|
|
128
|
+
}
|
|
129
|
+
async aroundTestStep(testStepId, runStepFn) {
|
|
130
|
+
const testStepStarted = {
|
|
131
|
+
testStepStarted: {
|
|
132
|
+
testCaseStartedId: this.currentTestCaseStartedId,
|
|
133
|
+
testStepId,
|
|
134
|
+
timestamp: this.stopwatch.timestamp()
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
this.eventBroadcaster.emit('envelope', testStepStarted);
|
|
138
|
+
this.currentTestStepId = testStepId;
|
|
139
|
+
const testStepResult = await runStepFn();
|
|
140
|
+
this.currentTestStepId = undefined;
|
|
141
|
+
this.testStepResults?.push(testStepResult);
|
|
142
|
+
const testStepFinished = {
|
|
143
|
+
testStepFinished: {
|
|
144
|
+
testCaseStartedId: this.currentTestCaseStartedId,
|
|
145
|
+
testStepId,
|
|
146
|
+
testStepResult,
|
|
147
|
+
timestamp: this.stopwatch.timestamp()
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
this.eventBroadcaster.emit('envelope', testStepFinished);
|
|
151
|
+
}
|
|
152
|
+
async run() {
|
|
153
|
+
for (let attempt = 0; attempt < this.maxAttempts; attempt++) {
|
|
154
|
+
const moreAttemptsRemaining = attempt + 1 < this.maxAttempts;
|
|
155
|
+
const willBeRetried = await this.runAttempt(attempt, moreAttemptsRemaining);
|
|
156
|
+
if (!willBeRetried) {
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
this.resetTestProgressData();
|
|
160
|
+
}
|
|
161
|
+
return this.getWorstStepResult().status;
|
|
162
|
+
}
|
|
163
|
+
async runAttempt(attempt, moreAttemptsRemaining) {
|
|
164
|
+
this.currentTestCaseStartedId = this.newId();
|
|
165
|
+
const testCaseStarted = {
|
|
166
|
+
testCaseStarted: {
|
|
167
|
+
attempt,
|
|
168
|
+
testCaseId: this.testCase.id,
|
|
169
|
+
id: this.currentTestCaseStartedId,
|
|
170
|
+
timestamp: this.stopwatch.timestamp()
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
this.eventBroadcaster.emit('envelope', testCaseStarted);
|
|
174
|
+
// used to determine whether a hook is a Before or After
|
|
175
|
+
let didWeRunStepsYet = false;
|
|
176
|
+
for (const testStep of this.testCase.testSteps) {
|
|
177
|
+
await this.aroundTestStep(testStep.id, async () => {
|
|
178
|
+
if ((0, value_checker_1.doesHaveValue)(testStep.hookId)) {
|
|
179
|
+
const hookParameter = {
|
|
180
|
+
gherkinDocument: this.gherkinDocument,
|
|
181
|
+
pickle: this.pickle,
|
|
182
|
+
testCaseStartedId: this.currentTestCaseStartedId
|
|
183
|
+
};
|
|
184
|
+
if (didWeRunStepsYet) {
|
|
185
|
+
hookParameter.result = this.getWorstStepResult();
|
|
186
|
+
hookParameter.willBeRetried =
|
|
187
|
+
this.getWorstStepResult().status === messages.TestStepResultStatus.FAILED && moreAttemptsRemaining;
|
|
188
|
+
}
|
|
189
|
+
return await this.runHook(findHookDefinition(testStep.hookId, this.supportCodeLibrary), hookParameter, !didWeRunStepsYet);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
const pickleStep = this.pickle.steps.find(pickleStep => pickleStep.id === testStep.pickleStepId);
|
|
193
|
+
const testStepResult = await this.runStep(pickleStep, testStep);
|
|
194
|
+
didWeRunStepsYet = true;
|
|
195
|
+
return testStepResult;
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
// End test case will call dispose on all context types
|
|
200
|
+
// passed into a binding and then end the context.
|
|
201
|
+
await global.messageCollector.endTestCase(this.currentTestCaseStartedId);
|
|
202
|
+
const willBeRetried = this.getWorstStepResult().status === messages.TestStepResultStatus.FAILED && moreAttemptsRemaining;
|
|
203
|
+
const testCaseFinished = {
|
|
204
|
+
testCaseFinished: {
|
|
205
|
+
testCaseStartedId: this.currentTestCaseStartedId,
|
|
206
|
+
timestamp: this.stopwatch.timestamp(),
|
|
207
|
+
willBeRetried
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
this.eventBroadcaster.emit('envelope', testCaseFinished);
|
|
211
|
+
return willBeRetried;
|
|
212
|
+
}
|
|
213
|
+
async runHook(hookDefinition, hookParameter, isBeforeHook) {
|
|
214
|
+
if (this.shouldSkipHook(isBeforeHook)) {
|
|
215
|
+
return {
|
|
216
|
+
status: messages.TestStepResultStatus.SKIPPED,
|
|
217
|
+
duration: messages.TimeConversion.millisecondsToDuration(0)
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
// Get the step binding and scenario context so that we can
|
|
221
|
+
// initialize any context objects before hooks are executed
|
|
222
|
+
const stepBinding = this.bindingRegistry.getStepBindingByCucumberKey(hookDefinition.options.cucumberKey);
|
|
223
|
+
if (!stepBinding)
|
|
224
|
+
throw (0, console_1.error)('Unable to find StepBinding!');
|
|
225
|
+
const scenarioContext = global.messageCollector.getHookScenarioContext(hookParameter);
|
|
226
|
+
if (!scenarioContext)
|
|
227
|
+
throw (0, console_1.error)('Unable to find the ManagedScenarioContext!');
|
|
228
|
+
await this.initializeContext(stepBinding, scenarioContext);
|
|
229
|
+
return await this.invokeStep(null, hookDefinition, hookParameter);
|
|
230
|
+
}
|
|
231
|
+
async runStepHooks(stepHooks, pickleStep, stepResult) {
|
|
232
|
+
const stepHooksResult = [];
|
|
233
|
+
const hookParameter = {
|
|
234
|
+
gherkinDocument: this.gherkinDocument,
|
|
235
|
+
pickle: this.pickle,
|
|
236
|
+
pickleStep,
|
|
237
|
+
testCaseStartedId: this.currentTestCaseStartedId,
|
|
238
|
+
testStepId: this.currentTestStepId,
|
|
239
|
+
result: stepResult
|
|
240
|
+
};
|
|
241
|
+
for (const stepHookDefinition of stepHooks) {
|
|
242
|
+
stepHooksResult.push(await this.invokeStep(null, stepHookDefinition, hookParameter));
|
|
243
|
+
}
|
|
244
|
+
return stepHooksResult;
|
|
245
|
+
}
|
|
246
|
+
async runStep(pickleStep, testStep) {
|
|
247
|
+
const stepDefinitions = testStep.stepDefinitionIds?.map(stepDefinitionId => {
|
|
248
|
+
return findStepDefinition(stepDefinitionId, this.supportCodeLibrary);
|
|
249
|
+
});
|
|
250
|
+
if (!stepDefinitions || stepDefinitions.length === 0) {
|
|
251
|
+
return {
|
|
252
|
+
status: messages.TestStepResultStatus.UNDEFINED,
|
|
253
|
+
duration: messages.TimeConversion.millisecondsToDuration(0)
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
else if (stepDefinitions.length > 1) {
|
|
257
|
+
return {
|
|
258
|
+
message: (0, helpers_1.getAmbiguousStepException)(stepDefinitions),
|
|
259
|
+
status: messages.TestStepResultStatus.AMBIGUOUS,
|
|
260
|
+
duration: messages.TimeConversion.millisecondsToDuration(0)
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
else if (this.isSkippingSteps()) {
|
|
264
|
+
return {
|
|
265
|
+
status: messages.TestStepResultStatus.SKIPPED,
|
|
266
|
+
duration: messages.TimeConversion.millisecondsToDuration(0)
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
// Get the step binding and scenario context so that we can
|
|
270
|
+
// initialize any context objects before hooks are executed
|
|
271
|
+
const stepBinding = this.bindingRegistry.getStepBindingByCucumberKey(stepDefinitions[0].options.cucumberKey);
|
|
272
|
+
if (!stepBinding)
|
|
273
|
+
throw (0, console_1.error)('Unable to find StepBinding!');
|
|
274
|
+
const scenarioContext = global.messageCollector.getStepScenarioContext(stepBinding);
|
|
275
|
+
if (!scenarioContext)
|
|
276
|
+
throw (0, console_1.error)('Unable to find the ManagedScenarioContext!');
|
|
277
|
+
await this.initializeContext(stepBinding, scenarioContext);
|
|
278
|
+
// next execute any before step hooks followed by the step if there are no
|
|
279
|
+
// failures in before step hooks.
|
|
280
|
+
let stepResult;
|
|
281
|
+
let stepResults = await this.runStepHooks(this.getBeforeStepHookDefinitions(), pickleStep);
|
|
282
|
+
if ((0, messages_1.getWorstTestStepResult)(stepResults).status !== messages.TestStepResultStatus.FAILED) {
|
|
283
|
+
stepResult = await this.invokeStep(pickleStep, stepDefinitions[0]);
|
|
284
|
+
stepResults.push(stepResult);
|
|
285
|
+
}
|
|
286
|
+
// run the after step hooks
|
|
287
|
+
const afterStepHookResults = await this.runStepHooks(this.getAfterStepHookDefinitions(), pickleStep, stepResult);
|
|
288
|
+
stepResults = stepResults.concat(afterStepHookResults);
|
|
289
|
+
const finalStepResult = (0, messages_1.getWorstTestStepResult)(stepResults);
|
|
290
|
+
let finalDuration = messages.TimeConversion.millisecondsToDuration(0);
|
|
291
|
+
for (const result of stepResults) {
|
|
292
|
+
finalDuration = messages.TimeConversion.addDurations(finalDuration, result.duration);
|
|
293
|
+
}
|
|
294
|
+
finalStepResult.duration = finalDuration;
|
|
295
|
+
return finalStepResult;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Helper used to initialize any context types that are passed into
|
|
299
|
+
* a binding class before any hooks or steps are executed.
|
|
300
|
+
* @param stepBinding
|
|
301
|
+
* @param scenarioContext
|
|
302
|
+
*/
|
|
303
|
+
async initializeContext(stepBinding, scenarioContext) {
|
|
304
|
+
const contextTypes = this.bindingRegistry.getContextTypesForTarget(stepBinding.targetPrototype);
|
|
305
|
+
if (contextTypes.length > 0) {
|
|
306
|
+
scenarioContext.getOrActivateBindingClass(stepBinding.targetPrototype, contextTypes, this.world);
|
|
307
|
+
await scenarioContext.initialize();
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
exports.default = TestCaseRunner;
|
|
312
|
+
function findHookDefinition(id, supportCodeLibrary) {
|
|
313
|
+
return [...supportCodeLibrary.beforeTestCaseHookDefinitions, ...supportCodeLibrary.afterTestCaseHookDefinitions].find(definition => definition.id === id);
|
|
314
|
+
}
|
|
315
|
+
function findStepDefinition(id, supportCodeLibrary) {
|
|
316
|
+
return supportCodeLibrary.stepDefinitions.find(definition => definition.id === id);
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdWN1bWJlci90ZXN0LWNhc2UtcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvRUFBbUY7QUFFbkYsb0dBQXdGO0FBQ3hGLDZGQUFvRTtBQUNwRSw2REFBK0M7QUFDL0MsaURBQXlFO0FBVXpFLHdFQUF1RjtBQUd2Rix5REFBcUQ7QUFHckQscUNBQWdDO0FBRWhDLE1BQXFCLGNBQWM7SUFDakIsaUJBQWlCLENBQW9CO0lBQzlDLHdCQUF3QixDQUFVO0lBQ2xDLGlCQUFpQixDQUFVO0lBQ2xCLGdCQUFnQixDQUFlO0lBQy9CLFNBQVMsQ0FBYTtJQUN0QixlQUFlLENBQTJCO0lBQzFDLEtBQUssQ0FBb0I7SUFDekIsTUFBTSxDQUFrQjtJQUN4QixRQUFRLENBQW9CO0lBQzVCLFdBQVcsQ0FBUztJQUNwQixJQUFJLENBQVU7SUFDZCxpQkFBaUIsQ0FBVTtJQUMzQixrQkFBa0IsQ0FBc0I7SUFDakQsZUFBZSxDQUE2QjtJQUM1QyxLQUFLLENBQU07SUFDRixlQUFlLENBQU07SUFDOUIsZUFBZSxDQUFrQjtJQUV6QyxZQUFZLEVBQ1gsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxHQUFHLENBQUMsRUFDWCxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixlQUFlLEVBQ1k7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksZUFBaUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1lBQzVFLElBQUksSUFBQSxnQ0FBZ0IsRUFBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxJQUFJLEtBQUssQ0FDZCxzR0FBc0cs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
|
package/lib/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "6.
|
|
1
|
+
export declare const version = "6.5.0";
|
package/lib/version.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.version = void 0;
|
|
4
4
|
// Generated by genversion.
|
|
5
|
-
exports.version = '6.
|
|
5
|
+
exports.version = '6.5.0';
|
|
6
6
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUEyQjtBQUNkLFFBQUEsT0FBTyxHQUFHLE9BQU8sQ0FBQSJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lynxwall/cucumber-tsflow",
|
|
3
|
-
"description": "Provides 'specflow' like bindings for CucumberJS 9.
|
|
4
|
-
"version": "6.
|
|
3
|
+
"description": "Provides 'specflow' like bindings for CucumberJS 9.6.0+ in TypeScript 5.0+.",
|
|
4
|
+
"version": "6.5.0",
|
|
5
5
|
"author": "Lonnie Wall <lynxdev@lynxwall.com>",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "./lib/index",
|