@lynxwall/cucumber-tsflow 4.1.6 → 5.0.2
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 -21
- package/lib/tsvue.js +47 -45
- 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 +21 -10
|
@@ -0,0 +1,117 @@
|
|
|
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", "commander", "lodash.merge", "path", "@cucumber/gherkin", "@cucumber/cucumber/lib/formatter/helpers/formatters", "../version"], factory);
|
|
11
|
+
}
|
|
12
|
+
})(function (require, exports) {
|
|
13
|
+
"use strict";
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const commander_1 = require("commander");
|
|
16
|
+
const lodash_merge_1 = __importDefault(require("lodash.merge"));
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const gherkin_1 = require("@cucumber/gherkin");
|
|
19
|
+
const formatters_1 = __importDefault(require("@cucumber/cucumber/lib/formatter/helpers/formatters"));
|
|
20
|
+
const version_1 = require("../version");
|
|
21
|
+
const ArgvParser = {
|
|
22
|
+
collect(val, memo = []) {
|
|
23
|
+
if (val) {
|
|
24
|
+
return [...memo, val];
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
},
|
|
28
|
+
mergeJson(option) {
|
|
29
|
+
return function (str, memo = {}) {
|
|
30
|
+
let val;
|
|
31
|
+
try {
|
|
32
|
+
val = JSON.parse(str);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
const e = error;
|
|
36
|
+
throw new Error(`${option} passed invalid JSON: ${e.message}: ${str}`);
|
|
37
|
+
}
|
|
38
|
+
if (typeof val !== 'object' || Array.isArray(val)) {
|
|
39
|
+
throw new Error(`${option} must be passed JSON of an object: ${str}`);
|
|
40
|
+
}
|
|
41
|
+
return (0, lodash_merge_1.default)(memo, val);
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
mergeTags(value, memo) {
|
|
45
|
+
return memo ? `${memo} and (${value})` : `(${value})`;
|
|
46
|
+
},
|
|
47
|
+
validateCountOption(value, optionName) {
|
|
48
|
+
const numericValue = parseInt(value);
|
|
49
|
+
if (isNaN(numericValue) || numericValue < 0) {
|
|
50
|
+
throw new Error(`${optionName} must be a non negative integer`);
|
|
51
|
+
}
|
|
52
|
+
return numericValue;
|
|
53
|
+
},
|
|
54
|
+
validateLanguage(value) {
|
|
55
|
+
if (!Object.keys(gherkin_1.dialects).includes(value)) {
|
|
56
|
+
throw new Error(`Unsupported ISO 639-1: ${value}`);
|
|
57
|
+
}
|
|
58
|
+
return value;
|
|
59
|
+
},
|
|
60
|
+
parse(argv) {
|
|
61
|
+
const program = new commander_1.Command(path_1.default.basename(argv[1]));
|
|
62
|
+
program
|
|
63
|
+
.storeOptionsAsProperties(false)
|
|
64
|
+
.usage('[options] [<GLOB|DIR|FILE[:LINE]>...]')
|
|
65
|
+
.version(version_1.version, '-v, --version')
|
|
66
|
+
.option('-b, --backtrace', 'show full backtrace for errors')
|
|
67
|
+
.option('-c, --config <PATH>', 'specify configuration file')
|
|
68
|
+
.option('-d, --dry-run', 'invoke formatters without executing steps')
|
|
69
|
+
.option('--debug-file <STRING>', 'path to a file with steps for debugging')
|
|
70
|
+
.option('--exit, --force-exit', 'force shutdown of the event loop when the test run has finished: cucumber will call process.exit')
|
|
71
|
+
.option('--fail-fast', 'abort the run on first failure')
|
|
72
|
+
.option('-f, --format <TYPE[:PATH]>', 'specify the output format, optionally supply PATH to redirect formatter output (repeatable). Available formats:\n' +
|
|
73
|
+
formatters_1.default.buildFormattersDocumentationString(), ArgvParser.collect)
|
|
74
|
+
.option('--format-options <JSON>', 'provide options for formatters (repeatable)', ArgvParser.mergeJson('--format-options'))
|
|
75
|
+
.option('--i18n-keywords <ISO 639-1>', 'list language keywords', ArgvParser.validateLanguage)
|
|
76
|
+
.option('--i18n-languages', 'list languages')
|
|
77
|
+
.option('-i, --import <GLOB|DIR|FILE>', 'import files before executing features (repeatable)', ArgvParser.collect)
|
|
78
|
+
.option('--language <ISO 639-1>', 'provide the default language for feature files')
|
|
79
|
+
.option('--name <REGEXP>', 'only execute the scenarios with name matching the expression (repeatable)', ArgvParser.collect)
|
|
80
|
+
.option('--order <TYPE[:SEED]>', 'run scenarios in the specified order. Type should be `defined` or `random`')
|
|
81
|
+
.option('-p, --profile <NAME>', 'specify the profile to use (repeatable)', ArgvParser.collect, [])
|
|
82
|
+
.option('--parallel <NUMBER_OF_WORKERS>', 'run in parallel with the given number of workers', val => ArgvParser.validateCountOption(val, '--parallel'))
|
|
83
|
+
.option('--publish', 'Publish a report to https://reports.cucumber.io')
|
|
84
|
+
.option('--publish-quiet', "Don't print information banner about publishing reports")
|
|
85
|
+
.option('-r, --require <GLOB|DIR|FILE>', 'require files before executing features (repeatable)', ArgvParser.collect)
|
|
86
|
+
.option('--require-module <NODE_MODULE>', 'require node modules before requiring files (repeatable)', ArgvParser.collect)
|
|
87
|
+
.option('--retry <NUMBER_OF_RETRIES>', 'specify the number of times to retry failing test cases (default: 0)', val => ArgvParser.validateCountOption(val, '--retry'))
|
|
88
|
+
.option('--retry-tag-filter <EXPRESSION>', `only retries the features or scenarios with tags matching the expression (repeatable).
|
|
89
|
+
This option requires '--retry' to be specified.`, ArgvParser.mergeTags)
|
|
90
|
+
.option('--strict', 'fail if there are pending steps')
|
|
91
|
+
.option('--no-strict', 'succeed even if there are pending steps')
|
|
92
|
+
.option('-t, --tags <EXPRESSION>', 'only execute the features or scenarios with tags matching the expression (repeatable)', ArgvParser.mergeTags)
|
|
93
|
+
.option('--transpiler <ESNODE|TSNODE|ESVUE|TSVUE>', `built-in transpiler to use. ESxxx transpilers use esbuild and TSxxx transpilers use typescript.\n
|
|
94
|
+
Vue versions of the transpilers add a hook for .vue transforms and initialize jsdom globally.\n
|
|
95
|
+
Default: ESNODE (esbuild without Vue support)`)
|
|
96
|
+
.option('--world-parameters <JSON>', 'provide parameters that will be passed to the world constructor (repeatable)', ArgvParser.mergeJson('--world-parameters'));
|
|
97
|
+
program.addHelpText('afterAll', 'For more details please visit https://github.com/cucumber/cucumber-js/blob/main/docs/cli.md');
|
|
98
|
+
program.parse(argv);
|
|
99
|
+
const { config, i18nKeywords, i18nLanguages, profile, ...regularStuff } = program.opts();
|
|
100
|
+
const configuration = regularStuff;
|
|
101
|
+
if (program.args.length > 0) {
|
|
102
|
+
configuration.paths = program.args;
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
options: {
|
|
106
|
+
config,
|
|
107
|
+
i18nKeywords,
|
|
108
|
+
i18nLanguages,
|
|
109
|
+
profile
|
|
110
|
+
},
|
|
111
|
+
configuration
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
exports.default = ArgvParser;
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndi1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2FyZ3YtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0lBQUEseUNBQW9DO0lBQ3BDLGdFQUFpQztJQUNqQyxnREFBd0I7SUFDeEIsK0NBQTZDO0lBQzdDLHFHQUE2RTtJQUM3RSx3Q0FBcUM7SUFzQnJDLE1BQU0sVUFBVSxHQUFHO1FBQ2xCLE9BQU8sQ0FBSSxHQUFNLEVBQUUsT0FBWSxFQUFFO1lBQ2hDLElBQUksR0FBRyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzthQUN0QjtZQUNELE9BQU8sU0FBUyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxTQUFTLENBQUMsTUFBYztZQUN2QixPQUFPLFVBQVUsR0FBVyxFQUFFLE9BQWUsRUFBRTtnQkFDOUMsSUFBSSxHQUFXLENBQUM7Z0JBQ2hCLElBQUk7b0JBQ0gsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3RCO2dCQUFDLE9BQU8sS0FBSyxFQUFFO29CQUNmLE1BQU0sQ0FBQyxHQUFVLEtBQWMsQ0FBQztvQkFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0seUJBQXlCLENBQUMsQ0FBQyxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDdkU7Z0JBQ0QsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0sc0NBQXNDLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ3RFO2dCQUNELE9BQU8sSUFBQSxzQkFBSyxFQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUM7UUFDSCxDQUFDO1FBRUQsU0FBUyxDQUFDLEtB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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IFormatterStream } from '@cucumber/cucumber/lib/formatter';
|
|
3
|
+
export interface ICliRunResult {
|
|
4
|
+
shouldAdvertisePublish: boolean;
|
|
5
|
+
shouldExitImmediately: boolean;
|
|
6
|
+
success: boolean;
|
|
7
|
+
}
|
|
8
|
+
export default class Cli {
|
|
9
|
+
private readonly argv;
|
|
10
|
+
private readonly cwd;
|
|
11
|
+
private readonly stdout;
|
|
12
|
+
private readonly stderr;
|
|
13
|
+
private readonly env;
|
|
14
|
+
constructor({ argv, cwd, stdout, stderr, env }: {
|
|
15
|
+
argv: string[];
|
|
16
|
+
cwd: string;
|
|
17
|
+
stdout: IFormatterStream;
|
|
18
|
+
stderr: IFormatterStream;
|
|
19
|
+
env: NodeJS.ProcessEnv;
|
|
20
|
+
});
|
|
21
|
+
run(): Promise<ICliRunResult>;
|
|
22
|
+
}
|
package/lib/cli/index.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
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", "@cucumber/messages", "@cucumber/cucumber/lib/configuration/index", "@cucumber/cucumber/lib/api/index", "./load-configuration", "@cucumber/cucumber/lib/cli/i18n", "@cucumber/cucumber/lib/cli/install_validator", "@cucumber/cucumber/lib/api/paths", "@cucumber/cucumber/lib/api/environment", "@cucumber/cucumber/lib/api/support", "../cucumber/binding-registry", "./argv-parser", "@cucumber/cucumber-expressions", "../cucumber/message-collector", "console"], factory);
|
|
11
|
+
}
|
|
12
|
+
})(function (require, exports) {
|
|
13
|
+
"use strict";
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const messages_1 = require("@cucumber/messages");
|
|
16
|
+
const index_1 = require("@cucumber/cucumber/lib/configuration/index");
|
|
17
|
+
const index_2 = require("@cucumber/cucumber/lib/api/index");
|
|
18
|
+
const load_configuration_1 = require("./load-configuration");
|
|
19
|
+
const i18n_1 = require("@cucumber/cucumber/lib/cli/i18n");
|
|
20
|
+
const install_validator_1 = require("@cucumber/cucumber/lib/cli/install_validator");
|
|
21
|
+
const paths_1 = require("@cucumber/cucumber/lib/api/paths");
|
|
22
|
+
const environment_1 = require("@cucumber/cucumber/lib/api/environment");
|
|
23
|
+
const support_1 = require("@cucumber/cucumber/lib/api/support");
|
|
24
|
+
const binding_registry_1 = require("../cucumber/binding-registry");
|
|
25
|
+
const argv_parser_1 = __importDefault(require("./argv-parser"));
|
|
26
|
+
const cucumber_expressions_1 = require("@cucumber/cucumber-expressions");
|
|
27
|
+
const message_collector_1 = __importDefault(require("../cucumber/message-collector"));
|
|
28
|
+
const console_1 = require("console");
|
|
29
|
+
class Cli {
|
|
30
|
+
constructor({ argv, cwd, stdout, stderr, env }) {
|
|
31
|
+
this.argv = argv;
|
|
32
|
+
this.cwd = cwd;
|
|
33
|
+
this.stdout = stdout;
|
|
34
|
+
this.stderr = stderr;
|
|
35
|
+
this.env = env;
|
|
36
|
+
}
|
|
37
|
+
async run() {
|
|
38
|
+
await (0, install_validator_1.validateInstall)(this.cwd);
|
|
39
|
+
const { options, configuration: argvConfiguration } = argv_parser_1.default.parse(this.argv);
|
|
40
|
+
if (options.i18nLanguages) {
|
|
41
|
+
this.stdout.write((0, i18n_1.getLanguages)());
|
|
42
|
+
return {
|
|
43
|
+
shouldAdvertisePublish: false,
|
|
44
|
+
shouldExitImmediately: true,
|
|
45
|
+
success: true
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (options.i18nKeywords) {
|
|
49
|
+
this.stdout.write((0, i18n_1.getKeywords)(options.i18nKeywords));
|
|
50
|
+
return {
|
|
51
|
+
shouldAdvertisePublish: false,
|
|
52
|
+
shouldExitImmediately: true,
|
|
53
|
+
success: true
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const environment = {
|
|
57
|
+
cwd: this.cwd,
|
|
58
|
+
stdout: this.stdout,
|
|
59
|
+
stderr: this.stderr,
|
|
60
|
+
env: this.env
|
|
61
|
+
};
|
|
62
|
+
const logger = new console_1.Console(environment.stdout, environment.stderr);
|
|
63
|
+
logger.info('Loading configuration and step definitions...');
|
|
64
|
+
const { useConfiguration: configuration, runConfiguration } = await (0, load_configuration_1.loadConfiguration)({
|
|
65
|
+
file: options.config,
|
|
66
|
+
profiles: options.profile,
|
|
67
|
+
provided: argvConfiguration
|
|
68
|
+
}, environment);
|
|
69
|
+
// get run options
|
|
70
|
+
const { cwd } = (0, environment_1.mergeEnvironment)(environment);
|
|
71
|
+
const newId = messages_1.IdGenerator.uuid();
|
|
72
|
+
const runOptions = runConfiguration;
|
|
73
|
+
const supportCoordinates = 'World' in runOptions.support ? runOptions.support.originalCoordinates : runOptions.support;
|
|
74
|
+
const { requirePaths, importPaths } = await (0, paths_1.resolvePaths)(cwd, runOptions.sources, supportCoordinates);
|
|
75
|
+
// Load the step and hook definitions
|
|
76
|
+
const supportCodeLibrary = 'World' in runOptions.support
|
|
77
|
+
? runOptions.support
|
|
78
|
+
: await (0, support_1.getSupportCodeLibrary)({
|
|
79
|
+
cwd,
|
|
80
|
+
newId,
|
|
81
|
+
requirePaths,
|
|
82
|
+
importPaths,
|
|
83
|
+
requireModules: supportCoordinates.requireModules
|
|
84
|
+
});
|
|
85
|
+
// Set support to the updated step and hook definitions
|
|
86
|
+
// in the supportCodeLibrary
|
|
87
|
+
runOptions.support = binding_registry_1.BindingRegistry.instance.updateSupportCodeLibrary(supportCodeLibrary);
|
|
88
|
+
// define a custom boolean type this has to be done
|
|
89
|
+
// after all of the definitions have been loaded
|
|
90
|
+
const boolParam = new cucumber_expressions_1.ParameterType('boolean', /true|false/, null, s => (s === 'true' ? true : false), true, false);
|
|
91
|
+
supportCodeLibrary.parameterTypeRegistry.defineParameterType(boolParam);
|
|
92
|
+
// now we can run cucumber
|
|
93
|
+
const { success } = await (0, index_2.runCucumber)(runOptions, environment, message_collector_1.default.parseEnvelope.bind(message_collector_1.default));
|
|
94
|
+
return {
|
|
95
|
+
shouldAdvertisePublish: !runConfiguration.formats.publish &&
|
|
96
|
+
!configuration.publishQuiet &&
|
|
97
|
+
!(0, index_1.isTruthyString)(this.env.CUCUMBER_PUBLISH_QUIET),
|
|
98
|
+
shouldExitImmediately: configuration.forceExit,
|
|
99
|
+
success
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.default = Cli;
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0lBQUEsaURBQWlEO0lBQ2pELHNFQUE0RTtJQUU1RSw0REFBNEU7SUFDNUUsNkRBQXlEO0lBQ3pELDBEQUE0RTtJQUM1RSxvRkFBK0U7SUFDL0UsNERBQWdFO0lBQ2hFLHdFQUEwRTtJQUMxRSxnRUFBMkU7SUFDM0UsbUVBQStEO0lBQy9ELGdFQUF1QztJQUN2Qyx5RUFBK0Q7SUFDL0Qsc0ZBQTZEO0lBQzdELHFDQUFrQztJQVFsQyxNQUFxQixHQUFHO1FBT3ZCLFlBQVksRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILE1BQU0sRUFDTixNQUFNLEVBQ04sR0FBRyxFQU9IO1lBQ0EsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNoQixDQUFDO1FBRUQsS0FBSyxDQUFDLEdBQUc7WUFDUixNQUFNLElBQUEsbUNBQWUsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxxQkFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEYsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUN6QixJQUFJLENBQUMsTUFBYyxDQUFDLEtBQUssQ0FBQyxJQUFBLG1CQUFZLEdBQUUsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPO29CQUNOLHNCQUFzQixFQUFFLEtBQUs7b0JBQzdCLHFCQUFxQixFQUFFLElBQUk7b0JB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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IRunEnvironment, ILoadConfigurationOptions, IRunConfiguration } from '@cucumber/cucumber/lib/api/types';
|
|
2
|
+
import { ITsflowConfiguration } from './argv-parser';
|
|
3
|
+
export interface ITsflowResolvedConfiguration {
|
|
4
|
+
/**
|
|
5
|
+
* The final flat configuration object resolved from the configuration file/profiles plus any extra provided.
|
|
6
|
+
*/
|
|
7
|
+
useConfiguration: ITsflowConfiguration;
|
|
8
|
+
/**
|
|
9
|
+
* The format that can be passed into `runCucumber`.
|
|
10
|
+
*/
|
|
11
|
+
runConfiguration: IRunConfiguration;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Load user-authored configuration to be used in a test run.
|
|
15
|
+
*
|
|
16
|
+
* @public
|
|
17
|
+
* @param options - Coordinates required to find configuration.
|
|
18
|
+
* @param environment - Project environment.
|
|
19
|
+
*/
|
|
20
|
+
export declare const loadConfiguration: (options?: ILoadConfigurationOptions, environment?: IRunEnvironment) => Promise<ITsflowResolvedConfiguration>;
|
|
@@ -0,0 +1,98 @@
|
|
|
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", "console", "@cucumber/cucumber/lib/configuration/locate_file", "@cucumber/cucumber/lib/configuration/index", "@cucumber/cucumber/lib/configuration/validate_configuration", "@cucumber/cucumber/lib/api/convert_configuration", "@cucumber/cucumber/lib/api/environment", "chalk", "../utils/helpers", "../gherkin/gherkin-manager"], factory);
|
|
11
|
+
}
|
|
12
|
+
})(function (require, exports) {
|
|
13
|
+
"use strict";
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.loadConfiguration = void 0;
|
|
16
|
+
const console_1 = require("console");
|
|
17
|
+
const locate_file_1 = require("@cucumber/cucumber/lib/configuration/locate_file");
|
|
18
|
+
const index_1 = require("@cucumber/cucumber/lib/configuration/index");
|
|
19
|
+
const validate_configuration_1 = require("@cucumber/cucumber/lib/configuration/validate_configuration");
|
|
20
|
+
const convert_configuration_1 = require("@cucumber/cucumber/lib/api/convert_configuration");
|
|
21
|
+
const environment_1 = require("@cucumber/cucumber/lib/api/environment");
|
|
22
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
23
|
+
const helpers_1 = require("../utils/helpers");
|
|
24
|
+
const gherkin_manager_1 = __importDefault(require("../gherkin/gherkin-manager"));
|
|
25
|
+
/**
|
|
26
|
+
* Load user-authored configuration to be used in a test run.
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
29
|
+
* @param options - Coordinates required to find configuration.
|
|
30
|
+
* @param environment - Project environment.
|
|
31
|
+
*/
|
|
32
|
+
const loadConfiguration = async (options = {}, environment = {}) => {
|
|
33
|
+
var _a, _b, _c;
|
|
34
|
+
const { cwd, env } = (0, environment_1.mergeEnvironment)(environment);
|
|
35
|
+
const configFile = (_a = options.file) !== null && _a !== void 0 ? _a : (0, locate_file_1.locateFile)(cwd);
|
|
36
|
+
const profileConfiguration = configFile ? await (0, index_1.fromFile)(cwd, configFile, options.profiles) : {};
|
|
37
|
+
const logger = new console_1.Console(environment.stdout, environment.stderr);
|
|
38
|
+
// if a feature was passed in on command line it's added
|
|
39
|
+
// to the provided configuration as paths. We need to clear
|
|
40
|
+
// any paths from configuration so that only the feature passed
|
|
41
|
+
// in is executed.
|
|
42
|
+
if (((_b = options.provided) === null || _b === void 0 ? void 0 : _b.paths) && ((_c = options.provided.paths) === null || _c === void 0 ? void 0 : _c.length) > 0) {
|
|
43
|
+
profileConfiguration.paths = [];
|
|
44
|
+
}
|
|
45
|
+
const original = (0, index_1.mergeConfigurations)(index_1.DEFAULT_CONFIGURATION, profileConfiguration, options.provided);
|
|
46
|
+
switch (original.transpiler) {
|
|
47
|
+
case 'esvue':
|
|
48
|
+
original.requireModule.push('@lynxwall/cucumber-tsflow/lib/esvue');
|
|
49
|
+
break;
|
|
50
|
+
case 'tsvue':
|
|
51
|
+
original.requireModule.push('@lynxwall/cucumber-tsflow/lib/tsvue');
|
|
52
|
+
break;
|
|
53
|
+
case 'tsnode':
|
|
54
|
+
original.requireModule.push('@lynxwall/cucumber-tsflow/lib/tsnode');
|
|
55
|
+
break;
|
|
56
|
+
default:
|
|
57
|
+
// defaulting to esbuild
|
|
58
|
+
original.requireModule.push('@lynxwall/cucumber-tsflow/lib/esnode');
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
// set the snippet syntax
|
|
62
|
+
if (!original.formatOptions.snippetSyntax) {
|
|
63
|
+
original.formatOptions.snippetSyntax = '@lynxwall/cucumber-tsflow/lib/snippet.js';
|
|
64
|
+
}
|
|
65
|
+
// look for behave format
|
|
66
|
+
const behaveIdx = original.format.findIndex(e => e.startsWith('behave:'));
|
|
67
|
+
if (behaveIdx >= 0) {
|
|
68
|
+
original.format[behaveIdx] = original.format[behaveIdx].replace('behave', '@lynxwall/cucumber-tsflow/lib/behave.js');
|
|
69
|
+
}
|
|
70
|
+
// check to see if a debugFile was passed in
|
|
71
|
+
if ((0, helpers_1.hasStringValue)(original.debugFile)) {
|
|
72
|
+
let featurePath = '';
|
|
73
|
+
// Initialize gherkin manager with path to feature files
|
|
74
|
+
const gherkin = new gherkin_manager_1.default(original.paths);
|
|
75
|
+
const featureInfo = gherkin.findFeatureByStepFile(original.debugFile);
|
|
76
|
+
if (featureInfo) {
|
|
77
|
+
featurePath = featureInfo.featureFile;
|
|
78
|
+
}
|
|
79
|
+
if ((0, helpers_1.hasStringValue)(featurePath)) {
|
|
80
|
+
original.paths = [];
|
|
81
|
+
original.paths.push(featurePath);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// log a message if the feature path is not found
|
|
85
|
+
logger.warn(chalk_1.default.yellow(`\nUnable to find feature for debugFile: ${original.debugFile}`));
|
|
86
|
+
logger.warn(chalk_1.default.yellow('All tests will be executed\n'));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
(0, validate_configuration_1.validateConfiguration)(original);
|
|
90
|
+
const runnable = await (0, convert_configuration_1.convertConfiguration)(original, env);
|
|
91
|
+
return {
|
|
92
|
+
useConfiguration: original,
|
|
93
|
+
runConfiguration: runnable
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
exports.loadConfiguration = loadConfiguration;
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9sb2FkLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBQUEscUNBQWtDO0lBRWxDLGtGQUE4RTtJQUM5RSxzRUFLb0Q7SUFDcEQsd0dBQW9HO0lBQ3BHLDRGQUF3RjtJQUN4Rix3RUFBMEU7SUFFMUUsa0RBQTBCO0lBQzFCLDhDQUFrRDtJQUNsRCxpRkFBd0Q7SUFheEQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQ3JDLFVBQXFDLEVBQUUsRUFDdkMsY0FBK0IsRUFBRSxFQUNPLEVBQUU7O1FBQzFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBQSw4QkFBZ0IsRUFBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxNQUFNLFVBQVUsR0FBRyxNQUFBLE9BQU8sQ0FBQyxJQUFJLG1DQUFJLElBQUEsd0JBQVUsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxNQUFNLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFBLGdCQUFRLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRyxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFPLENBQUMsV0FBVyxDQUFDLE1BQWEsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUUsd0RBQXdEO1FBQ3hELDJEQUEyRDtRQUMzRCwrREFBK0Q7UUFDL0Qsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQSxNQUFBLE9BQU8sQ0FBQyxRQUFRLDBDQUFFLEtBQUssS0FBSSxDQUFBLE1BQUEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLDBDQUFFLE1BQU0sSUFBRyxDQUFDLEVBQUU7WUFDbEUsb0JBQW9CLENBQUMsS0FB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
|
package/lib/cli/run.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function run(): Promise<void>;
|
package/lib/cli/run.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
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", "./", "verror", "@cucumber/cucumber/lib/cli/validate_node_engine_version"], factory);
|
|
11
|
+
}
|
|
12
|
+
})(function (require, exports) {
|
|
13
|
+
"use strict";
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
/* eslint-disable no-console */
|
|
16
|
+
/* This is one rare place where we're fine to use process/console directly,
|
|
17
|
+
* but other code abstracts those to remain composable and testable. */
|
|
18
|
+
const _1 = __importDefault(require("./"));
|
|
19
|
+
const verror_1 = __importDefault(require("verror"));
|
|
20
|
+
const validate_node_engine_version_1 = require("@cucumber/cucumber/lib/cli/validate_node_engine_version");
|
|
21
|
+
function logErrorMessageAndExit(message) {
|
|
22
|
+
console.error(message);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
async function run() {
|
|
26
|
+
(0, validate_node_engine_version_1.validateNodeEngineVersion)(process.version, (error) => {
|
|
27
|
+
console.error(error);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}, console.warn);
|
|
30
|
+
const cli = new _1.default({
|
|
31
|
+
argv: process.argv,
|
|
32
|
+
cwd: process.cwd(),
|
|
33
|
+
stdout: process.stdout,
|
|
34
|
+
stderr: process.stderr,
|
|
35
|
+
env: process.env
|
|
36
|
+
});
|
|
37
|
+
let result;
|
|
38
|
+
try {
|
|
39
|
+
result = await cli.run();
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
logErrorMessageAndExit(verror_1.default.fullStack(error));
|
|
43
|
+
}
|
|
44
|
+
const exitCode = result.success ? 0 : 1;
|
|
45
|
+
if (result.shouldExitImmediately) {
|
|
46
|
+
process.exit(exitCode);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
process.exitCode = exitCode;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.default = run;
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9ydW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7SUFBQSwrQkFBK0I7SUFDL0I7MkVBQ3VFO0lBQ3ZFLDBDQUF3QztJQUN4QyxvREFBNEI7SUFDNUIsMEdBQW9HO0lBRXBHLFNBQVMsc0JBQXNCLENBQUMsT0FBZTtRQUM5QyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVjLEtBQUssVUFBVSxHQUFHO1FBQ2hDLElBQUEsd0RBQXlCLEVBQ3hCLE9BQU8sQ0FBQyxPQUFPLEVBQ2YsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixDQUFDLEVBQ0QsT0FBTyxDQUFDLElBQUksQ0FDWixDQUFDO1FBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFHLENBQUM7WUFDbkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtZQUN0QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksTUFBc0IsQ0FBQztRQUMzQixJQUFJO1lBQ0gsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO1FBQUMsT0FBTyxLQUFVLEVBQUU7WUFDcEIsc0JBQXNCLENBQUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNoRDtRQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNOLE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzVCO0lBQ0YsQ0FBQztJQS9CRCxzQkErQkMifQ==
|