@dev-blinq/cucumber-js 1.0.11 → 1.0.12-stage

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/bin/cucumber-js +0 -0
  2. package/bin/cucumber.js +0 -0
  3. package/bin/download-install.js +126 -0
  4. package/lib/api/console_logger.d.ts +12 -12
  5. package/lib/api/console_logger.js +23 -23
  6. package/lib/api/convert_configuration.d.ts +4 -4
  7. package/lib/api/convert_configuration.js +65 -64
  8. package/lib/api/convert_configuration.js.map +1 -1
  9. package/lib/api/environment.d.ts +2 -2
  10. package/lib/api/environment.js +13 -13
  11. package/lib/api/formatters.d.ts +20 -20
  12. package/lib/api/formatters.js +60 -60
  13. package/lib/api/gherkin.d.ts +21 -21
  14. package/lib/api/gherkin.js +140 -99
  15. package/lib/api/gherkin.js.map +1 -1
  16. package/lib/api/index.d.ts +12 -12
  17. package/lib/api/index.js +27 -27
  18. package/lib/api/load_configuration.d.ts +9 -9
  19. package/lib/api/load_configuration.js +40 -40
  20. package/lib/api/load_sources.d.ts +9 -9
  21. package/lib/api/load_sources.js +52 -52
  22. package/lib/api/load_support.d.ts +10 -10
  23. package/lib/api/load_support.js +29 -29
  24. package/lib/api/paths.d.ts +8 -8
  25. package/lib/api/paths.js +101 -101
  26. package/lib/api/plugins.d.ts +4 -4
  27. package/lib/api/plugins.js +18 -18
  28. package/lib/api/run_cucumber.d.ts +11 -11
  29. package/lib/api/run_cucumber.js +114 -114
  30. package/lib/api/run_cucumber.js.map +1 -1
  31. package/lib/api/runtime.d.ts +21 -21
  32. package/lib/api/runtime.js +35 -35
  33. package/lib/api/support.d.ts +9 -9
  34. package/lib/api/support.js +25 -25
  35. package/lib/api/test_helpers.d.ts +3 -3
  36. package/lib/api/test_helpers.js +30 -30
  37. package/lib/api/types.d.ts +177 -175
  38. package/lib/api/types.js +2 -2
  39. package/lib/api/types.js.map +1 -1
  40. package/lib/cli/helpers.d.ts +39 -37
  41. package/lib/cli/helpers.js +223 -202
  42. package/lib/cli/helpers.js.map +1 -1
  43. package/lib/cli/i18n.d.ts +2 -2
  44. package/lib/cli/i18n.js +69 -69
  45. package/lib/cli/index.d.ts +21 -21
  46. package/lib/cli/index.js +63 -58
  47. package/lib/cli/index.js.map +1 -1
  48. package/lib/cli/install_validator.d.ts +1 -1
  49. package/lib/cli/install_validator.js +13 -13
  50. package/lib/cli/run.d.ts +1 -1
  51. package/lib/cli/run.js +43 -43
  52. package/lib/cli/validate_node_engine_version.d.ts +10 -10
  53. package/lib/cli/validate_node_engine_version.js +23 -23
  54. package/lib/configuration/argv_parser.d.ts +20 -20
  55. package/lib/configuration/argv_parser.js +102 -100
  56. package/lib/configuration/argv_parser.js.map +1 -1
  57. package/lib/configuration/check_schema.d.ts +2 -2
  58. package/lib/configuration/check_schema.js +59 -59
  59. package/lib/configuration/default_configuration.d.ts +2 -2
  60. package/lib/configuration/default_configuration.js +28 -26
  61. package/lib/configuration/default_configuration.js.map +1 -1
  62. package/lib/configuration/from_file.d.ts +3 -3
  63. package/lib/configuration/from_file.js +84 -84
  64. package/lib/configuration/helpers.d.ts +1 -1
  65. package/lib/configuration/helpers.js +10 -10
  66. package/lib/configuration/index.d.ts +7 -7
  67. package/lib/configuration/index.js +28 -28
  68. package/lib/configuration/locate_file.d.ts +1 -1
  69. package/lib/configuration/locate_file.js +20 -20
  70. package/lib/configuration/merge_configurations.d.ts +2 -2
  71. package/lib/configuration/merge_configurations.js +47 -47
  72. package/lib/configuration/option_splitter.d.ts +3 -3
  73. package/lib/configuration/option_splitter.js +22 -22
  74. package/lib/configuration/types.d.ts +30 -28
  75. package/lib/configuration/types.js +2 -2
  76. package/lib/configuration/types.js.map +1 -1
  77. package/lib/configuration/validate_configuration.d.ts +3 -3
  78. package/lib/configuration/validate_configuration.js +12 -12
  79. package/lib/filter_stack_trace.d.ts +3 -3
  80. package/lib/filter_stack_trace.js +37 -37
  81. package/lib/formatter/builder.d.ts +37 -37
  82. package/lib/formatter/builder.js +100 -100
  83. package/lib/formatter/bvt_analysis_formatter.d.ts +18 -0
  84. package/lib/formatter/bvt_analysis_formatter.js +193 -0
  85. package/lib/formatter/bvt_analysis_formatter.js.map +1 -0
  86. package/lib/formatter/feature_data_format.d.ts +23 -14
  87. package/lib/formatter/feature_data_format.js +136 -80
  88. package/lib/formatter/feature_data_format.js.map +1 -1
  89. package/lib/formatter/fixtures/typescript.d.ts +2 -2
  90. package/lib/formatter/fixtures/typescript.js +5 -5
  91. package/lib/formatter/get_color_fns.d.ts +15 -15
  92. package/lib/formatter/get_color_fns.js +55 -55
  93. package/lib/formatter/helpers/duration_helpers.d.ts +2 -2
  94. package/lib/formatter/helpers/duration_helpers.js +8 -8
  95. package/lib/formatter/helpers/event_data_collector.d.ts +30 -30
  96. package/lib/formatter/helpers/event_data_collector.js +125 -125
  97. package/lib/formatter/helpers/formatters.d.ts +6 -6
  98. package/lib/formatter/helpers/formatters.js +44 -44
  99. package/lib/formatter/helpers/formatters.js.map +1 -1
  100. package/lib/formatter/helpers/gherkin_document_parser.d.ts +5 -5
  101. package/lib/formatter/helpers/gherkin_document_parser.js +65 -65
  102. package/lib/formatter/helpers/index.d.ts +10 -10
  103. package/lib/formatter/helpers/index.js +51 -51
  104. package/lib/formatter/helpers/issue_helpers.d.ts +19 -19
  105. package/lib/formatter/helpers/issue_helpers.js +58 -58
  106. package/lib/formatter/helpers/keyword_type.d.ts +11 -11
  107. package/lib/formatter/helpers/keyword_type.js +31 -31
  108. package/lib/formatter/helpers/location_helpers.d.ts +2 -2
  109. package/lib/formatter/helpers/location_helpers.js +16 -16
  110. package/lib/formatter/helpers/pickle_parser.d.ts +17 -17
  111. package/lib/formatter/helpers/pickle_parser.js +27 -27
  112. package/lib/formatter/helpers/report_generator.d.ts +110 -91
  113. package/lib/formatter/helpers/report_generator.js +348 -247
  114. package/lib/formatter/helpers/report_generator.js.map +1 -1
  115. package/lib/formatter/helpers/step_argument_formatter.d.ts +2 -2
  116. package/lib/formatter/helpers/step_argument_formatter.js +47 -47
  117. package/lib/formatter/helpers/summary_helpers.d.ts +9 -9
  118. package/lib/formatter/helpers/summary_helpers.js +95 -95
  119. package/lib/formatter/helpers/test_case_attempt_formatter.d.ts +12 -12
  120. package/lib/formatter/helpers/test_case_attempt_formatter.js +113 -113
  121. package/lib/formatter/helpers/test_case_attempt_parser.d.ts +32 -32
  122. package/lib/formatter/helpers/test_case_attempt_parser.js +134 -134
  123. package/lib/formatter/helpers/upload_serivce.d.ts +13 -9
  124. package/lib/formatter/helpers/upload_serivce.js +103 -46
  125. package/lib/formatter/helpers/upload_serivce.js.map +1 -1
  126. package/lib/formatter/helpers/uploader.d.ts +11 -0
  127. package/lib/formatter/helpers/uploader.js +78 -0
  128. package/lib/formatter/helpers/uploader.js.map +1 -0
  129. package/lib/formatter/helpers/usage_helpers/index.d.ts +23 -23
  130. package/lib/formatter/helpers/usage_helpers/index.js +110 -110
  131. package/lib/formatter/html_formatter.d.ts +7 -7
  132. package/lib/formatter/html_formatter.js +29 -29
  133. package/lib/formatter/index.d.ts +53 -53
  134. package/lib/formatter/index.js +20 -20
  135. package/lib/formatter/json_formatter.d.ts +78 -78
  136. package/lib/formatter/json_formatter.js +229 -229
  137. package/lib/formatter/junit_formatter.d.ts +17 -17
  138. package/lib/formatter/junit_formatter.js +180 -180
  139. package/lib/formatter/message_formatter.d.ts +5 -5
  140. package/lib/formatter/message_formatter.js +14 -14
  141. package/lib/formatter/progress_bar_formatter.d.ts +18 -18
  142. package/lib/formatter/progress_bar_formatter.js +98 -98
  143. package/lib/formatter/progress_formatter.d.ts +9 -9
  144. package/lib/formatter/progress_formatter.js +58 -58
  145. package/lib/formatter/rerun_formatter.d.ts +13 -13
  146. package/lib/formatter/rerun_formatter.js +79 -79
  147. package/lib/formatter/snippets_formatter.d.ts +6 -6
  148. package/lib/formatter/snippets_formatter.js +60 -60
  149. package/lib/formatter/step_definition_snippet_builder/index.d.ts +20 -20
  150. package/lib/formatter/step_definition_snippet_builder/index.js +45 -45
  151. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.d.ts +7 -7
  152. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.js +45 -45
  153. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.d.ts +16 -16
  154. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.js +10 -10
  155. package/lib/formatter/summary_formatter.d.ts +14 -14
  156. package/lib/formatter/summary_formatter.js +67 -67
  157. package/lib/formatter/usage_formatter.d.ts +6 -6
  158. package/lib/formatter/usage_formatter.js +97 -97
  159. package/lib/formatter/usage_json_formatter.d.ts +7 -7
  160. package/lib/formatter/usage_json_formatter.js +33 -33
  161. package/lib/index.d.ts +58 -58
  162. package/lib/index.js +108 -108
  163. package/lib/logger.d.ts +5 -5
  164. package/lib/logger.js +2 -2
  165. package/lib/models/data_table.d.ts +10 -10
  166. package/lib/models/data_table.js +45 -45
  167. package/lib/models/definition.d.ts +55 -55
  168. package/lib/models/definition.js +21 -21
  169. package/lib/models/gherkin_step_keyword.d.ts +1 -1
  170. package/lib/models/gherkin_step_keyword.js +2 -2
  171. package/lib/models/pickle_order.d.ts +1 -1
  172. package/lib/models/pickle_order.js +2 -2
  173. package/lib/models/step_definition.d.ts +11 -11
  174. package/lib/models/step_definition.js +36 -36
  175. package/lib/models/test_case_hook_definition.d.ts +10 -10
  176. package/lib/models/test_case_hook_definition.js +26 -26
  177. package/lib/models/test_run_hook_definition.d.ts +3 -3
  178. package/lib/models/test_run_hook_definition.js +9 -9
  179. package/lib/models/test_step_hook_definition.d.ts +9 -9
  180. package/lib/models/test_step_hook_definition.js +25 -25
  181. package/lib/pickle_filter.d.ts +42 -42
  182. package/lib/pickle_filter.js +98 -98
  183. package/lib/plugin/index.d.ts +2 -2
  184. package/lib/plugin/index.js +18 -18
  185. package/lib/plugin/plugin_manager.d.ts +13 -13
  186. package/lib/plugin/plugin_manager.js +35 -35
  187. package/lib/plugin/types.d.ts +14 -14
  188. package/lib/plugin/types.js +2 -2
  189. package/lib/publish/http_stream.d.ts +30 -30
  190. package/lib/publish/http_stream.js +111 -111
  191. package/lib/publish/index.d.ts +2 -2
  192. package/lib/publish/index.js +4 -4
  193. package/lib/publish/publish_plugin.d.ts +2 -2
  194. package/lib/publish/publish_plugin.js +47 -47
  195. package/lib/runtime/assemble_test_cases.d.ts +13 -13
  196. package/lib/runtime/assemble_test_cases.js +87 -87
  197. package/lib/runtime/attachment_manager/index.d.ts +33 -33
  198. package/lib/runtime/attachment_manager/index.js +118 -118
  199. package/lib/runtime/format_error.d.ts +2 -2
  200. package/lib/runtime/format_error.js +35 -35
  201. package/lib/runtime/helpers.d.ts +6 -6
  202. package/lib/runtime/helpers.js +100 -100
  203. package/lib/runtime/index.d.ts +40 -40
  204. package/lib/runtime/index.js +75 -75
  205. package/lib/runtime/parallel/command_types.d.ts +32 -32
  206. package/lib/runtime/parallel/command_types.js +2 -2
  207. package/lib/runtime/parallel/coordinator.d.ts +72 -72
  208. package/lib/runtime/parallel/coordinator.js +221 -221
  209. package/lib/runtime/parallel/run_worker.d.ts +1 -1
  210. package/lib/runtime/parallel/run_worker.js +28 -28
  211. package/lib/runtime/parallel/worker.d.ts +26 -26
  212. package/lib/runtime/parallel/worker.js +86 -86
  213. package/lib/runtime/run_test_run_hooks.d.ts +3 -3
  214. package/lib/runtime/run_test_run_hooks.js +27 -27
  215. package/lib/runtime/step_runner.d.ts +16 -16
  216. package/lib/runtime/step_runner.js +87 -87
  217. package/lib/runtime/stopwatch.d.ts +12 -12
  218. package/lib/runtime/stopwatch.js +33 -33
  219. package/lib/runtime/test_case_runner.d.ts +54 -54
  220. package/lib/runtime/test_case_runner.js +267 -267
  221. package/lib/step_arguments.d.ts +6 -6
  222. package/lib/step_arguments.js +18 -18
  223. package/lib/support_code_library_builder/build_parameter_type.d.ts +3 -3
  224. package/lib/support_code_library_builder/build_parameter_type.js +12 -12
  225. package/lib/support_code_library_builder/get_definition_line_and_uri.d.ts +3 -3
  226. package/lib/support_code_library_builder/get_definition_line_and_uri.js +28 -28
  227. package/lib/support_code_library_builder/index.d.ts +74 -74
  228. package/lib/support_code_library_builder/index.js +296 -296
  229. package/lib/support_code_library_builder/parallel_can_assign_helpers.d.ts +2 -2
  230. package/lib/support_code_library_builder/parallel_can_assign_helpers.js +15 -15
  231. package/lib/support_code_library_builder/sourced_parameter_type_registry.d.ts +7 -7
  232. package/lib/support_code_library_builder/sourced_parameter_type_registry.js +18 -18
  233. package/lib/support_code_library_builder/types.d.ts +88 -88
  234. package/lib/support_code_library_builder/types.js +2 -2
  235. package/lib/support_code_library_builder/validate_arguments.d.ts +12 -12
  236. package/lib/support_code_library_builder/validate_arguments.js +72 -72
  237. package/lib/support_code_library_builder/world.d.ts +18 -18
  238. package/lib/support_code_library_builder/world.js +10 -10
  239. package/lib/time.d.ts +18 -18
  240. package/lib/time.js +60 -60
  241. package/lib/try_require.d.ts +7 -7
  242. package/lib/try_require.js +22 -22
  243. package/lib/types/index.d.ts +4 -4
  244. package/lib/types/index.js +2 -2
  245. package/lib/uncaught_exception_manager.d.ts +7 -7
  246. package/lib/uncaught_exception_manager.js +11 -11
  247. package/lib/user_code_runner.d.ts +14 -14
  248. package/lib/user_code_runner.js +81 -81
  249. package/lib/value_checker.d.ts +3 -3
  250. package/lib/value_checker.js +18 -18
  251. package/lib/version.d.ts +1 -1
  252. package/lib/version.js +5 -5
  253. package/lib/version.js.map +1 -1
  254. package/package.json +4 -2
  255. package/lib/formatter/bvt_formatter.d.ts +0 -9
  256. package/lib/formatter/bvt_formatter.js +0 -63
  257. package/lib/formatter/bvt_formatter.js.map +0 -1
