@lynxwall/cucumber-tsflow 5.0.8 → 5.1.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 +2 -1
- package/lib/cli/index.js +7 -6
- package/lib/cucumber/binding-decorator.js +4 -5
- package/lib/cucumber/message-collector.d.ts +34 -9
- package/lib/cucumber/message-collector.js +133 -25
- package/lib/cucumber/parallel/coordinator.d.ts +77 -0
- package/lib/cucumber/parallel/coordinator.js +228 -0
- package/lib/cucumber/parallel/run-worker.d.ts +1 -0
- package/lib/cucumber/parallel/run-worker.js +32 -0
- package/lib/cucumber/parallel/worker.d.ts +31 -0
- package/lib/cucumber/parallel/worker.js +104 -0
- package/lib/cucumber/run-cucumber.d.ts +14 -0
- package/lib/cucumber/run-cucumber.js +118 -0
- package/lib/cucumber/runtime.d.ts +24 -0
- package/lib/cucumber/runtime.js +40 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +15 -14
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# cucumber-tsflow
|
|
4
4
|
|
|
5
|
-
Provides 'specflow' like bindings for CucumberJS 8.
|
|
5
|
+
Provides 'specflow' like bindings for CucumberJS 8.5.0+ in TypeScript 1.7+.
|
|
6
6
|
|
|
7
7
|
Supports Vue3 files in cucumber tests.
|
|
8
8
|
|
|
@@ -18,6 +18,7 @@ In addition, the following features have been added:
|
|
|
18
18
|
- WrapperOptions in step definitions
|
|
19
19
|
- BeforeStep and AfterStep Hooks
|
|
20
20
|
- Boolean custom definition added to cucumber expressions
|
|
21
|
+
- Support for Parallel execution of tests
|
|
21
22
|
- A behave-json-formatter that fixes json so it can be used with Behave Pro
|
|
22
23
|
- tsflow-snippet-syntax used to format snippet examples
|
|
23
24
|
- snippets use the [Cucumber Expressions](https://github.com/cucumber/cucumber-expressions#readme) Syntax for parameters
|
package/lib/cli/index.js
CHANGED
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const messages_1 = require("@cucumber/messages");
|
|
7
7
|
const index_1 = require("@cucumber/cucumber/lib/configuration/index");
|
|
8
|
-
const
|
|
8
|
+
const run_cucumber_1 = require("../cucumber/run-cucumber");
|
|
9
9
|
const load_configuration_1 = require("./load-configuration");
|
|
10
10
|
const i18n_1 = require("@cucumber/cucumber/lib/cli/i18n");
|
|
11
11
|
const install_validator_1 = require("@cucumber/cucumber/lib/cli/install_validator");
|
|
@@ -14,7 +14,6 @@ const environment_1 = require("@cucumber/cucumber/lib/api/environment");
|
|
|
14
14
|
const support_1 = require("@cucumber/cucumber/lib/api/support");
|
|
15
15
|
const binding_registry_1 = require("../cucumber/binding-registry");
|
|
16
16
|
const argv_parser_1 = __importDefault(require("./argv-parser"));
|
|
17
|
-
const message_collector_1 = __importDefault(require("../cucumber/message-collector"));
|
|
18
17
|
const console_1 = require("console");
|
|
19
18
|
class Cli {
|
|
20
19
|
constructor({ argv, cwd, stdout, stderr, env }) {
|
|
@@ -25,7 +24,7 @@ class Cli {
|
|
|
25
24
|
this.env = env;
|
|
26
25
|
}
|
|
27
26
|
async run() {
|
|
28
|
-
await (0, install_validator_1.validateInstall)(
|
|
27
|
+
await (0, install_validator_1.validateInstall)();
|
|
29
28
|
const { options, configuration: argvConfiguration } = argv_parser_1.default.parse(this.argv);
|
|
30
29
|
if (options.i18nLanguages) {
|
|
31
30
|
this.stdout.write((0, i18n_1.getLanguages)());
|
|
@@ -73,10 +72,12 @@ class Cli {
|
|
|
73
72
|
requireModules: supportCoordinates.requireModules
|
|
74
73
|
});
|
|
75
74
|
// Set support to the updated step and hook definitions
|
|
76
|
-
// in the supportCodeLibrary
|
|
75
|
+
// in the supportCodeLibrary. We also need to initialize originalCoordinates
|
|
76
|
+
// to support parallel execution.
|
|
77
77
|
runOptions.support = binding_registry_1.BindingRegistry.instance.updateSupportCodeLibrary(supportCodeLibrary);
|
|
78
|
+
runOptions.support = { ...runOptions.support, ...{ originalCoordinates: supportCoordinates } };
|
|
78
79
|
// now we can run cucumber
|
|
79
|
-
const { success } = await (0,
|
|
80
|
+
const { success } = await (0, run_cucumber_1.runCucumber)(runOptions, environment);
|
|
80
81
|
return {
|
|
81
82
|
shouldAdvertisePublish: !runConfiguration.formats.publish &&
|
|
82
83
|
!configuration.publishQuiet &&
|
|
@@ -87,4 +88,4 @@ class Cli {
|
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
exports.default = Cli;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQWlEO0FBQ2pELHNFQUE0RTtBQUc1RSwyREFBdUQ7QUFDdkQsNkRBQXlEO0FBQ3pELDBEQUE0RTtBQUM1RSxvRkFBK0U7QUFDL0UsNERBQWdFO0FBQ2hFLHdFQUEwRTtBQUMxRSxnRUFBMkU7QUFDM0UsbUVBQStEO0FBQy9ELGdFQUF1QztBQUN2QyxxQ0FBa0M7QUFRbEMsTUFBcUIsR0FBRztJQU92QixZQUFZLEVBQ1gsSUFBSSxFQUNKLEdBQUcsRUFDSCxNQUFNLEVBQ04sTUFBTSxFQUNOLEdBQUcsRUFPSDtRQUNBLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHO1FBQ1IsTUFBTSxJQUFBLG1DQUFlLEdBQUUsQ0FBQztRQUV4QixNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLHFCQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDekIsSUFBSSxDQUFDLE1BQWMsQ0FBQyxLQUFLLENBQUMsSUFBQSxtQkFBWSxHQUFFLENBQUMsQ0FBQztZQUMzQyxPQUFPO2dCQUNOLHNCQUFzQixFQUFFLEtBQUs7Z0JBQzdCLHFCQUFxQixFQUFFLElBQUk7Z0JBQzNCLE9BQU8sRUFBRSxJQUFJO2FBQ2IsQ0FBQztTQUNGO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFB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
|
|
@@ -8,7 +8,6 @@ exports.binding = void 0;
|
|
|
8
8
|
const cucumber_1 = require("@cucumber/cucumber");
|
|
9
9
|
const binding_registry_1 = require("./binding-registry");
|
|
10
10
|
const step_binding_1 = require("../types/step-binding");
|
|
11
|
-
const message_collector_1 = __importDefault(require("./message-collector"));
|
|
12
11
|
const cucumber_2 = require("@cucumber/cucumber");
|
|
13
12
|
const underscore_1 = __importDefault(require("underscore"));
|
|
14
13
|
/**
|
|
@@ -76,7 +75,7 @@ const defineParameters = underscore_1.default.once(() => {
|
|
|
76
75
|
function bindStepDefinition(stepBinding) {
|
|
77
76
|
const bindingFunc = function () {
|
|
78
77
|
const bindingRegistry = binding_registry_1.BindingRegistry.instance;
|
|
79
|
-
const scenarioContext =
|
|
78
|
+
const scenarioContext = global.messageCollector.getStepScenarioContext(stepBinding);
|
|
80
79
|
if (scenarioContext) {
|
|
81
80
|
const matchingStepBindings = bindingRegistry.getStepBindings(stepBinding.stepPattern.toString(), scenarioContext.scenarioInfo.tags);
|
|
82
81
|
if (matchingStepBindings.length > 1) {
|
|
@@ -97,7 +96,7 @@ function bindStepDefinition(stepBinding) {
|
|
|
97
96
|
return bindingObject[matchingStepBindings[0].targetPropertyKey].apply(bindingObject, arguments);
|
|
98
97
|
}
|
|
99
98
|
else {
|
|
100
|
-
throw new Error('Unable to find the Scenario Context for
|
|
99
|
+
throw new Error('Unable to find the Scenario Context for a Step!');
|
|
101
100
|
}
|
|
102
101
|
};
|
|
103
102
|
Object.defineProperty(bindingFunc, 'length', {
|
|
@@ -131,7 +130,7 @@ function bindHook(stepBinding) {
|
|
|
131
130
|
return stepBinding.targetPrototype[stepBinding.targetPropertyKey].apply();
|
|
132
131
|
}
|
|
133
132
|
: function (arg) {
|
|
134
|
-
const scenarioContext =
|
|
133
|
+
const scenarioContext = global.messageCollector.getHookScenarioContext(arg);
|
|
135
134
|
if (scenarioContext) {
|
|
136
135
|
const contextTypes = binding_registry_1.BindingRegistry.instance.getContextTypesForTarget(stepBinding.targetPrototype);
|
|
137
136
|
const bindingObject = scenarioContext.getOrActivateBindingClass(stepBinding.targetPrototype, contextTypes);
|
|
@@ -179,4 +178,4 @@ function bindHook(stepBinding) {
|
|
|
179
178
|
}
|
|
180
179
|
}
|
|
181
180
|
}
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy1kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvYmluZGluZy1kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsdUNBQXVDO0FBQ3ZDLGlEQVc0QjtBQUU1Qix5REFBa0U7QUFDbEUsd0RBQXNFO0FBRXRFLGlEQUF5RDtBQUN6RCw0REFBMkI7QUFLM0I7Ozs7Ozs7R0FPRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7QUFFMUU7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxvQkFBb0M7SUFDM0QsT0FBTyxDQUFJLE1BQW1DLEVBQUUsRUFBRTtRQUNqRCxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLE1BQU0sZUFBZSxHQUFHLGtDQUFlLENBQUMsUUFBUSxDQUFDO1FBQ2pELGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDdEYsTUFBTSxXQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUN0QyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEUsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVoRixXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2pDLElBQUksV0FBVyxDQUFDLFdBQVcsR0FBRywrQkFBZ0IsQ0FBQyxlQUFlLEVBQUU7Z0JBQy9ELElBQUksZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDeEYsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7b0JBQ25DLGdCQUFn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
|
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
import * as messages from '@cucumber/messages';
|
|
2
2
|
import { StepBinding } from '../types/step-binding';
|
|
3
3
|
import { ManagedScenarioContext } from './managed-scenario-context';
|
|
4
|
-
|
|
4
|
+
export interface ITestCaseAttempt {
|
|
5
|
+
attempt: number;
|
|
6
|
+
willBeRetried: boolean;
|
|
7
|
+
gherkinDocument: messages.GherkinDocument;
|
|
8
|
+
pickle: messages.Pickle;
|
|
9
|
+
stepAttachments: Record<string, messages.Attachment[]>;
|
|
10
|
+
stepResults: Record<string, messages.TestStepResult>;
|
|
11
|
+
testCase: messages.TestCase;
|
|
12
|
+
worstTestStepResult: messages.TestStepResult;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Custom implementation of the EventDataCollector from cucumber.js
|
|
16
|
+
*
|
|
17
|
+
* This implements all of the functions from the original EventDataCollector along
|
|
18
|
+
* with new functions to support binding to tsFlow tests.
|
|
19
|
+
*
|
|
20
|
+
* By extending the original version we're also reducing the amount of data stored
|
|
21
|
+
* during test runs because the original MessageCollector was capturing the same
|
|
22
|
+
* pickle and testCase data that the EventDataCollector does.
|
|
23
|
+
*/
|
|
24
|
+
export default class MessageCollector {
|
|
25
|
+
private gherkinDocumentMap;
|
|
5
26
|
private pickleMap;
|
|
6
27
|
private testCaseMap;
|
|
28
|
+
private testCaseAttemptDataMap;
|
|
29
|
+
readonly undefinedParameterTypes: messages.UndefinedParameterType[];
|
|
7
30
|
private testCaseRunningMap;
|
|
31
|
+
addPickleAndTestCase(pickle: messages.Pickle, testCase: messages.TestCase): void;
|
|
32
|
+
getGherkinDocument(uri: string): messages.GherkinDocument;
|
|
33
|
+
getPickle(pickleId: string): messages.Pickle;
|
|
34
|
+
getTestCaseAttempts(): ITestCaseAttempt[];
|
|
35
|
+
getTestCaseAttempt(testCaseStartedId: string): ITestCaseAttempt;
|
|
36
|
+
parseEnvelope(envelope: messages.Envelope): void;
|
|
37
|
+
private initTestCaseAttempt;
|
|
38
|
+
storeAttachment(attachment: messages.Attachment): void;
|
|
39
|
+
storeTestStepResult({ testCaseStartedId, testStepId, testStepResult }: messages.TestStepFinished): void;
|
|
40
|
+
storeTestCaseResult({ testCaseStartedId, willBeRetried }: messages.TestCaseFinished): void;
|
|
8
41
|
/**
|
|
9
42
|
* Gets the Pickle from hook parameters passed in from Cucumber
|
|
10
43
|
* to find a matching Pickle (scenario) and return the scenario Context
|
|
@@ -19,12 +52,6 @@ declare class MessageCollector {
|
|
|
19
52
|
* @returns
|
|
20
53
|
*/
|
|
21
54
|
getStepScenarioContext(stepBinding: StepBinding): ManagedScenarioContext | undefined;
|
|
22
|
-
/**
|
|
23
|
-
* Passed into runCucumber as a callback for all messages.
|
|
24
|
-
* Capture the ones we care about
|
|
25
|
-
* @param envelope
|
|
26
|
-
*/
|
|
27
|
-
parseEnvelope(envelope: messages.Envelope): void;
|
|
28
55
|
/**
|
|
29
56
|
* Called when a test case (scenario) starts. Intercepting
|
|
30
57
|
* this message to initialize a new ScenarioContext
|
|
@@ -51,5 +78,3 @@ declare class MessageCollector {
|
|
|
51
78
|
*/
|
|
52
79
|
private stepHasTags;
|
|
53
80
|
}
|
|
54
|
-
declare const messageCollector: MessageCollector;
|
|
55
|
-
export default messageCollector;
|
|
@@ -1,14 +1,143 @@
|
|
|
1
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
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const messages = __importStar(require("@cucumber/messages"));
|
|
27
|
+
const value_checker_1 = require("@cucumber/cucumber/lib/value_checker");
|
|
3
28
|
const managed_scenario_context_1 = require("./managed-scenario-context");
|
|
4
29
|
const utils_1 = require("./utils");
|
|
5
30
|
const helpers_1 = require("../utils/helpers");
|
|
31
|
+
/**
|
|
32
|
+
* Custom implementation of the EventDataCollector from cucumber.js
|
|
33
|
+
*
|
|
34
|
+
* This implements all of the functions from the original EventDataCollector along
|
|
35
|
+
* with new functions to support binding to tsFlow tests.
|
|
36
|
+
*
|
|
37
|
+
* By extending the original version we're also reducing the amount of data stored
|
|
38
|
+
* during test runs because the original MessageCollector was capturing the same
|
|
39
|
+
* pickle and testCase data that the EventDataCollector does.
|
|
40
|
+
*/
|
|
6
41
|
class MessageCollector {
|
|
7
42
|
constructor() {
|
|
43
|
+
this.gherkinDocumentMap = {};
|
|
8
44
|
this.pickleMap = {};
|
|
9
45
|
this.testCaseMap = {};
|
|
46
|
+
this.testCaseAttemptDataMap = {};
|
|
47
|
+
this.undefinedParameterTypes = [];
|
|
10
48
|
this.testCaseRunningMap = {};
|
|
11
49
|
}
|
|
50
|
+
// Used during parallel execution to add the current pickle and testCase
|
|
51
|
+
// to a new Worker instance of the MessageCollector
|
|
52
|
+
addPickleAndTestCase(pickle, testCase) {
|
|
53
|
+
this.pickleMap[pickle.id] = pickle;
|
|
54
|
+
this.testCaseMap[testCase.id] = testCase;
|
|
55
|
+
}
|
|
56
|
+
getGherkinDocument(uri) {
|
|
57
|
+
return this.gherkinDocumentMap[uri];
|
|
58
|
+
}
|
|
59
|
+
getPickle(pickleId) {
|
|
60
|
+
return this.pickleMap[pickleId];
|
|
61
|
+
}
|
|
62
|
+
getTestCaseAttempts() {
|
|
63
|
+
return Object.keys(this.testCaseAttemptDataMap).map(testCaseStartedId => {
|
|
64
|
+
return this.getTestCaseAttempt(testCaseStartedId);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
getTestCaseAttempt(testCaseStartedId) {
|
|
68
|
+
const testCaseAttemptData = this.testCaseAttemptDataMap[testCaseStartedId];
|
|
69
|
+
const testCase = this.testCaseMap[testCaseAttemptData.testCaseId];
|
|
70
|
+
const pickle = this.pickleMap[testCase.pickleId];
|
|
71
|
+
return {
|
|
72
|
+
gherkinDocument: this.gherkinDocumentMap[pickle.uri],
|
|
73
|
+
pickle,
|
|
74
|
+
testCase,
|
|
75
|
+
attempt: testCaseAttemptData.attempt,
|
|
76
|
+
willBeRetried: testCaseAttemptData.willBeRetried,
|
|
77
|
+
stepAttachments: testCaseAttemptData.stepAttachments,
|
|
78
|
+
stepResults: testCaseAttemptData.stepResults,
|
|
79
|
+
worstTestStepResult: testCaseAttemptData.worstTestStepResult
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
parseEnvelope(envelope) {
|
|
83
|
+
if (envelope.gherkinDocument && envelope.gherkinDocument.uri) {
|
|
84
|
+
this.gherkinDocumentMap[envelope.gherkinDocument.uri] = envelope.gherkinDocument;
|
|
85
|
+
}
|
|
86
|
+
else if (envelope.pickle && envelope.pickle.id) {
|
|
87
|
+
this.pickleMap[envelope.pickle.id] = envelope.pickle;
|
|
88
|
+
}
|
|
89
|
+
else if (envelope.undefinedParameterType) {
|
|
90
|
+
this.undefinedParameterTypes.push(envelope.undefinedParameterType);
|
|
91
|
+
}
|
|
92
|
+
else if (envelope.testCase && envelope.testCase.id) {
|
|
93
|
+
this.testCaseMap[envelope.testCase.id] = envelope.testCase;
|
|
94
|
+
}
|
|
95
|
+
else if (envelope.testCaseStarted) {
|
|
96
|
+
this.initTestCaseAttempt(envelope.testCaseStarted);
|
|
97
|
+
this.startTestCase(envelope.testCaseStarted);
|
|
98
|
+
}
|
|
99
|
+
else if (envelope.attachment) {
|
|
100
|
+
this.storeAttachment(envelope.attachment);
|
|
101
|
+
}
|
|
102
|
+
else if (envelope.testStepFinished) {
|
|
103
|
+
this.storeTestStepResult(envelope.testStepFinished);
|
|
104
|
+
}
|
|
105
|
+
else if (envelope.testCaseFinished) {
|
|
106
|
+
this.storeTestCaseResult(envelope.testCaseFinished);
|
|
107
|
+
this.endTestCase(envelope.testCaseFinished);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
initTestCaseAttempt(testCaseStarted) {
|
|
111
|
+
this.testCaseAttemptDataMap[testCaseStarted.id] = {
|
|
112
|
+
attempt: testCaseStarted.attempt,
|
|
113
|
+
willBeRetried: false,
|
|
114
|
+
testCaseId: testCaseStarted.testCaseId,
|
|
115
|
+
stepAttachments: {},
|
|
116
|
+
stepResults: {},
|
|
117
|
+
worstTestStepResult: {
|
|
118
|
+
duration: { seconds: 0, nanos: 0 },
|
|
119
|
+
status: messages.TestStepResultStatus.UNKNOWN
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
storeAttachment(attachment) {
|
|
124
|
+
const { testCaseStartedId, testStepId } = attachment;
|
|
125
|
+
if (testCaseStartedId && testStepId) {
|
|
126
|
+
const { stepAttachments } = this.testCaseAttemptDataMap[testCaseStartedId];
|
|
127
|
+
if ((0, value_checker_1.doesNotHaveValue)(stepAttachments[testStepId])) {
|
|
128
|
+
stepAttachments[testStepId] = [];
|
|
129
|
+
}
|
|
130
|
+
stepAttachments[testStepId].push(attachment);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
storeTestStepResult({ testCaseStartedId, testStepId, testStepResult }) {
|
|
134
|
+
this.testCaseAttemptDataMap[testCaseStartedId].stepResults[testStepId] = testStepResult;
|
|
135
|
+
}
|
|
136
|
+
storeTestCaseResult({ testCaseStartedId, willBeRetried }) {
|
|
137
|
+
const stepResults = Object.values(this.testCaseAttemptDataMap[testCaseStartedId].stepResults);
|
|
138
|
+
this.testCaseAttemptDataMap[testCaseStartedId].worstTestStepResult = messages.getWorstTestStepResult(stepResults);
|
|
139
|
+
this.testCaseAttemptDataMap[testCaseStartedId].willBeRetried = willBeRetried;
|
|
140
|
+
}
|
|
12
141
|
/**
|
|
13
142
|
* Gets the Pickle from hook parameters passed in from Cucumber
|
|
14
143
|
* to find a matching Pickle (scenario) and return the scenario Context
|
|
@@ -34,7 +163,8 @@ class MessageCollector {
|
|
|
34
163
|
*/
|
|
35
164
|
getStepScenarioContext(stepBinding) {
|
|
36
165
|
let scenarioContext;
|
|
37
|
-
for (const [,
|
|
166
|
+
for (const [, pickle] of Object.entries(this.pickleMap)) {
|
|
167
|
+
const scenario = pickle;
|
|
38
168
|
for (const step of scenario.steps) {
|
|
39
169
|
if ((0, utils_1.hasMatchingStep)(stepBinding.stepPattern.toString(), step.text)) {
|
|
40
170
|
// if we have tags on the step binding check to see if it matches one in the
|
|
@@ -57,25 +187,6 @@ class MessageCollector {
|
|
|
57
187
|
}
|
|
58
188
|
return scenarioContext;
|
|
59
189
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Passed into runCucumber as a callback for all messages.
|
|
62
|
-
* Capture the ones we care about
|
|
63
|
-
* @param envelope
|
|
64
|
-
*/
|
|
65
|
-
parseEnvelope(envelope) {
|
|
66
|
-
if (envelope.pickle && envelope.pickle.id) {
|
|
67
|
-
this.pickleMap[envelope.pickle.id] = envelope.pickle;
|
|
68
|
-
}
|
|
69
|
-
else if (envelope.testCase && envelope.testCase.id) {
|
|
70
|
-
this.testCaseMap[envelope.testCase.id] = envelope.testCase;
|
|
71
|
-
}
|
|
72
|
-
else if (envelope.testCaseStarted) {
|
|
73
|
-
this.startTestCase(envelope.testCaseStarted);
|
|
74
|
-
}
|
|
75
|
-
else if (envelope.testCaseFinished) {
|
|
76
|
-
this.endTestCase(envelope.testCaseFinished);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
190
|
/**
|
|
80
191
|
* Called when a test case (scenario) starts. Intercepting
|
|
81
192
|
* this message to initialize a new ScenarioContext
|
|
@@ -126,8 +237,5 @@ class MessageCollector {
|
|
|
126
237
|
return (0, helpers_1.hasStringValue)(tags) && !tags?.includes('*');
|
|
127
238
|
}
|
|
128
239
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const messageCollector = new MessageCollector();
|
|
132
|
-
exports.default = messageCollector;
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1jb2xsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvbWVzc2FnZS1jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSx5RUFBb0U7QUFDcEUsbUNBQTJEO0FBQzNELDhDQUFrRDtBQU1sRCxNQUFNLGdCQUFnQjtJQUF0QjtRQUNTLGNBQVMsR0FBOEIsRUFBRSxDQUFDO1FBQzFDLGdCQUFXLEdBQXNDLEVBQUUsQ0FBQztRQUNwRCx1QkFBa0IsR0FBNkMsRUFBRSxDQUFDO0lBNEgzRSxDQUFDO0lBMUhBOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUMsU0FBYztRQUNwQyxJQUFJLGVBQW1ELENBQUM7UUFFeEQsSUFBSSxTQUFTLEVBQUU7WUFDZCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBbUIsQ0FBQztZQUM3QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFO2dCQUN6QyxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQzthQUMzQztTQUNEO1FBQ0QsT0FBTyxlQUFlLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUMsV0FBd0I7UUFDOUMsSUFBSSxlQUFtRCxDQUFDO1FBQ3hELEtBQUssTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDMUQsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFO2dCQUNsQyxJQUFJLElBQUEsdUJBQWUsRUFBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDbkUsNEVBQTRFO29CQUM1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
|
|
240
|
+
exports.default = MessageCollector;
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1jb2xsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvbWVzc2FnZS1jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUErQztBQUMvQyx3RUFBd0U7QUFFeEUseUVBQW9FO0FBQ3BFLG1DQUEyRDtBQUMzRCw4Q0FBa0Q7QUEwQmxEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQXFCLGdCQUFnQjtJQUFyQztRQUNTLHVCQUFrQixHQUE2QyxFQUFFLENBQUM7UUFDbEUsY0FBUyxHQUFvQyxFQUFFLENBQUM7UUFDaEQsZ0JBQVcsR0FBc0MsRUFBRSxDQUFDO1FBQ3BELDJCQUFzQixHQUF5QyxFQUFFLENBQUM7UUFDakUsNEJBQXVCLEdBQXNDLEVBQUUsQ0FBQztRQUNqRSx1QkFBa0IsR0FBNkMsRUFBRSxDQUFDO0lBeU0zRSxDQUFDO0lBdk1BLHdFQUF3RTtJQUN4RSxtREFBbUQ7SUFDbkQsb0JBQW9CLENBQUMsTUFBdUIsRUFBRSxRQUEyQjtRQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzFDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxtQkFBbUI7UUFDbEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFF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
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ChildProcess } from 'child_process';
|
|
3
|
+
import * as messages from '@cucumber/messages';
|
|
4
|
+
import { EventEmitter } from 'events';
|
|
5
|
+
import { EventDataCollector } from '@cucumber/cucumber/lib/formatter/helpers';
|
|
6
|
+
import { IRuntime, IRuntimeOptions } from '@cucumber/cucumber/lib/runtime';
|
|
7
|
+
import { ISupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types';
|
|
8
|
+
import { ICoordinatorReport } from '@cucumber/cucumber/lib/runtime/parallel/command_types';
|
|
9
|
+
import { IdGenerator } from '@cucumber/messages';
|
|
10
|
+
export interface INewCoordinatorOptions {
|
|
11
|
+
cwd: string;
|
|
12
|
+
logger: Console;
|
|
13
|
+
eventBroadcaster: EventEmitter;
|
|
14
|
+
eventDataCollector: EventDataCollector;
|
|
15
|
+
options: IRuntimeOptions;
|
|
16
|
+
newId: IdGenerator.NewId;
|
|
17
|
+
pickleIds: string[];
|
|
18
|
+
supportCodeLibrary: ISupportCodeLibrary;
|
|
19
|
+
requireModules: string[];
|
|
20
|
+
requirePaths: string[];
|
|
21
|
+
importPaths: string[];
|
|
22
|
+
numberOfWorkers: number;
|
|
23
|
+
}
|
|
24
|
+
declare const enum WorkerState {
|
|
25
|
+
'idle' = 0,
|
|
26
|
+
'closed' = 1,
|
|
27
|
+
'running' = 2,
|
|
28
|
+
'new' = 3
|
|
29
|
+
}
|
|
30
|
+
interface IWorker {
|
|
31
|
+
state: WorkerState;
|
|
32
|
+
process: ChildProcess;
|
|
33
|
+
id: string;
|
|
34
|
+
}
|
|
35
|
+
interface IPicklePlacement {
|
|
36
|
+
index: number;
|
|
37
|
+
pickle: messages.Pickle;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Coordinator class from cucumber.js
|
|
41
|
+
* No modifications made to this class so it can be updated with newer
|
|
42
|
+
* versions without breaking anything.
|
|
43
|
+
* The only change required was to configure the runWorkerPath (above)
|
|
44
|
+
* to use our run-worker implementation.
|
|
45
|
+
*/
|
|
46
|
+
export default class Coordinator implements IRuntime {
|
|
47
|
+
private readonly cwd;
|
|
48
|
+
private readonly eventBroadcaster;
|
|
49
|
+
private readonly eventDataCollector;
|
|
50
|
+
private readonly stopwatch;
|
|
51
|
+
private onFinish;
|
|
52
|
+
private readonly options;
|
|
53
|
+
private readonly newId;
|
|
54
|
+
private readonly pickleIds;
|
|
55
|
+
private assembledTestCases;
|
|
56
|
+
private inProgressPickles;
|
|
57
|
+
private workers;
|
|
58
|
+
private readonly supportCodeLibrary;
|
|
59
|
+
private readonly requireModules;
|
|
60
|
+
private readonly requirePaths;
|
|
61
|
+
private readonly importPaths;
|
|
62
|
+
private readonly numberOfWorkers;
|
|
63
|
+
private readonly logger;
|
|
64
|
+
private success;
|
|
65
|
+
private idleInterventions;
|
|
66
|
+
constructor({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, options, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, numberOfWorkers }: INewCoordinatorOptions);
|
|
67
|
+
parseWorkerMessage(worker: IWorker, message: ICoordinatorReport): void;
|
|
68
|
+
awakenWorkers(triggeringWorker: IWorker): void;
|
|
69
|
+
startWorker(id: string, total: number): void;
|
|
70
|
+
onWorkerProcessClose(exitCode: number): void;
|
|
71
|
+
parseTestCaseResult(testCaseFinished: messages.TestCaseFinished): void;
|
|
72
|
+
start(): Promise<boolean>;
|
|
73
|
+
nextPicklePlacement(): IPicklePlacement | null;
|
|
74
|
+
placementAt(index: number): IPicklePlacement;
|
|
75
|
+
giveWork(worker: IWorker, force?: boolean): void;
|
|
76
|
+
}
|
|
77
|
+
export {};
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (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 child_process_1 = require("child_process");
|
|
30
|
+
const path_1 = __importDefault(require("path"));
|
|
31
|
+
const helpers_1 = require("@cucumber/cucumber/lib/runtime/helpers");
|
|
32
|
+
const messages = __importStar(require("@cucumber/messages"));
|
|
33
|
+
const value_checker_1 = require("@cucumber/cucumber/lib/value_checker");
|
|
34
|
+
const stopwatch_1 = require("@cucumber/cucumber/lib/runtime/stopwatch");
|
|
35
|
+
const assemble_test_cases_1 = require("@cucumber/cucumber/lib/runtime/assemble_test_cases");
|
|
36
|
+
// Updated to use our own run-worker, which instantiates a new Worker instance
|
|
37
|
+
// using our modified Worker.
|
|
38
|
+
const runWorkerPath = path_1.default.resolve(__dirname, 'run-worker.js');
|
|
39
|
+
/**
|
|
40
|
+
* Coordinator class from cucumber.js
|
|
41
|
+
* No modifications made to this class so it can be updated with newer
|
|
42
|
+
* versions without breaking anything.
|
|
43
|
+
* The only change required was to configure the runWorkerPath (above)
|
|
44
|
+
* to use our run-worker implementation.
|
|
45
|
+
*/
|
|
46
|
+
class Coordinator {
|
|
47
|
+
constructor({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, options, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, numberOfWorkers }) {
|
|
48
|
+
this.cwd = cwd;
|
|
49
|
+
this.logger = logger;
|
|
50
|
+
this.eventBroadcaster = eventBroadcaster;
|
|
51
|
+
this.eventDataCollector = eventDataCollector;
|
|
52
|
+
this.stopwatch = new stopwatch_1.RealTestRunStopwatch();
|
|
53
|
+
this.options = options;
|
|
54
|
+
this.newId = newId;
|
|
55
|
+
this.supportCodeLibrary = supportCodeLibrary;
|
|
56
|
+
this.requireModules = requireModules;
|
|
57
|
+
this.requirePaths = requirePaths;
|
|
58
|
+
this.importPaths = importPaths;
|
|
59
|
+
this.pickleIds = Array.from(pickleIds);
|
|
60
|
+
this.numberOfWorkers = numberOfWorkers;
|
|
61
|
+
this.success = true;
|
|
62
|
+
this.workers = {};
|
|
63
|
+
this.inProgressPickles = {};
|
|
64
|
+
this.idleInterventions = 0;
|
|
65
|
+
}
|
|
66
|
+
parseWorkerMessage(worker, message) {
|
|
67
|
+
if (message.ready) {
|
|
68
|
+
worker.state = 0 /* idle */;
|
|
69
|
+
this.awakenWorkers(worker);
|
|
70
|
+
}
|
|
71
|
+
else if ((0, value_checker_1.doesHaveValue)(message.jsonEnvelope)) {
|
|
72
|
+
const envelope = messages.parseEnvelope(message.jsonEnvelope);
|
|
73
|
+
this.eventBroadcaster.emit('envelope', envelope);
|
|
74
|
+
if ((0, value_checker_1.doesHaveValue)(envelope.testCaseFinished)) {
|
|
75
|
+
delete this.inProgressPickles[worker.id];
|
|
76
|
+
this.parseTestCaseResult(envelope.testCaseFinished);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
throw new Error(`Unexpected message from worker: ${JSON.stringify(message)}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
awakenWorkers(triggeringWorker) {
|
|
84
|
+
Object.values(this.workers).forEach(worker => {
|
|
85
|
+
if (worker.state === 0 /* idle */) {
|
|
86
|
+
this.giveWork(worker);
|
|
87
|
+
}
|
|
88
|
+
return worker.state !== 0 /* idle */;
|
|
89
|
+
});
|
|
90
|
+
if (Object.keys(this.inProgressPickles).length == 0 && this.pickleIds.length > 0) {
|
|
91
|
+
this.giveWork(triggeringWorker, true);
|
|
92
|
+
this.idleInterventions++;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
startWorker(id, total) {
|
|
96
|
+
const workerProcess = (0, child_process_1.fork)(runWorkerPath, [], {
|
|
97
|
+
cwd: this.cwd,
|
|
98
|
+
env: {
|
|
99
|
+
...process.env,
|
|
100
|
+
CUCUMBER_PARALLEL: 'true',
|
|
101
|
+
CUCUMBER_TOTAL_WORKERS: total.toString(),
|
|
102
|
+
CUCUMBER_WORKER_ID: id
|
|
103
|
+
},
|
|
104
|
+
stdio: ['inherit', 'inherit', 'inherit', 'ipc']
|
|
105
|
+
});
|
|
106
|
+
const worker = { state: 3 /* new */, process: workerProcess, id };
|
|
107
|
+
this.workers[id] = worker;
|
|
108
|
+
worker.process.on('message', (message) => {
|
|
109
|
+
this.parseWorkerMessage(worker, message);
|
|
110
|
+
});
|
|
111
|
+
worker.process.on('close', exitCode => {
|
|
112
|
+
worker.state = 1 /* closed */;
|
|
113
|
+
this.onWorkerProcessClose(exitCode);
|
|
114
|
+
});
|
|
115
|
+
const initializeCommand = {
|
|
116
|
+
initialize: {
|
|
117
|
+
filterStacktraces: this.options.filterStacktraces,
|
|
118
|
+
requireModules: this.requireModules,
|
|
119
|
+
requirePaths: this.requirePaths,
|
|
120
|
+
importPaths: this.importPaths,
|
|
121
|
+
supportCodeIds: {
|
|
122
|
+
stepDefinitionIds: this.supportCodeLibrary.stepDefinitions.map(s => s.id),
|
|
123
|
+
beforeTestCaseHookDefinitionIds: this.supportCodeLibrary.beforeTestCaseHookDefinitions.map(h => h.id),
|
|
124
|
+
afterTestCaseHookDefinitionIds: this.supportCodeLibrary.afterTestCaseHookDefinitions.map(h => h.id)
|
|
125
|
+
},
|
|
126
|
+
options: this.options
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
worker.process.send(initializeCommand);
|
|
130
|
+
}
|
|
131
|
+
onWorkerProcessClose(exitCode) {
|
|
132
|
+
const success = exitCode === 0;
|
|
133
|
+
if (!success) {
|
|
134
|
+
this.success = false;
|
|
135
|
+
}
|
|
136
|
+
if (Object.values(this.workers).every(x => x.state === 1 /* closed */)) {
|
|
137
|
+
const envelope = {
|
|
138
|
+
testRunFinished: {
|
|
139
|
+
timestamp: this.stopwatch.timestamp(),
|
|
140
|
+
success
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
this.eventBroadcaster.emit('envelope', envelope);
|
|
144
|
+
if (this.onFinish)
|
|
145
|
+
this.onFinish(this.success);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
parseTestCaseResult(testCaseFinished) {
|
|
149
|
+
const { worstTestStepResult } = this.eventDataCollector.getTestCaseAttempt(testCaseFinished.testCaseStartedId);
|
|
150
|
+
if (!testCaseFinished.willBeRetried && (0, helpers_1.shouldCauseFailure)(worstTestStepResult.status, this.options)) {
|
|
151
|
+
this.success = false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
async start() {
|
|
155
|
+
const envelope = {
|
|
156
|
+
testRunStarted: {
|
|
157
|
+
timestamp: this.stopwatch.timestamp()
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
this.eventBroadcaster.emit('envelope', envelope);
|
|
161
|
+
this.stopwatch.start();
|
|
162
|
+
this.assembledTestCases = await (0, assemble_test_cases_1.assembleTestCases)({
|
|
163
|
+
eventBroadcaster: this.eventBroadcaster,
|
|
164
|
+
newId: this.newId,
|
|
165
|
+
pickles: this.pickleIds.map(pickleId => this.eventDataCollector.getPickle(pickleId)),
|
|
166
|
+
supportCodeLibrary: this.supportCodeLibrary
|
|
167
|
+
});
|
|
168
|
+
return await new Promise(resolve => {
|
|
169
|
+
for (let i = 0; i < this.numberOfWorkers; i++) {
|
|
170
|
+
this.startWorker(i.toString(), this.numberOfWorkers);
|
|
171
|
+
}
|
|
172
|
+
this.onFinish = status => {
|
|
173
|
+
if (this.idleInterventions > 0) {
|
|
174
|
+
this.logger.warn(`WARNING: All workers went idle ${this.idleInterventions} time(s). Consider revising handler passed to setParallelCanAssign.`);
|
|
175
|
+
}
|
|
176
|
+
resolve(status);
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
nextPicklePlacement() {
|
|
181
|
+
for (let index = 0; index < this.pickleIds.length; index++) {
|
|
182
|
+
const placement = this.placementAt(index);
|
|
183
|
+
if (this.supportCodeLibrary.parallelCanAssign(placement.pickle, Object.values(this.inProgressPickles))) {
|
|
184
|
+
return placement;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
placementAt(index) {
|
|
190
|
+
return {
|
|
191
|
+
index,
|
|
192
|
+
pickle: this.eventDataCollector.getPickle(this.pickleIds[index])
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
giveWork(worker, force = false) {
|
|
196
|
+
if (this.pickleIds.length < 1) {
|
|
197
|
+
const finalizeCommand = { finalize: true };
|
|
198
|
+
worker.state = 2 /* running */;
|
|
199
|
+
worker.process.send(finalizeCommand);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
const picklePlacement = force ? this.placementAt(0) : this.nextPicklePlacement();
|
|
203
|
+
if (picklePlacement === null) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const { index: nextPickleIndex, pickle } = picklePlacement;
|
|
207
|
+
this.pickleIds.splice(nextPickleIndex, 1);
|
|
208
|
+
this.inProgressPickles[worker.id] = pickle;
|
|
209
|
+
const testCase = this.assembledTestCases ? this.assembledTestCases[pickle.id] : null;
|
|
210
|
+
const gherkinDocument = this.eventDataCollector.getGherkinDocument(pickle.uri);
|
|
211
|
+
const retries = (0, helpers_1.retriesForPickle)(pickle, this.options);
|
|
212
|
+
const skip = this.options.dryRun || (this.options.failFast && !this.success);
|
|
213
|
+
const runCommand = {
|
|
214
|
+
run: {
|
|
215
|
+
retries,
|
|
216
|
+
skip,
|
|
217
|
+
elapsed: this.stopwatch.duration().nanos(),
|
|
218
|
+
pickle,
|
|
219
|
+
testCase: testCase,
|
|
220
|
+
gherkinDocument
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
worker.state = 2 /* running */;
|
|
224
|
+
worker.process.send(runCommand);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
exports.default = Coordinator;
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vcmRpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VjdW1iZXIvcGFyYWxsZWwvY29vcmRpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUFtRDtBQUNuRCxnREFBd0I7QUFDeEIsb0VBQThGO0FBQzlGLDZEQUErQztBQU0vQyx3RUFBcUU7QUFDckUsd0VBQW1HO0FBQ25HLDRGQUE0RztBQUc1Ryw4RUFBOEU7QUFDOUUsNkJBQTZCO0FBQzdCLE1BQU0sYUFBYSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBa0MvRDs7Ozs7O0dBTUc7QUFDSCxNQUFxQixXQUFXO0lBcUIvQixZQUFZLEVBQ1gsR0FBRyxFQUNILE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsS0FBSyxFQUNMLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsWUFBWSxFQUNaLFdBQVcsRUFDWCxlQUFlLEVBQ1M7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQ0FBb0IsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const worker_1 = __importDefault(require("./worker"));
|
|
7
|
+
const verror_1 = __importDefault(require("verror"));
|
|
8
|
+
/**
|
|
9
|
+
* Instantiates an instance of our "overridden" Worker class.
|
|
10
|
+
*/
|
|
11
|
+
function run() {
|
|
12
|
+
const exit = (exitCode, error, message) => {
|
|
13
|
+
if (error && message) {
|
|
14
|
+
console.error(verror_1.default.fullStack(new verror_1.default(error, message))); // eslint-disable-line no-console
|
|
15
|
+
}
|
|
16
|
+
process.exit(exitCode);
|
|
17
|
+
};
|
|
18
|
+
const worker = new worker_1.default({
|
|
19
|
+
id: process.env.CUCUMBER_WORKER_ID,
|
|
20
|
+
sendMessage: (message) => {
|
|
21
|
+
if (process.send)
|
|
22
|
+
process.send(message);
|
|
23
|
+
},
|
|
24
|
+
cwd: process.cwd(),
|
|
25
|
+
exit
|
|
26
|
+
});
|
|
27
|
+
process.on('message', (m) => {
|
|
28
|
+
worker.receiveMessage(m).catch((error) => exit(1, error, 'Unexpected error on worker.receiveMessage'));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
run();
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdWN1bWJlci9wYXJhbGxlbC9ydW4td29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQThCO0FBQzlCLG9EQUE0QjtBQUU1Qjs7R0FFRztBQUNILFNBQVMsR0FBRztJQUNYLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBZ0IsRUFBRSxLQUFhLEVBQUUsT0FBZ0IsRUFBUSxFQUFFO1FBQ3hFLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRTtZQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFNLENBQUMsU0FBUyxDQUFDLElBQUksZ0JBQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1NBQzlGO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFNLENBQUM7UUFDekIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQTRCO1FBQzVDLFdBQVcsRUFBRSxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQzdCLElBQUksT0FBTyxDQUFDLElBQUk7Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDbEIsSUFBSTtLQUNKLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBTSxFQUFRLEVBQUU7UUFDdEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLDJDQUEyQyxDQUFDLENBQUMsQ0FBQztJQUMvRyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxHQUFHLEVBQUUsQ0FBQyJ9
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ICoordinatorReport, IWorkerCommand, IWorkerCommandInitialize, IWorkerCommandRun } from '@cucumber/cucumber/lib/runtime/parallel/command_types';
|
|
2
|
+
declare type IExitFunction = (exitCode: number, error?: Error, message?: string) => void;
|
|
3
|
+
declare type IMessageSender = (command: ICoordinatorReport) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Modified from cucumber.js to instantiate and initialize
|
|
6
|
+
* a message collector needed for test bindings.
|
|
7
|
+
*/
|
|
8
|
+
export default class Worker {
|
|
9
|
+
private readonly cwd;
|
|
10
|
+
private readonly exit;
|
|
11
|
+
private readonly id;
|
|
12
|
+
private readonly eventBroadcaster;
|
|
13
|
+
private filterStacktraces;
|
|
14
|
+
private readonly newId;
|
|
15
|
+
private readonly sendMessage;
|
|
16
|
+
private readonly stackTraceFilter;
|
|
17
|
+
private supportCodeLibrary?;
|
|
18
|
+
private worldParameters;
|
|
19
|
+
private runTestRunHooks?;
|
|
20
|
+
constructor({ cwd, exit, id, sendMessage }: {
|
|
21
|
+
cwd: string;
|
|
22
|
+
exit: IExitFunction;
|
|
23
|
+
id: string;
|
|
24
|
+
sendMessage: IMessageSender;
|
|
25
|
+
});
|
|
26
|
+
initialize({ filterStacktraces, requireModules, requirePaths, importPaths, supportCodeIds, options }: IWorkerCommandInitialize): Promise<void>;
|
|
27
|
+
finalize(): Promise<void>;
|
|
28
|
+
receiveMessage(message: IWorkerCommand): Promise<void>;
|
|
29
|
+
runTestCase({ gherkinDocument, pickle, testCase, elapsed, retries, skip }: IWorkerCommandRun): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const messages_1 = require("@cucumber/messages");
|
|
7
|
+
const durations_1 = require("durations");
|
|
8
|
+
const events_1 = require("events");
|
|
9
|
+
const url_1 = require("url");
|
|
10
|
+
const stack_trace_filter_1 = __importDefault(require("@cucumber/cucumber/lib/stack_trace_filter"));
|
|
11
|
+
const index_1 = __importDefault(require("@cucumber/cucumber/lib/support_code_library_builder/index"));
|
|
12
|
+
const run_test_run_hooks_1 = require("@cucumber/cucumber/lib/runtime/run_test_run_hooks");
|
|
13
|
+
const stopwatch_1 = require("@cucumber/cucumber/lib/runtime/stopwatch");
|
|
14
|
+
const test_case_runner_1 = __importDefault(require("@cucumber/cucumber/lib/runtime/test_case_runner"));
|
|
15
|
+
const message_collector_1 = __importDefault(require("../message-collector"));
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
17
|
+
const { importer } = require('@cucumber/cucumber/lib/importer');
|
|
18
|
+
const { uuid } = messages_1.IdGenerator;
|
|
19
|
+
/**
|
|
20
|
+
* Modified from cucumber.js to instantiate and initialize
|
|
21
|
+
* a message collector needed for test bindings.
|
|
22
|
+
*/
|
|
23
|
+
class Worker {
|
|
24
|
+
constructor({ cwd, exit, id, sendMessage }) {
|
|
25
|
+
this.filterStacktraces = false;
|
|
26
|
+
this.id = id;
|
|
27
|
+
this.newId = uuid();
|
|
28
|
+
this.cwd = cwd;
|
|
29
|
+
this.exit = exit;
|
|
30
|
+
this.sendMessage = sendMessage;
|
|
31
|
+
this.eventBroadcaster = new events_1.EventEmitter();
|
|
32
|
+
this.stackTraceFilter = new stack_trace_filter_1.default();
|
|
33
|
+
this.eventBroadcaster.on('envelope', (envelope) => {
|
|
34
|
+
this.sendMessage({
|
|
35
|
+
jsonEnvelope: JSON.stringify(envelope)
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
// create an instance of the messageCollector, bind it to the event broadcaster
|
|
39
|
+
// and then make it global for use in the binding-decorator.
|
|
40
|
+
const messageCollector = new message_collector_1.default();
|
|
41
|
+
this.eventBroadcaster.on('envelope', messageCollector.parseEnvelope.bind(messageCollector));
|
|
42
|
+
global.messageCollector = messageCollector;
|
|
43
|
+
}
|
|
44
|
+
async initialize({ filterStacktraces, requireModules, requirePaths, importPaths, supportCodeIds, options }) {
|
|
45
|
+
index_1.default.reset(this.cwd, this.newId);
|
|
46
|
+
requireModules.map(module => require(module));
|
|
47
|
+
requirePaths.map(module => require(module));
|
|
48
|
+
for (const path of importPaths) {
|
|
49
|
+
await importer((0, url_1.pathToFileURL)(path));
|
|
50
|
+
}
|
|
51
|
+
this.supportCodeLibrary = index_1.default.finalize(supportCodeIds);
|
|
52
|
+
this.worldParameters = options.worldParameters;
|
|
53
|
+
this.filterStacktraces = filterStacktraces;
|
|
54
|
+
if (this.filterStacktraces) {
|
|
55
|
+
this.stackTraceFilter.filter();
|
|
56
|
+
}
|
|
57
|
+
this.runTestRunHooks = (0, run_test_run_hooks_1.makeRunTestRunHooks)(options.dryRun, this.supportCodeLibrary.defaultTimeout, (name, location) => `${name} hook errored on worker ${this.id}, process exiting: ${location}`);
|
|
58
|
+
await this.runTestRunHooks(this.supportCodeLibrary.beforeTestRunHookDefinitions, 'a BeforeAll');
|
|
59
|
+
this.sendMessage({ ready: true });
|
|
60
|
+
}
|
|
61
|
+
async finalize() {
|
|
62
|
+
if (this.supportCodeLibrary && this.runTestRunHooks) {
|
|
63
|
+
await this.runTestRunHooks(this.supportCodeLibrary.afterTestRunHookDefinitions, 'an AfterAll');
|
|
64
|
+
}
|
|
65
|
+
if (this.filterStacktraces) {
|
|
66
|
+
this.stackTraceFilter.unfilter();
|
|
67
|
+
}
|
|
68
|
+
this.exit(0);
|
|
69
|
+
}
|
|
70
|
+
async receiveMessage(message) {
|
|
71
|
+
if (message.initialize) {
|
|
72
|
+
await this.initialize(message.initialize);
|
|
73
|
+
}
|
|
74
|
+
else if (message.finalize) {
|
|
75
|
+
await this.finalize();
|
|
76
|
+
}
|
|
77
|
+
else if (message.run) {
|
|
78
|
+
await this.runTestCase(message.run);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async runTestCase({ gherkinDocument, pickle, testCase, elapsed, retries, skip }) {
|
|
82
|
+
const stopwatch = new stopwatch_1.RealTestRunStopwatch();
|
|
83
|
+
stopwatch.from((0, durations_1.duration)(elapsed));
|
|
84
|
+
// Add the pickle and testCase to the messageCollector that's
|
|
85
|
+
// initialized in the constructor
|
|
86
|
+
global.messageCollector.addPickleAndTestCase(pickle, testCase);
|
|
87
|
+
const testCaseRunner = new test_case_runner_1.default({
|
|
88
|
+
eventBroadcaster: this.eventBroadcaster,
|
|
89
|
+
stopwatch,
|
|
90
|
+
gherkinDocument,
|
|
91
|
+
newId: this.newId,
|
|
92
|
+
pickle,
|
|
93
|
+
testCase,
|
|
94
|
+
retries,
|
|
95
|
+
skip,
|
|
96
|
+
supportCodeLibrary: this.supportCodeLibrary,
|
|
97
|
+
worldParameters: this.worldParameters
|
|
98
|
+
});
|
|
99
|
+
await testCaseRunner.run();
|
|
100
|
+
this.sendMessage({ ready: true });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.default = Worker;
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1Y3VtYmVyL3BhcmFsbGVsL3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLGlEQUFpRDtBQUNqRCx5Q0FBcUM7QUFDckMsbUNBQXNDO0FBQ3RDLDZCQUFvQztBQUNwQyxtR0FBeUU7QUFDekUsc0dBQWtHO0FBRWxHLDBGQUEwRztBQUMxRyx3RUFBZ0Y7QUFDaEYsdUdBQTZFO0FBTzdFLDZFQUFvRDtBQUVwRCw4REFBOEQ7QUFDOUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxzQkFBVyxDQUFDO0FBSzdCOzs7R0FHRztBQUNILE1BQXFCLE1BQU07SUFjMUIsWUFBWSxFQUNYLEdBQUcsRUFDSCxJQUFJLEVBQ0osRUFBRSxFQUNGLFdBQVcsRUFNWDtRQWxCTyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFtQjFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLHFCQUFZLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSw0QkFBZ0IsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBMkIsRUFBRSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2hCLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFD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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Envelope } from '@cucumber/messages';
|
|
2
|
+
import { IRunOptions, IRunEnvironment, IRunResult } from '@cucumber/cucumber/lib/api/types';
|
|
3
|
+
/**
|
|
4
|
+
* Execute a Cucumber test run.
|
|
5
|
+
*
|
|
6
|
+
* Extended from cucumber.js so that we can use our own implementation
|
|
7
|
+
* of makeRuntime
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
10
|
+
* @param configuration - Configuration loaded from `loadConfiguration`.
|
|
11
|
+
* @param environment - Project environment.
|
|
12
|
+
* @param onMessage - Callback fired each time Cucumber emits a message.
|
|
13
|
+
*/
|
|
14
|
+
export declare function runCucumber(configuration: IRunOptions, environment?: IRunEnvironment, onMessage?: (message: Envelope) => void): Promise<IRunResult>;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runCucumber = void 0;
|
|
7
|
+
const messages_1 = require("@cucumber/messages");
|
|
8
|
+
const events_1 = require("events");
|
|
9
|
+
const helpers_1 = require("@cucumber/cucumber/lib/cli/helpers");
|
|
10
|
+
const paths_1 = require("@cucumber/cucumber/lib/api/paths");
|
|
11
|
+
const runtime_1 = require("./runtime");
|
|
12
|
+
const formatters_1 = require("@cucumber/cucumber/lib/api/formatters");
|
|
13
|
+
const support_1 = require("@cucumber/cucumber/lib/api/support");
|
|
14
|
+
const console_1 = require("console");
|
|
15
|
+
const environment_1 = require("@cucumber/cucumber/lib/api/environment");
|
|
16
|
+
const gherkin_1 = require("@cucumber/cucumber/lib/api/gherkin");
|
|
17
|
+
const message_collector_1 = __importDefault(require("./message-collector"));
|
|
18
|
+
/**
|
|
19
|
+
* Execute a Cucumber test run.
|
|
20
|
+
*
|
|
21
|
+
* Extended from cucumber.js so that we can use our own implementation
|
|
22
|
+
* of makeRuntime
|
|
23
|
+
*
|
|
24
|
+
* @public
|
|
25
|
+
* @param configuration - Configuration loaded from `loadConfiguration`.
|
|
26
|
+
* @param environment - Project environment.
|
|
27
|
+
* @param onMessage - Callback fired each time Cucumber emits a message.
|
|
28
|
+
*/
|
|
29
|
+
async function runCucumber(configuration, environment = {}, onMessage) {
|
|
30
|
+
const { cwd, stdout, stderr, env } = (0, environment_1.mergeEnvironment)(environment);
|
|
31
|
+
const logger = new console_1.Console(stdout, stderr);
|
|
32
|
+
const newId = messages_1.IdGenerator.uuid();
|
|
33
|
+
const supportCoordinates = 'World' in configuration.support ? configuration.support.originalCoordinates : configuration.support;
|
|
34
|
+
const { unexpandedFeaturePaths, featurePaths, requirePaths, importPaths } = await (0, paths_1.resolvePaths)(cwd, configuration.sources, supportCoordinates);
|
|
35
|
+
const supportCodeLibrary = 'World' in configuration.support
|
|
36
|
+
? configuration.support
|
|
37
|
+
: await (0, support_1.getSupportCodeLibrary)({
|
|
38
|
+
cwd,
|
|
39
|
+
newId,
|
|
40
|
+
requirePaths,
|
|
41
|
+
importPaths,
|
|
42
|
+
requireModules: supportCoordinates.requireModules
|
|
43
|
+
});
|
|
44
|
+
const eventBroadcaster = new events_1.EventEmitter();
|
|
45
|
+
if (onMessage) {
|
|
46
|
+
eventBroadcaster.on('envelope', onMessage);
|
|
47
|
+
}
|
|
48
|
+
// create a global instance of the message collector and bind it
|
|
49
|
+
// to the event broadcaster. This is used by cucumber and for tests
|
|
50
|
+
// that are not running in parallel.
|
|
51
|
+
global.messageCollector = new message_collector_1.default();
|
|
52
|
+
eventBroadcaster.on('envelope', global.messageCollector.parseEnvelope.bind(global.messageCollector));
|
|
53
|
+
let formatterStreamError = false;
|
|
54
|
+
const cleanup = await (0, formatters_1.initializeFormatters)({
|
|
55
|
+
env,
|
|
56
|
+
cwd,
|
|
57
|
+
stdout,
|
|
58
|
+
stderr,
|
|
59
|
+
logger,
|
|
60
|
+
onStreamError: () => (formatterStreamError = true),
|
|
61
|
+
eventBroadcaster,
|
|
62
|
+
eventDataCollector: global.messageCollector,
|
|
63
|
+
configuration: configuration.formats,
|
|
64
|
+
supportCodeLibrary
|
|
65
|
+
});
|
|
66
|
+
await (0, helpers_1.emitMetaMessage)(eventBroadcaster, env);
|
|
67
|
+
let pickleIds = [];
|
|
68
|
+
let parseErrors = [];
|
|
69
|
+
if (featurePaths.length > 0) {
|
|
70
|
+
const gherkinResult = await (0, gherkin_1.getFilteredPicklesAndErrors)({
|
|
71
|
+
newId,
|
|
72
|
+
cwd,
|
|
73
|
+
logger,
|
|
74
|
+
unexpandedFeaturePaths,
|
|
75
|
+
featurePaths,
|
|
76
|
+
coordinates: configuration.sources,
|
|
77
|
+
onEnvelope: envelope => eventBroadcaster.emit('envelope', envelope)
|
|
78
|
+
});
|
|
79
|
+
pickleIds = gherkinResult.filteredPickles.map(({ pickle }) => pickle.id);
|
|
80
|
+
parseErrors = gherkinResult.parseErrors;
|
|
81
|
+
}
|
|
82
|
+
if (parseErrors.length) {
|
|
83
|
+
parseErrors.forEach(parseError => {
|
|
84
|
+
logger.error(`Parse error in "${parseError.source.uri}" ${parseError.message}`);
|
|
85
|
+
});
|
|
86
|
+
await cleanup();
|
|
87
|
+
return {
|
|
88
|
+
success: false,
|
|
89
|
+
support: supportCodeLibrary
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
(0, helpers_1.emitSupportCodeMessages)({
|
|
93
|
+
eventBroadcaster,
|
|
94
|
+
supportCodeLibrary,
|
|
95
|
+
newId
|
|
96
|
+
});
|
|
97
|
+
const runtime = (0, runtime_1.makeRuntime)({
|
|
98
|
+
cwd,
|
|
99
|
+
logger,
|
|
100
|
+
eventBroadcaster,
|
|
101
|
+
eventDataCollector: global.messageCollector,
|
|
102
|
+
pickleIds,
|
|
103
|
+
newId,
|
|
104
|
+
supportCodeLibrary,
|
|
105
|
+
requireModules: supportCoordinates.requireModules,
|
|
106
|
+
requirePaths,
|
|
107
|
+
importPaths,
|
|
108
|
+
options: configuration.runtime
|
|
109
|
+
});
|
|
110
|
+
const success = await runtime.start();
|
|
111
|
+
await cleanup();
|
|
112
|
+
return {
|
|
113
|
+
success: success && !formatterStreamError,
|
|
114
|
+
support: supportCodeLibrary
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
exports.runCucumber = runCucumber;
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWN1Y3VtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1Y3VtYmVyL3J1bi1jdWN1bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBdUU7QUFDdkUsbUNBQXNDO0FBRXRDLGdFQUE4RjtBQUU5Riw0REFBZ0U7QUFDaEUsdUNBQXdDO0FBQ3hDLHNFQUE2RTtBQUM3RSxnRUFBMkU7QUFDM0UscUNBQWtDO0FBQ2xDLHdFQUEwRTtBQUMxRSxnRUFBaUY7QUFDakYsNEVBQW1EO0FBRW5EOzs7Ozs7Ozs7O0dBVUc7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUNoQyxhQUEwQixFQUMxQixjQUErQixFQUFFLEVBQ2pDLFNBQXVDO0lBRXZDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFBLDhCQUFnQixFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0MsTUFBTSxLQUFLLEdBQUcsc0JBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVqQyxNQUFNLGtCQUFrQixHQUN2QixPQUFPLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUV0RyxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLElBQUEsb0JBQVksRUFDN0YsR0FBRyxFQUNILGFBQWEsQ0FBQyxPQUFPLEVBQ3JCLGtCQUFrQixDQUNsQixDQUFDO0lBRUYsTUFBTSxrQkFBa0IsR0FDdkIsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPO1FBQy9CLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTztRQUN2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
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IRuntime } from '@cucumber/cucumber/lib/runtime/index';
|
|
3
|
+
import { EventEmitter } from 'events';
|
|
4
|
+
import { EventDataCollector } from '@cucumber/cucumber/lib/formatter/helpers';
|
|
5
|
+
import { IdGenerator } from '@cucumber/messages';
|
|
6
|
+
import { ISupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types';
|
|
7
|
+
import { IRunOptionsRuntime } from '@cucumber/cucumber/lib/api/types';
|
|
8
|
+
/**
|
|
9
|
+
* Extending this function from cucumber.js to use our own implementation
|
|
10
|
+
* of the Coordinator.
|
|
11
|
+
*/
|
|
12
|
+
export declare function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options } }: {
|
|
13
|
+
cwd: string;
|
|
14
|
+
logger: Console;
|
|
15
|
+
eventBroadcaster: EventEmitter;
|
|
16
|
+
eventDataCollector: EventDataCollector;
|
|
17
|
+
newId: IdGenerator.NewId;
|
|
18
|
+
pickleIds: string[];
|
|
19
|
+
supportCodeLibrary: ISupportCodeLibrary;
|
|
20
|
+
requireModules: string[];
|
|
21
|
+
requirePaths: string[];
|
|
22
|
+
importPaths: string[];
|
|
23
|
+
options: IRunOptionsRuntime;
|
|
24
|
+
}): IRuntime;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.makeRuntime = void 0;
|
|
7
|
+
const index_1 = __importDefault(require("@cucumber/cucumber/lib/runtime/index"));
|
|
8
|
+
const coordinator_1 = __importDefault(require("./parallel/coordinator"));
|
|
9
|
+
/**
|
|
10
|
+
* Extending this function from cucumber.js to use our own implementation
|
|
11
|
+
* of the Coordinator.
|
|
12
|
+
*/
|
|
13
|
+
function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options } }) {
|
|
14
|
+
if (parallel > 0) {
|
|
15
|
+
return new coordinator_1.default({
|
|
16
|
+
cwd,
|
|
17
|
+
logger,
|
|
18
|
+
eventBroadcaster,
|
|
19
|
+
eventDataCollector,
|
|
20
|
+
pickleIds,
|
|
21
|
+
options,
|
|
22
|
+
newId,
|
|
23
|
+
supportCodeLibrary,
|
|
24
|
+
requireModules,
|
|
25
|
+
requirePaths,
|
|
26
|
+
importPaths,
|
|
27
|
+
numberOfWorkers: parallel
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return new index_1.default({
|
|
31
|
+
eventBroadcaster,
|
|
32
|
+
eventDataCollector,
|
|
33
|
+
newId,
|
|
34
|
+
pickleIds,
|
|
35
|
+
supportCodeLibrary,
|
|
36
|
+
options
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
exports.makeRuntime = makeRuntime;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdWN1bWJlci9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGlGQUF5RTtBQUt6RSx5RUFBaUQ7QUFHakQ7OztHQUdHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLEVBQzNCLEdBQUcsRUFDSCxNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsS0FBSyxFQUNMLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsWUFBWSxFQUNaLFdBQVcsRUFDWCxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsRUFhakM7SUFDQSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUU7UUFDakIsT0FBTyxJQUFJLHFCQUFXLENBQUM7WUFDdEIsR0FBRztZQUNILE1BQU07WUFDTixnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBQ2xCLFNBQVM7WUFDVCxPQUFPO1lBQ1AsS0FBSztZQUNMLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlLEVBQUUsUUFBUTtTQUN6QixDQUFDLENBQUM7S0FDSDtJQUNELE9BQU8sSUFBSSxlQUFPLENBQUM7UUFDbEIsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixLQUFLO1FBQ0wsU0FBUztRQUNULGtCQUFrQjtRQUNsQixPQUFPO0tBQ1AsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWpERCxrQ0FpREMifQ==
|
package/lib/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "5.0
|
|
1
|
+
export declare const version = "5.1.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 = '5.0
|
|
5
|
+
exports.version = '5.1.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 8.
|
|
4
|
-
"version": "5.0
|
|
3
|
+
"description": "Provides 'specflow' like bindings for CucumberJS 8.5.0+ in TypeScript 1.7+.",
|
|
4
|
+
"version": "5.1.0",
|
|
5
5
|
"author": "Lonnie Wall <lynxdev@lynxwall.com>",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "./lib/index",
|
|
@@ -22,35 +22,36 @@
|
|
|
22
22
|
"url": "https://github.com/lynxwall/cucumber-js-tsflow.git"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@cucumber/cucumber": "^8.
|
|
25
|
+
"@cucumber/cucumber": "^8.5.0",
|
|
26
26
|
"@jeanbenitez/logical-expression-parser": "^1.0.0",
|
|
27
27
|
"@rollup/pluginutils": "^4.2.1",
|
|
28
|
-
"@types/node": "17.0.
|
|
28
|
+
"@types/node": "17.0.45",
|
|
29
29
|
"chalk": "^4.1.2",
|
|
30
|
-
"esbuild": "^0.14.
|
|
31
|
-
"glob": "^8.0.
|
|
30
|
+
"esbuild": "^0.14.49",
|
|
31
|
+
"glob": "^8.0.3",
|
|
32
32
|
"hash-sum": "^2.0.0",
|
|
33
|
-
"jsdom": "^
|
|
33
|
+
"jsdom": "^20.0.0",
|
|
34
34
|
"jsdom-global": "^3.0.2",
|
|
35
35
|
"lodash.merge": "^4.6.2",
|
|
36
|
-
"log4js": "^6.
|
|
36
|
+
"log4js": "^6.6.0",
|
|
37
37
|
"require-extension-hooks": "^0.3.3",
|
|
38
|
-
"rollup": "^2.
|
|
38
|
+
"rollup": "^2.77.0",
|
|
39
39
|
"short-uuid": "^4.2.0",
|
|
40
40
|
"source-map-support": "^0.5.21",
|
|
41
|
-
"ts-node": "^10.
|
|
41
|
+
"ts-node": "^10.9.1",
|
|
42
42
|
"tsconfig-paths": "^3.14.1",
|
|
43
|
-
"typescript": "~4.6.
|
|
44
|
-
"underscore": "^1.13.
|
|
43
|
+
"typescript": "~4.6.4",
|
|
44
|
+
"underscore": "^1.13.4",
|
|
45
45
|
"verror": "^1.10.1"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/glob": "^7.2.0",
|
|
49
49
|
"@types/hash-sum": "^1.0.0",
|
|
50
|
-
"@types/lodash.merge": "^4.6.
|
|
50
|
+
"@types/lodash.merge": "^4.6.7",
|
|
51
51
|
"@types/source-map-support": "^0.5.4",
|
|
52
52
|
"@types/underscore": "1.11.4",
|
|
53
|
-
"@types/verror": "^1.10.
|
|
53
|
+
"@types/verror": "^1.10.6"
|
|
54
54
|
},
|
|
55
55
|
"bin": "./bin/cucumber-tsflow"
|
|
56
56
|
}
|
|
57
|
+
|