@lynxwall/cucumber-tsflow 6.5.7 → 7.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 +130 -35
- package/api/index.d.ts +6 -0
- package/bin/cucumber-tsflow +3 -3
- package/bin/cucumber-tsflow.js +3 -0
- package/lib/api/index.d.ts +17 -0
- package/lib/api/index.js +30 -0
- package/lib/api/index.js.map +1 -0
- package/lib/api/load-configuration.d.ts +21 -0
- package/lib/api/load-configuration.js +127 -0
- package/lib/api/load-configuration.js.map +1 -0
- package/lib/api/load-support.d.ts +10 -0
- package/lib/api/load-support.js +48 -0
- package/lib/api/load-support.js.map +1 -0
- package/lib/api/run-cucumber.d.ts +16 -0
- package/lib/api/run-cucumber.js +151 -0
- package/lib/api/run-cucumber.js.map +1 -0
- package/lib/api/wrapper.mjs +6 -0
- package/lib/behave.js +19 -9
- package/lib/behave.js.map +1 -0
- package/lib/bindings/binding-context.d.ts +17 -0
- package/lib/bindings/binding-context.js +36 -0
- package/lib/bindings/binding-context.js.map +1 -0
- package/lib/{cucumber → bindings}/binding-decorator.d.ts +2 -2
- package/lib/bindings/binding-decorator.js +201 -0
- package/lib/bindings/binding-decorator.js.map +1 -0
- package/lib/{cucumber → bindings}/binding-registry.d.ts +10 -10
- package/lib/bindings/binding-registry.js +232 -0
- package/lib/bindings/binding-registry.js.map +1 -0
- package/lib/{cucumber → bindings}/hook-decorators.d.ts +6 -6
- package/lib/{cucumber → bindings}/hook-decorators.js +18 -16
- package/lib/bindings/hook-decorators.js.map +1 -0
- package/lib/bindings/step-binding.d.ts +60 -0
- package/lib/bindings/step-binding.js +6 -0
- package/lib/bindings/step-binding.js.map +1 -0
- package/lib/{cucumber/step-definition-decorators.d.ts → bindings/step-decorators.d.ts} +3 -3
- package/lib/bindings/step-decorators.js +97 -0
- package/lib/bindings/step-decorators.js.map +1 -0
- package/lib/bindings/types.d.ts +72 -0
- package/lib/bindings/types.js +58 -0
- package/lib/bindings/types.js.map +1 -0
- package/lib/cli/argv-parser.js +3 -3
- package/lib/cli/argv-parser.js.map +1 -0
- package/lib/cli/index.d.ts +1 -2
- package/lib/cli/index.js +12 -40
- package/lib/cli/index.js.map +1 -0
- package/lib/cli/load-configuration.d.ts +2 -1
- package/lib/cli/load-configuration.js +12 -10
- package/lib/cli/load-configuration.js.map +1 -0
- package/lib/cli/run.js +5 -7
- package/lib/cli/run.js.map +1 -0
- package/lib/cucumber/coordinator.d.ts +15 -0
- package/lib/cucumber/coordinator.js +40 -0
- package/lib/cucumber/coordinator.js.map +1 -0
- package/lib/cucumber/make-runtime.d.ts +12 -16
- package/lib/cucumber/make-runtime.js +10 -33
- package/lib/cucumber/make-runtime.js.map +1 -0
- package/lib/cucumber/managed-scenario-context.d.ts +3 -3
- package/lib/cucumber/managed-scenario-context.js +24 -24
- package/lib/cucumber/managed-scenario-context.js.map +1 -0
- package/lib/cucumber/message-collector.d.ts +3 -0
- package/lib/cucumber/message-collector.js +38 -16
- package/lib/cucumber/message-collector.js.map +1 -0
- package/lib/cucumber/parallel/adapter.d.ts +46 -0
- package/lib/cucumber/parallel/adapter.js +156 -0
- package/lib/cucumber/parallel/adapter.js.map +1 -0
- package/lib/cucumber/parallel/run-worker.d.ts +1 -1
- package/lib/cucumber/parallel/run-worker.js +8 -16
- package/lib/cucumber/parallel/run-worker.js.map +1 -0
- package/lib/cucumber/parallel/worker.d.ts +10 -14
- package/lib/cucumber/parallel/worker.js +59 -68
- package/lib/cucumber/parallel/worker.js.map +1 -0
- package/lib/cucumber/run-cucumber.d.ts +5 -3
- package/lib/cucumber/run-cucumber.js +59 -38
- package/lib/cucumber/run-cucumber.js.map +1 -0
- package/lib/cucumber/serial/adapter.d.ts +12 -0
- package/lib/cucumber/serial/adapter.js +24 -0
- package/lib/cucumber/serial/adapter.js.map +1 -0
- package/lib/cucumber/test-case-info.js +1 -1
- package/lib/cucumber/test-case-info.js.map +1 -0
- package/lib/cucumber/test-case-runner.d.ts +2 -2
- package/lib/cucumber/test-case-runner.js +47 -19
- package/lib/cucumber/test-case-runner.js.map +1 -0
- package/lib/cucumber/utils.js +1 -1
- package/lib/cucumber/utils.js.map +1 -0
- package/lib/cucumber/worker.d.ts +17 -0
- package/lib/cucumber/worker.js +57 -0
- package/lib/cucumber/worker.js.map +1 -0
- package/lib/esnode.d.ts +1 -0
- package/lib/esnode.js +5 -7
- package/lib/esnode.js.map +1 -0
- package/lib/esvue.js +3 -6
- package/lib/esvue.js.map +1 -0
- package/lib/formatter/behave-json-formatter.d.ts +49 -0
- package/lib/formatter/behave-json-formatter.js +85 -0
- package/lib/formatter/behave-json-formatter.js.map +1 -0
- package/lib/formatter/junit-bamboo-formatter.d.ts +17 -0
- package/lib/formatter/junit-bamboo-formatter.js +175 -0
- package/lib/formatter/junit-bamboo-formatter.js.map +1 -0
- package/lib/formatter/step-definition-snippit-syntax/tsflow-snippet-syntax.d.ts +9 -0
- package/lib/formatter/step-definition-snippit-syntax/tsflow-snippet-syntax.js +85 -0
- package/lib/formatter/step-definition-snippit-syntax/tsflow-snippet-syntax.js.map +1 -0
- package/lib/formatters/behave-json-formatter.js +18 -8
- package/lib/formatters/behave-json-formatter.js.map +1 -0
- package/lib/formatters/junit-bamboo-formatter.js +2 -2
- package/lib/formatters/junit-bamboo-formatter.js.map +1 -0
- package/lib/formatters/tsflow-snippet-syntax.js +2 -3
- package/lib/formatters/tsflow-snippet-syntax.js.map +1 -0
- package/lib/gherkin/configuration.d.ts +4 -4
- package/lib/gherkin/configuration.js +1 -1
- package/lib/gherkin/configuration.js.map +1 -0
- package/lib/gherkin/gherkin-feature.js +18 -8
- package/lib/gherkin/gherkin-feature.js.map +1 -0
- package/lib/gherkin/gherkin-manager.js +2 -2
- package/lib/gherkin/gherkin-manager.js.map +1 -0
- package/lib/gherkin/models.d.ts +1 -1
- package/lib/gherkin/models.js +1 -1
- package/lib/gherkin/models.js.map +1 -0
- package/lib/index.d.ts +42 -5
- package/lib/index.js +114 -8
- package/lib/index.js.map +1 -0
- package/lib/junitbamboo.js +19 -9
- package/lib/junitbamboo.js.map +1 -0
- package/lib/runtime/coordinator.d.ts +15 -0
- package/lib/runtime/coordinator.js +40 -0
- package/lib/runtime/coordinator.js.map +1 -0
- package/lib/runtime/make-runtime.d.ts +22 -0
- package/lib/runtime/make-runtime.js +17 -0
- package/lib/runtime/make-runtime.js.map +1 -0
- package/lib/runtime/managed-scenario-context.d.ts +52 -0
- package/lib/runtime/managed-scenario-context.js +149 -0
- package/lib/runtime/managed-scenario-context.js.map +1 -0
- package/lib/runtime/message-collector.d.ts +98 -0
- package/lib/runtime/message-collector.js +284 -0
- package/lib/runtime/message-collector.js.map +1 -0
- package/lib/runtime/parallel/adapter.d.ts +47 -0
- package/lib/runtime/parallel/adapter.js +159 -0
- package/lib/runtime/parallel/adapter.js.map +1 -0
- package/lib/runtime/parallel/run-worker.d.ts +1 -0
- package/lib/runtime/parallel/run-worker.js +24 -0
- package/lib/runtime/parallel/run-worker.js.map +1 -0
- package/lib/runtime/parallel/types.d.ts +13 -0
- package/lib/runtime/parallel/types.js +3 -0
- package/lib/runtime/parallel/types.js.map +1 -0
- package/lib/runtime/parallel/worker.d.ts +44 -0
- package/lib/runtime/parallel/worker.js +118 -0
- package/lib/runtime/parallel/worker.js.map +1 -0
- package/lib/runtime/scenario-context.d.ts +16 -0
- package/lib/runtime/scenario-context.js +18 -0
- package/lib/runtime/scenario-context.js.map +1 -0
- package/lib/runtime/scenario-info.d.ts +16 -0
- package/lib/runtime/scenario-info.js +23 -0
- package/lib/runtime/scenario-info.js.map +1 -0
- package/lib/runtime/serial/adapter.d.ts +12 -0
- package/lib/runtime/serial/adapter.js +24 -0
- package/lib/runtime/serial/adapter.js.map +1 -0
- package/lib/runtime/test-case-info.d.ts +23 -0
- package/lib/runtime/test-case-info.js +3 -0
- package/lib/runtime/test-case-info.js.map +1 -0
- package/lib/runtime/test-case-runner.d.ts +48 -0
- package/lib/runtime/test-case-runner.js +345 -0
- package/lib/runtime/test-case-runner.js.map +1 -0
- package/lib/runtime/utils.d.ts +16 -0
- package/lib/runtime/utils.js +78 -0
- package/lib/runtime/utils.js.map +1 -0
- package/lib/runtime/worker.d.ts +17 -0
- package/lib/runtime/worker.js +57 -0
- package/lib/runtime/worker.js.map +1 -0
- package/lib/snippet.js +20 -10
- package/lib/snippet.js.map +1 -0
- package/lib/transpilers/esbuild-transpiler.d.ts +1 -1
- package/lib/transpilers/esbuild-transpiler.js +1 -1
- package/lib/transpilers/esbuild-transpiler.js.map +1 -0
- package/lib/transpilers/esbuild.js +4 -4
- package/lib/transpilers/esbuild.js.map +1 -0
- package/lib/transpilers/vue-sfc/compiler.js +1 -1
- package/lib/transpilers/vue-sfc/compiler.js.map +1 -0
- package/lib/transpilers/vue-sfc/index.d.ts +4 -4
- package/lib/transpilers/vue-sfc/index.js +1 -2
- package/lib/transpilers/vue-sfc/index.js.map +1 -0
- package/lib/transpilers/vue-sfc/main.d.ts +1 -1
- package/lib/transpilers/vue-sfc/main.js +1 -1
- package/lib/transpilers/vue-sfc/main.js.map +1 -0
- package/lib/transpilers/vue-sfc/script.js +1 -2
- package/lib/transpilers/vue-sfc/script.js.map +1 -0
- package/lib/transpilers/vue-sfc/template.d.ts +1 -1
- package/lib/transpilers/vue-sfc/template.js +2 -3
- package/lib/transpilers/vue-sfc/template.js.map +1 -0
- package/lib/transpilers/vue-sfc/types.d.ts +2 -2
- package/lib/transpilers/vue-sfc/types.js +1 -1
- package/lib/transpilers/vue-sfc/types.js.map +1 -0
- package/lib/transpilers/vue-sfc/utils/descriptorCache.js +1 -1
- package/lib/transpilers/vue-sfc/utils/descriptorCache.js.map +1 -0
- package/lib/transpilers/vue-sfc/utils/error.js +1 -1
- package/lib/transpilers/vue-sfc/utils/error.js.map +1 -0
- package/lib/transpilers/vue-sfc/utils/query.js +1 -1
- package/lib/transpilers/vue-sfc/utils/query.js.map +1 -0
- package/lib/tsconfig.node.tsbuildinfo +1 -0
- package/lib/tsnode.d.ts +1 -0
- package/lib/tsnode.js +4 -6
- package/lib/tsnode.js.map +1 -0
- package/lib/tsvue.js +3 -6
- package/lib/tsvue.js.map +1 -0
- package/lib/types/parallel.d.ts +11 -0
- package/lib/types/parallel.js +3 -0
- package/lib/types/parallel.js.map +1 -0
- package/lib/types/scenario-context.js +1 -1
- package/lib/types/scenario-context.js.map +1 -0
- package/lib/types/scenario-info.js +1 -1
- package/lib/types/scenario-info.js.map +1 -0
- package/lib/types/step-binding-flags.js +1 -1
- package/lib/types/step-binding-flags.js.map +1 -0
- package/lib/types/step-binding.d.ts +30 -20
- package/lib/types/step-binding.js +1 -1
- package/lib/types/step-binding.js.map +1 -0
- package/lib/types/types.js +1 -1
- package/lib/types/types.js.map +1 -0
- package/lib/utils/helpers.js +1 -1
- package/lib/utils/helpers.js.map +1 -0
- package/lib/utils/logger.d.ts +2 -2
- package/lib/utils/logger.js +7 -26
- package/lib/utils/logger.js.map +1 -0
- package/lib/utils/our-callsite.js +18 -8
- package/lib/utils/our-callsite.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +2 -2
- package/lib/version.js.map +1 -0
- package/lib/wrapper.mjs +56 -0
- package/package.json +65 -27
- package/lib/cucumber/binding-decorator.js +0 -181
- package/lib/cucumber/binding-registry.js +0 -231
- package/lib/cucumber/parallel/coordinator.d.ts +0 -79
- package/lib/cucumber/parallel/coordinator.js +0 -247
- package/lib/cucumber/runtime.d.ts +0 -40
- package/lib/cucumber/runtime.js +0 -85
- package/lib/cucumber/step-definition-decorators.js +0 -92
|
@@ -3,18 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.runCucumber =
|
|
6
|
+
exports.runCucumber = runCucumber;
|
|
7
7
|
const messages_1 = require("@cucumber/messages");
|
|
8
8
|
const events_1 = require("events");
|
|
9
9
|
const helpers_1 = require("@cucumber/cucumber/lib/cli/helpers");
|
|
10
|
-
const
|
|
10
|
+
const index_1 = require("@cucumber/cucumber/lib/paths/index");
|
|
11
11
|
const make_runtime_1 = require("./make-runtime");
|
|
12
12
|
const formatters_1 = require("@cucumber/cucumber/lib/api/formatters");
|
|
13
13
|
const support_1 = require("@cucumber/cucumber/lib/api/support");
|
|
14
|
-
const
|
|
14
|
+
const index_2 = require("@cucumber/cucumber/lib/environment/index");
|
|
15
15
|
const gherkin_1 = require("@cucumber/cucumber/lib/api/gherkin");
|
|
16
16
|
const message_collector_1 = __importDefault(require("./message-collector"));
|
|
17
|
-
const
|
|
17
|
+
const version_1 = require("../version");
|
|
18
|
+
const plugins_1 = require("@cucumber/cucumber/lib/api/plugins");
|
|
19
|
+
require("polyfill-symbol-metadata");
|
|
18
20
|
/**
|
|
19
21
|
* Execute a Cucumber test run.
|
|
20
22
|
*
|
|
@@ -22,36 +24,58 @@ const console_logger_1 = require("@cucumber/cucumber/lib/api/console_logger");
|
|
|
22
24
|
* of makeRuntime
|
|
23
25
|
*
|
|
24
26
|
* @public
|
|
25
|
-
* @param
|
|
27
|
+
* @param options - Configuration loaded from `loadConfiguration`.
|
|
26
28
|
* @param environment - Project environment.
|
|
27
29
|
* @param onMessage - Callback fired each time Cucumber emits a message.
|
|
28
30
|
*/
|
|
29
|
-
async function runCucumber(
|
|
30
|
-
const
|
|
31
|
-
const
|
|
31
|
+
async function runCucumber(options, environment = {}, onMessage) {
|
|
32
|
+
const mergedEnvironment = (0, index_2.makeEnvironment)(environment);
|
|
33
|
+
const { cwd, stdout, stderr, env, logger } = mergedEnvironment;
|
|
34
|
+
logger.debug(`Running cucumber-tsflow ${version_1.version}
|
|
35
|
+
Working directory: ${cwd}
|
|
36
|
+
Running from: ${__dirname}
|
|
37
|
+
`);
|
|
32
38
|
const newId = messages_1.IdGenerator.uuid();
|
|
33
|
-
const supportCoordinates = '
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
const supportCoordinates = 'originalCoordinates' in options.support
|
|
40
|
+
? options.support.originalCoordinates
|
|
41
|
+
: Object.assign({
|
|
42
|
+
requireModules: [],
|
|
43
|
+
requirePaths: [],
|
|
44
|
+
loaders: [],
|
|
45
|
+
importPaths: []
|
|
46
|
+
}, options.support);
|
|
47
|
+
const pluginManager = await (0, plugins_1.initializeForRunCucumber)({
|
|
48
|
+
...options,
|
|
49
|
+
support: supportCoordinates
|
|
50
|
+
}, mergedEnvironment);
|
|
51
|
+
const resolvedPaths = await (0, index_1.resolvePaths)(logger, cwd, options.sources, supportCoordinates);
|
|
52
|
+
pluginManager.emit('paths:resolve', resolvedPaths);
|
|
53
|
+
const { sourcePaths, requirePaths, importPaths } = resolvedPaths;
|
|
54
|
+
const supportCodeLibrary = 'originalCoordinates' in options.support
|
|
55
|
+
? options.support
|
|
37
56
|
: await (0, support_1.getSupportCodeLibrary)({
|
|
57
|
+
logger,
|
|
38
58
|
cwd,
|
|
39
59
|
newId,
|
|
40
60
|
requirePaths,
|
|
61
|
+
requireModules: supportCoordinates.requireModules,
|
|
41
62
|
importPaths,
|
|
42
|
-
|
|
63
|
+
loaders: supportCoordinates.loaders
|
|
43
64
|
});
|
|
44
65
|
const eventBroadcaster = new events_1.EventEmitter();
|
|
45
66
|
if (onMessage) {
|
|
46
67
|
eventBroadcaster.on('envelope', onMessage);
|
|
47
68
|
}
|
|
69
|
+
eventBroadcaster.on('envelope', value => pluginManager.emit('message', value));
|
|
48
70
|
// create a global instance of the message collector and bind it
|
|
49
71
|
// to the event broadcaster. This is used by cucumber and for tests
|
|
50
72
|
// that are not running in parallel.
|
|
51
73
|
global.messageCollector = new message_collector_1.default();
|
|
52
74
|
eventBroadcaster.on('envelope', global.messageCollector.parseEnvelope.bind(global.messageCollector));
|
|
75
|
+
// cast the MessageCollector to an EventDataCollector
|
|
76
|
+
const eventDataCollector = global.messageCollector;
|
|
53
77
|
let formatterStreamError = false;
|
|
54
|
-
const
|
|
78
|
+
const cleanupFormatters = await (0, formatters_1.initializeFormatters)({
|
|
55
79
|
env,
|
|
56
80
|
cwd,
|
|
57
81
|
stdout,
|
|
@@ -59,31 +83,32 @@ async function runCucumber(configuration, environment = {}, onMessage) {
|
|
|
59
83
|
logger,
|
|
60
84
|
onStreamError: () => (formatterStreamError = true),
|
|
61
85
|
eventBroadcaster,
|
|
62
|
-
eventDataCollector:
|
|
63
|
-
configuration:
|
|
64
|
-
supportCodeLibrary
|
|
86
|
+
eventDataCollector: eventDataCollector,
|
|
87
|
+
configuration: options.formats,
|
|
88
|
+
supportCodeLibrary,
|
|
89
|
+
pluginManager
|
|
65
90
|
});
|
|
66
91
|
await (0, helpers_1.emitMetaMessage)(eventBroadcaster, env);
|
|
67
|
-
let
|
|
92
|
+
let filteredPickles = [];
|
|
68
93
|
let parseErrors = [];
|
|
69
|
-
if (
|
|
70
|
-
const gherkinResult = await (0, gherkin_1.
|
|
94
|
+
if (sourcePaths.length > 0) {
|
|
95
|
+
const gherkinResult = await (0, gherkin_1.getPicklesAndErrors)({
|
|
71
96
|
newId,
|
|
72
97
|
cwd,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
featurePaths,
|
|
76
|
-
coordinates: configuration.sources,
|
|
98
|
+
sourcePaths,
|
|
99
|
+
coordinates: options.sources,
|
|
77
100
|
onEnvelope: envelope => eventBroadcaster.emit('envelope', envelope)
|
|
78
101
|
});
|
|
79
|
-
|
|
102
|
+
filteredPickles = await pluginManager.transform('pickles:filter', gherkinResult.filterablePickles);
|
|
103
|
+
filteredPickles = await pluginManager.transform('pickles:order', filteredPickles);
|
|
80
104
|
parseErrors = gherkinResult.parseErrors;
|
|
81
105
|
}
|
|
82
106
|
if (parseErrors.length) {
|
|
83
107
|
parseErrors.forEach(parseError => {
|
|
84
108
|
logger.error(`Parse error in "${parseError.source.uri}" ${parseError.message}`);
|
|
85
109
|
});
|
|
86
|
-
await
|
|
110
|
+
await cleanupFormatters();
|
|
111
|
+
await pluginManager.cleanup();
|
|
87
112
|
return {
|
|
88
113
|
success: false,
|
|
89
114
|
support: supportCodeLibrary
|
|
@@ -94,25 +119,21 @@ async function runCucumber(configuration, environment = {}, onMessage) {
|
|
|
94
119
|
supportCodeLibrary,
|
|
95
120
|
newId
|
|
96
121
|
});
|
|
97
|
-
const runtime = (0, make_runtime_1.makeRuntime)({
|
|
98
|
-
|
|
122
|
+
const runtime = await (0, make_runtime_1.makeRuntime)({
|
|
123
|
+
environment,
|
|
99
124
|
logger,
|
|
100
125
|
eventBroadcaster,
|
|
101
|
-
|
|
102
|
-
pickleIds,
|
|
126
|
+
sourcedPickles: filteredPickles,
|
|
103
127
|
newId,
|
|
104
128
|
supportCodeLibrary,
|
|
105
|
-
|
|
106
|
-
requirePaths,
|
|
107
|
-
importPaths,
|
|
108
|
-
options: configuration.runtime
|
|
129
|
+
options: options.runtime
|
|
109
130
|
});
|
|
110
|
-
const success = await runtime.
|
|
111
|
-
await cleanup();
|
|
131
|
+
const success = await runtime.run();
|
|
132
|
+
await pluginManager.cleanup();
|
|
133
|
+
await cleanupFormatters();
|
|
112
134
|
return {
|
|
113
135
|
success: success && !formatterStreamError,
|
|
114
136
|
support: supportCodeLibrary
|
|
115
137
|
};
|
|
116
138
|
}
|
|
117
|
-
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWN1Y3VtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1Y3VtYmVyL3J1bi1jdWN1bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBdUU7QUFDdkUsbUNBQXNDO0FBRXRDLGdFQUE4RjtBQUU5Riw0REFBZ0U7QUFDaEUsaURBQTZDO0FBQzdDLHNFQUE2RTtBQUM3RSxnRUFBMkU7QUFDM0Usd0VBQTBFO0FBQzFFLGdFQUFpRjtBQUNqRiw0RUFBbUQ7QUFFbkQsOEVBQTBFO0FBQzFFOzs7Ozs7Ozs7O0dBVUc7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUNoQyxhQUEwQixFQUMxQixjQUErQixFQUFFLEVBQ2pDLFNBQXVDO0lBRXZDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBQSw4QkFBZ0IsRUFBQyxXQUFXLENBQUMsQ0FBQztJQUMxRSxNQUFNLE1BQU0sR0FBWSxJQUFJLDhCQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXpELE1BQU0sS0FBSyxHQUFHLHNCQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFakMsTUFBTSxrQkFBa0IsR0FDdkIsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFFdEcsTUFBTSxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxJQUFBLG9CQUFZLEVBQzdGLE1BQU0sRUFDTixHQUFHLEVBQ0gsYUFBYSxDQUFDLE9BQU8sRUFDckIsa0JBQWtCLENBQ2xCLENBQUM7SUFFRixNQUFNLGtCQUFrQixHQUN2QixPQUFPLElBQUksYUFBYSxDQUFDLE9BQU87UUFDL0IsQ0FBQyxDQUFD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
|
|
139
|
+
//# sourceMappingURL=run-cucumber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-cucumber.js","sourceRoot":"","sources":["../../src/cucumber/run-cucumber.ts"],"names":[],"mappings":";;;;;AA6BA,kCAqIC;AAlKD,iDAAuE;AACvE,mCAAsC;AAEtC,gEAA8F;AAE9F,8DAAkE;AAElE,iDAA6C;AAC7C,sEAA6E;AAC7E,gEAA2E;AAC3E,oEAA4F;AAC5F,gEAAyE;AACzE,4EAAmD;AACnD,wCAAqC;AACrC,gEAA8E;AAE9E,oCAAkC;AAElC;;;;;;;;;;GAUG;AACI,KAAK,UAAU,WAAW,CAChC,OAAoB,EACpB,cAA+B,EAAE,EACjC,SAAuC;IAEvC,MAAM,iBAAiB,GAAG,IAAA,uBAAe,EAAC,WAAW,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC;IAE/D,MAAM,CAAC,KAAK,CAAC,2BAA2B,iBAAO;qBAC3B,GAAG;gBACR,SAAS;CACxB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,sBAAW,CAAC,IAAI,EAAE,CAAC;IAEjC,MAAM,kBAAkB,GACvB,qBAAqB,IAAI,OAAO,CAAC,OAAO;QACvC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB;QACrC,CAAC,CAAC,MAAM,CAAC,MAAM,CACb;YACC,cAAc,EAAE,EAAE;YAClB,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;SACf,EACD,OAAO,CAAC,OAAO,CACf,CAAC;IAEL,MAAM,aAAa,GAAG,MAAM,IAAA,kCAAwB,EACnD;QACC,GAAG,OAAO;QACV,OAAO,EAAE,kBAAkB;KAC3B,EACD,iBAAiB,CACjB,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,IAAA,oBAAY,EAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC3F,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACnD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;IAEjE,MAAM,kBAAkB,GACvB,qBAAqB,IAAI,OAAO,CAAC,OAAO;QACvC,CAAC,CAAE,OAAO,CAAC,OAA8B;QACzC,CAAC,CAAC,MAAM,IAAA,+BAAqB,EAAC;YAC5B,MAAM;YACN,GAAG;YACH,KAAK;YACL,YAAY;YACZ,cAAc,EAAE,kBAAkB,CAAC,cAAc;YACjD,WAAW;YACX,OAAO,EAAE,kBAAkB,CAAC,OAAO;SACnC,CAAC,CAAC;IAEN,MAAM,gBAAgB,GAAG,IAAI,qBAAY,EAAE,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACf,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IACD,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAE/E,gEAAgE;IAChE,mEAAmE;IACnE,oCAAoC;IACpC,MAAM,CAAC,gBAAgB,GAAG,IAAI,2BAAgB,EAAE,CAAC;IACjD,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAErG,qDAAqD;IACrD,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAiD,CAAC;IAEpF,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,MAAM,iBAAiB,GAAG,MAAM,IAAA,iCAAoB,EAAC;QACpD,GAAG;QACH,GAAG;QACH,MAAM;QACN,MAAM;QACN,MAAM;QACN,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAClD,gBAAgB;QAChB,kBAAkB,EAAE,kBAAkB;QACtC,aAAa,EAAE,OAAO,CAAC,OAAO;QAC9B,kBAAkB;QAClB,aAAa;KACb,CAAC,CAAC;IACH,MAAM,IAAA,yBAAe,EAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAE7C,IAAI,eAAe,GAAqC,EAAE,CAAC;IAC3D,IAAI,WAAW,GAAiB,EAAE,CAAC;IACnC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAmB,EAAC;YAC/C,KAAK;YACL,GAAG;YACH,WAAW;YACX,WAAW,EAAE,OAAO,CAAC,OAAO;YAC5B,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;SACnE,CAAC,CAAC;QACH,eAAe,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACnG,eAAe,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAClF,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IACzC,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACxB,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAChC,MAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QACH,MAAM,iBAAiB,EAAE,CAAC;QAC1B,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;QAC9B,OAAO;YACN,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,kBAAkB;SAC3B,CAAC;IACH,CAAC;IAED,IAAA,iCAAuB,EAAC;QACvB,gBAAgB;QAChB,kBAAkB;QAClB,KAAK;KACL,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAW,EAAC;QACjC,WAAW;QACX,MAAM;QACN,gBAAgB;QAChB,cAAc,EAAE,eAAe;QAC/B,KAAK;QACL,kBAAkB;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;KACxB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;IAC9B,MAAM,iBAAiB,EAAE,CAAC;IAE1B,OAAO;QACN,OAAO,EAAE,OAAO,IAAI,CAAC,oBAAoB;QACzC,OAAO,EAAE,kBAAkB;KAC3B,CAAC;AACH,CAAC","sourcesContent":["import { Envelope, IdGenerator, ParseError } from '@cucumber/messages';\r\nimport { EventEmitter } from 'events';\r\nimport { EventDataCollector } from '@cucumber/cucumber/lib/formatter/helpers/index';\r\nimport { emitMetaMessage, emitSupportCodeMessages } from '@cucumber/cucumber/lib/cli/helpers';\r\nimport { IRunOptions, IRunResult } from '@cucumber/cucumber/lib/api/types';\r\nimport { resolvePaths } from '@cucumber/cucumber/lib/paths/index';\r\nimport { SupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types';\r\nimport { makeRuntime } from './make-runtime';\r\nimport { initializeFormatters } from '@cucumber/cucumber/lib/api/formatters';\r\nimport { getSupportCodeLibrary } from '@cucumber/cucumber/lib/api/support';\r\nimport { IRunEnvironment, makeEnvironment } from '@cucumber/cucumber/lib/environment/index';\r\nimport { getPicklesAndErrors } from '@cucumber/cucumber/lib/api/gherkin';\r\nimport MessageCollector from './message-collector';\r\nimport { version } from '../version';\r\nimport { initializeForRunCucumber } from '@cucumber/cucumber/lib/api/plugins';\r\nimport { IFilterablePickle } from '@cucumber/cucumber/lib/filter/index';\r\nimport 'polyfill-symbol-metadata';\r\n\r\n/**\r\n * Execute a Cucumber test run.\r\n *\r\n * Extended from cucumber.js so that we can use our own implementation\r\n * of makeRuntime\r\n *\r\n * @public\r\n * @param options - Configuration loaded from `loadConfiguration`.\r\n * @param environment - Project environment.\r\n * @param onMessage - Callback fired each time Cucumber emits a message.\r\n */\r\nexport async function runCucumber(\r\n\toptions: IRunOptions,\r\n\tenvironment: IRunEnvironment = {},\r\n\tonMessage?: (message: Envelope) => void\r\n): Promise<IRunResult> {\r\n\tconst mergedEnvironment = makeEnvironment(environment);\r\n\tconst { cwd, stdout, stderr, env, logger } = mergedEnvironment;\r\n\r\n\tlogger.debug(`Running cucumber-tsflow ${version}\r\nWorking directory: ${cwd}\r\nRunning from: ${__dirname}\r\n`);\r\n\r\n\tconst newId = IdGenerator.uuid();\r\n\r\n\tconst supportCoordinates =\r\n\t\t'originalCoordinates' in options.support\r\n\t\t\t? options.support.originalCoordinates\r\n\t\t\t: Object.assign(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequireModules: [],\r\n\t\t\t\t\t\trequirePaths: [],\r\n\t\t\t\t\t\tloaders: [],\r\n\t\t\t\t\t\timportPaths: []\r\n\t\t\t\t\t},\r\n\t\t\t\t\toptions.support\r\n\t\t\t\t);\r\n\r\n\tconst pluginManager = await initializeForRunCucumber(\r\n\t\t{\r\n\t\t\t...options,\r\n\t\t\tsupport: supportCoordinates\r\n\t\t},\r\n\t\tmergedEnvironment\r\n\t);\r\n\r\n\tconst resolvedPaths = await resolvePaths(logger, cwd, options.sources, supportCoordinates);\r\n\tpluginManager.emit('paths:resolve', resolvedPaths);\r\n\tconst { sourcePaths, requirePaths, importPaths } = resolvedPaths;\r\n\r\n\tconst supportCodeLibrary =\r\n\t\t'originalCoordinates' in options.support\r\n\t\t\t? (options.support as SupportCodeLibrary)\r\n\t\t\t: await getSupportCodeLibrary({\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t\tcwd,\r\n\t\t\t\t\tnewId,\r\n\t\t\t\t\trequirePaths,\r\n\t\t\t\t\trequireModules: supportCoordinates.requireModules,\r\n\t\t\t\t\timportPaths,\r\n\t\t\t\t\tloaders: supportCoordinates.loaders\r\n\t\t\t\t});\r\n\r\n\tconst eventBroadcaster = new EventEmitter();\r\n\tif (onMessage) {\r\n\t\teventBroadcaster.on('envelope', onMessage);\r\n\t}\r\n\teventBroadcaster.on('envelope', value => pluginManager.emit('message', value));\r\n\r\n\t// create a global instance of the message collector and bind it\r\n\t// to the event broadcaster. This is used by cucumber and for tests\r\n\t// that are not running in parallel.\r\n\tglobal.messageCollector = new MessageCollector();\r\n\teventBroadcaster.on('envelope', global.messageCollector.parseEnvelope.bind(global.messageCollector));\r\n\r\n\t// cast the MessageCollector to an EventDataCollector\r\n\tconst eventDataCollector = global.messageCollector as unknown as EventDataCollector;\r\n\r\n\tlet formatterStreamError = false;\r\n\tconst cleanupFormatters = await initializeFormatters({\r\n\t\tenv,\r\n\t\tcwd,\r\n\t\tstdout,\r\n\t\tstderr,\r\n\t\tlogger,\r\n\t\tonStreamError: () => (formatterStreamError = true),\r\n\t\teventBroadcaster,\r\n\t\teventDataCollector: eventDataCollector,\r\n\t\tconfiguration: options.formats,\r\n\t\tsupportCodeLibrary,\r\n\t\tpluginManager\r\n\t});\r\n\tawait emitMetaMessage(eventBroadcaster, env);\r\n\r\n\tlet filteredPickles: ReadonlyArray<IFilterablePickle> = [];\r\n\tlet parseErrors: ParseError[] = [];\r\n\tif (sourcePaths.length > 0) {\r\n\t\tconst gherkinResult = await getPicklesAndErrors({\r\n\t\t\tnewId,\r\n\t\t\tcwd,\r\n\t\t\tsourcePaths,\r\n\t\t\tcoordinates: options.sources,\r\n\t\t\tonEnvelope: envelope => eventBroadcaster.emit('envelope', envelope)\r\n\t\t});\r\n\t\tfilteredPickles = await pluginManager.transform('pickles:filter', gherkinResult.filterablePickles);\r\n\t\tfilteredPickles = await pluginManager.transform('pickles:order', filteredPickles);\r\n\t\tparseErrors = gherkinResult.parseErrors;\r\n\t}\r\n\tif (parseErrors.length) {\r\n\t\tparseErrors.forEach(parseError => {\r\n\t\t\tlogger.error(`Parse error in \"${parseError.source.uri}\" ${parseError.message}`);\r\n\t\t});\r\n\t\tawait cleanupFormatters();\r\n\t\tawait pluginManager.cleanup();\r\n\t\treturn {\r\n\t\t\tsuccess: false,\r\n\t\t\tsupport: supportCodeLibrary\r\n\t\t};\r\n\t}\r\n\r\n\temitSupportCodeMessages({\r\n\t\teventBroadcaster,\r\n\t\tsupportCodeLibrary,\r\n\t\tnewId\r\n\t});\r\n\r\n\tconst runtime = await makeRuntime({\r\n\t\tenvironment,\r\n\t\tlogger,\r\n\t\teventBroadcaster,\r\n\t\tsourcedPickles: filteredPickles,\r\n\t\tnewId,\r\n\t\tsupportCodeLibrary,\r\n\t\toptions: options.runtime\r\n\t});\r\n\tconst success = await runtime.run();\r\n\tawait pluginManager.cleanup();\r\n\tawait cleanupFormatters();\r\n\r\n\treturn {\r\n\t\tsuccess: success && !formatterStreamError,\r\n\t\tsupport: supportCodeLibrary\r\n\t};\r\n}\r\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { IdGenerator } from '@cucumber/messages';
|
|
3
|
+
import { RuntimeAdapter } from '@cucumber/cucumber/lib/runtime/types';
|
|
4
|
+
import { AssembledTestCase } from '@cucumber/cucumber/lib/assemble/index';
|
|
5
|
+
import { RuntimeOptions } from '@cucumber/cucumber/lib/runtime/index';
|
|
6
|
+
import { SupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types';
|
|
7
|
+
export declare class InProcessAdapter implements RuntimeAdapter {
|
|
8
|
+
private readonly worker;
|
|
9
|
+
private failing;
|
|
10
|
+
constructor(eventBroadcaster: EventEmitter, newId: IdGenerator.NewId, options: RuntimeOptions, supportCodeLibrary: SupportCodeLibrary);
|
|
11
|
+
run(assembledTestCases: ReadonlyArray<AssembledTestCase>): Promise<boolean>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InProcessAdapter = void 0;
|
|
4
|
+
const worker_1 = require("../worker");
|
|
5
|
+
class InProcessAdapter {
|
|
6
|
+
worker;
|
|
7
|
+
failing = false;
|
|
8
|
+
constructor(eventBroadcaster, newId, options, supportCodeLibrary) {
|
|
9
|
+
this.worker = new worker_1.Worker(undefined, eventBroadcaster, newId, options, supportCodeLibrary);
|
|
10
|
+
}
|
|
11
|
+
async run(assembledTestCases) {
|
|
12
|
+
await this.worker.runBeforeAllHooks();
|
|
13
|
+
for (const item of assembledTestCases) {
|
|
14
|
+
const success = await this.worker.runTestCase(item, this.failing);
|
|
15
|
+
if (!success) {
|
|
16
|
+
this.failing = true;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
await this.worker.runAfterAllHooks();
|
|
20
|
+
return !this.failing;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.InProcessAdapter = InProcessAdapter;
|
|
24
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/cucumber/serial/adapter.ts"],"names":[],"mappings":";;;AAIA,sCAAmC;AAInC,MAAa,gBAAgB;IACX,MAAM,CAAS;IACxB,OAAO,GAAY,KAAK,CAAC;IAEjC,YACC,gBAA8B,EAC9B,KAAwB,EACxB,OAAuB,EACvB,kBAAsC;QAEtC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC3F,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,kBAAoD;QAC7D,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,CAAC;QACF,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACD;AAxBD,4CAwBC","sourcesContent":["import { EventEmitter } from 'node:events';\r\nimport { IdGenerator } from '@cucumber/messages';\r\nimport { RuntimeAdapter } from '@cucumber/cucumber/lib/runtime/types';\r\nimport { AssembledTestCase } from '@cucumber/cucumber/lib/assemble/index';\r\nimport { Worker } from '../worker';\r\nimport { RuntimeOptions } from '@cucumber/cucumber/lib/runtime/index';\r\nimport { SupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types';\r\n\r\nexport class InProcessAdapter implements RuntimeAdapter {\r\n\tprivate readonly worker: Worker;\r\n\tprivate failing: boolean = false;\r\n\r\n\tconstructor(\r\n\t\teventBroadcaster: EventEmitter,\r\n\t\tnewId: IdGenerator.NewId,\r\n\t\toptions: RuntimeOptions,\r\n\t\tsupportCodeLibrary: SupportCodeLibrary\r\n\t) {\r\n\t\tthis.worker = new Worker(undefined, eventBroadcaster, newId, options, supportCodeLibrary);\r\n\t}\r\n\r\n\tasync run(assembledTestCases: ReadonlyArray<AssembledTestCase>): Promise<boolean> {\r\n\t\tawait this.worker.runBeforeAllHooks();\r\n\t\tfor (const item of assembledTestCases) {\r\n\t\t\tconst success = await this.worker.runTestCase(item, this.failing);\r\n\t\t\tif (!success) {\r\n\t\t\t\tthis.failing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tawait this.worker.runAfterAllHooks();\r\n\t\treturn !this.failing;\r\n\t}\r\n}\r\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=test-case-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-case-info.js","sourceRoot":"","sources":["../../src/cucumber/test-case-info.ts"],"names":[],"mappings":"","sourcesContent":["import type { GherkinDocument, Pickle, TestStepResult } from '@cucumber/messages';\r\n\r\n/**\r\n * Parameter passed into initialize() at the\r\n * start of a test case (scenario) before most\r\n * hooks and all steps\r\n */\r\nexport interface StartTestCaseInfo {\r\n\tgherkinDocument: GherkinDocument;\r\n\tpickle: Pickle;\r\n\ttestCaseStartedId: string;\r\n}\r\n\r\n/**\r\n * Parameter passed into dispost() at the\r\n * end of a test case (scenario) after the\r\n * last After hook has executed.\r\n */\r\nexport interface EndTestCaseInfo {\r\n\tgherkinDocument: GherkinDocument;\r\n\tpickle: Pickle;\r\n\tresult: TestStepResult;\r\n\twillBeRetried: boolean;\r\n\ttestCaseStartedId: string;\r\n}\r\n"]}
|
|
@@ -7,11 +7,11 @@ import { IDefinition } from '@cucumber/cucumber/lib/models/definition';
|
|
|
7
7
|
import { StepBinding } from '../types/step-binding';
|
|
8
8
|
import { ManagedScenarioContext } from './managed-scenario-context';
|
|
9
9
|
export default class TestCaseRunner {
|
|
10
|
+
private readonly workerId;
|
|
10
11
|
private readonly attachmentManager;
|
|
11
12
|
private currentTestCaseStartedId?;
|
|
12
13
|
private currentTestStepId?;
|
|
13
14
|
private readonly eventBroadcaster;
|
|
14
|
-
private readonly stopwatch;
|
|
15
15
|
private readonly gherkinDocument;
|
|
16
16
|
private readonly newId;
|
|
17
17
|
private readonly pickle;
|
|
@@ -24,7 +24,7 @@ export default class TestCaseRunner {
|
|
|
24
24
|
private world;
|
|
25
25
|
private readonly worldParameters;
|
|
26
26
|
private bindingRegistry;
|
|
27
|
-
constructor({
|
|
27
|
+
constructor({ workerId, eventBroadcaster, gherkinDocument, newId, pickle, testCase, retries, skip, filterStackTraces, supportCodeLibrary, worldParameters }: INewTestCaseRunnerOptions);
|
|
28
28
|
resetTestProgressData(): void;
|
|
29
29
|
getBeforeStepHookDefinitions(): TestStepHookDefinition[];
|
|
30
30
|
getAfterStepHookDefinitions(): TestStepHookDefinition[];
|
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
@@ -32,14 +42,15 @@ const step_runner_1 = __importDefault(require("@cucumber/cucumber/lib/runtime/st
|
|
|
32
42
|
const messages = __importStar(require("@cucumber/messages"));
|
|
33
43
|
const messages_1 = require("@cucumber/messages");
|
|
34
44
|
const value_checker_1 = require("@cucumber/cucumber/lib/value_checker");
|
|
35
|
-
const binding_registry_1 = require("
|
|
45
|
+
const binding_registry_1 = require("../bindings/binding-registry");
|
|
36
46
|
const console_1 = require("console");
|
|
47
|
+
const stopwatch_1 = require("@cucumber/cucumber/lib/runtime/stopwatch");
|
|
37
48
|
class TestCaseRunner {
|
|
49
|
+
workerId;
|
|
38
50
|
attachmentManager;
|
|
39
51
|
currentTestCaseStartedId;
|
|
40
52
|
currentTestStepId;
|
|
41
53
|
eventBroadcaster;
|
|
42
|
-
stopwatch;
|
|
43
54
|
gherkinDocument;
|
|
44
55
|
newId;
|
|
45
56
|
pickle;
|
|
@@ -52,7 +63,24 @@ class TestCaseRunner {
|
|
|
52
63
|
world;
|
|
53
64
|
worldParameters;
|
|
54
65
|
bindingRegistry;
|
|
55
|
-
constructor({
|
|
66
|
+
constructor({ workerId, eventBroadcaster, gherkinDocument, newId, pickle, testCase, retries = 0, skip, filterStackTraces, supportCodeLibrary, worldParameters }) {
|
|
67
|
+
this.attachmentManager = new index_1.default(({ data, media, fileName }) => {
|
|
68
|
+
if ((0, value_checker_1.doesNotHaveValue)(this.currentTestStepId)) {
|
|
69
|
+
throw new Error('Cannot attach when a step/hook is not running. Ensure your step/hook waits for the attach to finish.');
|
|
70
|
+
}
|
|
71
|
+
const attachment = {
|
|
72
|
+
attachment: {
|
|
73
|
+
body: data,
|
|
74
|
+
contentEncoding: media.encoding,
|
|
75
|
+
mediaType: media.contentType,
|
|
76
|
+
fileName,
|
|
77
|
+
testCaseStartedId: this.currentTestCaseStartedId,
|
|
78
|
+
testStepId: this.currentTestStepId
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
this.eventBroadcaster.emit('envelope', attachment);
|
|
82
|
+
});
|
|
83
|
+
this.workerId = workerId;
|
|
56
84
|
this.attachmentManager = new index_1.default(({ data, media, fileName }) => {
|
|
57
85
|
if ((0, value_checker_1.doesNotHaveValue)(this.currentTestStepId)) {
|
|
58
86
|
throw new Error('Cannot attach when a step/hook is not running. Ensure your step/hook waits for the attach to finish.');
|
|
@@ -70,7 +98,6 @@ class TestCaseRunner {
|
|
|
70
98
|
this.eventBroadcaster.emit('envelope', attachment);
|
|
71
99
|
});
|
|
72
100
|
this.eventBroadcaster = eventBroadcaster;
|
|
73
|
-
this.stopwatch = stopwatch;
|
|
74
101
|
this.gherkinDocument = gherkinDocument;
|
|
75
102
|
this.maxAttempts = 1 + (skip ? 0 : retries);
|
|
76
103
|
this.newId = newId;
|
|
@@ -87,7 +114,8 @@ class TestCaseRunner {
|
|
|
87
114
|
this.world = new this.supportCodeLibrary.World({
|
|
88
115
|
attach: this.attachmentManager.create.bind(this.attachmentManager),
|
|
89
116
|
log: this.attachmentManager.log.bind(this.attachmentManager),
|
|
90
|
-
|
|
117
|
+
link: this.attachmentManager.link.bind(this.attachmentManager),
|
|
118
|
+
parameters: structuredClone(this.worldParameters)
|
|
91
119
|
});
|
|
92
120
|
this.testStepResults = [];
|
|
93
121
|
}
|
|
@@ -131,7 +159,7 @@ class TestCaseRunner {
|
|
|
131
159
|
testStepStarted: {
|
|
132
160
|
testCaseStartedId: this.currentTestCaseStartedId,
|
|
133
161
|
testStepId,
|
|
134
|
-
timestamp:
|
|
162
|
+
timestamp: (0, stopwatch_1.timestamp)()
|
|
135
163
|
}
|
|
136
164
|
};
|
|
137
165
|
this.eventBroadcaster.emit('envelope', testStepStarted);
|
|
@@ -144,7 +172,7 @@ class TestCaseRunner {
|
|
|
144
172
|
testCaseStartedId: this.currentTestCaseStartedId,
|
|
145
173
|
testStepId,
|
|
146
174
|
testStepResult,
|
|
147
|
-
timestamp:
|
|
175
|
+
timestamp: (0, stopwatch_1.timestamp)()
|
|
148
176
|
}
|
|
149
177
|
};
|
|
150
178
|
this.eventBroadcaster.emit('envelope', testStepFinished);
|
|
@@ -167,7 +195,7 @@ class TestCaseRunner {
|
|
|
167
195
|
attempt,
|
|
168
196
|
testCaseId: this.testCase.id,
|
|
169
197
|
id: this.currentTestCaseStartedId,
|
|
170
|
-
timestamp:
|
|
198
|
+
timestamp: (0, stopwatch_1.timestamp)()
|
|
171
199
|
}
|
|
172
200
|
};
|
|
173
201
|
this.eventBroadcaster.emit('envelope', testCaseStarted);
|
|
@@ -211,7 +239,7 @@ class TestCaseRunner {
|
|
|
211
239
|
const testCaseFinished = {
|
|
212
240
|
testCaseFinished: {
|
|
213
241
|
testCaseStartedId: this.currentTestCaseStartedId,
|
|
214
|
-
timestamp:
|
|
242
|
+
timestamp: (0, stopwatch_1.timestamp)(),
|
|
215
243
|
willBeRetried
|
|
216
244
|
}
|
|
217
245
|
};
|
|
@@ -309,9 +337,9 @@ class TestCaseRunner {
|
|
|
309
337
|
* @param scenarioContext
|
|
310
338
|
*/
|
|
311
339
|
async initializeContext(stepBinding, scenarioContext) {
|
|
312
|
-
const contextTypes = this.bindingRegistry.
|
|
340
|
+
const contextTypes = this.bindingRegistry.getContextTypesForClass(stepBinding.classPrototype);
|
|
313
341
|
if (contextTypes.length > 0) {
|
|
314
|
-
scenarioContext.getOrActivateBindingClass(stepBinding.
|
|
342
|
+
scenarioContext.getOrActivateBindingClass(stepBinding.classPrototype, contextTypes, this.world);
|
|
315
343
|
const startTestCaseParameter = {
|
|
316
344
|
gherkinDocument: this.gherkinDocument,
|
|
317
345
|
pickle: this.pickle,
|
|
@@ -328,4 +356,4 @@ function findHookDefinition(id, supportCodeLibrary) {
|
|
|
328
356
|
function findStepDefinition(id, supportCodeLibrary) {
|
|
329
357
|
return supportCodeLibrary.stepDefinitions.find(definition => definition.id === id);
|
|
330
358
|
}
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdWN1bWJlci90ZXN0LWNhc2UtcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvRUFBbUY7QUFFbkYsb0dBQXdGO0FBQ3hGLDZGQUFvRTtBQUNwRSw2REFBK0M7QUFDL0MsaURBQXlFO0FBVXpFLHdFQUF1RjtBQUd2Rix5REFBcUQ7QUFHckQscUNBQWdDO0FBR2hDLE1BQXFCLGNBQWM7SUFDakIsaUJBQWlCLENBQW9CO0lBQzlDLHdCQUF3QixDQUFVO0lBQ2xDLGlCQUFpQixDQUFVO0lBQ2xCLGdCQUFnQixDQUFlO0lBQy9CLFNBQVMsQ0FBYTtJQUN0QixlQUFlLENBQTJCO0lBQzFDLEtBQUssQ0FBb0I7SUFDekIsTUFBTSxDQUFrQjtJQUN4QixRQUFRLENBQW9CO0lBQzVCLFdBQVcsQ0FBUztJQUNwQixJQUFJLENBQVU7SUFDZCxpQkFBaUIsQ0FBVTtJQUMzQixrQkFBa0IsQ0FBc0I7SUFDakQsZUFBZSxDQUE2QjtJQUM1QyxLQUFLLENBQU07SUFDRixlQUFlLENBQU07SUFDOUIsZUFBZSxDQUFrQjtJQUV6QyxZQUFZLEVBQ1gsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxHQUFHLENBQUMsRUFDWCxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixlQUFlLEVBQ1k7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksZUFBaUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1lBQzVFLElBQUksSUFBQSxnQ0FBZ0IsRUFBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxJQUFJLEtBQUssQ0FDZCxzR0FBc0cs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
|
|
359
|
+
//# sourceMappingURL=test-case-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-case-runner.js","sourceRoot":"","sources":["../../src/cucumber/test-case-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { getAmbiguousStepException } from '@cucumber/cucumber/lib/runtime/helpers';\r\nimport { INewTestCaseRunnerOptions } from '@cucumber/cucumber/lib/runtime/test_case_runner';\r\nimport AttachmentManager, { ICreateAttachment } from '@cucumber/cucumber/lib/runtime/attachment_manager/index';\r\nimport StepRunner from '@cucumber/cucumber/lib/runtime/step_runner';\r\nimport * as messages from '@cucumber/messages';\r\nimport { getWorstTestStepResult, IdGenerator } from '@cucumber/messages';\r\nimport { EventEmitter } from 'events';\r\nimport {\r\n\tSupportCodeLibrary,\r\n\tITestCaseHookParameter,\r\n\tITestStepHookParameter\r\n} from '@cucumber/cucumber/lib/support_code_library_builder/types';\r\nimport TestCaseHookDefinition from '@cucumber/cucumber/lib/models/test_case_hook_definition';\r\nimport TestStepHookDefinition from '@cucumber/cucumber/lib/models/test_step_hook_definition';\r\nimport { IDefinition } from '@cucumber/cucumber/lib/models/definition';\r\nimport { doesHaveValue, doesNotHaveValue } from '@cucumber/cucumber/lib/value_checker';\r\nimport StepDefinition from '@cucumber/cucumber/lib/models/step_definition';\r\nimport { BindingRegistry } from '../bindings/binding-registry';\r\nimport { StepBinding } from '../types/step-binding';\r\nimport { ManagedScenarioContext } from './managed-scenario-context';\r\nimport { error } from 'console';\r\nimport { EndTestCaseInfo, StartTestCaseInfo } from './test-case-info';\r\nimport { IWorldOptions } from '@cucumber/cucumber/lib/support_code_library_builder/world';\r\nimport { timestamp } from '@cucumber/cucumber/lib/runtime/stopwatch';\r\n\r\nexport default class TestCaseRunner {\r\n\tprivate readonly workerId: string | undefined;\r\n\tprivate readonly attachmentManager: AttachmentManager;\r\n\tprivate currentTestCaseStartedId?: string;\r\n\tprivate currentTestStepId?: string;\r\n\tprivate readonly eventBroadcaster: EventEmitter;\r\n\tprivate readonly gherkinDocument: messages.GherkinDocument;\r\n\tprivate readonly newId: IdGenerator.NewId;\r\n\tprivate readonly pickle: messages.Pickle;\r\n\tprivate readonly testCase: messages.TestCase;\r\n\tprivate readonly maxAttempts: number;\r\n\tprivate readonly skip: boolean;\r\n\tprivate readonly filterStackTraces: boolean;\r\n\tprivate readonly supportCodeLibrary: SupportCodeLibrary;\r\n\tprivate testStepResults?: messages.TestStepResult[];\r\n\tprivate world: any;\r\n\tprivate readonly worldParameters: any;\r\n\tprivate bindingRegistry: BindingRegistry;\r\n\r\n\tconstructor({\r\n\t\tworkerId,\r\n\t\teventBroadcaster,\r\n\t\tgherkinDocument,\r\n\t\tnewId,\r\n\t\tpickle,\r\n\t\ttestCase,\r\n\t\tretries = 0,\r\n\t\tskip,\r\n\t\tfilterStackTraces,\r\n\t\tsupportCodeLibrary,\r\n\t\tworldParameters\r\n\t}: INewTestCaseRunnerOptions) {\r\n\t\tthis.attachmentManager = new AttachmentManager(({ data, media, fileName }) => {\r\n\t\t\tif (doesNotHaveValue(this.currentTestStepId)) {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t'Cannot attach when a step/hook is not running. Ensure your step/hook waits for the attach to finish.'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tconst attachment: messages.Envelope = {\r\n\t\t\t\tattachment: {\r\n\t\t\t\t\tbody: data,\r\n\t\t\t\t\tcontentEncoding: media.encoding,\r\n\t\t\t\t\tmediaType: media.contentType,\r\n\t\t\t\t\tfileName,\r\n\t\t\t\t\ttestCaseStartedId: this.currentTestCaseStartedId,\r\n\t\t\t\t\ttestStepId: this.currentTestStepId\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis.eventBroadcaster.emit('envelope', attachment);\r\n\t\t});\r\n\t\tthis.workerId = workerId;\r\n\t\tthis.attachmentManager = new AttachmentManager(({ data, media, fileName }) => {\r\n\t\t\tif (doesNotHaveValue(this.currentTestStepId)) {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t'Cannot attach when a step/hook is not running. Ensure your step/hook waits for the attach to finish.'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tconst attachment: messages.Envelope = {\r\n\t\t\t\tattachment: {\r\n\t\t\t\t\tbody: data,\r\n\t\t\t\t\tcontentEncoding: media.encoding,\r\n\t\t\t\t\tmediaType: media.contentType,\r\n\t\t\t\t\tfileName,\r\n\t\t\t\t\ttestCaseStartedId: this.currentTestCaseStartedId,\r\n\t\t\t\t\ttestStepId: this.currentTestStepId\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis.eventBroadcaster.emit('envelope', attachment);\r\n\t\t});\r\n\t\tthis.eventBroadcaster = eventBroadcaster;\r\n\t\tthis.gherkinDocument = gherkinDocument;\r\n\t\tthis.maxAttempts = 1 + (skip ? 0 : retries);\r\n\t\tthis.newId = newId;\r\n\t\tthis.pickle = pickle;\r\n\t\tthis.testCase = testCase;\r\n\t\tthis.skip = skip;\r\n\t\tthis.filterStackTraces = filterStackTraces;\r\n\t\tthis.supportCodeLibrary = supportCodeLibrary;\r\n\t\tthis.worldParameters = worldParameters;\r\n\t\tthis.resetTestProgressData();\r\n\t\tthis.bindingRegistry = BindingRegistry.instance;\r\n\t}\r\n\r\n\tresetTestProgressData(): void {\r\n\t\tthis.world = new this.supportCodeLibrary.World({\r\n\t\t\tattach: this.attachmentManager.create.bind(this.attachmentManager) as unknown as ICreateAttachment,\r\n\t\t\tlog: this.attachmentManager.log.bind(this.attachmentManager),\r\n\t\t\tlink: this.attachmentManager.link.bind(this.attachmentManager),\r\n\t\t\tparameters: structuredClone(this.worldParameters)\r\n\t\t} satisfies IWorldOptions);\r\n\t\tthis.testStepResults = [];\r\n\t}\r\n\r\n\tgetBeforeStepHookDefinitions(): TestStepHookDefinition[] {\r\n\t\treturn this.supportCodeLibrary.beforeTestStepHookDefinitions.filter(hookDefinition =>\r\n\t\t\thookDefinition.appliesToTestCase(this.pickle)\r\n\t\t);\r\n\t}\r\n\r\n\tgetAfterStepHookDefinitions(): TestStepHookDefinition[] {\r\n\t\treturn this.supportCodeLibrary.afterTestStepHookDefinitions\r\n\t\t\t.slice(0)\r\n\t\t\t.reverse()\r\n\t\t\t.filter(hookDefinition => hookDefinition.appliesToTestCase(this.pickle));\r\n\t}\r\n\r\n\tgetWorstStepResult(): messages.TestStepResult {\r\n\t\tif (!this.testStepResults || this.testStepResults.length === 0) {\r\n\t\t\treturn {\r\n\t\t\t\tstatus: this.skip ? messages.TestStepResultStatus.SKIPPED : messages.TestStepResultStatus.PASSED,\r\n\t\t\t\tduration: messages.TimeConversion.millisecondsToDuration(0)\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn getWorstTestStepResult(this.testStepResults);\r\n\t}\r\n\r\n\tasync invokeStep(\r\n\t\tstepParam: messages.PickleStep | null,\r\n\t\tstepDefinition: IDefinition,\r\n\t\thookParameter?: any\r\n\t): Promise<messages.TestStepResult> {\r\n\t\tconst step = stepParam!;\r\n\t\treturn await StepRunner.run({\r\n\t\t\tdefaultTimeout: this.supportCodeLibrary.defaultTimeout,\r\n\t\t\tfilterStackTraces: this.filterStackTraces,\r\n\t\t\thookParameter,\r\n\t\t\tstep,\r\n\t\t\tstepDefinition,\r\n\t\t\tworld: this.world\r\n\t\t});\r\n\t}\r\n\r\n\tisSkippingSteps(): boolean {\r\n\t\treturn this.getWorstStepResult().status !== messages.TestStepResultStatus.PASSED;\r\n\t}\r\n\r\n\tshouldSkipHook(isBeforeHook: boolean): boolean {\r\n\t\treturn this.skip || (this.isSkippingSteps() && isBeforeHook);\r\n\t}\r\n\r\n\tasync aroundTestStep(testStepId: string, runStepFn: () => Promise<messages.TestStepResult>): Promise<void> {\r\n\t\tconst testStepStarted: messages.Envelope = {\r\n\t\t\ttestStepStarted: {\r\n\t\t\t\ttestCaseStartedId: this.currentTestCaseStartedId!,\r\n\t\t\t\ttestStepId,\r\n\t\t\t\ttimestamp: timestamp()\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.eventBroadcaster.emit('envelope', testStepStarted);\r\n\t\tthis.currentTestStepId = testStepId;\r\n\t\tconst testStepResult = await runStepFn();\r\n\t\tthis.currentTestStepId = undefined;\r\n\t\tthis.testStepResults?.push(testStepResult);\r\n\t\tconst testStepFinished: messages.Envelope = {\r\n\t\t\ttestStepFinished: {\r\n\t\t\t\ttestCaseStartedId: this.currentTestCaseStartedId!,\r\n\t\t\t\ttestStepId,\r\n\t\t\t\ttestStepResult,\r\n\t\t\t\ttimestamp: timestamp()\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.eventBroadcaster.emit('envelope', testStepFinished);\r\n\t}\r\n\r\n\tasync run(): Promise<messages.TestStepResultStatus> {\r\n\t\tfor (let attempt = 0; attempt < this.maxAttempts; attempt++) {\r\n\t\t\tconst moreAttemptsRemaining = attempt + 1 < this.maxAttempts;\r\n\r\n\t\t\tconst willBeRetried = await this.runAttempt(attempt, moreAttemptsRemaining);\r\n\r\n\t\t\tif (!willBeRetried) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tthis.resetTestProgressData();\r\n\t\t}\r\n\t\treturn this.getWorstStepResult().status;\r\n\t}\r\n\r\n\tasync runAttempt(attempt: number, moreAttemptsRemaining: boolean): Promise<boolean> {\r\n\t\tthis.currentTestCaseStartedId = this.newId();\r\n\t\tconst testCaseStarted: messages.Envelope = {\r\n\t\t\ttestCaseStarted: {\r\n\t\t\t\tattempt,\r\n\t\t\t\ttestCaseId: this.testCase.id,\r\n\t\t\t\tid: this.currentTestCaseStartedId,\r\n\t\t\t\ttimestamp: timestamp()\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.eventBroadcaster.emit('envelope', testCaseStarted);\r\n\t\t// used to determine whether a hook is a Before or After\r\n\t\tlet didWeRunStepsYet = false;\r\n\t\tfor (const testStep of this.testCase.testSteps) {\r\n\t\t\tawait this.aroundTestStep(testStep.id, async () => {\r\n\t\t\t\tif (doesHaveValue(testStep.hookId)) {\r\n\t\t\t\t\tconst hookParameter: ITestCaseHookParameter = {\r\n\t\t\t\t\t\tgherkinDocument: this.gherkinDocument,\r\n\t\t\t\t\t\tpickle: this.pickle,\r\n\t\t\t\t\t\ttestCaseStartedId: this.currentTestCaseStartedId!\r\n\t\t\t\t\t};\r\n\t\t\t\t\tif (didWeRunStepsYet) {\r\n\t\t\t\t\t\thookParameter.result = this.getWorstStepResult();\r\n\t\t\t\t\t\thookParameter.willBeRetried =\r\n\t\t\t\t\t\t\tthis.getWorstStepResult().status === messages.TestStepResultStatus.FAILED && moreAttemptsRemaining;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn await this.runHook(\r\n\t\t\t\t\t\tfindHookDefinition(testStep.hookId!, this.supportCodeLibrary),\r\n\t\t\t\t\t\thookParameter,\r\n\t\t\t\t\t\t!didWeRunStepsYet\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst pickleStep = this.pickle.steps.find(pickleStep => pickleStep.id === testStep.pickleStepId);\r\n\t\t\t\t\tconst testStepResult = await this.runStep(pickleStep!, testStep);\r\n\t\t\t\t\tdidWeRunStepsYet = true;\r\n\t\t\t\t\treturn testStepResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tconst worseResult = this.getWorstStepResult();\r\n\t\tconst willBeRetried = worseResult.status === messages.TestStepResultStatus.FAILED && moreAttemptsRemaining;\r\n\r\n\t\tconst endTestCaseParameter: EndTestCaseInfo = {\r\n\t\t\tgherkinDocument: this.gherkinDocument,\r\n\t\t\tpickle: this.pickle,\r\n\t\t\ttestCaseStartedId: this.currentTestCaseStartedId!,\r\n\t\t\tresult: worseResult,\r\n\t\t\twillBeRetried: willBeRetried\r\n\t\t};\r\n\r\n\t\t// End test case will call dispose on all context types\r\n\t\t// passed into a binding and then end the context.\r\n\t\tawait global.messageCollector.endTestCase(endTestCaseParameter);\r\n\r\n\t\tconst testCaseFinished: messages.Envelope = {\r\n\t\t\ttestCaseFinished: {\r\n\t\t\t\ttestCaseStartedId: this.currentTestCaseStartedId,\r\n\t\t\t\ttimestamp: timestamp(),\r\n\t\t\t\twillBeRetried\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.eventBroadcaster.emit('envelope', testCaseFinished);\r\n\r\n\t\treturn willBeRetried;\r\n\t}\r\n\r\n\tasync runHook(\r\n\t\thookDefinition: TestCaseHookDefinition,\r\n\t\thookParameter: ITestCaseHookParameter,\r\n\t\tisBeforeHook: boolean\r\n\t): Promise<messages.TestStepResult> {\r\n\t\tif (this.shouldSkipHook(isBeforeHook)) {\r\n\t\t\treturn {\r\n\t\t\t\tstatus: messages.TestStepResultStatus.SKIPPED,\r\n\t\t\t\tduration: messages.TimeConversion.millisecondsToDuration(0)\r\n\t\t\t};\r\n\t\t}\r\n\t\t// Get the step binding and scenario context so that we can\r\n\t\t// initialize any context objects before hooks are executed\r\n\t\tconst stepBinding = this.bindingRegistry.getStepBindingByCucumberKey((hookDefinition.options as any).cucumberKey);\r\n\t\tif (!stepBinding) throw error('Unable to find StepBinding!');\r\n\t\tconst scenarioContext = global.messageCollector.getHookScenarioContext(hookParameter);\r\n\t\tif (!scenarioContext) throw error('Unable to find the ManagedScenarioContext!');\r\n\t\tawait this.initializeContext(stepBinding, scenarioContext);\r\n\r\n\t\treturn await this.invokeStep(null, hookDefinition, hookParameter);\r\n\t}\r\n\r\n\tasync runStepHooks(\r\n\t\tstepHooks: TestStepHookDefinition[],\r\n\t\tpickleStep: messages.PickleStep,\r\n\t\tstepResult?: messages.TestStepResult\r\n\t): Promise<messages.TestStepResult[]> {\r\n\t\tconst stepHooksResult = [];\r\n\t\tconst hookParameter: ITestStepHookParameter = {\r\n\t\t\tgherkinDocument: this.gherkinDocument,\r\n\t\t\tpickle: this.pickle,\r\n\t\t\tpickleStep,\r\n\t\t\ttestCaseStartedId: this.currentTestCaseStartedId!,\r\n\t\t\ttestStepId: this.currentTestStepId!,\r\n\t\t\tresult: stepResult!\r\n\t\t};\r\n\t\tfor (const stepHookDefinition of stepHooks) {\r\n\t\t\tstepHooksResult.push(await this.invokeStep(null, stepHookDefinition, hookParameter));\r\n\t\t}\r\n\t\treturn stepHooksResult;\r\n\t}\r\n\r\n\tasync runStep(pickleStep: messages.PickleStep, testStep: messages.TestStep): Promise<messages.TestStepResult> {\r\n\t\tconst stepDefinitions = testStep.stepDefinitionIds?.map(stepDefinitionId => {\r\n\t\t\treturn findStepDefinition(stepDefinitionId, this.supportCodeLibrary);\r\n\t\t});\r\n\r\n\t\tif (!stepDefinitions || stepDefinitions.length === 0) {\r\n\t\t\treturn {\r\n\t\t\t\tstatus: messages.TestStepResultStatus.UNDEFINED,\r\n\t\t\t\tduration: messages.TimeConversion.millisecondsToDuration(0)\r\n\t\t\t};\r\n\t\t} else if (stepDefinitions.length > 1) {\r\n\t\t\treturn {\r\n\t\t\t\tmessage: getAmbiguousStepException(stepDefinitions),\r\n\t\t\t\tstatus: messages.TestStepResultStatus.AMBIGUOUS,\r\n\t\t\t\tduration: messages.TimeConversion.millisecondsToDuration(0)\r\n\t\t\t};\r\n\t\t} else if (this.isSkippingSteps()) {\r\n\t\t\treturn {\r\n\t\t\t\tstatus: messages.TestStepResultStatus.SKIPPED,\r\n\t\t\t\tduration: messages.TimeConversion.millisecondsToDuration(0)\r\n\t\t\t};\r\n\t\t}\r\n\t\t// Get the step binding and scenario context so that we can\r\n\t\t// initialize any context objects before hooks are executed\r\n\t\tconst stepBinding = this.bindingRegistry.getStepBindingByCucumberKey(\r\n\t\t\t(stepDefinitions[0].options as any).cucumberKey\r\n\t\t);\r\n\t\tif (!stepBinding) throw error('Unable to find StepBinding!');\r\n\t\tconst scenarioContext = global.messageCollector.getStepScenarioContext(stepBinding);\r\n\t\tif (!scenarioContext) throw error('Unable to find the ManagedScenarioContext!');\r\n\t\tawait this.initializeContext(stepBinding, scenarioContext);\r\n\r\n\t\t// next execute any before step hooks followed by the step if there are no\r\n\t\t// failures in before step hooks.\r\n\t\tlet stepResult;\r\n\t\tlet stepResults = await this.runStepHooks(this.getBeforeStepHookDefinitions(), pickleStep);\r\n\t\tif (getWorstTestStepResult(stepResults).status !== messages.TestStepResultStatus.FAILED) {\r\n\t\t\tstepResult = await this.invokeStep(pickleStep, stepDefinitions[0]);\r\n\t\t\tstepResults.push(stepResult);\r\n\t\t}\r\n\t\t// run the after step hooks\r\n\t\tconst afterStepHookResults = await this.runStepHooks(this.getAfterStepHookDefinitions(), pickleStep, stepResult);\r\n\t\tstepResults = stepResults.concat(afterStepHookResults);\r\n\r\n\t\tconst finalStepResult = getWorstTestStepResult(stepResults);\r\n\t\tlet finalDuration = messages.TimeConversion.millisecondsToDuration(0);\r\n\t\tfor (const result of stepResults) {\r\n\t\t\tfinalDuration = messages.TimeConversion.addDurations(finalDuration, result.duration);\r\n\t\t}\r\n\t\tfinalStepResult.duration = finalDuration;\r\n\t\treturn finalStepResult;\r\n\t}\r\n\r\n\t/**\r\n\t * Helper used to initialize any context types that are passed into\r\n\t * a binding class before any hooks or steps are executed.\r\n\t * @param stepBinding\r\n\t * @param scenarioContext\r\n\t */\r\n\tasync initializeContext(stepBinding: StepBinding, scenarioContext: ManagedScenarioContext): Promise<void> {\r\n\t\tconst contextTypes = this.bindingRegistry.getContextTypesForClass(stepBinding.classPrototype);\r\n\t\tif (contextTypes.length > 0) {\r\n\t\t\tscenarioContext.getOrActivateBindingClass(stepBinding.classPrototype, contextTypes, this.world);\r\n\r\n\t\t\tconst startTestCaseParameter: StartTestCaseInfo = {\r\n\t\t\t\tgherkinDocument: this.gherkinDocument,\r\n\t\t\t\tpickle: this.pickle,\r\n\t\t\t\ttestCaseStartedId: this.currentTestCaseStartedId!\r\n\t\t\t};\r\n\t\t\tawait scenarioContext.initialize(startTestCaseParameter);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction findHookDefinition(id: string, supportCodeLibrary: SupportCodeLibrary): TestCaseHookDefinition {\r\n\treturn [...supportCodeLibrary.beforeTestCaseHookDefinitions, ...supportCodeLibrary.afterTestCaseHookDefinitions].find(\r\n\t\tdefinition => definition.id === id\r\n\t)!;\r\n}\r\n\r\nfunction findStepDefinition(id: string, supportCodeLibrary: SupportCodeLibrary): StepDefinition {\r\n\treturn supportCodeLibrary.stepDefinitions.find(definition => definition.id === id)!;\r\n}\r\n"]}
|
package/lib/cucumber/utils.js
CHANGED
|
@@ -75,4 +75,4 @@ const escapeRegExp = (str) => {
|
|
|
75
75
|
// eslint-disable-next-line no-useless-escape
|
|
76
76
|
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '$&');
|
|
77
77
|
};
|
|
78
|
-
//# sourceMappingURL=
|
|
78
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cucumber/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import lep from '@jeanbenitez/logical-expression-parser';\r\nimport logger from '../utils/logger';\r\n\r\n/**\r\n * Uses a regular expression to match a step expression with\r\n * the feature text passed in\r\n * @param stepText\r\n * @param featureText\r\n * @returns\r\n */\r\nexport const hasMatchingStep = (stepText: string, featureText: string): boolean => {\r\n\tif (stepText.trim().length === 0) return false;\r\n\r\n\ttry {\r\n\t\tconst regexStep = new RegExp(getRegTextForStep(stepText));\r\n\t\tconst match = featureText.match(regexStep);\r\n\t\treturn match !== null && match.length > 0;\r\n\t} catch (err) {\r\n\t\tlogger.error((err as any).message);\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\n/**\r\n * Helper that uses a lexical parser to apply the tag patterns used by\r\n * Cucumber to associate hooks with scenario and feature tags\r\n * @param tagPattern examples: 'tag1', 'tag1 and tag2', 'tag1 or tag2)\r\n * @param tags\r\n * @returns\r\n */\r\nexport const hasMatchingTags = (tagPattern: string, tags: string[]): boolean => {\r\n\treturn lep.parse(tagPattern.toLowerCase(), (t: string) => tags.map(tag => tag.toLowerCase()).includes(t));\r\n};\r\n\r\nconst getRegTextForStep = (step: string): string => {\r\n\t//Ruby interpolation (like `#{Something}` ) should be replaced with `.*`\r\n\t//https://github.com/alexkrechik/VSCucumberAutoComplete/issues/65\r\n\tstep = step.replace(/#{(.*?)}/g, '.*');\r\n\r\n\t//Parameter-types\r\n\t//https://github.com/alexkrechik/VSCucumberAutoComplete/issues/66\r\n\t//https://docs.cucumber.io/cucumber/cucumber-expressions/\r\n\tstep = step.replace(/{float}/g, '-?\\\\d*\\\\.?\\\\d+');\r\n\tstep = step.replace(/{bigdecimal}/g, '-?\\\\d*\\\\.?\\\\d+');\r\n\tstep = step.replace(/{double}/g, '-?\\\\d*\\\\.?\\\\d+');\r\n\tstep = step.replace(/{int}/g, '-?\\\\d+');\r\n\tstep = step.replace(/{biginteger}/g, '-?\\\\d+');\r\n\tstep = step.replace(/{byte}/g, '-?\\\\d+');\r\n\tstep = step.replace(/{short}/g, '-?\\\\d+');\r\n\tstep = step.replace(/{long}/g, '-?\\\\d+');\r\n\tstep = step.replace(/{stringInDoubleQuotes}/g, '\"[^\"]+\"');\r\n\tstep = step.replace(/{word}/g, '[A-Za-z]+');\r\n\tstep = step.replace(/{string}/g, '(\"|\\')[^\\\\1]*\\\\1');\r\n\tstep = step.replace(/{boolean}/g, 'true|false');\r\n\tstep = step.replace(/{}/g, '.*');\r\n\r\n\t//Optional Text\r\n\tstep = step.replace(/\\(([a-z]+)\\)/g, '($1)?');\r\n\r\n\t//Alternative text a/b/c === (a|b|c)\r\n\tstep = step.replace(/([a-zA-Z]+)(?:\\/([a-zA-Z]+))+/g, match => `(${match.replace(/\\//g, '|')})`);\r\n\r\n\t//Handle Cucumber Expressions (like `{Something}`) should be replaced with `.*`\r\n\t//https://github.com/alexkrechik/VSCucumberAutoComplete/issues/99\r\n\t//Cucumber Expressions Custom Parameter Type Documentation\r\n\t//https://docs.cucumber.io/cucumber-expressions/#custom-parameters\r\n\tstep = step.replace(/([^\\\\]|^){(?![\\d,])(.*?)}/g, '$1.*');\r\n\r\n\t//Escape all the regex symbols to avoid errors\r\n\tstep = escapeRegExp(step);\r\n\r\n\treturn step;\r\n};\r\n\r\nconst escapeRegExp = (str: string): string => {\r\n\t// eslint-disable-next-line no-useless-escape\r\n\treturn str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '$&');\r\n};\r\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { IdGenerator } from '@cucumber/messages';
|
|
3
|
+
import { AssembledTestCase } from '@cucumber/cucumber/lib/assemble/index';
|
|
4
|
+
import { SupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types';
|
|
5
|
+
import { RuntimeOptions } from '@cucumber/cucumber/lib/runtime/index';
|
|
6
|
+
export declare class Worker {
|
|
7
|
+
private readonly workerId;
|
|
8
|
+
private readonly eventBroadcaster;
|
|
9
|
+
private readonly newId;
|
|
10
|
+
private readonly options;
|
|
11
|
+
private readonly supportCodeLibrary;
|
|
12
|
+
private readonly runTestRunHooks;
|
|
13
|
+
constructor(workerId: string | undefined, eventBroadcaster: EventEmitter, newId: IdGenerator.NewId, options: RuntimeOptions, supportCodeLibrary: SupportCodeLibrary);
|
|
14
|
+
runBeforeAllHooks(): Promise<void>;
|
|
15
|
+
runTestCase({ gherkinDocument, pickle, testCase }: AssembledTestCase, failing: boolean): Promise<boolean>;
|
|
16
|
+
runAfterAllHooks(): Promise<void>;
|
|
17
|
+
}
|