@lynxwall/cucumber-tsflow 6.0.2 → 6.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.
Files changed (98) hide show
  1. package/bin/cucumber-tsflow +0 -0
  2. package/lib/behave.d.ts +1 -1
  3. package/lib/behave.js +27 -27
  4. package/lib/cli/argv-parser.d.ts +24 -24
  5. package/lib/cli/argv-parser.js +103 -103
  6. package/lib/cli/index.d.ts +22 -22
  7. package/lib/cli/index.js +100 -100
  8. package/lib/cli/load-configuration.d.ts +20 -20
  9. package/lib/cli/load-configuration.js +92 -92
  10. package/lib/cli/run.d.ts +1 -1
  11. package/lib/cli/run.js +47 -49
  12. package/lib/cucumber/binding-decorator.d.ts +10 -10
  13. package/lib/cucumber/binding-decorator.js +180 -180
  14. package/lib/cucumber/binding-registry.d.ts +82 -82
  15. package/lib/cucumber/binding-registry.js +215 -215
  16. package/lib/cucumber/hook-decorators.d.ts +46 -46
  17. package/lib/cucumber/hook-decorators.js +102 -102
  18. package/lib/cucumber/managed-scenario-context.d.ts +21 -21
  19. package/lib/cucumber/managed-scenario-context.js +95 -95
  20. package/lib/cucumber/message-collector.d.ts +81 -81
  21. package/lib/cucumber/message-collector.js +250 -250
  22. package/lib/cucumber/parallel/coordinator.d.ts +79 -79
  23. package/lib/cucumber/parallel/coordinator.js +246 -246
  24. package/lib/cucumber/parallel/run-worker.d.ts +1 -1
  25. package/lib/cucumber/parallel/run-worker.js +31 -31
  26. package/lib/cucumber/parallel/worker.d.ts +30 -30
  27. package/lib/cucumber/parallel/worker.js +103 -103
  28. package/lib/cucumber/run-cucumber.d.ts +14 -14
  29. package/lib/cucumber/run-cucumber.js +117 -117
  30. package/lib/cucumber/runtime.d.ts +25 -25
  31. package/lib/cucumber/runtime.js +39 -39
  32. package/lib/cucumber/step-definition-decorators.d.ts +24 -24
  33. package/lib/cucumber/step-definition-decorators.js +91 -91
  34. package/lib/cucumber/utils.d.ts +16 -16
  35. package/lib/cucumber/utils.js +77 -77
  36. package/lib/esnode.js +18 -18
  37. package/lib/esvue.d.ts +1 -1
  38. package/lib/esvue.js +40 -40
  39. package/lib/formatters/behave-json-formatter.d.ts +49 -49
  40. package/lib/formatters/behave-json-formatter.js +74 -74
  41. package/lib/formatters/tsflow-snippet-syntax.d.ts +9 -9
  42. package/lib/formatters/tsflow-snippet-syntax.js +89 -89
  43. package/lib/gherkin/configuration.d.ts +30 -30
  44. package/lib/gherkin/configuration.js +26 -26
  45. package/lib/gherkin/gherkin-feature.d.ts +28 -28
  46. package/lib/gherkin/gherkin-feature.js +333 -333
  47. package/lib/gherkin/gherkin-manager.d.ts +29 -29
  48. package/lib/gherkin/gherkin-manager.js +139 -114
  49. package/lib/gherkin/models.d.ts +45 -45
  50. package/lib/gherkin/models.js +2 -2
  51. package/lib/index.d.ts +4 -4
  52. package/lib/index.js +22 -22
  53. package/lib/snippet.d.ts +1 -1
  54. package/lib/snippet.js +27 -27
  55. package/lib/transpilers/esbuild-transpiler.d.ts +4 -4
  56. package/lib/transpilers/esbuild-transpiler.js +18 -18
  57. package/lib/transpilers/esbuild.d.ts +12 -12
  58. package/lib/transpilers/esbuild.js +54 -54
  59. package/lib/transpilers/vue-sfc/compiler.d.ts +7 -7
  60. package/lib/transpilers/vue-sfc/compiler.js +21 -21
  61. package/lib/transpilers/vue-sfc/index.d.ts +23 -23
  62. package/lib/transpilers/vue-sfc/index.js +46 -46
  63. package/lib/transpilers/vue-sfc/main.d.ts +8 -8
  64. package/lib/transpilers/vue-sfc/main.js +247 -247
  65. package/lib/transpilers/vue-sfc/script.d.ts +5 -5
  66. package/lib/transpilers/vue-sfc/script.js +41 -41
  67. package/lib/transpilers/vue-sfc/template.d.ts +8 -8
  68. package/lib/transpilers/vue-sfc/template.js +101 -101
  69. package/lib/transpilers/vue-sfc/types.d.ts +55 -55
  70. package/lib/transpilers/vue-sfc/types.js +2 -2
  71. package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +13 -13
  72. package/lib/transpilers/vue-sfc/utils/descriptorCache.js +67 -67
  73. package/lib/transpilers/vue-sfc/utils/error.d.ts +3 -3
  74. package/lib/transpilers/vue-sfc/utils/error.js +22 -22
  75. package/lib/transpilers/vue-sfc/utils/query.d.ts +13 -13
  76. package/lib/transpilers/vue-sfc/utils/query.js +35 -35
  77. package/lib/tsnode.js +17 -17
  78. package/lib/tsvue.d.ts +1 -1
  79. package/lib/tsvue.js +39 -39
  80. package/lib/types/scenario-context.d.ts +16 -16
  81. package/lib/types/scenario-context.js +17 -17
  82. package/lib/types/scenario-info.d.ts +16 -16
  83. package/lib/types/scenario-info.js +22 -22
  84. package/lib/types/step-binding-flags.d.ts +53 -53
  85. package/lib/types/step-binding-flags.js +58 -58
  86. package/lib/types/step-binding.d.ts +50 -50
  87. package/lib/types/step-binding.js +17 -17
  88. package/lib/types/types.d.ts +21 -21
  89. package/lib/types/types.js +2 -2
  90. package/lib/utils/helpers.d.ts +6 -6
  91. package/lib/utils/helpers.js +17 -17
  92. package/lib/utils/logger.d.ts +3 -3
  93. package/lib/utils/logger.js +29 -29
  94. package/lib/utils/our-callsite.d.ts +27 -27
  95. package/lib/utils/our-callsite.js +72 -72
  96. package/lib/version.d.ts +1 -1
  97. package/lib/version.js +5 -5
  98. package/package.json +1 -1
