@lynxwall/cucumber-tsflow 5.0.6 → 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.
Files changed (61) hide show
  1. package/README.md +10 -9
  2. package/lib/behave.js +5 -15
  3. package/lib/cli/argv-parser.js +97 -107
  4. package/lib/cli/index.js +82 -91
  5. package/lib/cli/load-configuration.js +78 -89
  6. package/lib/cli/run.js +37 -47
  7. package/lib/cucumber/binding-decorator.js +162 -173
  8. package/lib/cucumber/binding-registry.js +198 -208
  9. package/lib/cucumber/hook-decorators.js +99 -109
  10. package/lib/cucumber/managed-scenario-context.js +71 -81
  11. package/lib/cucumber/message-collector.d.ts +34 -9
  12. package/lib/cucumber/message-collector.js +225 -127
  13. package/lib/cucumber/parallel/coordinator.d.ts +77 -0
  14. package/lib/cucumber/parallel/coordinator.js +228 -0
  15. package/lib/cucumber/parallel/run-worker.d.ts +1 -0
  16. package/lib/cucumber/parallel/run-worker.js +32 -0
  17. package/lib/cucumber/parallel/worker.d.ts +31 -0
  18. package/lib/cucumber/parallel/worker.js +104 -0
  19. package/lib/cucumber/run-cucumber.d.ts +14 -0
  20. package/lib/cucumber/run-cucumber.js +118 -0
  21. package/lib/cucumber/runtime.d.ts +24 -0
  22. package/lib/cucumber/runtime.js +40 -0
  23. package/lib/cucumber/step-definition-decorators.js +86 -96
  24. package/lib/cucumber/utils.js +73 -83
  25. package/lib/esnode.js +3 -4
  26. package/lib/esvue.js +35 -46
  27. package/lib/formatters/behave-json-formatter.js +47 -58
  28. package/lib/formatters/tsflow-snippet-syntax.js +89 -99
  29. package/lib/gherkin/configuration.js +26 -36
  30. package/lib/gherkin/gherkin-feature.js +285 -295
  31. package/lib/gherkin/gherkin-manager.js +93 -103
  32. package/lib/gherkin/models.js +2 -12
  33. package/lib/index.js +9 -19
  34. package/lib/snippet.js +5 -15
  35. package/lib/transpilers/esbuild-transpiler.js +19 -29
  36. package/lib/transpilers/esbuild.js +51 -62
  37. package/lib/transpilers/vue-sfc/compiler.js +20 -30
  38. package/lib/transpilers/vue-sfc/index.d.ts +0 -2
  39. package/lib/transpilers/vue-sfc/index.js +44 -61
  40. package/lib/transpilers/vue-sfc/main.js +223 -235
  41. package/lib/transpilers/vue-sfc/script.js +40 -51
  42. package/lib/transpilers/vue-sfc/template.js +94 -105
  43. package/lib/transpilers/vue-sfc/types.js +2 -12
  44. package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +1 -1
  45. package/lib/transpilers/vue-sfc/utils/descriptorCache.js +62 -61
  46. package/lib/transpilers/vue-sfc/utils/error.js +22 -32
  47. package/lib/transpilers/vue-sfc/utils/query.js +32 -42
  48. package/lib/tsnode.js +3 -4
  49. package/lib/tsvue.js +34 -45
  50. package/lib/types/scenario-context.js +4 -14
  51. package/lib/types/scenario-info.js +18 -28
  52. package/lib/types/step-binding-flags.js +57 -67
  53. package/lib/types/step-binding.js +4 -14
  54. package/lib/types/types.js +2 -12
  55. package/lib/utils/helpers.js +17 -27
  56. package/lib/utils/logger.js +7 -17
  57. package/lib/utils/our-callsite.d.ts +1 -0
  58. package/lib/utils/our-callsite.js +43 -50
  59. package/lib/version.d.ts +1 -1
  60. package/lib/version.js +6 -16
  61. package/package.json +17 -18
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1Y3VtYmVyL3BhcmFsbGVsL3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLGlEQUFpRDtBQUNqRCx5Q0FBcUM7QUFDckMsbUNBQXNDO0FBQ3RDLDZCQUFvQztBQUNwQyxtR0FBeUU7QUFDekUsc0dBQWtHO0FBRWxHLDBGQUEwRztBQUMxRyx3RUFBZ0Y7QUFDaEYsdUdBQTZFO0FBTzdFLDZFQUFvRDtBQUVwRCw4REFBOEQ7QUFDOUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxzQkFBVyxDQUFDO0FBSzdCOzs7R0FHRztBQUNILE1BQXFCLE1BQU07SUFjMUIsWUFBWSxFQUNYLEdBQUcsRUFDSCxJQUFJLEVBQ0osRUFBRSxFQUNGLFdBQVcsRUFNWDtRQWxCTyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFtQjFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLHFCQUFZLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSw0QkFBZ0IsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBMkIsRUFBRSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2hCLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUN0QyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILCtFQUErRTtRQUMvRSw0REFBNEQ7UUFDNUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLDJCQUFnQixFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDNUYsTUFBTSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQ2hCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsT0FBTyxFQUNtQjtRQUMxQixlQUF5QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzVDLEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFO1lBQy9CLE1BQU0sUUFBUSxDQUFDLElBQUEsbUJBQWEsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGVBQXlCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTdFLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFBLHdDQUFtQixFQUN6QyxPQUFPLENBQUMsTUFBTSxFQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEVBQ3RDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLDJCQUEyQixJQUFJLENBQUMsRUFBRSxzQkFBc0IsUUFBUSxFQUFFLENBQzdGLENBQUM7UUFDRixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDL0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBdUI7UUFDM0MsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDMUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDNUIsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDdEI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwQztJQUNGLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQXFCO1FBQ2pHLE1BQU0sU0FBUyxHQUFHLElBQUksZ0NBQW9CLEVBQUUsQ0FBQztRQUM3QyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUEsb0JBQVEsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLDZEQUE2RDtRQUM3RCxpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRCxNQUFNLGNBQWMsR0FBRyxJQUFJLDBCQUFjLENBQUM7WUFDekMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxTQUFTO1lBQ1QsZUFBZTtZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixNQUFNO1lBQ04sUUFBUTtZQUNSLE9BQU87WUFDUCxJQUFJO1lBQ0osa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUF5QztZQUNsRSxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRDtBQW5IRCx5QkFtSEMifQ==
@@ -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==