@@ -1,102 +1,104 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const commander_1 = require("commander");
7
- const lodash_merge_1 = __importDefault(require("lodash.merge"));
8
- const gherkin_1 = require("@cucumber/gherkin");
9
- const formatters_1 = __importDefault(require("../formatter/helpers/formatters"));
10
- const version_1 = require("../version");
11
- const ArgvParser = {
12
- collect(val, memo = []) {
13
- if (val) {
14
- return [...memo, val];
15
- }
16
- return undefined;
17
- },
18
- mergeJson(option) {
19
- return function (str, memo = {}) {
20
- let val;
21
- try {
22
- val = JSON.parse(str);
23
- }
24
- catch (error) {
25
- const e = error;
26
- throw new Error(`${option} passed invalid JSON: ${e.message}: ${str}`);
27
- }
28
- if (typeof val !== 'object' || Array.isArray(val)) {
29
- throw new Error(`${option} must be passed JSON of an object: ${str}`);
30
- }
31
- return (0, lodash_merge_1.default)(memo, val);
32
- };
33
- },
34
- mergeTags(value, memo) {
35
- return memo ? `${memo} and (${value})` : `(${value})`;
36
- },
37
- validateCountOption(value, optionName) {
38
- const numericValue = parseInt(value);
39
- if (isNaN(numericValue) || numericValue < 0) {
40
- throw new Error(`${optionName} must be a non negative integer`);
41
- }
42
- return numericValue;
43
- },
44
- validateLanguage(value) {
45
- if (!Object.keys(gherkin_1.dialects).includes(value)) {
46
- throw new Error(`Unsupported ISO 639-1: ${value}`);
47
- }
48
- return value;
49
- },
50
- parse(argv) {
51
- const program = new commander_1.Command('cucumber-js');
52
- program
53
- .storeOptionsAsProperties(false)
54
- .usage('[options] [<GLOB|DIR|FILE[:LINE]>...]')
55
- .version(version_1.version, '-v, --version')
56
- .option('-b, --backtrace', 'show full backtrace for errors')
57
- .option('-c, --config <PATH>', 'specify configuration file')
58
- .option('-d, --dry-run', 'invoke formatters without executing steps')
59
- .option('--exit, --force-exit', 'force shutdown of the event loop when the test run has finished: cucumber will call process.exit')
60
- .option('--fail-fast', 'abort the run on first failure')
61
- .option('-f, --format <TYPE[:PATH]>', 'specify the output format, optionally supply PATH to redirect formatter output (repeatable). Available formats:\n' +
62
- formatters_1.default.buildFormattersDocumentationString(), ArgvParser.collect)
63
- .option('--format-options <JSON>', 'provide options for formatters (repeatable)', ArgvParser.mergeJson('--format-options'))
64
- .option('--i18n-keywords <ISO 639-1>', 'list language keywords', ArgvParser.validateLanguage)
65
- .option('--i18n-languages', 'list languages')
66
- .option('-i, --import <GLOB|DIR|FILE>', 'import files before executing features (repeatable)', ArgvParser.collect)
67
- .option('--language <ISO 639-1>', 'provide the default language for feature files')
68
- .option('--name <REGEXP>', 'only execute the scenarios with name matching the expression (repeatable)', ArgvParser.collect)
69
- .option('--order <TYPE[:SEED]>', 'run scenarios in the specified order. Type should be `defined` or `random`')
70
- .option('-p, --profile <NAME>', 'specify the profile to use (repeatable)', ArgvParser.collect, [])
71
- .option('--parallel <NUMBER_OF_WORKERS>', 'run in parallel with the given number of workers', (val) => ArgvParser.validateCountOption(val, '--parallel'))
72
- .option('--publish', 'Publish a report to https://reports.cucumber.io')
73
- .option('--publish-quiet', "Don't print information banner about publishing reports")
74
- .option('-r, --require <GLOB|DIR|FILE>', 'require files before executing features (repeatable)', ArgvParser.collect)
75
- .option('--require-module <NODE_MODULE>', 'require node modules before requiring files (repeatable)', ArgvParser.collect)
76
- .option('--retry <NUMBER_OF_RETRIES>', 'specify the number of times to retry failing test cases (default: 0)', (val) => ArgvParser.validateCountOption(val, '--retry'))
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const gherkin_1 = require("@cucumber/gherkin");
7
+ const commander_1 = require("commander");
8
+ const lodash_merge_1 = __importDefault(require("lodash.merge"));
9
+ const formatters_1 = __importDefault(require("../formatter/helpers/formatters"));
10
+ const version_1 = require("../version");
11
+ const ArgvParser = {
12
+ collect(val, memo = []) {
13
+ if (val) {
14
+ return [...memo, val];
15
+ }
16
+ return undefined;
17
+ },
18
+ mergeJson(option) {
19
+ return function (str, memo = {}) {
20
+ let val;
21
+ try {
22
+ val = JSON.parse(str);
23
+ }
24
+ catch (error) {
25
+ const e = error;
26
+ throw new Error(`${option} passed invalid JSON: ${e.message}: ${str}`);
27
+ }
28
+ if (typeof val !== 'object' || Array.isArray(val)) {
29
+ throw new Error(`${option} must be passed JSON of an object: ${str}`);
30
+ }
31
+ return (0, lodash_merge_1.default)(memo, val);
32
+ };
33
+ },
34
+ mergeTags(value, memo) {
35
+ return memo ? `${memo} and (${value})` : `(${value})`;
36
+ },
37
+ validateCountOption(value, optionName) {
38
+ const numericValue = parseInt(value);
39
+ if (isNaN(numericValue) || numericValue < 0) {
40
+ throw new Error(`${optionName} must be a non negative integer`);
41
+ }
42
+ return numericValue;
43
+ },
44
+ validateLanguage(value) {
45
+ if (!Object.keys(gherkin_1.dialects).includes(value)) {
46
+ throw new Error(`Unsupported ISO 639-1: ${value}`);
47
+ }
48
+ return value;
49
+ },
50
+ parse(argv) {
51
+ const program = new commander_1.Command('cucumber-js');
52
+ program
53
+ .storeOptionsAsProperties(false)
54
+ .usage('[options] [<GLOB|DIR|FILE[:LINE]>...]')
55
+ .version(version_1.version, '-v, --version')
56
+ .option('-b, --backtrace', 'show full backtrace for errors')
57
+ .option('-c, --config <PATH>', 'specify configuration file')
58
+ .option('-d, --dry-run', 'invoke formatters without executing steps')
59
+ .option('--exit, --force-exit', 'force shutdown of the event loop when the test run has finished: cucumber will call process.exit')
60
+ .option('--fail-fast', 'abort the run on first failure')
61
+ .option('-f, --format <TYPE[:PATH]>', 'specify the output format, optionally supply PATH to redirect formatter output (repeatable). Available formats:\n' +
62
+ formatters_1.default.buildFormattersDocumentationString(), ArgvParser.collect)
63
+ .option('--format-options <JSON>', 'provide options for formatters (repeatable)', ArgvParser.mergeJson('--format-options'))
64
+ .option('--i18n-keywords <ISO 639-1>', 'list language keywords', ArgvParser.validateLanguage)
65
+ .option('--i18n-languages', 'list languages')
66
+ .option('-i, --import <GLOB|DIR|FILE>', 'import files before executing features (repeatable)', ArgvParser.collect)
67
+ .option('--language <ISO 639-1>', 'provide the default language for feature files')
68
+ .option('--name <REGEXP>', 'only execute the scenarios with name matching the expression (repeatable)', ArgvParser.collect)
69
+ .option('--order <TYPE[:SEED]>', 'run scenarios in the specified order. Type should be `defined` or `random`')
70
+ .option('-p, --profile <NAME>', 'specify the profile to use (repeatable)', ArgvParser.collect, [])
71
+ .option('--parallel <NUMBER_OF_WORKERS>', 'run in parallel with the given number of workers', (val) => ArgvParser.validateCountOption(val, '--parallel'))
72
+ .option('--publish', 'Publish a report to https://reports.cucumber.io')
73
+ .option('--publish-quiet', "Don't print information banner about publishing reports")
74
+ .option('-r, --require <GLOB|DIR|FILE>', 'require files before executing features (repeatable)', ArgvParser.collect)
75
+ .option('--require-module <NODE_MODULE>', 'require node modules before requiring files (repeatable)', ArgvParser.collect)
76
+ .option('--retry <NUMBER_OF_RETRIES>', 'specify the number of times to retry failing test cases (default: 0)', (val) => ArgvParser.validateCountOption(val, '--retry'))
77
77
  .option('--retry-tag-filter <EXPRESSION>', `only retries the features or scenarios with tags matching the expression (repeatable).
78
- This option requires '--retry' to be specified.`, ArgvParser.mergeTags)
79
- .option('--strict', 'fail if there are pending steps')
80
- .option('--no-strict', 'succeed even if there are pending steps')
81
- .option('-t, --tags <EXPRESSION>', 'only execute the features or scenarios with tags matching the expression (repeatable)', ArgvParser.mergeTags)
82
- .option('--world-parameters <JSON>', 'provide parameters that will be passed to the world constructor (repeatable)', ArgvParser.mergeJson('--world-parameters'));
83
- program.addHelpText('afterAll', 'For more details please visit https://github.com/cucumber/cucumber-js/blob/main/docs/cli.md');
84
- program.parse(argv);
85
- const { config, i18nKeywords, i18nLanguages, profile, ...regularStuff } = program.opts();
86
- const configuration = regularStuff;
87
- if (program.args.length > 0) {
88
- configuration.paths = program.args;
89
- }
90
- return {
91
- options: {
92
- config,
93
- i18nKeywords,
94
- i18nLanguages,
95
- profile,
96
- },
97
- configuration,
98
- };
99
- },
100
- };
101
- exports.default = ArgvParser;
78
+ This option requires '--retry' to be specified.`, ArgvParser.mergeTags)
79
+ .option('--strict', 'fail if there are pending steps')
80
+ .option('--no-strict', 'succeed even if there are pending steps')
81
+ .option('-t, --tags <EXPRESSION>', 'only execute the features or scenarios with tags matching the expression (repeatable)', ArgvParser.mergeTags)
82
+ .option('--world-parameters <JSON>', 'provide parameters that will be passed to the world constructor (repeatable)', ArgvParser.mergeJson('--world-parameters'))
83
+ .option('--run-name <NAME>', 'provide a name for the run')
84
+ .option('--bvt-rerun', 'rerun failed scenarios from the last run');
85
+ program.addHelpText('afterAll', 'For more details please visit https://github.com/cucumber/cucumber-js/blob/main/docs/cli.md');
86
+ program.parse(argv);
87
+ const { config, i18nKeywords, i18nLanguages, profile, ...regularStuff } = program.opts();
88
+ const configuration = regularStuff;
89
+ if (program.args.length > 0) {
90
+ configuration.paths = program.args;
91
+ }
92
+ return {
93
+ options: {
94
+ config,
95
+ i18nKeywords,
96
+ i18nLanguages,
97
+ profile,
98
+ },
99
+ configuration,
100
+ };
101
+ },
102
+ };
103
+ exports.default = ArgvParser;
102
104
  //# sourceMappingURL=argv_parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"argv_parser.js","sourceRoot":"","sources":["../../src/configuration/argv_parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command } from 'commander'\nimport merge from 'lodash.merge'\nimport { dialects } from '@cucumber/gherkin'\nimport Formatters from '../formatter/helpers/formatters'\nimport { version } from '../version'\nimport { IConfiguration } from './types'\n\nexport interface IParsedArgvOptions {\n config?: string\n i18nKeywords?: string\n i18nLanguages?: boolean\n profile: string[]\n}\n\nexport interface IParsedArgv {\n options: IParsedArgvOptions\n configuration: Partial<IConfiguration>\n}\n\ntype IRawArgvOptions = Partial<Omit<IConfiguration, 'paths'>> &\n IParsedArgvOptions\n\nconst ArgvParser = {\n collect<T>(val: T, memo: T[] = []): T[] {\n if (val) {\n return [...memo, val]\n }\n return undefined\n },\n\n mergeJson(option: string): (str: string, memo?: object) => object {\n return function (str: string, memo: object = {}) {\n let val: object\n try {\n val = JSON.parse(str)\n } catch (error) {\n const e: Error = error\n throw new Error(`${option} passed invalid JSON: ${e.message}: ${str}`)\n }\n if (typeof val !== 'object' || Array.isArray(val)) {\n throw new Error(`${option} must be passed JSON of an object: ${str}`)\n }\n return merge(memo, val)\n }\n },\n\n mergeTags(value: string, memo?: string): string {\n return memo ? `${memo} and (${value})` : `(${value})`\n },\n\n validateCountOption(value: string, optionName: string): number {\n const numericValue = parseInt(value)\n if (isNaN(numericValue) || numericValue < 0) {\n throw new Error(`${optionName} must be a non negative integer`)\n }\n return numericValue\n },\n\n validateLanguage(value: string): string {\n if (!Object.keys(dialects).includes(value)) {\n throw new Error(`Unsupported ISO 639-1: ${value}`)\n }\n return value\n },\n\n parse(argv: string[]): IParsedArgv {\n const program = new Command('cucumber-js')\n\n program\n .storeOptionsAsProperties(false)\n .usage('[options] [<GLOB|DIR|FILE[:LINE]>...]')\n .version(version, '-v, --version')\n .option('-b, --backtrace', 'show full backtrace for errors')\n .option('-c, --config <PATH>', 'specify configuration file')\n .option('-d, --dry-run', 'invoke formatters without executing steps')\n .option(\n '--exit, --force-exit',\n 'force shutdown of the event loop when the test run has finished: cucumber will call process.exit'\n )\n .option('--fail-fast', 'abort the run on first failure')\n .option(\n '-f, --format <TYPE[:PATH]>',\n 'specify the output format, optionally supply PATH to redirect formatter output (repeatable). Available formats:\\n' +\n Formatters.buildFormattersDocumentationString(),\n ArgvParser.collect\n )\n .option(\n '--format-options <JSON>',\n 'provide options for formatters (repeatable)',\n ArgvParser.mergeJson('--format-options')\n )\n .option(\n '--i18n-keywords <ISO 639-1>',\n 'list language keywords',\n ArgvParser.validateLanguage\n )\n .option('--i18n-languages', 'list languages')\n .option(\n '-i, --import <GLOB|DIR|FILE>',\n 'import files before executing features (repeatable)',\n ArgvParser.collect\n )\n .option(\n '--language <ISO 639-1>',\n 'provide the default language for feature files'\n )\n .option(\n '--name <REGEXP>',\n 'only execute the scenarios with name matching the expression (repeatable)',\n ArgvParser.collect\n )\n\n .option(\n '--order <TYPE[:SEED]>',\n 'run scenarios in the specified order. Type should be `defined` or `random`'\n )\n .option(\n '-p, --profile <NAME>',\n 'specify the profile to use (repeatable)',\n ArgvParser.collect,\n []\n )\n .option(\n '--parallel <NUMBER_OF_WORKERS>',\n 'run in parallel with the given number of workers',\n (val) => ArgvParser.validateCountOption(val, '--parallel')\n )\n .option('--publish', 'Publish a report to https://reports.cucumber.io')\n .option(\n '--publish-quiet',\n \"Don't print information banner about publishing reports\"\n )\n .option(\n '-r, --require <GLOB|DIR|FILE>',\n 'require files before executing features (repeatable)',\n ArgvParser.collect\n )\n .option(\n '--require-module <NODE_MODULE>',\n 'require node modules before requiring files (repeatable)',\n ArgvParser.collect\n )\n .option(\n '--retry <NUMBER_OF_RETRIES>',\n 'specify the number of times to retry failing test cases (default: 0)',\n (val) => ArgvParser.validateCountOption(val, '--retry')\n )\n .option(\n '--retry-tag-filter <EXPRESSION>',\n `only retries the features or scenarios with tags matching the expression (repeatable).\n This option requires '--retry' to be specified.`,\n ArgvParser.mergeTags\n )\n .option('--strict', 'fail if there are pending steps')\n .option('--no-strict', 'succeed even if there are pending steps')\n .option(\n '-t, --tags <EXPRESSION>',\n 'only execute the features or scenarios with tags matching the expression (repeatable)',\n ArgvParser.mergeTags\n )\n .option(\n '--world-parameters <JSON>',\n 'provide parameters that will be passed to the world constructor (repeatable)',\n ArgvParser.mergeJson('--world-parameters')\n )\n\n program.addHelpText(\n 'afterAll',\n 'For more details please visit https://github.com/cucumber/cucumber-js/blob/main/docs/cli.md'\n )\n\n program.parse(argv)\n const {\n config,\n i18nKeywords,\n i18nLanguages,\n profile,\n ...regularStuff\n }: IRawArgvOptions = program.opts()\n const configuration: Partial<IConfiguration> = regularStuff\n if (program.args.length > 0) {\n configuration.paths = program.args\n }\n\n return {\n options: {\n config,\n i18nKeywords,\n i18nLanguages,\n profile,\n },\n configuration,\n }\n },\n}\n\nexport default ArgvParser\n"]}
1
+ {"version":3,"file":"argv_parser.js","sourceRoot":"","sources":["../../src/configuration/argv_parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { dialects } from '@cucumber/gherkin'\nimport { Command } from 'commander'\nimport merge from 'lodash.merge'\nimport Formatters from '../formatter/helpers/formatters'\nimport { version } from '../version'\nimport { IConfiguration } from './types'\n\nexport interface IParsedArgvOptions {\n config?: string\n i18nKeywords?: string\n i18nLanguages?: boolean\n profile: string[]\n}\n\nexport interface IParsedArgv {\n options: IParsedArgvOptions\n configuration: Partial<IConfiguration>\n}\n\ntype IRawArgvOptions = Partial<Omit<IConfiguration, 'paths'>> &\n IParsedArgvOptions\n\nconst ArgvParser = {\n collect<T>(val: T, memo: T[] = []): T[] {\n if (val) {\n return [...memo, val]\n }\n return undefined\n },\n\n mergeJson(option: string): (str: string, memo?: object) => object {\n return function (str: string, memo: object = {}) {\n let val: object\n try {\n val = JSON.parse(str)\n } catch (error) {\n const e: Error = error\n throw new Error(`${option} passed invalid JSON: ${e.message}: ${str}`)\n }\n if (typeof val !== 'object' || Array.isArray(val)) {\n throw new Error(`${option} must be passed JSON of an object: ${str}`)\n }\n return merge(memo, val)\n }\n },\n\n mergeTags(value: string, memo?: string): string {\n return memo ? `${memo} and (${value})` : `(${value})`\n },\n\n validateCountOption(value: string, optionName: string): number {\n const numericValue = parseInt(value)\n if (isNaN(numericValue) || numericValue < 0) {\n throw new Error(`${optionName} must be a non negative integer`)\n }\n return numericValue\n },\n\n validateLanguage(value: string): string {\n if (!Object.keys(dialects).includes(value)) {\n throw new Error(`Unsupported ISO 639-1: ${value}`)\n }\n return value\n },\n\n parse(argv: string[]): IParsedArgv {\n const program = new Command('cucumber-js')\n\n program\n .storeOptionsAsProperties(false)\n .usage('[options] [<GLOB|DIR|FILE[:LINE]>...]')\n .version(version, '-v, --version')\n .option('-b, --backtrace', 'show full backtrace for errors')\n .option('-c, --config <PATH>', 'specify configuration file')\n .option('-d, --dry-run', 'invoke formatters without executing steps')\n .option(\n '--exit, --force-exit',\n 'force shutdown of the event loop when the test run has finished: cucumber will call process.exit'\n )\n .option('--fail-fast', 'abort the run on first failure')\n .option(\n '-f, --format <TYPE[:PATH]>',\n 'specify the output format, optionally supply PATH to redirect formatter output (repeatable). Available formats:\\n' +\n Formatters.buildFormattersDocumentationString(),\n ArgvParser.collect\n )\n .option(\n '--format-options <JSON>',\n 'provide options for formatters (repeatable)',\n ArgvParser.mergeJson('--format-options')\n )\n .option(\n '--i18n-keywords <ISO 639-1>',\n 'list language keywords',\n ArgvParser.validateLanguage\n )\n .option('--i18n-languages', 'list languages')\n .option(\n '-i, --import <GLOB|DIR|FILE>',\n 'import files before executing features (repeatable)',\n ArgvParser.collect\n )\n .option(\n '--language <ISO 639-1>',\n 'provide the default language for feature files'\n )\n .option(\n '--name <REGEXP>',\n 'only execute the scenarios with name matching the expression (repeatable)',\n ArgvParser.collect\n )\n\n .option(\n '--order <TYPE[:SEED]>',\n 'run scenarios in the specified order. Type should be `defined` or `random`'\n )\n .option(\n '-p, --profile <NAME>',\n 'specify the profile to use (repeatable)',\n ArgvParser.collect,\n []\n )\n .option(\n '--parallel <NUMBER_OF_WORKERS>',\n 'run in parallel with the given number of workers',\n (val) => ArgvParser.validateCountOption(val, '--parallel')\n )\n .option('--publish', 'Publish a report to https://reports.cucumber.io')\n .option(\n '--publish-quiet',\n \"Don't print information banner about publishing reports\"\n )\n .option(\n '-r, --require <GLOB|DIR|FILE>',\n 'require files before executing features (repeatable)',\n ArgvParser.collect\n )\n .option(\n '--require-module <NODE_MODULE>',\n 'require node modules before requiring files (repeatable)',\n ArgvParser.collect\n )\n .option(\n '--retry <NUMBER_OF_RETRIES>',\n 'specify the number of times to retry failing test cases (default: 0)',\n (val) => ArgvParser.validateCountOption(val, '--retry')\n )\n .option(\n '--retry-tag-filter <EXPRESSION>',\n `only retries the features or scenarios with tags matching the expression (repeatable).\n This option requires '--retry' to be specified.`,\n ArgvParser.mergeTags\n )\n .option('--strict', 'fail if there are pending steps')\n .option('--no-strict', 'succeed even if there are pending steps')\n .option(\n '-t, --tags <EXPRESSION>',\n 'only execute the features or scenarios with tags matching the expression (repeatable)',\n ArgvParser.mergeTags\n )\n .option(\n '--world-parameters <JSON>',\n 'provide parameters that will be passed to the world constructor (repeatable)',\n ArgvParser.mergeJson('--world-parameters')\n )\n .option('--run-name <NAME>', 'provide a name for the run')\n .option('--bvt-rerun', 'rerun failed scenarios from the last run')\n\n program.addHelpText(\n 'afterAll',\n 'For more details please visit https://github.com/cucumber/cucumber-js/blob/main/docs/cli.md'\n )\n\n program.parse(argv)\n const {\n config,\n i18nKeywords,\n i18nLanguages,\n profile,\n ...regularStuff\n }: IRawArgvOptions = program.opts()\n const configuration: Partial<IConfiguration> = regularStuff\n if (program.args.length > 0) {\n configuration.paths = program.args\n }\n\n return {\n options: {\n config,\n i18nKeywords,\n i18nLanguages,\n profile,\n },\n configuration,\n }\n },\n}\n\nexport default ArgvParser\n"]}
@@ -1,2 +1,2 @@
1
- import { IConfiguration } from './types';
2
- export declare function checkSchema(configuration: any): Partial<IConfiguration>;
1
+ import { IConfiguration } from './types';
2
+ export declare function checkSchema(configuration: any): Partial<IConfiguration>;
@@ -1,60 +1,60 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.checkSchema = void 0;
27
- const yup = __importStar(require("yup"));
28
- const gherkin_1 = require("@cucumber/gherkin");
29
- const schema = yup.object().shape({
30
- backtrace: yup.boolean(),
31
- dryRun: yup.boolean(),
32
- exit: yup.boolean(),
33
- failFast: yup.boolean(),
34
- format: yup.array().of(yup.string()),
35
- formatOptions: yup.object(),
36
- import: yup.array().of(yup.string()),
37
- language: yup.string().oneOf(Object.keys(gherkin_1.dialects)),
38
- name: yup.array().of(yup.string()),
39
- order: yup.string().oneOf(['defined', 'random']),
40
- paths: yup.array().of(yup.string()),
41
- parallel: yup.number().integer().min(0),
42
- publish: yup.boolean(),
43
- publishQuiet: yup.boolean(),
44
- require: yup.array().of(yup.string()),
45
- requireModule: yup.array().of(yup.string()),
46
- retry: yup.number().integer().min(0),
47
- retryTagFilter: yup.string(),
48
- strict: yup.boolean(),
49
- tags: yup.string(),
50
- worldParameters: yup.object(),
51
- });
52
- function checkSchema(configuration) {
53
- return schema.validateSync(configuration, {
54
- abortEarly: false,
55
- strict: true,
56
- stripUnknown: true,
57
- });
58
- }
59
- exports.checkSchema = checkSchema;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.checkSchema = void 0;
27
+ const yup = __importStar(require("yup"));
28
+ const gherkin_1 = require("@cucumber/gherkin");
29
+ const schema = yup.object().shape({
30
+ backtrace: yup.boolean(),
31
+ dryRun: yup.boolean(),
32
+ exit: yup.boolean(),
33
+ failFast: yup.boolean(),
34
+ format: yup.array().of(yup.string()),
35
+ formatOptions: yup.object(),
36
+ import: yup.array().of(yup.string()),
37
+ language: yup.string().oneOf(Object.keys(gherkin_1.dialects)),
38
+ name: yup.array().of(yup.string()),
39
+ order: yup.string().oneOf(['defined', 'random']),
40
+ paths: yup.array().of(yup.string()),
41
+ parallel: yup.number().integer().min(0),
42
+ publish: yup.boolean(),
43
+ publishQuiet: yup.boolean(),
44
+ require: yup.array().of(yup.string()),
45
+ requireModule: yup.array().of(yup.string()),
46
+ retry: yup.number().integer().min(0),
47
+ retryTagFilter: yup.string(),
48
+ strict: yup.boolean(),
49
+ tags: yup.string(),
50
+ worldParameters: yup.object(),
51
+ });
52
+ function checkSchema(configuration) {
53
+ return schema.validateSync(configuration, {
54
+ abortEarly: false,
55
+ strict: true,
56
+ stripUnknown: true,
57
+ });
58
+ }
59
+ exports.checkSchema = checkSchema;
60
60
  //# sourceMappingURL=check_schema.js.map
@@ -1,2 +1,2 @@
1
- import { IConfiguration } from './types';
2
- export declare const DEFAULT_CONFIGURATION: IConfiguration;
1
+ import { IConfiguration } from './types';
2
+ export declare const DEFAULT_CONFIGURATION: IConfiguration;
@@ -1,27 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_CONFIGURATION = void 0;
4
- exports.DEFAULT_CONFIGURATION = {
5
- backtrace: false,
6
- dryRun: false,
7
- forceExit: false,
8
- failFast: false,
9
- format: [],
10
- formatOptions: {},
11
- import: [],
12
- language: 'en',
13
- name: [],
14
- order: 'defined',
15
- paths: [],
16
- parallel: 0,
17
- publish: false,
18
- publishQuiet: false,
19
- require: [],
20
- requireModule: [],
21
- retry: 0,
22
- retryTagFilter: '',
23
- strict: true,
24
- tags: '',
25
- worldParameters: {},
26
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CONFIGURATION = void 0;
4
+ exports.DEFAULT_CONFIGURATION = {
5
+ backtrace: false,
6
+ dryRun: false,
7
+ forceExit: false,
8
+ failFast: false,
9
+ format: [],
10
+ formatOptions: {},
11
+ import: [],
12
+ language: 'en',
13
+ name: [],
14
+ order: 'defined',
15
+ paths: [],
16
+ parallel: 0,
17
+ publish: false,
18
+ publishQuiet: false,
19
+ require: [],
20
+ requireModule: [],
21
+ retry: 0,
22
+ retryTagFilter: '',
23
+ strict: true,
24
+ tags: '',
25
+ worldParameters: {},
26
+ runName: '',
27
+ bvtRerun: false,
28
+ };
27
29
  //# sourceMappingURL=default_configuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default_configuration.js","sourceRoot":"","sources":["../../src/configuration/default_configuration.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAmB;IACnD,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,EAAE;IACjB,MAAM,EAAE,EAAE;IACV,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,KAAK;IACd,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,EAAE;IACX,aAAa,EAAE,EAAE;IACjB,KAAK,EAAE,CAAC;IACR,cAAc,EAAE,EAAE;IAClB,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,EAAE;IACR,eAAe,EAAE,EAAE;CACpB,CAAA","sourcesContent":["import { IConfiguration } from './types'\n\nexport const DEFAULT_CONFIGURATION: IConfiguration = {\n backtrace: false,\n dryRun: false,\n forceExit: false,\n failFast: false,\n format: [],\n formatOptions: {},\n import: [],\n language: 'en',\n name: [],\n order: 'defined',\n paths: [],\n parallel: 0,\n publish: false,\n publishQuiet: false,\n require: [],\n requireModule: [],\n retry: 0,\n retryTagFilter: '',\n strict: true,\n tags: '',\n worldParameters: {},\n}\n"]}
1
+ {"version":3,"file":"default_configuration.js","sourceRoot":"","sources":["../../src/configuration/default_configuration.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAmB;IACnD,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,EAAE;IACjB,MAAM,EAAE,EAAE;IACV,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,KAAK;IACd,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,EAAE;IACX,aAAa,EAAE,EAAE;IACjB,KAAK,EAAE,CAAC;IACR,cAAc,EAAE,EAAE;IAClB,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,EAAE;IACR,eAAe,EAAE,EAAE;IACnB,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,KAAK;CAChB,CAAA","sourcesContent":["import { IConfiguration } from './types'\n\nexport const DEFAULT_CONFIGURATION: IConfiguration = {\n backtrace: false,\n dryRun: false,\n forceExit: false,\n failFast: false,\n format: [],\n formatOptions: {},\n import: [],\n language: 'en',\n name: [],\n order: 'defined',\n paths: [],\n parallel: 0,\n publish: false,\n publishQuiet: false,\n require: [],\n requireModule: [],\n retry: 0,\n retryTagFilter: '',\n strict: true,\n tags: '',\n worldParameters: {},\n runName: '',\n bvtRerun: false,\n}\n"]}
@@ -1,3 +1,3 @@
1
- import { IConfiguration } from './types';
2
- import { ILogger } from '../logger';
3
- export declare function fromFile(logger: ILogger, cwd: string, file: string, profiles?: string[]): Promise<Partial<IConfiguration>>;
1
+ import { IConfiguration } from './types';
2
+ import { ILogger } from '../logger';
3
+ export declare function fromFile(logger: ILogger, cwd: string, file: string, profiles?: string[]): Promise<Partial<IConfiguration>>;
@@ -1,85 +1,85 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fromFile = void 0;
7
- const string_argv_1 = __importDefault(require("string-argv"));
8
- const fs_1 = __importDefault(require("fs"));
9
- const path_1 = __importDefault(require("path"));
10
- const yaml_1 = __importDefault(require("yaml"));
11
- const util_1 = require("util");
12
- const url_1 = require("url");
13
- const merge_configurations_1 = require("./merge_configurations");
14
- const argv_parser_1 = __importDefault(require("./argv_parser"));
15
- const check_schema_1 = require("./check_schema");
16
- // eslint-disable-next-line @typescript-eslint/no-var-requires
17
- const { importer } = require('../importer');
18
- async function fromFile(logger, cwd, file, profiles = []) {
19
- const definitions = await loadFile(cwd, file);
20
- if (!definitions.default) {
21
- logger.debug('No default profile defined in configuration file');
22
- definitions.default = {};
23
- }
24
- if (profiles.length < 1) {
25
- logger.debug('No profiles specified; using default profile');
26
- profiles = ['default'];
27
- }
28
- const definedKeys = Object.keys(definitions);
29
- profiles.forEach((profileKey) => {
30
- if (!definedKeys.includes(profileKey)) {
31
- throw new Error(`Requested profile "${profileKey}" doesn't exist`);
32
- }
33
- });
34
- return (0, merge_configurations_1.mergeConfigurations)({}, ...profiles.map((profileKey) => extractConfiguration(logger, profileKey, definitions[profileKey])));
35
- }
36
- exports.fromFile = fromFile;
37
- async function loadFile(cwd, file) {
38
- const filePath = path_1.default.join(cwd, file);
39
- const extension = path_1.default.extname(filePath);
40
- let definitions;
41
- switch (extension) {
42
- case '.json':
43
- definitions = JSON.parse(await (0, util_1.promisify)(fs_1.default.readFile)(filePath, { encoding: 'utf-8' }));
44
- break;
45
- case '.yaml':
46
- case '.yml':
47
- definitions = yaml_1.default.parse(await (0, util_1.promisify)(fs_1.default.readFile)(filePath, { encoding: 'utf-8' }));
48
- break;
49
- default:
50
- try {
51
- // eslint-disable-next-line @typescript-eslint/no-var-requires
52
- definitions = require(filePath);
53
- }
54
- catch (error) {
55
- if (error.code === 'ERR_REQUIRE_ESM') {
56
- definitions = await importer((0, url_1.pathToFileURL)(filePath));
57
- }
58
- else {
59
- throw error;
60
- }
61
- }
62
- }
63
- if (typeof definitions !== 'object') {
64
- throw new Error(`Configuration file ${filePath} does not export an object`);
65
- }
66
- return definitions;
67
- }
68
- function extractConfiguration(logger, name, definition) {
69
- if (typeof definition === 'string') {
70
- logger.debug(`Profile "${name}" value is a string; parsing as argv`);
71
- const { configuration } = argv_parser_1.default.parse([
72
- 'node',
73
- 'cucumber-js',
74
- ...(0, string_argv_1.default)(definition),
75
- ]);
76
- return configuration;
77
- }
78
- try {
79
- return (0, check_schema_1.checkSchema)(definition);
80
- }
81
- catch (error) {
82
- throw new Error(`Requested profile "${name}" failed schema validation: ${error.errors.join(' ')}`);
83
- }
84
- }
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fromFile = void 0;
7
+ const string_argv_1 = __importDefault(require("string-argv"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const yaml_1 = __importDefault(require("yaml"));
11
+ const util_1 = require("util");
12
+ const url_1 = require("url");
13
+ const merge_configurations_1 = require("./merge_configurations");
14
+ const argv_parser_1 = __importDefault(require("./argv_parser"));
15
+ const check_schema_1 = require("./check_schema");
16
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
17
+ const { importer } = require('../importer');
18
+ async function fromFile(logger, cwd, file, profiles = []) {
19
+ const definitions = await loadFile(cwd, file);
20
+ if (!definitions.default) {
21
+ logger.debug('No default profile defined in configuration file');
22
+ definitions.default = {};
23
+ }
24
+ if (profiles.length < 1) {
25
+ logger.debug('No profiles specified; using default profile');
26
+ profiles = ['default'];
27
+ }
28
+ const definedKeys = Object.keys(definitions);
29
+ profiles.forEach((profileKey) => {
30
+ if (!definedKeys.includes(profileKey)) {
31
+ throw new Error(`Requested profile "${profileKey}" doesn't exist`);
32
+ }
33
+ });
34
+ return (0, merge_configurations_1.mergeConfigurations)({}, ...profiles.map((profileKey) => extractConfiguration(logger, profileKey, definitions[profileKey])));
35
+ }
36
+ exports.fromFile = fromFile;
37
+ async function loadFile(cwd, file) {
38
+ const filePath = path_1.default.join(cwd, file);
39
+ const extension = path_1.default.extname(filePath);
40
+ let definitions;
41
+ switch (extension) {
42
+ case '.json':
43
+ definitions = JSON.parse(await (0, util_1.promisify)(fs_1.default.readFile)(filePath, { encoding: 'utf-8' }));
44
+ break;
45
+ case '.yaml':
46
+ case '.yml':
47
+ definitions = yaml_1.default.parse(await (0, util_1.promisify)(fs_1.default.readFile)(filePath, { encoding: 'utf-8' }));
48
+ break;
49
+ default:
50
+ try {
51
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
52
+ definitions = require(filePath);
53
+ }
54
+ catch (error) {
55
+ if (error.code === 'ERR_REQUIRE_ESM') {
56
+ definitions = await importer((0, url_1.pathToFileURL)(filePath));
57
+ }
58
+ else {
59
+ throw error;
60
+ }
61
+ }
62
+ }
63
+ if (typeof definitions !== 'object') {
64
+ throw new Error(`Configuration file ${filePath} does not export an object`);
65
+ }
66
+ return definitions;
67
+ }
68
+ function extractConfiguration(logger, name, definition) {
69
+ if (typeof definition === 'string') {
70
+ logger.debug(`Profile "${name}" value is a string; parsing as argv`);
71
+ const { configuration } = argv_parser_1.default.parse([
72
+ 'node',
73
+ 'cucumber-js',
74
+ ...(0, string_argv_1.default)(definition),
75
+ ]);
76
+ return configuration;
77
+ }
78
+ try {
79
+ return (0, check_schema_1.checkSchema)(definition);
80
+ }
81
+ catch (error) {
82
+ throw new Error(`Requested profile "${name}" failed schema validation: ${error.errors.join(' ')}`);
83
+ }
84
+ }
85
85
  //# sourceMappingURL=from_file.js.map