@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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # cucumber-tsflow
4
4
 
5
- Provides 'specflow' like bindings for CucumberJS 8.0.0+ in TypeScript 1.7+.
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 index_2 = require("@cucumber/cucumber/lib/api/index");
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)(this.cwd);
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, index_2.runCucumber)(runOptions, environment, message_collector_1.default.parseEnvelope.bind(message_collector_1.default));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQWlEO0FBQ2pELHNFQUE0RTtBQUU1RSw0REFBNEU7QUFDNUUsNkRBQXlEO0FBQ3pELDBEQUE0RTtBQUM1RSxvRkFBK0U7QUFDL0UsNERBQWdFO0FBQ2hFLHdFQUEwRTtBQUMxRSxnRUFBMkU7QUFDM0UsbUVBQStEO0FBQy9ELGdFQUF1QztBQUN2QyxzRkFBNkQ7QUFDN0QscUNBQWtDO0FBUWxDLE1BQXFCLEdBQUc7SUFPdkIsWUFBWSxFQUNYLElBQUksRUFDSixHQUFHLEVBQ0gsTUFBTSxFQUNOLE1BQU0sRUFDTixHQUFHLEVBT0g7UUFDQSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNSLE1BQU0sSUFBQSxtQ0FBZSxFQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLHFCQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDekIsSUFBSSxDQUFDLE1BQWMsQ0FBQyxLQUFLLENBQUMsSUFBQSxtQkFBWSxHQUFFLENBQUMsQ0FBQztZQUMzQyxPQUFPO2dCQUNOLHNCQUFzQixFQUFFLEtBQUs7Z0JBQzdCLHFCQUFxQixFQUFFLElBQUk7Z0JBQzNCLE9BQU8sRUFBRSxJQUFJO2FBQ2Is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
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQWlEO0FBQ2pELHNFQUE0RTtBQUc1RSwyREFBdUQ7QUFDdkQsNkRBQXlEO0FBQ3pELDBEQUE0RTtBQUM1RSxvRkFBK0U7QUFDL0UsNERBQWdFO0FBQ2hFLHdFQUEwRTtBQUMxRSxnRUFBMkU7QUFDM0UsbUVBQStEO0FBQy9ELGdFQUF1QztBQUN2QyxxQ0FBa0M7QUFRbEMsTUFBcUIsR0FBRztJQU92QixZQUFZLEVBQ1gsSUFBSSxFQUNKLEdBQUcsRUFDSCxNQUFNLEVBQ04sTUFBTSxFQUNOLEdBQUcsRUFPSDtRQUNBLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHO1FBQ1IsTUFBTSxJQUFBLG1DQUFlLEdBQUUsQ0FBQztRQUV4QixNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLHFCQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDekIsSUFBSSxDQUFDLE1BQWMsQ0FBQyxLQUFLLENBQUMsSUFBQSxtQkFBWSxHQUFFLENBQUMsQ0FBQztZQUMzQyxPQUFPO2dCQUNOLHNCQUFzQixFQUFFLEtBQUs7Z0JBQzdCLHFCQUFxQixFQUFFLElBQUk7Z0JBQzNCLE9BQU8sRUFBRSxJQUFJO2FBQ2IsQ0FBQztTQUNGO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxNQUFjLENBQUMsS0FBSyxDQUFDLElBQUEsa0JBQVcsRUFBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM5RCxPQUFPO2dCQUNOLHNCQUFzQixFQUFFLEtBQUs7Z0JBQzdCLHFCQUFxQixFQUFFLElBQUk7Z0JBQzNCLE9BQU8sRUFBRSxJQUFJO2FBQ2IsQ0FBQztTQUNGO1FBQ0QsTUFBTSxXQUFXLEdBQUc7WUFDbkIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDYixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQkFBTyxDQUFDLFdBQVcsQ0FBQyxNQUFhLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUU3RCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxJQUFBLHNDQUFpQixFQUNwRjtZQUNDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtZQUNwQixRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDekIsUUFBUSxFQUFFLGlCQUFpQjtTQUMzQixFQUNELFdBQVcsQ0FDWCxDQUFDO1FBRUYsa0JBQWtCO1FBQ2xCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFBLDhCQUFnQixFQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sS0FBSyxHQUFHLHNCQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsTUFBTSxVQUFVLEdBQUcsZ0JBQStCLENBQUM7UUFDbkQsTUFBTSxrQkFBa0IsR0FDdkIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDN0YsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLElBQUEsb0JBQVksRUFBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBRXRHLHFDQUFxQztRQUNyQyxNQUFNLGtCQUFrQixHQUN2QixPQUFPLElBQUksVUFBVSxDQUFDLE9BQU87WUFDNUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPO1lBQ3BCLENBQUMsQ0FBQyxNQUFNLElBQUEsK0JBQXFCLEVBQUM7Z0JBQzVCLEdBQUc7Z0JBQ0gsS0FBSztnQkFDTCxZQUFZO2dCQUNaLFdBQVc7Z0JBQ1gsY0FBYyxFQUFFLGtCQUFrQixDQUFDLGNBQWM7YUFDaEQsQ0FBQyxDQUFDO1FBRVAsdURBQXVEO1FBQ3ZELDRFQUE0RTtRQUM1RSxpQ0FBaUM7UUFDakMsVUFBVSxDQUFDLE9BQU8sR0FBRyxrQ0FBZSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNGLFVBQVUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztRQUUvRiwwQkFBMEI7UUFDMUIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sSUFBQSwwQkFBVyxFQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvRCxPQUFPO1lBQ04sc0JBQXNCLEVBQ3JCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU87Z0JBQ2pDLENBQUMsYUFBYSxDQUFDLFlBQVk7Z0JBQzNCLENBQUMsSUFBQSxzQkFBYyxFQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUM7WUFDakQscUJBQXFCLEVBQUUsYUFBYSxDQUFDLFNBQVM7WUFDOUMsT0FBTztTQUNQLENBQUM7SUFDSCxDQUFDO0NBQ0Q7QUF0R0Qsc0JBc0dDIn0=
@@ -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 = message_collector_1.default.getStepScenarioContext(stepBinding);
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 Hook!');
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 = message_collector_1.default.getHookScenarioContext(arg);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy1kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvYmluZGluZy1kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsdUNBQXVDO0FBQ3ZDLGlEQVc0QjtBQUU1Qix5REFBa0U7QUFDbEUsd0RBQXNFO0FBRXRFLDRFQUFtRDtBQUNuRCxpREFBeUQ7QUFDekQsNERBQTJCO0FBSzNCOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLHdCQUF3QixHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO0FBRTFFOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixPQUFPLENBQUMsb0JBQW9DO0lBQzNELE9BQU8sQ0FBSSxNQUFtQyxFQUFFLEVBQUU7UUFDakQsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixNQUFNLGVBQWUsR0FBRyxrQ0FBZSxDQUFDLFFBQVEsQ0FBQztRQUNqRCxlQUFlLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sV0FBVyxHQUFrQixFQUFFLENBQUM7UUFDdEMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFaEYsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNqQyxJQUFJLFdBQVcsQ0FBQyxXQUFXLEdBQUcsK0JBQWdCLENBQUMsZUFBZSxFQUFFO2dCQUMvRCxJQUFJLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3hGLElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFF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
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
- declare class MessageCollector {
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 [, scenario] of Object.entries(this.pickleMap)) {
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
- // this needs to be initialized once since it's used
130
- // throughout the test run in different modules
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.8";
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.8';
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.0.0+ in TypeScript 1.7+.",
4
- "version": "5.0.8",
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.0.0",
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.24",
28
+ "@types/node": "17.0.45",
29
29
  "chalk": "^4.1.2",
30
- "esbuild": "^0.14.36",
31
- "glob": "^8.0.1",
30
+ "esbuild": "^0.14.49",
31
+ "glob": "^8.0.3",
32
32
  "hash-sum": "^2.0.0",
33
- "jsdom": "^19.0.0",
33
+ "jsdom": "^20.0.0",
34
34
  "jsdom-global": "^3.0.2",
35
35
  "lodash.merge": "^4.6.2",
36
- "log4js": "^6.4.5",
36
+ "log4js": "^6.6.0",
37
37
  "require-extension-hooks": "^0.3.3",
38
- "rollup": "^2.70.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.7.0",
41
+ "ts-node": "^10.9.1",
42
42
  "tsconfig-paths": "^3.14.1",
43
- "typescript": "~4.6.3",
44
- "underscore": "^1.13.2",
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.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.5"
53
+ "@types/verror": "^1.10.6"
54
54
  },
55
55
  "bin": "./bin/cucumber-tsflow"
56
56
  }
57
+