@lynxwall/cucumber-tsflow 4.1.5 → 5.0.1
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 +243 -71
- package/bin/cucumber-tsflow +1 -1
- package/lib/behave.js +25 -2
- package/lib/cli/argv-parser.d.ts +24 -0
- package/lib/cli/argv-parser.js +117 -0
- package/lib/cli/index.d.ts +22 -0
- package/lib/cli/index.js +105 -0
- package/lib/cli/load-configuration.d.ts +20 -0
- package/lib/cli/load-configuration.js +98 -0
- package/lib/cli/run.d.ts +1 -0
- package/lib/cli/run.js +54 -0
- package/lib/cucumber/binding-decorator.js +75 -87
- package/lib/cucumber/binding-registry.d.ts +8 -0
- package/lib/cucumber/binding-registry.js +62 -11
- package/lib/cucumber/hook-decorators.d.ts +30 -12
- package/lib/cucumber/hook-decorators.js +54 -23
- package/lib/cucumber/managed-scenario-context.js +6 -3
- package/lib/cucumber/message-collector.d.ts +55 -0
- package/lib/cucumber/message-collector.js +143 -0
- package/lib/cucumber/step-definition-decorators.js +15 -8
- package/lib/cucumber/utils.d.ts +16 -0
- package/lib/cucumber/utils.js +88 -0
- package/lib/esnode.d.ts +0 -0
- package/lib/esnode.js +20 -0
- package/lib/{tsflow.d.ts → esvue.d.ts} +0 -0
- package/lib/esvue.js +52 -0
- package/lib/formatters/behave-json-formatter.d.ts +36 -5
- package/lib/formatters/behave-json-formatter.js +36 -12
- package/lib/formatters/tsflow-snippet-syntax.js +44 -14
- package/lib/gherkin/configuration.d.ts +30 -0
- package/lib/gherkin/configuration.js +37 -0
- package/lib/gherkin/gherkin-feature.d.ts +28 -0
- package/lib/gherkin/gherkin-feature.js +345 -0
- package/lib/gherkin/gherkin-manager.d.ts +29 -0
- package/lib/gherkin/gherkin-manager.js +123 -0
- package/lib/gherkin/models.d.ts +45 -0
- package/lib/{tsflow.js → gherkin/models.js} +2 -4
- package/lib/snippet.d.ts +1 -0
- package/lib/snippet.js +38 -0
- package/lib/transpilers/esbuild-transpiler.d.ts +4 -0
- package/lib/transpilers/esbuild-transpiler.js +31 -0
- package/lib/transpilers/esbuild.d.ts +12 -0
- package/lib/transpilers/esbuild.js +66 -0
- package/lib/transpilers/vue-sfc/compiler.d.ts +7 -0
- package/lib/transpilers/vue-sfc/compiler.js +32 -0
- package/lib/transpilers/vue-sfc/index.d.ts +25 -0
- package/lib/transpilers/vue-sfc/index.js +62 -0
- package/lib/transpilers/vue-sfc/main.d.ts +8 -0
- package/lib/transpilers/vue-sfc/main.js +266 -0
- package/lib/transpilers/vue-sfc/script.d.ts +5 -0
- package/lib/transpilers/vue-sfc/script.js +53 -0
- package/lib/transpilers/vue-sfc/template.d.ts +8 -0
- package/lib/transpilers/vue-sfc/template.js +113 -0
- package/lib/transpilers/vue-sfc/types.d.ts +55 -0
- package/lib/transpilers/vue-sfc/types.js +13 -0
- package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +13 -0
- package/lib/transpilers/vue-sfc/utils/descriptorCache.js +67 -0
- package/lib/transpilers/vue-sfc/utils/error.d.ts +3 -0
- package/lib/transpilers/vue-sfc/utils/error.js +33 -0
- package/lib/transpilers/vue-sfc/utils/query.d.ts +13 -0
- package/lib/transpilers/vue-sfc/utils/query.js +46 -0
- package/lib/tsnode.js +7 -9
- package/lib/tsvue.d.ts +1 -9
- package/lib/tsvue.js +47 -28
- package/lib/types/step-binding-flags.d.ts +9 -1
- package/lib/types/step-binding-flags.js +10 -2
- package/lib/types/step-binding.d.ts +8 -2
- package/lib/types/step-binding.js +1 -1
- package/lib/utils/helpers.d.ts +6 -0
- package/lib/utils/helpers.js +28 -0
- package/lib/utils/logger.js +25 -2
- package/lib/utils/our-callsite.d.ts +1 -0
- package/lib/utils/our-callsite.js +33 -4
- package/lib/version.d.ts +1 -0
- package/lib/version.js +16 -0
- package/package.json +22 -9
|
@@ -12,6 +12,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
12
12
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
13
13
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
14
14
|
};
|
|
15
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
+
};
|
|
15
18
|
(function (factory) {
|
|
16
19
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
17
20
|
var v = factory(require, exports);
|
|
@@ -24,7 +27,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
24
27
|
"use strict";
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
29
|
exports.ManagedScenarioContext = void 0;
|
|
27
|
-
const
|
|
30
|
+
const underscore_1 = __importDefault(require("underscore"));
|
|
28
31
|
const scenario_context_1 = require("../types/scenario-context");
|
|
29
32
|
/**
|
|
30
33
|
* Represents a [[ScenarioContext]] implementation that manages a collection of context objects that
|
|
@@ -81,7 +84,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
81
84
|
return new targetPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
|
|
82
85
|
}
|
|
83
86
|
};
|
|
84
|
-
const contextObjects =
|
|
87
|
+
const contextObjects = underscore_1.default.map(contextTypes, contextType => this.getOrActivateObject(contextType.prototype, () => {
|
|
85
88
|
return new contextType();
|
|
86
89
|
}));
|
|
87
90
|
return invokeBindingConstructor(contextObjects);
|
|
@@ -99,4 +102,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
99
102
|
exports.ManagedScenarioContext = ManagedScenarioContext;
|
|
100
103
|
__exportStar(require("../types/scenario-context"), exports);
|
|
101
104
|
});
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1zY2VuYXJpby1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1Y3VtYmVyL21hbmFnZWQtc2NlbmFyaW8tY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLDREQUEyQjtJQUUzQixnRUFBMEU7SUFHMUU7OztPQUdHO0lBQ0gsTUFBYSxzQkFBc0I7UUFJbEMsWUFBWSxhQUFxQixFQUFFLElBQWM7WUFGekMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBWSxDQUFDO1lBRzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSwrQkFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQ7OztXQUdHO1FBQ0gsSUFBVyxZQUFZO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMzQixDQUFDO1FBRU0seUJBQXlCLENBQUMsZUFBb0IsRUFBRSxZQUEyQjtZQUNqRixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO2dCQUNyRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDakUsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDO1FBRU0sT0FBTztZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQzFDLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtvQkFDeEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNoQjtZQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUVPLG9CQUFvQixDQUFDLGVBQW9CLEVBQUUsWUFBMkI7WUFDN0UsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLElBQVcsRUFBTyxFQUFFO2dCQUNyRCxRQUFRLFlBQVksQ0FB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
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as messages from '@cucumber/messages';
|
|
2
|
+
import { StepBinding } from '../types/step-binding';
|
|
3
|
+
import { ManagedScenarioContext } from './managed-scenario-context';
|
|
4
|
+
declare class MessageCollector {
|
|
5
|
+
private pickleMap;
|
|
6
|
+
private testCaseMap;
|
|
7
|
+
private testCaseRunningMap;
|
|
8
|
+
/**
|
|
9
|
+
* Gets the Pickle from hook parameters passed in from Cucumber
|
|
10
|
+
* to find a matching Pickle (scenario) and return the scenario Context
|
|
11
|
+
* @param hookParam
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
getHookScenarioContext(hookParam: any): ManagedScenarioContext | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Uses StepPattern information to find a matching scenario
|
|
17
|
+
* and return the ScenarioContext
|
|
18
|
+
* @param stepBinding
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
getStepScenarioContext(stepBinding: StepBinding): ManagedScenarioContext | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Passed into runCucumber as a callback for all messages.
|
|
24
|
+
* Capture the ones we care about
|
|
25
|
+
* @param envelope
|
|
26
|
+
*/
|
|
27
|
+
parseEnvelope(envelope: messages.Envelope): void;
|
|
28
|
+
/**
|
|
29
|
+
* Called when a test case (scenario) starts. Intercepting
|
|
30
|
+
* this message to initialize a new ScenarioContext
|
|
31
|
+
* @param testCaseStarted
|
|
32
|
+
*/
|
|
33
|
+
private startTestCase;
|
|
34
|
+
/**
|
|
35
|
+
* Called when a test case (scenario) ends. Intercepting
|
|
36
|
+
* this message to dispose and clear the ScenarioContext
|
|
37
|
+
* @param testCaseFinished
|
|
38
|
+
*/
|
|
39
|
+
private endTestCase;
|
|
40
|
+
/**
|
|
41
|
+
* Uses the testCaleId passed in to find the associated Pickle (scenario)
|
|
42
|
+
* @param testCaseId
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
private getScenarioForTest;
|
|
46
|
+
/**
|
|
47
|
+
* StepBinding tags are initialized with an astrick when empty.
|
|
48
|
+
* Need to make sure tags has a value and not an astrick
|
|
49
|
+
* @param tags
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
private stepHasTags;
|
|
53
|
+
}
|
|
54
|
+
declare const messageCollector: MessageCollector;
|
|
55
|
+
export default messageCollector;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports", "./managed-scenario-context", "./utils", "../utils/helpers"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const managed_scenario_context_1 = require("./managed-scenario-context");
|
|
13
|
+
const utils_1 = require("./utils");
|
|
14
|
+
const helpers_1 = require("../utils/helpers");
|
|
15
|
+
class MessageCollector {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.pickleMap = {};
|
|
18
|
+
this.testCaseMap = {};
|
|
19
|
+
this.testCaseRunningMap = {};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Gets the Pickle from hook parameters passed in from Cucumber
|
|
23
|
+
* to find a matching Pickle (scenario) and return the scenario Context
|
|
24
|
+
* @param hookParam
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
getHookScenarioContext(hookParam) {
|
|
28
|
+
let scenarioContext;
|
|
29
|
+
if (hookParam) {
|
|
30
|
+
const pickle = hookParam.pickle;
|
|
31
|
+
const scenario = this.pickleMap[pickle.id];
|
|
32
|
+
if (scenario && scenario.scenarioContext) {
|
|
33
|
+
scenarioContext = scenario.scenarioContext;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return scenarioContext;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Uses StepPattern information to find a matching scenario
|
|
40
|
+
* and return the ScenarioContext
|
|
41
|
+
* @param stepBinding
|
|
42
|
+
* @returns
|
|
43
|
+
*/
|
|
44
|
+
getStepScenarioContext(stepBinding) {
|
|
45
|
+
let scenarioContext;
|
|
46
|
+
for (const [, scenario] of Object.entries(this.pickleMap)) {
|
|
47
|
+
for (const step of scenario.steps) {
|
|
48
|
+
if ((0, utils_1.hasMatchingStep)(stepBinding.stepPattern.toString(), step.text)) {
|
|
49
|
+
// if we have tags on the step binding check to see if it matches one in the
|
|
50
|
+
// current scenario, which also includes tags associated with the feature
|
|
51
|
+
if (stepBinding.tags && this.stepHasTags(stepBinding.tags)) {
|
|
52
|
+
if (scenario.tags.length > 0 &&
|
|
53
|
+
(0, utils_1.hasMatchingTags)(stepBinding.tags, scenario.tags.map(x => x.name))) {
|
|
54
|
+
scenarioContext = scenario.scenarioContext;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
scenarioContext = scenario.scenarioContext;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (scenarioContext)
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
if (scenarioContext)
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
return scenarioContext;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Passed into runCucumber as a callback for all messages.
|
|
71
|
+
* Capture the ones we care about
|
|
72
|
+
* @param envelope
|
|
73
|
+
*/
|
|
74
|
+
parseEnvelope(envelope) {
|
|
75
|
+
if (envelope.pickle && envelope.pickle.id) {
|
|
76
|
+
this.pickleMap[envelope.pickle.id] = envelope.pickle;
|
|
77
|
+
}
|
|
78
|
+
else if (envelope.testCase && envelope.testCase.id) {
|
|
79
|
+
this.testCaseMap[envelope.testCase.id] = envelope.testCase;
|
|
80
|
+
}
|
|
81
|
+
else if (envelope.testCaseStarted) {
|
|
82
|
+
this.startTestCase(envelope.testCaseStarted);
|
|
83
|
+
}
|
|
84
|
+
else if (envelope.testCaseFinished) {
|
|
85
|
+
this.endTestCase(envelope.testCaseFinished);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Called when a test case (scenario) starts. Intercepting
|
|
90
|
+
* this message to initialize a new ScenarioContext
|
|
91
|
+
* @param testCaseStarted
|
|
92
|
+
*/
|
|
93
|
+
startTestCase(testCaseStarted) {
|
|
94
|
+
this.testCaseRunningMap[testCaseStarted.id] = testCaseStarted;
|
|
95
|
+
const scenario = this.getScenarioForTest(testCaseStarted.testCaseId);
|
|
96
|
+
if (scenario) {
|
|
97
|
+
const tags = scenario.tags.map(t => t.name);
|
|
98
|
+
scenario.scenarioContext = new managed_scenario_context_1.ManagedScenarioContext(scenario.name, tags);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Called when a test case (scenario) ends. Intercepting
|
|
103
|
+
* this message to dispose and clear the ScenarioContext
|
|
104
|
+
* @param testCaseFinished
|
|
105
|
+
*/
|
|
106
|
+
endTestCase(testCaseFinished) {
|
|
107
|
+
const testCase = this.testCaseRunningMap[testCaseFinished.testCaseStartedId];
|
|
108
|
+
if (testCase) {
|
|
109
|
+
const scenario = this.getScenarioForTest(testCase.testCaseId);
|
|
110
|
+
if (scenario && scenario.scenarioContext) {
|
|
111
|
+
scenario.scenarioContext.dispose();
|
|
112
|
+
scenario.scenarioContext = undefined;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Uses the testCaleId passed in to find the associated Pickle (scenario)
|
|
118
|
+
* @param testCaseId
|
|
119
|
+
* @returns
|
|
120
|
+
*/
|
|
121
|
+
getScenarioForTest(testCaseId) {
|
|
122
|
+
const testCase = this.testCaseMap[testCaseId];
|
|
123
|
+
if (testCase) {
|
|
124
|
+
return this.pickleMap[testCase.pickleId];
|
|
125
|
+
}
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* StepBinding tags are initialized with an astrick when empty.
|
|
130
|
+
* Need to make sure tags has a value and not an astrick
|
|
131
|
+
* @param tags
|
|
132
|
+
* @returns
|
|
133
|
+
*/
|
|
134
|
+
stepHasTags(tags) {
|
|
135
|
+
return (0, helpers_1.hasStringValue)(tags) && !(tags === null || tags === void 0 ? void 0 : tags.includes('*'));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// this needs to be initialized once since it's used
|
|
139
|
+
// throughout the test run in different modules
|
|
140
|
+
const messageCollector = new MessageCollector();
|
|
141
|
+
exports.default = messageCollector;
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1jb2xsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvbWVzc2FnZS1jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFFQSx5RUFBb0U7SUFDcEUsbUNBQTJEO0lBQzNELDhDQUFrRDtJQU1sRCxNQUFNLGdCQUFnQjtRQUF0QjtZQUNTLGNBQVMsR0FBOEIsRUFBRSxDQUFDO1lBQzFDLGdCQUFXLEdBQXNDLEVBQUUsQ0FBQztZQUNwRCx1QkFBa0IsR0FBNkMsRUFBRSxDQUFDO1FBNEgzRSxDQUFDO1FBMUhBOzs7OztXQUtHO1FBQ0gsc0JBQXNCLENBQUMsU0FBYztZQUNwQyxJQUFJLGVBQW1ELENBQUM7WUFFeEQsSUFBSSxTQUFTLEVBQUU7Z0JBQ2QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQW1CLENBQUM7Z0JBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFO29CQUN6QyxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztpQkFDM0M7YUFDRDtZQUNELE9BQU8sZUFBZSxDQUFDO1FBQ3hCLENBQUM7UUFFRDs7Ozs7V0FLRztRQUNILHNCQUFzQixDQUFDLFdBQXdCO1lBQzlDLElBQUksZUFBbUQsQ0FBQztZQUN4RCxLQUFLLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUMxRCxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUU7b0JBQ2xDLElBQUksSUFBQSx1QkFBZSxFQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNu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
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
2
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
3
|
+
};
|
|
1
4
|
(function (factory) {
|
|
2
5
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
6
|
var v = factory(require, exports);
|
|
4
7
|
if (v !== undefined) module.exports = v;
|
|
5
8
|
}
|
|
6
9
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./binding-registry", "../utils/our-callsite", "../types/step-binding"], factory);
|
|
10
|
+
define(["require", "exports", "./binding-registry", "../utils/our-callsite", "../types/step-binding", "short-uuid"], factory);
|
|
8
11
|
}
|
|
9
12
|
})(function (require, exports) {
|
|
10
13
|
"use strict";
|
|
@@ -13,6 +16,7 @@
|
|
|
13
16
|
const binding_registry_1 = require("./binding-registry");
|
|
14
17
|
const our_callsite_1 = require("../utils/our-callsite");
|
|
15
18
|
const step_binding_1 = require("../types/step-binding");
|
|
19
|
+
const short_uuid_1 = __importDefault(require("short-uuid"));
|
|
16
20
|
/**
|
|
17
21
|
* A method decorator that marks the associated function as a 'Given' step.
|
|
18
22
|
*
|
|
@@ -29,10 +33,11 @@
|
|
|
29
33
|
targetPrototype: target,
|
|
30
34
|
targetPropertyKey: propertyKey,
|
|
31
35
|
argsLength: target[propertyKey].length,
|
|
32
|
-
|
|
36
|
+
tags: tag,
|
|
33
37
|
timeout: timeout,
|
|
34
38
|
wrapperOption: wrapperOption,
|
|
35
|
-
callsite: callsite
|
|
39
|
+
callsite: callsite,
|
|
40
|
+
cucumberKey: (0, short_uuid_1.default)().new()
|
|
36
41
|
};
|
|
37
42
|
binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
|
|
38
43
|
return descriptor;
|
|
@@ -55,10 +60,11 @@
|
|
|
55
60
|
targetPrototype: target,
|
|
56
61
|
targetPropertyKey: propertyKey,
|
|
57
62
|
argsLength: target[propertyKey].length,
|
|
58
|
-
|
|
63
|
+
tags: tag,
|
|
59
64
|
timeout: timeout,
|
|
60
65
|
wrapperOption: wrapperOption,
|
|
61
|
-
callsite: callsite
|
|
66
|
+
callsite: callsite,
|
|
67
|
+
cucumberKey: (0, short_uuid_1.default)().new()
|
|
62
68
|
};
|
|
63
69
|
binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
|
|
64
70
|
return descriptor;
|
|
@@ -81,10 +87,11 @@
|
|
|
81
87
|
targetPrototype: target,
|
|
82
88
|
targetPropertyKey: propertyKey,
|
|
83
89
|
argsLength: target[propertyKey].length,
|
|
84
|
-
|
|
90
|
+
tags: tag,
|
|
85
91
|
timeout: timeout,
|
|
86
92
|
wrapperOption: wrapperOption,
|
|
87
|
-
callsite: callsite
|
|
93
|
+
callsite: callsite,
|
|
94
|
+
cucumberKey: (0, short_uuid_1.default)().new()
|
|
88
95
|
};
|
|
89
96
|
binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
|
|
90
97
|
return descriptor;
|
|
@@ -92,4 +99,4 @@
|
|
|
92
99
|
}
|
|
93
100
|
exports.then = then;
|
|
94
101
|
});
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1kZWZpbml0aW9uLWRlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvc3RlcC1kZWZpbml0aW9uLWRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBQUEseURBQXFEO0lBQ3JELHdEQUFpRDtJQUNqRCx3REFBc0U7SUFDdEUsNERBQW1DO0lBRW5DOzs7Ozs7T0FNRztJQUNILFNBQWdCLEtBQUssQ0FDcEIsV0FBNEIsRUFDNUIsR0FBWSxFQUNaLE9BQWdCLEVBQ2hCLGFBQW1CO1FBRW5CLE1BQU0sUUFBUSxHQUFHLHVCQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFcEMsT0FBTyxDQUFJLE1BQVcsRUFBRSxXQUE0QixFQUFFLFVBQXNDLEVBQUUsRUFBRTtZQUMvRixNQUFNLFdBQVcsR0FBZ0I7Z0JBQ2hDLFdBQVcsRUFBRSxXQUFXO2dCQUN4QixXQUFXLEVBQUUsK0JBQWdCLENBQUMsS0FBSztnQkFDbkMsZUFBZSxFQUFFLE1BQU07Z0JBQ3ZCLGlCQUFpQixFQUFFLFdBQVc7Z0JBQzlCLFVBQVUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTTtnQkFDdEMsSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsV0FBVyxFQUFFLElBQUEsb0JBQVMsR0FBRSxDQUFDLEdBQUcsRUFBRTthQUM5QixDQUFDO1lBRUYsa0NBQWUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFMUQsT0FBTyxVQUFVLENBQUM7UUFDbkIsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQTFCRCxzQkEwQkM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFnQixJQUFJLENBQ25CLFdBQTRCLEVBQzVCLEdBQVksRUFDWixPQUFnQixFQUNoQixhQUFtQjtRQUVuQixNQUFNLFFBQVEsR0FBRyx1QkFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXBDLE9BQU8sQ0FBSSxNQUFXLEVBQUUsV0FBNEIsRUFBRSxVQUFzQyxFQUFFLEVBQUU7WUFDL0YsTUFBTSxXQUFXLEdBQWdCO2dCQUNoQyxXQUFXLEVBQUUsV0FBVztnQkFDeEIsV0FBVyxFQUFFLCtCQUFnQixDQUFDLElBQUk7Z0JBQ2xDLGVBQWUsRUFBRSxNQUFNO2dCQUN2QixpQkFBaUIsRUFBRSxXQUFXO2dCQUM5QixVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU07Z0JBQ3RDLElBQUksRUFBRSxHQUFHO2dCQUNULE9BQU8sRUFBRSxPQUFPO2dCQUNoQixhQUFhLEVBQUUsYUFBYTtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFdBQVcsRUFBRSxJQUFBLG9CQUFTLEdBQUUsQ0FBQyxHQUFHLEVBQUU7YUFDOUIsQ0FBQztZQUVGLGtDQUFlLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTFELE9BQU8sVUFBVSxDQUFDO1FBQ25CLENBQUMsQ0FBQztJQUNILENBQUM7SUExQkQsb0JBMEJDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBZ0IsSUFBSSxDQUNuQixXQUE0QixFQUM1QixHQUFZLEVBQ1osT0FBZ0IsRUFDaEIsYUFBbUI7UUFFbkIsTUFBTSxRQUFRLEdBQUcsdUJBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQyxPQUFPLENBQUksTUFBVyxFQUFFLFdBQTRCLEVBQUUsVUFBc0MsRUFBRSxFQUFFO1lBQy9GLE1BQU0sV0FBVyxHQUFnQjtnQkFDaEMsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLFdBQVcsRUFBRSwrQkFBZ0IsQ0FBQyxJQUFJO2dCQUNsQyxlQUFlLEVBQUUsTUFBTTtnQkFDdkIsaUJBQWlCLEVBQUUsV0FBVztnQkFDOUIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNO2dCQUN0QyxJQUFJLEVBQUUsR0FBRztnQkFDVCxPQUFPLEVBQUUsT0FBTztnQkFDaEIsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixXQUFXLEVBQUUsSUFBQSxvQkFBUyxHQUFFLENBQUMsR0FBRyxFQUFFO2FBQzlCLENBQUM7WUFFRixrQ0FBZSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUUxRCxPQUFPLFVBQVUsQ0FBQztRQUNuQixDQUFDLENBQUM7SUFDSCxDQUFDO0lBMUJELG9CQTBCQyJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uses a regular expression to match a step expression with
|
|
3
|
+
* the feature text passed in
|
|
4
|
+
* @param stepText
|
|
5
|
+
* @param featureText
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare const hasMatchingStep: (stepText: string, featureText: string) => boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Helper that uses a lexical parser to apply the tag patterns used by
|
|
11
|
+
* Cucumber to associate hooks with scenario and feature tags
|
|
12
|
+
* @param tagPattern examples: 'tag1', 'tag1 and tag2', 'tag1 or tag2)
|
|
13
|
+
* @param tags
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export declare const hasMatchingTags: (tagPattern: string, tags: string[]) => boolean;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
2
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
3
|
+
};
|
|
4
|
+
(function (factory) {
|
|
5
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
6
|
+
var v = factory(require, exports);
|
|
7
|
+
if (v !== undefined) module.exports = v;
|
|
8
|
+
}
|
|
9
|
+
else if (typeof define === "function" && define.amd) {
|
|
10
|
+
define(["require", "exports", "@jeanbenitez/logical-expression-parser", "../utils/logger"], factory);
|
|
11
|
+
}
|
|
12
|
+
})(function (require, exports) {
|
|
13
|
+
"use strict";
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.hasMatchingTags = exports.hasMatchingStep = void 0;
|
|
16
|
+
const logical_expression_parser_1 = __importDefault(require("@jeanbenitez/logical-expression-parser"));
|
|
17
|
+
const logger_1 = __importDefault(require("../utils/logger"));
|
|
18
|
+
/**
|
|
19
|
+
* Uses a regular expression to match a step expression with
|
|
20
|
+
* the feature text passed in
|
|
21
|
+
* @param stepText
|
|
22
|
+
* @param featureText
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
const hasMatchingStep = (stepText, featureText) => {
|
|
26
|
+
if (stepText.trim().length === 0)
|
|
27
|
+
return false;
|
|
28
|
+
try {
|
|
29
|
+
const regexStep = new RegExp(getRegTextForStep(stepText));
|
|
30
|
+
const match = featureText.match(regexStep);
|
|
31
|
+
return match !== null && match.length > 0;
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
logger_1.default.error(err.message);
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.hasMatchingStep = hasMatchingStep;
|
|
39
|
+
/**
|
|
40
|
+
* Helper that uses a lexical parser to apply the tag patterns used by
|
|
41
|
+
* Cucumber to associate hooks with scenario and feature tags
|
|
42
|
+
* @param tagPattern examples: 'tag1', 'tag1 and tag2', 'tag1 or tag2)
|
|
43
|
+
* @param tags
|
|
44
|
+
* @returns
|
|
45
|
+
*/
|
|
46
|
+
const hasMatchingTags = (tagPattern, tags) => {
|
|
47
|
+
return logical_expression_parser_1.default.parse(tagPattern.toLowerCase(), (t) => tags.map(tag => tag.toLowerCase()).includes(t));
|
|
48
|
+
};
|
|
49
|
+
exports.hasMatchingTags = hasMatchingTags;
|
|
50
|
+
const getRegTextForStep = (step) => {
|
|
51
|
+
//Ruby interpolation (like `#{Something}` ) should be replaced with `.*`
|
|
52
|
+
//https://github.com/alexkrechik/VSCucumberAutoComplete/issues/65
|
|
53
|
+
step = step.replace(/#{(.*?)}/g, '.*');
|
|
54
|
+
//Parameter-types
|
|
55
|
+
//https://github.com/alexkrechik/VSCucumberAutoComplete/issues/66
|
|
56
|
+
//https://docs.cucumber.io/cucumber/cucumber-expressions/
|
|
57
|
+
step = step.replace(/{float}/g, '-?\\d*\\.?\\d+');
|
|
58
|
+
step = step.replace(/{bigdecimal}/g, '-?\\d*\\.?\\d+');
|
|
59
|
+
step = step.replace(/{double}/g, '-?\\d*\\.?\\d+');
|
|
60
|
+
step = step.replace(/{int}/g, '-?\\d+');
|
|
61
|
+
step = step.replace(/{biginteger}/g, '-?\\d+');
|
|
62
|
+
step = step.replace(/{byte}/g, '-?\\d+');
|
|
63
|
+
step = step.replace(/{short}/g, '-?\\d+');
|
|
64
|
+
step = step.replace(/{long}/g, '-?\\d+');
|
|
65
|
+
step = step.replace(/{stringInDoubleQuotes}/g, '"[^"]+"');
|
|
66
|
+
step = step.replace(/{word}/g, '[A-Za-z]+');
|
|
67
|
+
step = step.replace(/{string}/g, '("|\')[^\\1]*\\1');
|
|
68
|
+
step = step.replace(/{boolean}/gi, '(true|false)');
|
|
69
|
+
step = step.replace(/{}/g, '.*');
|
|
70
|
+
//Optional Text
|
|
71
|
+
step = step.replace(/\(([a-z]+)\)/g, '($1)?');
|
|
72
|
+
//Alternative text a/b/c === (a|b|c)
|
|
73
|
+
step = step.replace(/([a-zA-Z]+)(?:\/([a-zA-Z]+))+/g, match => `(${match.replace(/\//g, '|')})`);
|
|
74
|
+
//Handle Cucumber Expressions (like `{Something}`) should be replaced with `.*`
|
|
75
|
+
//https://github.com/alexkrechik/VSCucumberAutoComplete/issues/99
|
|
76
|
+
//Cucumber Expressions Custom Parameter Type Documentation
|
|
77
|
+
//https://docs.cucumber.io/cucumber-expressions/#custom-parameters
|
|
78
|
+
step = step.replace(/([^\\]|^){(?![\d,])(.*?)}/g, '$1.*');
|
|
79
|
+
//Escape all the regex symbols to avoid errors
|
|
80
|
+
step = escapeRegExp(step);
|
|
81
|
+
return step;
|
|
82
|
+
};
|
|
83
|
+
const escapeRegExp = (str) => {
|
|
84
|
+
// eslint-disable-next-line no-useless-escape
|
|
85
|
+
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '$&');
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsdUdBQXlEO0lBQ3pELDZEQUFxQztJQUVyQzs7Ozs7O09BTUc7SUFDSSxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWdCLEVBQUUsV0FBbUIsRUFBVyxFQUFFO1FBQ2pGLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFL0MsSUFBSTtZQUNILE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDMUM7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNiLGdCQUFNLENBQUMsS0FBSyxDQUFFLEdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQyxDQUFDO0lBWFcsUUFBQSxlQUFlLG1CQVcxQjtJQUVGOzs7Ozs7T0FNRztJQUNJLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBa0IsRUFBRSxJQUFjLEVBQVcsRUFBRTtRQUM5RSxPQUFPLG1DQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLENBQUMsQ0FBQztJQUZXLFFBQUEs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
|
package/lib/esnode.d.ts
ADDED
|
File without changes
|
package/lib/esnode.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
require('ts-node').register({
|
|
3
|
+
compilerOptions: {
|
|
4
|
+
module: 'commonjs',
|
|
5
|
+
moduleResolution: 'node',
|
|
6
|
+
target: 'es2021',
|
|
7
|
+
strict: true,
|
|
8
|
+
experimentalDecorators: true,
|
|
9
|
+
allowSyntheticDefaultImports: true,
|
|
10
|
+
resolveJsonModule: true,
|
|
11
|
+
esModuleInterop: true,
|
|
12
|
+
skipLibCheck: true,
|
|
13
|
+
lib: ['es2021']
|
|
14
|
+
},
|
|
15
|
+
ignore: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/'],
|
|
16
|
+
transpileOnly: true,
|
|
17
|
+
transpiler: '@lynxwall/cucumber-tsflow/lib/transpilers/esbuild-transpiler'
|
|
18
|
+
});
|
|
19
|
+
require('tsconfig-paths').register();
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vzbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMzQixlQUFlLEVBQUU7UUFDaEIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsZ0JBQWdCLEVBQUUsTUFBTTtRQUN4QixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsSUFBSTtRQUNaLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsNEJBQTRCLEVBQUUsSUFBSTtRQUNsQyxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNmO0lBQ0QsTUFBTSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsNkJBQTZCLENBQUM7SUFDL0QsYUFBYSxFQUFFLElBQUk7SUFDbkIsVUFBVSxFQUFFLDhEQUE4RDtDQUMxRSxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyJ9
|
|
File without changes
|
package/lib/esvue.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
2
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
3
|
+
};
|
|
4
|
+
(function (factory) {
|
|
5
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
6
|
+
var v = factory(require, exports);
|
|
7
|
+
if (v !== undefined) module.exports = v;
|
|
8
|
+
}
|
|
9
|
+
else if (typeof define === "function" && define.amd) {
|
|
10
|
+
define(["require", "exports", "./transpilers/vue-sfc"], factory);
|
|
11
|
+
}
|
|
12
|
+
})(function (require, exports) {
|
|
13
|
+
"use strict";
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const hooks = require('require-extension-hooks');
|
|
16
|
+
const vue_sfc_1 = __importDefault(require("./transpilers/vue-sfc"));
|
|
17
|
+
require('ts-node').register({
|
|
18
|
+
compilerOptions: {
|
|
19
|
+
module: 'commonjs',
|
|
20
|
+
moduleResolution: 'node',
|
|
21
|
+
target: 'es2021',
|
|
22
|
+
strict: true,
|
|
23
|
+
experimentalDecorators: true,
|
|
24
|
+
allowSyntheticDefaultImports: true,
|
|
25
|
+
resolveJsonModule: true,
|
|
26
|
+
esModuleInterop: true,
|
|
27
|
+
skipLibCheck: true,
|
|
28
|
+
lib: ['es2021']
|
|
29
|
+
},
|
|
30
|
+
ignore: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/'],
|
|
31
|
+
transpileOnly: true,
|
|
32
|
+
transpiler: '@lynxwall/cucumber-tsflow/lib/transpilers/esbuild-transpiler'
|
|
33
|
+
});
|
|
34
|
+
require('tsconfig-paths').register();
|
|
35
|
+
// Register jsdom globally and set SVGElement on global
|
|
36
|
+
require('jsdom-global')();
|
|
37
|
+
global.SVGElement = global.window.SVGElement;
|
|
38
|
+
hooks('vue').push(function (params) {
|
|
39
|
+
try {
|
|
40
|
+
const transformer = new vue_sfc_1.default({
|
|
41
|
+
exclude: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/']
|
|
42
|
+
});
|
|
43
|
+
const transformResult = transformer.transformCode(params.content, params.filename);
|
|
44
|
+
return transformResult.code;
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
console.log(err);
|
|
48
|
+
}
|
|
49
|
+
return params.content;
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN2dWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXN2dWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7SUFBQSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNqRCxvRUFBbUQ7SUFFbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUMzQixlQUFlLEVBQUU7WUFDaEIsTUFBTSxFQUFFLFVBQVU7WUFDbEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixNQUFNLEVBQUUsUUFBUTtZQUNoQixNQUFNLEVBQUUsSUFBSTtZQUNaLHNCQUFzQixFQUFFLElBQUk7WUFDNUIsNEJBQTRCLEVBQUUsSUFBSTtZQUNsQyxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztTQUNmO1FBQ0QsTUFBTSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsNkJBQTZCLENBQUM7UUFDL0QsYUFBYSxFQUFFLElBQUk7UUFDbkIsVUFBVSxFQUFFLDhEQUE4RDtLQUMxRSxDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUVyQyx1REFBdUQ7SUFDdkQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7SUFDekIsTUFBYyxDQUFDLFVBQVUsR0FBSSxNQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUUvRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBVztRQUN0QyxJQUFJO1lBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBYyxDQUFDO2dCQUN0QyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSw2QkFBNkIsQ0FBQzthQUNoRSxDQUFDLENBQUM7WUFDSCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRW5GLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztTQUM1QjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNqQjtRQUNELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -1,5 +1,39 @@
|
|
|
1
|
-
import JsonFormatter, { IJsonStep } from '@cucumber/cucumber/lib/formatter/json_formatter';
|
|
2
1
|
import * as messages from '@cucumber/messages';
|
|
2
|
+
import JsonFormatter from '@cucumber/cucumber/lib/formatter/json_formatter';
|
|
3
|
+
export interface IJsonFeature {
|
|
4
|
+
description: string;
|
|
5
|
+
elements: IJsonScenario[];
|
|
6
|
+
id: string;
|
|
7
|
+
keyword: string;
|
|
8
|
+
line: number;
|
|
9
|
+
name: string;
|
|
10
|
+
tags: IJsonTag[];
|
|
11
|
+
uri: string;
|
|
12
|
+
}
|
|
13
|
+
export interface IJsonScenario {
|
|
14
|
+
description: string;
|
|
15
|
+
id: string;
|
|
16
|
+
keyword: string;
|
|
17
|
+
line: number;
|
|
18
|
+
name: string;
|
|
19
|
+
steps: IJsonStep[];
|
|
20
|
+
tags: IJsonTag[];
|
|
21
|
+
type: string;
|
|
22
|
+
}
|
|
23
|
+
export interface IJsonStep {
|
|
24
|
+
arguments?: any;
|
|
25
|
+
embeddings?: any;
|
|
26
|
+
hidden?: boolean;
|
|
27
|
+
keyword?: string;
|
|
28
|
+
line?: number;
|
|
29
|
+
match?: any;
|
|
30
|
+
name?: string;
|
|
31
|
+
result?: any;
|
|
32
|
+
}
|
|
33
|
+
export interface IJsonTag {
|
|
34
|
+
name: string;
|
|
35
|
+
line: number;
|
|
36
|
+
}
|
|
3
37
|
interface IBuildJsonStepOptions {
|
|
4
38
|
isBeforeHook: boolean;
|
|
5
39
|
gherkinStepMap: Record<string, messages.Step>;
|
|
@@ -8,11 +42,8 @@ interface IBuildJsonStepOptions {
|
|
|
8
42
|
testStepAttachments: messages.Attachment[];
|
|
9
43
|
testStepResult: messages.TestStepResult;
|
|
10
44
|
}
|
|
11
|
-
/**
|
|
12
|
-
* Extending JsonFormatter.getStepData to add a name field to before
|
|
13
|
-
* and After steps so that json can be exported to Behave Pro (name on steps required)
|
|
14
|
-
*/
|
|
15
45
|
export default class BehaveJsonFormatter extends JsonFormatter {
|
|
46
|
+
static readonly documentation: string;
|
|
16
47
|
getStepData({ isBeforeHook, gherkinStepMap, pickleStepMap, testStep, testStepAttachments, testStepResult }: IBuildJsonStepOptions): IJsonStep;
|
|
17
48
|
}
|
|
18
49
|
export {};
|