@@ -1,247 +1,247 @@
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
- cwd;
48
- eventBroadcaster;
49
- eventDataCollector;
50
- stopwatch;
51
- onFinish;
52
- options;
53
- newId;
54
- pickleIds;
55
- assembledTestCases;
56
- inProgressPickles;
57
- workers;
58
- supportCodeLibrary;
59
- requireModules;
60
- requirePaths;
61
- importPaths;
62
- numberOfWorkers;
63
- logger;
64
- success;
65
- idleInterventions;
66
- constructor({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, options, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, numberOfWorkers }) {
67
- this.cwd = cwd;
68
- this.logger = logger;
69
- this.eventBroadcaster = eventBroadcaster;
70
- this.eventDataCollector = eventDataCollector;
71
- this.stopwatch = (0, stopwatch_1.create)();
72
- this.options = options;
73
- this.newId = newId;
74
- this.supportCodeLibrary = supportCodeLibrary;
75
- this.requireModules = requireModules;
76
- this.requirePaths = requirePaths;
77
- this.importPaths = importPaths;
78
- this.pickleIds = Array.from(pickleIds);
79
- this.numberOfWorkers = numberOfWorkers;
80
- this.success = true;
81
- this.workers = {};
82
- this.inProgressPickles = {};
83
- this.idleInterventions = 0;
84
- }
85
- parseWorkerMessage(worker, message) {
86
- if (message.ready) {
87
- worker.state = 0 /* WorkerState.idle */;
88
- this.awakenWorkers(worker);
89
- }
90
- else if ((0, value_checker_1.doesHaveValue)(message.jsonEnvelope)) {
91
- const envelope = messages.parseEnvelope(message.jsonEnvelope);
92
- this.eventBroadcaster.emit('envelope', envelope);
93
- if ((0, value_checker_1.doesHaveValue)(envelope.testCaseFinished)) {
94
- delete this.inProgressPickles[worker.id];
95
- this.parseTestCaseResult(envelope.testCaseFinished);
96
- }
97
- }
98
- else {
99
- throw new Error(`Unexpected message from worker: ${JSON.stringify(message)}`);
100
- }
101
- }
102
- awakenWorkers(triggeringWorker) {
103
- Object.values(this.workers).forEach(worker => {
104
- if (worker.state === 0 /* WorkerState.idle */) {
105
- this.giveWork(worker);
106
- }
107
- return worker.state !== 0 /* WorkerState.idle */;
108
- });
109
- if (Object.keys(this.inProgressPickles).length == 0 && this.pickleIds.length > 0) {
110
- this.giveWork(triggeringWorker, true);
111
- this.idleInterventions++;
112
- }
113
- }
114
- startWorker(id, total) {
115
- const workerProcess = (0, child_process_1.fork)(runWorkerPath, [], {
116
- cwd: this.cwd,
117
- env: {
118
- ...process.env,
119
- CUCUMBER_PARALLEL: 'true',
120
- CUCUMBER_TOTAL_WORKERS: total.toString(),
121
- CUCUMBER_WORKER_ID: id
122
- },
123
- stdio: ['inherit', 'inherit', 'inherit', 'ipc']
124
- });
125
- const worker = { state: 3 /* WorkerState.new */, process: workerProcess, id };
126
- this.workers[id] = worker;
127
- worker.process.on('message', (message) => {
128
- this.parseWorkerMessage(worker, message);
129
- });
130
- worker.process.on('close', exitCode => {
131
- worker.state = 1 /* WorkerState.closed */;
132
- this.onWorkerProcessClose(exitCode);
133
- });
134
- const initializeCommand = {
135
- initialize: {
136
- filterStacktraces: this.options.filterStacktraces,
137
- requireModules: this.requireModules,
138
- requirePaths: this.requirePaths,
139
- importPaths: this.importPaths,
140
- supportCodeIds: {
141
- stepDefinitionIds: this.supportCodeLibrary.stepDefinitions.map(s => s.id),
142
- beforeTestCaseHookDefinitionIds: this.supportCodeLibrary.beforeTestCaseHookDefinitions.map(h => h.id),
143
- afterTestCaseHookDefinitionIds: this.supportCodeLibrary.afterTestCaseHookDefinitions.map(h => h.id)
144
- },
145
- options: this.options
146
- }
147
- };
148
- worker.process.send(initializeCommand);
149
- }
150
- onWorkerProcessClose(exitCode) {
151
- const success = exitCode === 0;
152
- if (!success) {
153
- this.success = false;
154
- }
155
- if (Object.values(this.workers).every(x => x.state === 1 /* WorkerState.closed */)) {
156
- const envelope = {
157
- testRunFinished: {
158
- timestamp: this.stopwatch.timestamp(),
159
- success
160
- }
161
- };
162
- this.eventBroadcaster.emit('envelope', envelope);
163
- if (this.onFinish)
164
- this.onFinish(this.success);
165
- }
166
- }
167
- parseTestCaseResult(testCaseFinished) {
168
- const { worstTestStepResult } = this.eventDataCollector.getTestCaseAttempt(testCaseFinished.testCaseStartedId);
169
- if (!testCaseFinished.willBeRetried && (0, helpers_1.shouldCauseFailure)(worstTestStepResult.status, this.options)) {
170
- this.success = false;
171
- }
172
- }
173
- async start() {
174
- const envelope = {
175
- testRunStarted: {
176
- timestamp: this.stopwatch.timestamp()
177
- }
178
- };
179
- this.eventBroadcaster.emit('envelope', envelope);
180
- this.stopwatch.start();
181
- this.assembledTestCases = await (0, assemble_test_cases_1.assembleTestCases)({
182
- eventBroadcaster: this.eventBroadcaster,
183
- newId: this.newId,
184
- pickles: this.pickleIds.map(pickleId => this.eventDataCollector.getPickle(pickleId)),
185
- supportCodeLibrary: this.supportCodeLibrary
186
- });
187
- return await new Promise(resolve => {
188
- for (let i = 0; i < this.numberOfWorkers; i++) {
189
- this.startWorker(i.toString(), this.numberOfWorkers);
190
- }
191
- this.onFinish = status => {
192
- if (this.idleInterventions > 0) {
193
- this.logger.warn(`WARNING: All workers went idle ${this.idleInterventions} time(s). Consider revising handler passed to setParallelCanAssign.`);
194
- }
195
- resolve(status);
196
- };
197
- });
198
- }
199
- nextPicklePlacement() {
200
- for (let index = 0; index < this.pickleIds.length; index++) {
201
- const placement = this.placementAt(index);
202
- if (this.supportCodeLibrary.parallelCanAssign(placement.pickle, Object.values(this.inProgressPickles))) {
203
- return placement;
204
- }
205
- }
206
- return null;
207
- }
208
- placementAt(index) {
209
- return {
210
- index,
211
- pickle: this.eventDataCollector.getPickle(this.pickleIds[index])
212
- };
213
- }
214
- giveWork(worker, force = false) {
215
- if (this.pickleIds.length < 1) {
216
- const finalizeCommand = { finalize: true };
217
- worker.state = 2 /* WorkerState.running */;
218
- worker.process.send(finalizeCommand);
219
- return;
220
- }
221
- const picklePlacement = force ? this.placementAt(0) : this.nextPicklePlacement();
222
- if (picklePlacement === null) {
223
- return;
224
- }
225
- const { index: nextPickleIndex, pickle } = picklePlacement;
226
- this.pickleIds.splice(nextPickleIndex, 1);
227
- this.inProgressPickles[worker.id] = pickle;
228
- const testCase = this.assembledTestCases ? this.assembledTestCases[pickle.id] : null;
229
- const gherkinDocument = this.eventDataCollector.getGherkinDocument(pickle.uri);
230
- const retries = (0, helpers_1.retriesForPickle)(pickle, this.options);
231
- const skip = this.options.dryRun || (this.options.failFast && !this.success);
232
- const runCommand = {
233
- run: {
234
- retries,
235
- skip,
236
- elapsed: this.stopwatch.duration(),
237
- pickle,
238
- testCase: testCase,
239
- gherkinDocument
240
- }
241
- };
242
- worker.state = 2 /* WorkerState.running */;
243
- worker.process.send(runCommand);
244
- }
245
- }
246
- exports.default = Coordinator;
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
+ cwd;
48
+ eventBroadcaster;
49
+ eventDataCollector;
50
+ stopwatch;
51
+ onFinish;
52
+ options;
53
+ newId;
54
+ pickleIds;
55
+ assembledTestCases;
56
+ inProgressPickles;
57
+ workers;
58
+ supportCodeLibrary;
59
+ requireModules;
60
+ requirePaths;
61
+ importPaths;
62
+ numberOfWorkers;
63
+ logger;
64
+ success;
65
+ idleInterventions;
66
+ constructor({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, options, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, numberOfWorkers }) {
67
+ this.cwd = cwd;
68
+ this.logger = logger;
69
+ this.eventBroadcaster = eventBroadcaster;
70
+ this.eventDataCollector = eventDataCollector;
71
+ this.stopwatch = (0, stopwatch_1.create)();
72
+ this.options = options;
73
+ this.newId = newId;
74
+ this.supportCodeLibrary = supportCodeLibrary;
75
+ this.requireModules = requireModules;
76
+ this.requirePaths = requirePaths;
77
+ this.importPaths = importPaths;
78
+ this.pickleIds = Array.from(pickleIds);
79
+ this.numberOfWorkers = numberOfWorkers;
80
+ this.success = true;
81
+ this.workers = {};
82
+ this.inProgressPickles = {};
83
+ this.idleInterventions = 0;
84
+ }
85
+ parseWorkerMessage(worker, message) {
86
+ if (message.ready) {
87
+ worker.state = 0 /* WorkerState.idle */;
88
+ this.awakenWorkers(worker);
89
+ }
90
+ else if ((0, value_checker_1.doesHaveValue)(message.jsonEnvelope)) {
91
+ const envelope = messages.parseEnvelope(message.jsonEnvelope);
92
+ this.eventBroadcaster.emit('envelope', envelope);
93
+ if ((0, value_checker_1.doesHaveValue)(envelope.testCaseFinished)) {
94
+ delete this.inProgressPickles[worker.id];
95
+ this.parseTestCaseResult(envelope.testCaseFinished);
96
+ }
97
+ }
98
+ else {
99
+ throw new Error(`Unexpected message from worker: ${JSON.stringify(message)}`);
100
+ }
101
+ }
102
+ awakenWorkers(triggeringWorker) {
103
+ Object.values(this.workers).forEach(worker => {
104
+ if (worker.state === 0 /* WorkerState.idle */) {
105
+ this.giveWork(worker);
106
+ }
107
+ return worker.state !== 0 /* WorkerState.idle */;
108
+ });
109
+ if (Object.keys(this.inProgressPickles).length == 0 && this.pickleIds.length > 0) {
110
+ this.giveWork(triggeringWorker, true);
111
+ this.idleInterventions++;
112
+ }
113
+ }
114
+ startWorker(id, total) {
115
+ const workerProcess = (0, child_process_1.fork)(runWorkerPath, [], {
116
+ cwd: this.cwd,
117
+ env: {
118
+ ...process.env,
119
+ CUCUMBER_PARALLEL: 'true',
120
+ CUCUMBER_TOTAL_WORKERS: total.toString(),
121
+ CUCUMBER_WORKER_ID: id
122
+ },
123
+ stdio: ['inherit', 'inherit', 'inherit', 'ipc']
124
+ });
125
+ const worker = { state: 3 /* WorkerState.new */, process: workerProcess, id };
126
+ this.workers[id] = worker;
127
+ worker.process.on('message', (message) => {
128
+ this.parseWorkerMessage(worker, message);
129
+ });
130
+ worker.process.on('close', exitCode => {
131
+ worker.state = 1 /* WorkerState.closed */;
132
+ this.onWorkerProcessClose(exitCode);
133
+ });
134
+ const initializeCommand = {
135
+ initialize: {
136
+ filterStacktraces: this.options.filterStacktraces,
137
+ requireModules: this.requireModules,
138
+ requirePaths: this.requirePaths,
139
+ importPaths: this.importPaths,
140
+ supportCodeIds: {
141
+ stepDefinitionIds: this.supportCodeLibrary.stepDefinitions.map(s => s.id),
142
+ beforeTestCaseHookDefinitionIds: this.supportCodeLibrary.beforeTestCaseHookDefinitions.map(h => h.id),
143
+ afterTestCaseHookDefinitionIds: this.supportCodeLibrary.afterTestCaseHookDefinitions.map(h => h.id)
144
+ },
145
+ options: this.options
146
+ }
147
+ };
148
+ worker.process.send(initializeCommand);
149
+ }
150
+ onWorkerProcessClose(exitCode) {
151
+ const success = exitCode === 0;
152
+ if (!success) {
153
+ this.success = false;
154
+ }
155
+ if (Object.values(this.workers).every(x => x.state === 1 /* WorkerState.closed */)) {
156
+ const envelope = {
157
+ testRunFinished: {
158
+ timestamp: this.stopwatch.timestamp(),
159
+ success
160
+ }
161
+ };
162
+ this.eventBroadcaster.emit('envelope', envelope);
163
+ if (this.onFinish)
164
+ this.onFinish(this.success);
165
+ }
166
+ }
167
+ parseTestCaseResult(testCaseFinished) {
168
+ const { worstTestStepResult } = this.eventDataCollector.getTestCaseAttempt(testCaseFinished.testCaseStartedId);
169
+ if (!testCaseFinished.willBeRetried && (0, helpers_1.shouldCauseFailure)(worstTestStepResult.status, this.options)) {
170
+ this.success = false;
171
+ }
172
+ }
173
+ async start() {
174
+ const envelope = {
175
+ testRunStarted: {
176
+ timestamp: this.stopwatch.timestamp()
177
+ }
178
+ };
179
+ this.eventBroadcaster.emit('envelope', envelope);
180
+ this.stopwatch.start();
181
+ this.assembledTestCases = await (0, assemble_test_cases_1.assembleTestCases)({
182
+ eventBroadcaster: this.eventBroadcaster,
183
+ newId: this.newId,
184
+ pickles: this.pickleIds.map(pickleId => this.eventDataCollector.getPickle(pickleId)),
185
+ supportCodeLibrary: this.supportCodeLibrary
186
+ });
187
+ return await new Promise(resolve => {
188
+ for (let i = 0; i < this.numberOfWorkers; i++) {
189
+ this.startWorker(i.toString(), this.numberOfWorkers);
190
+ }
191
+ this.onFinish = status => {
192
+ if (this.idleInterventions > 0) {
193
+ this.logger.warn(`WARNING: All workers went idle ${this.idleInterventions} time(s). Consider revising handler passed to setParallelCanAssign.`);
194
+ }
195
+ resolve(status);
196
+ };
197
+ });
198
+ }
199
+ nextPicklePlacement() {
200
+ for (let index = 0; index < this.pickleIds.length; index++) {
201
+ const placement = this.placementAt(index);
202
+ if (this.supportCodeLibrary.parallelCanAssign(placement.pickle, Object.values(this.inProgressPickles))) {
203
+ return placement;
204
+ }
205
+ }
206
+ return null;
207
+ }
208
+ placementAt(index) {
209
+ return {
210
+ index,
211
+ pickle: this.eventDataCollector.getPickle(this.pickleIds[index])
212
+ };
213
+ }
214
+ giveWork(worker, force = false) {
215
+ if (this.pickleIds.length < 1) {
216
+ const finalizeCommand = { finalize: true };
217
+ worker.state = 2 /* WorkerState.running */;
218
+ worker.process.send(finalizeCommand);
219
+ return;
220
+ }
221
+ const picklePlacement = force ? this.placementAt(0) : this.nextPicklePlacement();
222
+ if (picklePlacement === null) {
223
+ return;
224
+ }
225
+ const { index: nextPickleIndex, pickle } = picklePlacement;
226
+ this.pickleIds.splice(nextPickleIndex, 1);
227
+ this.inProgressPickles[worker.id] = pickle;
228
+ const testCase = this.assembledTestCases ? this.assembledTestCases[pickle.id] : null;
229
+ const gherkinDocument = this.eventDataCollector.getGherkinDocument(pickle.uri);
230
+ const retries = (0, helpers_1.retriesForPickle)(pickle, this.options);
231
+ const skip = this.options.dryRun || (this.options.failFast && !this.success);
232
+ const runCommand = {
233
+ run: {
234
+ retries,
235
+ skip,
236
+ elapsed: this.stopwatch.duration(),
237
+ pickle,
238
+ testCase: testCase,
239
+ gherkinDocument
240
+ }
241
+ };
242
+ worker.state = 2 /* WorkerState.running */;
243
+ worker.process.send(runCommand);
244
+ }
245
+ }
246
+ exports.default = Coordinator;
247
247
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vcmRpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VjdW1iZXIvcGFyYWxsZWwvY29vcmRpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUFtRDtBQUNuRCxnREFBd0I7QUFDeEIsb0VBQThGO0FBQzlGLDZEQUErQztBQU0vQyx3RUFBcUU7QUFDckUsd0VBQThFO0FBQzlFLDRGQUE0RztBQUk1Ryw4RUFBOEU7QUFDOUUsNkJBQTZCO0FBQzdCLE1BQU0sYUFBYSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBa0MvRDs7Ozs7O0dBTUc7QUFDSCxNQUFxQixXQUFXO0lBQ2QsR0FBRyxDQUFTO0lBQ1osZ0JBQWdCLENBQWU7SUFDL0Isa0JBQWtCLENBQXFCO0lBQ3ZDLFNBQVMsQ0FBYTtJQUMvQixRQUFRLENBQTJDO0lBQzFDLE9BQU8sQ0FBa0I7SUFDekIsS0FBSyxDQUFvQjtJQUN6QixTQUFTLENBQVc7SUFDN0Isa0JBQWtCLENBQWtDO0lBQ3BELGlCQUFpQixDQUFrQztJQUNuRCxPQUFPLENBQTBCO0lBQ3hCLGtCQUFrQixDQUFzQjtJQUN4QyxjQUFjLENBQVc7SUFDekIsWUFBWSxDQUFXO0lBQ3ZCLFdBQVcsQ0FBVztJQUN0QixlQUFlLENBQVM7SUFDeEIsTUFBTSxDQUFVO0lBQ3pCLE9BQU8sQ0FBVTtJQUNqQixpQkFBaUIsQ0FBUztJQUVsQyxZQUFZLEVBQ1gsR0FBRyxFQUNILE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsS0FBSyxFQUNMLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsWUFBWSxFQUNaLFdBQVcsRUFDWCxlQUFlLEVBQ1M7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFB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
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,32 +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();
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
32
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdWN1bWJlci9wYXJhbGxlbC9ydW4td29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQThCO0FBQzlCLG9EQUE0QjtBQUU1Qjs7R0FFRztBQUNILFNBQVMsR0FBRztJQUNYLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBZ0IsRUFBRSxLQUFhLEVBQUUsT0FBZ0IsRUFBUSxFQUFFO1FBQ3hFLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRTtZQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFNLENBQUMsU0FBUyxDQUFDLElBQUksZ0JBQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1NBQzlGO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFNLENBQUM7UUFDekIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQTRCO1FBQzVDLFdBQVcsRUFBRSxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQzdCLElBQUksT0FBTyxDQUFDLElBQUk7Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDbEIsSUFBSTtLQUNKLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBTSxFQUFRLEVBQUU7UUFDdEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLDJDQUEyQyxDQUFDLENBQUMsQ0FBQztJQUMvRyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxHQUFHLEVBQUUsQ0FBQyJ9
@@ -1,30 +1,30 @@
1
- import { ICoordinatorReport, IWorkerCommand, IWorkerCommandInitialize, IWorkerCommandRun } from '@cucumber/cucumber/lib/runtime/parallel/command_types';
2
- type IExitFunction = (exitCode: number, error?: Error, message?: string) => void;
3
- 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 supportCodeLibrary?;
17
- private worldParameters;
18
- private runTestRunHooks?;
19
- constructor({ cwd, exit, id, sendMessage }: {
20
- cwd: string;
21
- exit: IExitFunction;
22
- id: string;
23
- sendMessage: IMessageSender;
24
- });
25
- initialize({ filterStacktraces, requireModules, requirePaths, importPaths, supportCodeIds, options }: IWorkerCommandInitialize): Promise<void>;
26
- finalize(): Promise<void>;
27
- receiveMessage(message: IWorkerCommand): Promise<void>;
28
- runTestCase({ gherkinDocument, pickle, testCase, elapsed, retries, skip }: IWorkerCommandRun): Promise<void>;
29
- }
30
- export {};
1
+ import { ICoordinatorReport, IWorkerCommand, IWorkerCommandInitialize, IWorkerCommandRun } from '@cucumber/cucumber/lib/runtime/parallel/command_types';
2
+ type IExitFunction = (exitCode: number, error?: Error, message?: string) => void;
3
+ 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 supportCodeLibrary?;
17
+ private worldParameters;
18
+ private runTestRunHooks?;
19
+ constructor({ cwd, exit, id, sendMessage }: {
20
+ cwd: string;
21
+ exit: IExitFunction;
22
+ id: string;
23
+ sendMessage: IMessageSender;
24
+ });
25
+ initialize({ filterStacktraces, requireModules, requirePaths, importPaths, supportCodeIds, options }: IWorkerCommandInitialize): Promise<void>;
26
+ finalize(): Promise<void>;
27
+ receiveMessage(message: IWorkerCommand): Promise<void>;
28
+ runTestCase({ gherkinDocument, pickle, testCase, elapsed, retries, skip }: IWorkerCommandRun): Promise<void>;
29
+ }
30
+ export {};