@dev-blinq/cucumber-js 1.0.36 → 1.0.37-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 (251) hide show
  1. package/bin/cucumber-js +0 -0
  2. package/bin/cucumber.js +0 -0
  3. package/bin/download-install.js +51 -10
  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 -65
  8. package/lib/api/environment.d.ts +2 -2
  9. package/lib/api/environment.js +13 -13
  10. package/lib/api/formatters.d.ts +20 -20
  11. package/lib/api/formatters.js +60 -60
  12. package/lib/api/gherkin.d.ts +21 -21
  13. package/lib/api/gherkin.js +145 -99
  14. package/lib/api/gherkin.js.map +1 -1
  15. package/lib/api/index.d.ts +12 -12
  16. package/lib/api/index.js +27 -27
  17. package/lib/api/load_configuration.d.ts +9 -9
  18. package/lib/api/load_configuration.js +40 -40
  19. package/lib/api/load_sources.d.ts +9 -9
  20. package/lib/api/load_sources.js +52 -52
  21. package/lib/api/load_support.d.ts +10 -10
  22. package/lib/api/load_support.js +29 -29
  23. package/lib/api/paths.d.ts +8 -8
  24. package/lib/api/paths.js +101 -101
  25. package/lib/api/plugins.d.ts +4 -4
  26. package/lib/api/plugins.js +18 -18
  27. package/lib/api/run_cucumber.d.ts +11 -11
  28. package/lib/api/run_cucumber.js +114 -114
  29. package/lib/api/runtime.d.ts +21 -21
  30. package/lib/api/runtime.js +35 -35
  31. package/lib/api/support.d.ts +9 -9
  32. package/lib/api/support.js +25 -25
  33. package/lib/api/test_helpers.d.ts +3 -3
  34. package/lib/api/test_helpers.js +30 -30
  35. package/lib/api/types.d.ts +177 -177
  36. package/lib/api/types.js +2 -2
  37. package/lib/cli/helpers.d.ts +39 -39
  38. package/lib/cli/helpers.js +223 -223
  39. package/lib/cli/i18n.d.ts +2 -2
  40. package/lib/cli/i18n.js +69 -69
  41. package/lib/cli/index.d.ts +21 -21
  42. package/lib/cli/index.js +63 -63
  43. package/lib/cli/install_validator.d.ts +1 -1
  44. package/lib/cli/install_validator.js +13 -13
  45. package/lib/cli/run.d.ts +1 -1
  46. package/lib/cli/run.js +43 -43
  47. package/lib/cli/validate_node_engine_version.d.ts +10 -10
  48. package/lib/cli/validate_node_engine_version.js +23 -23
  49. package/lib/configuration/argv_parser.d.ts +20 -20
  50. package/lib/configuration/argv_parser.js +102 -102
  51. package/lib/configuration/axios_client.d.ts +1 -0
  52. package/lib/configuration/axios_client.js +40 -0
  53. package/lib/configuration/axios_client.js.map +1 -0
  54. package/lib/configuration/check_schema.d.ts +2 -2
  55. package/lib/configuration/check_schema.js +59 -59
  56. package/lib/configuration/default_configuration.d.ts +2 -2
  57. package/lib/configuration/default_configuration.js +28 -28
  58. package/lib/configuration/from_file.d.ts +3 -3
  59. package/lib/configuration/from_file.js +84 -84
  60. package/lib/configuration/helpers.d.ts +1 -1
  61. package/lib/configuration/helpers.js +10 -10
  62. package/lib/configuration/index.d.ts +7 -7
  63. package/lib/configuration/index.js +28 -28
  64. package/lib/configuration/locate_file.d.ts +1 -1
  65. package/lib/configuration/locate_file.js +20 -20
  66. package/lib/configuration/merge_configurations.d.ts +2 -2
  67. package/lib/configuration/merge_configurations.js +47 -47
  68. package/lib/configuration/option_splitter.d.ts +3 -3
  69. package/lib/configuration/option_splitter.js +22 -22
  70. package/lib/configuration/types.d.ts +30 -30
  71. package/lib/configuration/types.js +2 -2
  72. package/lib/configuration/validate_configuration.d.ts +3 -3
  73. package/lib/configuration/validate_configuration.js +12 -12
  74. package/lib/filter_stack_trace.d.ts +3 -3
  75. package/lib/filter_stack_trace.js +37 -37
  76. package/lib/formatter/api.d.ts +2 -0
  77. package/lib/formatter/api.js +53 -0
  78. package/lib/formatter/api.js.map +1 -0
  79. package/lib/formatter/builder.d.ts +37 -37
  80. package/lib/formatter/builder.js +100 -100
  81. package/lib/formatter/bvt_analysis_formatter.d.ts +19 -18
  82. package/lib/formatter/bvt_analysis_formatter.js +243 -192
  83. package/lib/formatter/bvt_analysis_formatter.js.map +1 -1
  84. package/lib/formatter/feature_data_format.d.ts +23 -14
  85. package/lib/formatter/feature_data_format.js +178 -80
  86. package/lib/formatter/feature_data_format.js.map +1 -1
  87. package/lib/formatter/fixtures/typescript.d.ts +2 -2
  88. package/lib/formatter/fixtures/typescript.js +5 -5
  89. package/lib/formatter/get_color_fns.d.ts +15 -15
  90. package/lib/formatter/get_color_fns.js +55 -55
  91. package/lib/formatter/helpers/duration_helpers.d.ts +2 -2
  92. package/lib/formatter/helpers/duration_helpers.js +8 -8
  93. package/lib/formatter/helpers/event_data_collector.d.ts +30 -30
  94. package/lib/formatter/helpers/event_data_collector.js +125 -125
  95. package/lib/formatter/helpers/formatters.d.ts +6 -6
  96. package/lib/formatter/helpers/formatters.js +44 -44
  97. package/lib/formatter/helpers/gherkin_document_parser.d.ts +5 -5
  98. package/lib/formatter/helpers/gherkin_document_parser.js +65 -65
  99. package/lib/formatter/helpers/index.d.ts +10 -10
  100. package/lib/formatter/helpers/index.js +51 -51
  101. package/lib/formatter/helpers/issue_helpers.d.ts +19 -19
  102. package/lib/formatter/helpers/issue_helpers.js +58 -58
  103. package/lib/formatter/helpers/keyword_type.d.ts +11 -11
  104. package/lib/formatter/helpers/keyword_type.js +31 -31
  105. package/lib/formatter/helpers/location_helpers.d.ts +2 -2
  106. package/lib/formatter/helpers/location_helpers.js +16 -16
  107. package/lib/formatter/helpers/pickle_parser.d.ts +17 -17
  108. package/lib/formatter/helpers/pickle_parser.js +27 -27
  109. package/lib/formatter/helpers/report_generator.d.ts +135 -103
  110. package/lib/formatter/helpers/report_generator.js +433 -247
  111. package/lib/formatter/helpers/report_generator.js.map +1 -1
  112. package/lib/formatter/helpers/step_argument_formatter.d.ts +2 -2
  113. package/lib/formatter/helpers/step_argument_formatter.js +47 -47
  114. package/lib/formatter/helpers/summary_helpers.d.ts +9 -9
  115. package/lib/formatter/helpers/summary_helpers.js +95 -95
  116. package/lib/formatter/helpers/test_case_attempt_formatter.d.ts +12 -12
  117. package/lib/formatter/helpers/test_case_attempt_formatter.js +113 -113
  118. package/lib/formatter/helpers/test_case_attempt_parser.d.ts +32 -32
  119. package/lib/formatter/helpers/test_case_attempt_parser.js +134 -134
  120. package/lib/formatter/helpers/upload_serivce.d.ts +14 -9
  121. package/lib/formatter/helpers/upload_serivce.js +171 -46
  122. package/lib/formatter/helpers/upload_serivce.js.map +1 -1
  123. package/lib/formatter/helpers/uploader.d.ts +11 -11
  124. package/lib/formatter/helpers/uploader.js +130 -56
  125. package/lib/formatter/helpers/uploader.js.map +1 -1
  126. package/lib/formatter/helpers/usage_helpers/index.d.ts +23 -23
  127. package/lib/formatter/helpers/usage_helpers/index.js +110 -110
  128. package/lib/formatter/html_formatter.d.ts +7 -7
  129. package/lib/formatter/html_formatter.js +29 -29
  130. package/lib/formatter/index.d.ts +53 -53
  131. package/lib/formatter/index.js +20 -20
  132. package/lib/formatter/json_formatter.d.ts +78 -78
  133. package/lib/formatter/json_formatter.js +229 -229
  134. package/lib/formatter/junit_formatter.d.ts +17 -17
  135. package/lib/formatter/junit_formatter.js +180 -180
  136. package/lib/formatter/message_formatter.d.ts +5 -5
  137. package/lib/formatter/message_formatter.js +14 -14
  138. package/lib/formatter/progress_bar_formatter.d.ts +18 -18
  139. package/lib/formatter/progress_bar_formatter.js +98 -98
  140. package/lib/formatter/progress_formatter.d.ts +9 -9
  141. package/lib/formatter/progress_formatter.js +58 -58
  142. package/lib/formatter/rerun_formatter.d.ts +13 -13
  143. package/lib/formatter/rerun_formatter.js +79 -79
  144. package/lib/formatter/snippets_formatter.d.ts +6 -6
  145. package/lib/formatter/snippets_formatter.js +60 -60
  146. package/lib/formatter/step_definition_snippet_builder/index.d.ts +20 -20
  147. package/lib/formatter/step_definition_snippet_builder/index.js +45 -45
  148. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.d.ts +7 -7
  149. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.js +45 -45
  150. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.d.ts +16 -16
  151. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.js +10 -10
  152. package/lib/formatter/summary_formatter.d.ts +14 -14
  153. package/lib/formatter/summary_formatter.js +67 -67
  154. package/lib/formatter/usage_formatter.d.ts +6 -6
  155. package/lib/formatter/usage_formatter.js +97 -97
  156. package/lib/formatter/usage_json_formatter.d.ts +7 -7
  157. package/lib/formatter/usage_json_formatter.js +33 -33
  158. package/lib/index.d.ts +58 -58
  159. package/lib/index.js +108 -108
  160. package/lib/logger.d.ts +5 -5
  161. package/lib/logger.js +2 -2
  162. package/lib/models/data_table.d.ts +10 -10
  163. package/lib/models/data_table.js +45 -45
  164. package/lib/models/definition.d.ts +55 -55
  165. package/lib/models/definition.js +21 -21
  166. package/lib/models/gherkin_step_keyword.d.ts +1 -1
  167. package/lib/models/gherkin_step_keyword.js +2 -2
  168. package/lib/models/pickle_order.d.ts +1 -1
  169. package/lib/models/pickle_order.js +2 -2
  170. package/lib/models/step_definition.d.ts +11 -11
  171. package/lib/models/step_definition.js +36 -36
  172. package/lib/models/test_case_hook_definition.d.ts +10 -10
  173. package/lib/models/test_case_hook_definition.js +26 -26
  174. package/lib/models/test_run_hook_definition.d.ts +3 -3
  175. package/lib/models/test_run_hook_definition.js +9 -9
  176. package/lib/models/test_step_hook_definition.d.ts +9 -9
  177. package/lib/models/test_step_hook_definition.js +25 -25
  178. package/lib/pickle_filter.d.ts +42 -42
  179. package/lib/pickle_filter.js +98 -98
  180. package/lib/plugin/index.d.ts +2 -2
  181. package/lib/plugin/index.js +18 -18
  182. package/lib/plugin/plugin_manager.d.ts +13 -13
  183. package/lib/plugin/plugin_manager.js +35 -35
  184. package/lib/plugin/types.d.ts +14 -14
  185. package/lib/plugin/types.js +2 -2
  186. package/lib/publish/http_stream.d.ts +30 -30
  187. package/lib/publish/http_stream.js +111 -111
  188. package/lib/publish/index.d.ts +2 -2
  189. package/lib/publish/index.js +4 -4
  190. package/lib/publish/publish_plugin.d.ts +2 -2
  191. package/lib/publish/publish_plugin.js +47 -47
  192. package/lib/runtime/assemble_test_cases.d.ts +13 -13
  193. package/lib/runtime/assemble_test_cases.js +87 -87
  194. package/lib/runtime/attachment_manager/index.d.ts +33 -33
  195. package/lib/runtime/attachment_manager/index.js +118 -118
  196. package/lib/runtime/format_error.d.ts +2 -2
  197. package/lib/runtime/format_error.js +35 -35
  198. package/lib/runtime/helpers.d.ts +6 -6
  199. package/lib/runtime/helpers.js +100 -100
  200. package/lib/runtime/index.d.ts +40 -40
  201. package/lib/runtime/index.js +75 -75
  202. package/lib/runtime/parallel/command_types.d.ts +32 -32
  203. package/lib/runtime/parallel/command_types.js +2 -2
  204. package/lib/runtime/parallel/coordinator.d.ts +72 -72
  205. package/lib/runtime/parallel/coordinator.js +221 -221
  206. package/lib/runtime/parallel/run_worker.d.ts +1 -1
  207. package/lib/runtime/parallel/run_worker.js +28 -28
  208. package/lib/runtime/parallel/worker.d.ts +26 -26
  209. package/lib/runtime/parallel/worker.js +86 -86
  210. package/lib/runtime/run_test_run_hooks.d.ts +3 -3
  211. package/lib/runtime/run_test_run_hooks.js +27 -27
  212. package/lib/runtime/step_runner.d.ts +16 -16
  213. package/lib/runtime/step_runner.js +87 -87
  214. package/lib/runtime/stopwatch.d.ts +12 -12
  215. package/lib/runtime/stopwatch.js +33 -33
  216. package/lib/runtime/test_case_runner.d.ts +54 -54
  217. package/lib/runtime/test_case_runner.js +267 -267
  218. package/lib/step_arguments.d.ts +6 -6
  219. package/lib/step_arguments.js +18 -18
  220. package/lib/support_code_library_builder/build_parameter_type.d.ts +3 -3
  221. package/lib/support_code_library_builder/build_parameter_type.js +12 -12
  222. package/lib/support_code_library_builder/get_definition_line_and_uri.d.ts +3 -3
  223. package/lib/support_code_library_builder/get_definition_line_and_uri.js +28 -28
  224. package/lib/support_code_library_builder/index.d.ts +74 -74
  225. package/lib/support_code_library_builder/index.js +296 -296
  226. package/lib/support_code_library_builder/parallel_can_assign_helpers.d.ts +2 -2
  227. package/lib/support_code_library_builder/parallel_can_assign_helpers.js +15 -15
  228. package/lib/support_code_library_builder/sourced_parameter_type_registry.d.ts +7 -7
  229. package/lib/support_code_library_builder/sourced_parameter_type_registry.js +18 -18
  230. package/lib/support_code_library_builder/types.d.ts +88 -88
  231. package/lib/support_code_library_builder/types.js +2 -2
  232. package/lib/support_code_library_builder/validate_arguments.d.ts +12 -12
  233. package/lib/support_code_library_builder/validate_arguments.js +72 -72
  234. package/lib/support_code_library_builder/world.d.ts +18 -18
  235. package/lib/support_code_library_builder/world.js +10 -10
  236. package/lib/time.d.ts +18 -18
  237. package/lib/time.js +60 -60
  238. package/lib/try_require.d.ts +7 -7
  239. package/lib/try_require.js +22 -22
  240. package/lib/types/index.d.ts +4 -4
  241. package/lib/types/index.js +2 -2
  242. package/lib/uncaught_exception_manager.d.ts +7 -7
  243. package/lib/uncaught_exception_manager.js +11 -11
  244. package/lib/user_code_runner.d.ts +14 -14
  245. package/lib/user_code_runner.js +81 -81
  246. package/lib/value_checker.d.ts +3 -3
  247. package/lib/value_checker.js +18 -18
  248. package/lib/version.d.ts +1 -1
  249. package/lib/version.js +5 -5
  250. package/lib/version.js.map +1 -1
  251. package/package.json +4 -1
@@ -1,30 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadSupport = void 0;
4
- const messages_1 = require("@cucumber/messages");
5
- const paths_1 = require("./paths");
6
- const support_1 = require("./support");
7
- const environment_1 = require("./environment");
8
- const console_logger_1 = require("./console_logger");
9
- /**
10
- * Load support code for use in test runs.
11
- *
12
- * @public
13
- * @param options - Subset of `IRunnableConfiguration` required to find the support code.
14
- * @param environment - Project environment.
15
- */
16
- async function loadSupport(options, environment = {}) {
17
- const { cwd, stderr, debug } = (0, environment_1.mergeEnvironment)(environment);
18
- const logger = new console_logger_1.ConsoleLogger(stderr, debug);
19
- const newId = messages_1.IdGenerator.uuid();
20
- const { requirePaths, importPaths } = await (0, paths_1.resolvePaths)(logger, cwd, options.sources, options.support);
21
- return await (0, support_1.getSupportCodeLibrary)({
22
- cwd,
23
- newId,
24
- requireModules: options.support.requireModules,
25
- requirePaths,
26
- importPaths,
27
- });
28
- }
29
- exports.loadSupport = loadSupport;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadSupport = void 0;
4
+ const messages_1 = require("@cucumber/messages");
5
+ const paths_1 = require("./paths");
6
+ const support_1 = require("./support");
7
+ const environment_1 = require("./environment");
8
+ const console_logger_1 = require("./console_logger");
9
+ /**
10
+ * Load support code for use in test runs.
11
+ *
12
+ * @public
13
+ * @param options - Subset of `IRunnableConfiguration` required to find the support code.
14
+ * @param environment - Project environment.
15
+ */
16
+ async function loadSupport(options, environment = {}) {
17
+ const { cwd, stderr, debug } = (0, environment_1.mergeEnvironment)(environment);
18
+ const logger = new console_logger_1.ConsoleLogger(stderr, debug);
19
+ const newId = messages_1.IdGenerator.uuid();
20
+ const { requirePaths, importPaths } = await (0, paths_1.resolvePaths)(logger, cwd, options.sources, options.support);
21
+ return await (0, support_1.getSupportCodeLibrary)({
22
+ cwd,
23
+ newId,
24
+ requireModules: options.support.requireModules,
25
+ requirePaths,
26
+ importPaths,
27
+ });
28
+ }
29
+ exports.loadSupport = loadSupport;
30
30
  //# sourceMappingURL=load_support.js.map
@@ -1,8 +1,8 @@
1
- import { ISourcesCoordinates, ISupportCodeCoordinates } from './types';
2
- import { ILogger } from '../logger';
3
- export declare function resolvePaths(logger: ILogger, cwd: string, sources: Pick<ISourcesCoordinates, 'paths'>, support?: ISupportCodeCoordinates): Promise<{
4
- unexpandedFeaturePaths: string[];
5
- featurePaths: string[];
6
- requirePaths: string[];
7
- importPaths: string[];
8
- }>;
1
+ import { ISourcesCoordinates, ISupportCodeCoordinates } from './types';
2
+ import { ILogger } from '../logger';
3
+ export declare function resolvePaths(logger: ILogger, cwd: string, sources: Pick<ISourcesCoordinates, 'paths'>, support?: ISupportCodeCoordinates): Promise<{
4
+ unexpandedFeaturePaths: string[];
5
+ featurePaths: string[];
6
+ requirePaths: string[];
7
+ importPaths: string[];
8
+ }>;
package/lib/api/paths.js CHANGED
@@ -1,102 +1,102 @@
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.resolvePaths = void 0;
7
- const util_1 = require("util");
8
- const glob_1 = __importDefault(require("glob"));
9
- const path_1 = __importDefault(require("path"));
10
- const fs_1 = __importDefault(require("mz/fs"));
11
- async function resolvePaths(logger, cwd, sources, support = {
12
- requireModules: [],
13
- requirePaths: [],
14
- importPaths: [],
15
- }) {
16
- const unexpandedFeaturePaths = await getUnexpandedFeaturePaths(cwd, sources.paths);
17
- const featurePaths = await expandFeaturePaths(cwd, unexpandedFeaturePaths);
18
- logger.debug('Found feature files based on configuration:', featurePaths);
19
- const { requirePaths, importPaths } = await deriveSupportPaths(cwd, featurePaths, support.requirePaths, support.importPaths);
20
- logger.debug('Found support files to load via `require` based on configuration:', requirePaths);
21
- logger.debug('Found support files to load via `import` based on configuration:', importPaths);
22
- return {
23
- unexpandedFeaturePaths,
24
- featurePaths,
25
- requirePaths,
26
- importPaths,
27
- };
28
- }
29
- exports.resolvePaths = resolvePaths;
30
- async function expandPaths(cwd, unexpandedPaths, defaultExtension) {
31
- const expandedPaths = await Promise.all(unexpandedPaths.map(async (unexpandedPath) => {
32
- const matches = await (0, util_1.promisify)(glob_1.default)(unexpandedPath, {
33
- absolute: true,
34
- cwd,
35
- });
36
- const expanded = await Promise.all(matches.map(async (match) => {
37
- if (path_1.default.extname(match) === '') {
38
- return await (0, util_1.promisify)(glob_1.default)(`${match}/**/*${defaultExtension}`);
39
- }
40
- return [match];
41
- }));
42
- return expanded.flat();
43
- }));
44
- const normalized = expandedPaths.flat().map((x) => path_1.default.normalize(x));
45
- return [...new Set(normalized)];
46
- }
47
- async function getUnexpandedFeaturePaths(cwd, args) {
48
- if (args.length > 0) {
49
- const nestedFeaturePaths = await Promise.all(args.map(async (arg) => {
50
- const filename = path_1.default.basename(arg);
51
- if (filename[0] === '@') {
52
- const filePath = path_1.default.join(cwd, arg);
53
- const content = await fs_1.default.readFile(filePath, 'utf8');
54
- return content.split('\n').map((x) => x.trim());
55
- }
56
- return [arg];
57
- }));
58
- const featurePaths = nestedFeaturePaths.flat();
59
- if (featurePaths.length > 0) {
60
- return featurePaths.filter((x) => x !== '');
61
- }
62
- }
63
- return ['features/**/*.{feature,feature.md}'];
64
- }
65
- function getFeatureDirectoryPaths(cwd, featurePaths) {
66
- const featureDirs = featurePaths.map((featurePath) => {
67
- let featureDir = path_1.default.dirname(featurePath);
68
- let childDir;
69
- let parentDir = featureDir;
70
- while (childDir !== parentDir) {
71
- childDir = parentDir;
72
- parentDir = path_1.default.dirname(childDir);
73
- if (path_1.default.basename(parentDir) === 'features') {
74
- featureDir = parentDir;
75
- break;
76
- }
77
- }
78
- return path_1.default.relative(cwd, featureDir);
79
- });
80
- return [...new Set(featureDirs)];
81
- }
82
- async function expandFeaturePaths(cwd, featurePaths) {
83
- featurePaths = featurePaths.map((p) => p.replace(/(:\d+)*$/g, '')); // Strip line numbers
84
- return await expandPaths(cwd, featurePaths, '.feature');
85
- }
86
- async function deriveSupportPaths(cwd, featurePaths, unexpandedRequirePaths, unexpandedImportPaths) {
87
- if (unexpandedRequirePaths.length === 0 &&
88
- unexpandedImportPaths.length === 0) {
89
- const defaultPaths = getFeatureDirectoryPaths(cwd, featurePaths);
90
- const requirePaths = await expandPaths(cwd, defaultPaths, '.js');
91
- const importPaths = await expandPaths(cwd, defaultPaths, '.mjs');
92
- return { requirePaths, importPaths };
93
- }
94
- const requirePaths = unexpandedRequirePaths.length > 0
95
- ? await expandPaths(cwd, unexpandedRequirePaths, '.js')
96
- : [];
97
- const importPaths = unexpandedImportPaths.length > 0
98
- ? await expandPaths(cwd, unexpandedImportPaths, '.@(js|cjs|mjs)')
99
- : [];
100
- return { requirePaths, importPaths };
101
- }
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.resolvePaths = void 0;
7
+ const util_1 = require("util");
8
+ const glob_1 = __importDefault(require("glob"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const fs_1 = __importDefault(require("mz/fs"));
11
+ async function resolvePaths(logger, cwd, sources, support = {
12
+ requireModules: [],
13
+ requirePaths: [],
14
+ importPaths: [],
15
+ }) {
16
+ const unexpandedFeaturePaths = await getUnexpandedFeaturePaths(cwd, sources.paths);
17
+ const featurePaths = await expandFeaturePaths(cwd, unexpandedFeaturePaths);
18
+ logger.debug('Found feature files based on configuration:', featurePaths);
19
+ const { requirePaths, importPaths } = await deriveSupportPaths(cwd, featurePaths, support.requirePaths, support.importPaths);
20
+ logger.debug('Found support files to load via `require` based on configuration:', requirePaths);
21
+ logger.debug('Found support files to load via `import` based on configuration:', importPaths);
22
+ return {
23
+ unexpandedFeaturePaths,
24
+ featurePaths,
25
+ requirePaths,
26
+ importPaths,
27
+ };
28
+ }
29
+ exports.resolvePaths = resolvePaths;
30
+ async function expandPaths(cwd, unexpandedPaths, defaultExtension) {
31
+ const expandedPaths = await Promise.all(unexpandedPaths.map(async (unexpandedPath) => {
32
+ const matches = await (0, util_1.promisify)(glob_1.default)(unexpandedPath, {
33
+ absolute: true,
34
+ cwd,
35
+ });
36
+ const expanded = await Promise.all(matches.map(async (match) => {
37
+ if (path_1.default.extname(match) === '') {
38
+ return await (0, util_1.promisify)(glob_1.default)(`${match}/**/*${defaultExtension}`);
39
+ }
40
+ return [match];
41
+ }));
42
+ return expanded.flat();
43
+ }));
44
+ const normalized = expandedPaths.flat().map((x) => path_1.default.normalize(x));
45
+ return [...new Set(normalized)];
46
+ }
47
+ async function getUnexpandedFeaturePaths(cwd, args) {
48
+ if (args.length > 0) {
49
+ const nestedFeaturePaths = await Promise.all(args.map(async (arg) => {
50
+ const filename = path_1.default.basename(arg);
51
+ if (filename[0] === '@') {
52
+ const filePath = path_1.default.join(cwd, arg);
53
+ const content = await fs_1.default.readFile(filePath, 'utf8');
54
+ return content.split('\n').map((x) => x.trim());
55
+ }
56
+ return [arg];
57
+ }));
58
+ const featurePaths = nestedFeaturePaths.flat();
59
+ if (featurePaths.length > 0) {
60
+ return featurePaths.filter((x) => x !== '');
61
+ }
62
+ }
63
+ return ['features/**/*.{feature,feature.md}'];
64
+ }
65
+ function getFeatureDirectoryPaths(cwd, featurePaths) {
66
+ const featureDirs = featurePaths.map((featurePath) => {
67
+ let featureDir = path_1.default.dirname(featurePath);
68
+ let childDir;
69
+ let parentDir = featureDir;
70
+ while (childDir !== parentDir) {
71
+ childDir = parentDir;
72
+ parentDir = path_1.default.dirname(childDir);
73
+ if (path_1.default.basename(parentDir) === 'features') {
74
+ featureDir = parentDir;
75
+ break;
76
+ }
77
+ }
78
+ return path_1.default.relative(cwd, featureDir);
79
+ });
80
+ return [...new Set(featureDirs)];
81
+ }
82
+ async function expandFeaturePaths(cwd, featurePaths) {
83
+ featurePaths = featurePaths.map((p) => p.replace(/(:\d+)*$/g, '')); // Strip line numbers
84
+ return await expandPaths(cwd, featurePaths, '.feature');
85
+ }
86
+ async function deriveSupportPaths(cwd, featurePaths, unexpandedRequirePaths, unexpandedImportPaths) {
87
+ if (unexpandedRequirePaths.length === 0 &&
88
+ unexpandedImportPaths.length === 0) {
89
+ const defaultPaths = getFeatureDirectoryPaths(cwd, featurePaths);
90
+ const requirePaths = await expandPaths(cwd, defaultPaths, '.js');
91
+ const importPaths = await expandPaths(cwd, defaultPaths, '.mjs');
92
+ return { requirePaths, importPaths };
93
+ }
94
+ const requirePaths = unexpandedRequirePaths.length > 0
95
+ ? await expandPaths(cwd, unexpandedRequirePaths, '.js')
96
+ : [];
97
+ const importPaths = unexpandedImportPaths.length > 0
98
+ ? await expandPaths(cwd, unexpandedImportPaths, '.@(js|cjs|mjs)')
99
+ : [];
100
+ return { requirePaths, importPaths };
101
+ }
102
102
  //# sourceMappingURL=paths.js.map
@@ -1,4 +1,4 @@
1
- import { PluginManager } from '../plugin';
2
- import { IRunEnvironment, IRunOptions } from './types';
3
- import { ILogger } from '../logger';
4
- export declare function initializePlugins(logger: ILogger, configuration: IRunOptions, environment: IRunEnvironment): Promise<PluginManager>;
1
+ import { PluginManager } from '../plugin';
2
+ import { IRunEnvironment, IRunOptions } from './types';
3
+ import { ILogger } from '../logger';
4
+ export declare function initializePlugins(logger: ILogger, configuration: IRunOptions, environment: IRunEnvironment): Promise<PluginManager>;
@@ -1,19 +1,19 @@
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.initializePlugins = void 0;
7
- const plugin_1 = require("../plugin");
8
- const publish_1 = __importDefault(require("../publish"));
9
- const INTERNAL_PLUGINS = {
10
- publish: publish_1.default,
11
- };
12
- async function initializePlugins(logger, configuration, environment) {
13
- // eventually we'll load plugin packages here
14
- const pluginManager = new plugin_1.PluginManager(Object.values(INTERNAL_PLUGINS));
15
- await pluginManager.init(logger, configuration, environment);
16
- return pluginManager;
17
- }
18
- exports.initializePlugins = initializePlugins;
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.initializePlugins = void 0;
7
+ const plugin_1 = require("../plugin");
8
+ const publish_1 = __importDefault(require("../publish"));
9
+ const INTERNAL_PLUGINS = {
10
+ publish: publish_1.default,
11
+ };
12
+ async function initializePlugins(logger, configuration, environment) {
13
+ // eventually we'll load plugin packages here
14
+ const pluginManager = new plugin_1.PluginManager(Object.values(INTERNAL_PLUGINS));
15
+ await pluginManager.init(logger, configuration, environment);
16
+ return pluginManager;
17
+ }
18
+ exports.initializePlugins = initializePlugins;
19
19
  //# sourceMappingURL=plugins.js.map
@@ -1,11 +1,11 @@
1
- import { Envelope } from '@cucumber/messages';
2
- import { IRunEnvironment, IRunOptions, IRunResult } from './types';
3
- /**
4
- * Execute a Cucumber test run.
5
- *
6
- * @public
7
- * @param configuration - Configuration loaded from `loadConfiguration`.
8
- * @param environment - Project environment.
9
- * @param onMessage - Callback fired each time Cucumber emits a message.
10
- */
11
- export declare function runCucumber(configuration: IRunOptions, environment?: IRunEnvironment, onMessage?: (message: Envelope) => void): Promise<IRunResult>;
1
+ import { Envelope } from '@cucumber/messages';
2
+ import { IRunEnvironment, IRunOptions, IRunResult } from './types';
3
+ /**
4
+ * Execute a Cucumber test run.
5
+ *
6
+ * @public
7
+ * @param configuration - Configuration loaded from `loadConfiguration`.
8
+ * @param environment - Project environment.
9
+ * @param onMessage - Callback fired each time Cucumber emits a message.
10
+ */
11
+ export declare function runCucumber(configuration: IRunOptions, environment?: IRunEnvironment, onMessage?: (message: Envelope) => void): Promise<IRunResult>;
@@ -1,115 +1,115 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runCucumber = void 0;
4
- const messages_1 = require("@cucumber/messages");
5
- const events_1 = require("events");
6
- const helpers_1 = require("../cli/helpers");
7
- const helpers_2 = require("../formatter/helpers");
8
- const console_logger_1 = require("./console_logger");
9
- const environment_1 = require("./environment");
10
- const formatters_1 = require("./formatters");
11
- const gherkin_1 = require("./gherkin");
12
- const paths_1 = require("./paths");
13
- const plugins_1 = require("./plugins");
14
- const runtime_1 = require("./runtime");
15
- const support_1 = require("./support");
16
- /**
17
- * Execute a Cucumber test run.
18
- *
19
- * @public
20
- * @param configuration - Configuration loaded from `loadConfiguration`.
21
- * @param environment - Project environment.
22
- * @param onMessage - Callback fired each time Cucumber emits a message.
23
- */
24
- async function runCucumber(configuration, environment = {}, onMessage) {
25
- const { cwd, stdout, stderr, env, debug } = (0, environment_1.mergeEnvironment)(environment);
26
- const logger = new console_logger_1.ConsoleLogger(stderr, debug);
27
- const newId = messages_1.IdGenerator.uuid();
28
- const supportCoordinates = 'World' in configuration.support
29
- ? configuration.support.originalCoordinates
30
- : configuration.support;
31
- const { unexpandedFeaturePaths, featurePaths, requirePaths, importPaths } = await (0, paths_1.resolvePaths)(logger, cwd, configuration.sources, supportCoordinates);
32
- const supportCodeLibrary = 'World' in configuration.support
33
- ? configuration.support
34
- : await (0, support_1.getSupportCodeLibrary)({
35
- cwd,
36
- newId,
37
- requirePaths,
38
- importPaths,
39
- requireModules: supportCoordinates.requireModules,
40
- });
41
- const plugins = await (0, plugins_1.initializePlugins)(logger, configuration, environment);
42
- const eventBroadcaster = new events_1.EventEmitter();
43
- if (onMessage) {
44
- eventBroadcaster.on('envelope', onMessage);
45
- }
46
- eventBroadcaster.on('envelope', (value) => plugins.emit('message', value));
47
- const eventDataCollector = new helpers_2.EventDataCollector(eventBroadcaster);
48
- let formatterStreamError = false;
49
- const cleanupFormatters = await (0, formatters_1.initializeFormatters)({
50
- env,
51
- cwd,
52
- stdout,
53
- stderr,
54
- logger,
55
- onStreamError: () => (formatterStreamError = true),
56
- eventBroadcaster,
57
- eventDataCollector,
58
- configuration: configuration.formats,
59
- supportCodeLibrary,
60
- });
61
- await (0, helpers_1.emitMetaMessage)(eventBroadcaster, env, configuration.runName);
62
- let pickleIds = [];
63
- let parseErrors = [];
64
- if (featurePaths.length > 0) {
65
- const gherkinResult = await (0, gherkin_1.getFilteredPicklesAndErrors)({
66
- newId,
67
- cwd,
68
- logger,
69
- unexpandedFeaturePaths,
70
- featurePaths,
71
- coordinates: configuration.sources,
72
- onEnvelope: (envelope) => eventBroadcaster.emit('envelope', envelope),
73
- });
74
- pickleIds = gherkinResult.filteredPickles.map(({ pickle }) => pickle.id);
75
- parseErrors = gherkinResult.parseErrors;
76
- }
77
- if (parseErrors.length) {
78
- parseErrors.forEach((parseError) => {
79
- logger.error(`Parse error in "${parseError.source.uri}" ${parseError.message}`);
80
- });
81
- await cleanupFormatters();
82
- await plugins.cleanup();
83
- return {
84
- success: false,
85
- support: supportCodeLibrary,
86
- };
87
- }
88
- (0, helpers_1.emitSupportCodeMessages)({
89
- eventBroadcaster,
90
- supportCodeLibrary,
91
- newId,
92
- });
93
- const runtime = (0, runtime_1.makeRuntime)({
94
- cwd,
95
- logger,
96
- eventBroadcaster,
97
- eventDataCollector,
98
- pickleIds,
99
- newId,
100
- supportCodeLibrary,
101
- requireModules: supportCoordinates.requireModules,
102
- requirePaths,
103
- importPaths,
104
- options: configuration.runtime,
105
- });
106
- const success = await runtime.start();
107
- await cleanupFormatters();
108
- await plugins.cleanup();
109
- return {
110
- success: success && !formatterStreamError,
111
- support: supportCodeLibrary,
112
- };
113
- }
114
- exports.runCucumber = runCucumber;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runCucumber = void 0;
4
+ const messages_1 = require("@cucumber/messages");
5
+ const events_1 = require("events");
6
+ const helpers_1 = require("../cli/helpers");
7
+ const helpers_2 = require("../formatter/helpers");
8
+ const console_logger_1 = require("./console_logger");
9
+ const environment_1 = require("./environment");
10
+ const formatters_1 = require("./formatters");
11
+ const gherkin_1 = require("./gherkin");
12
+ const paths_1 = require("./paths");
13
+ const plugins_1 = require("./plugins");
14
+ const runtime_1 = require("./runtime");
15
+ const support_1 = require("./support");
16
+ /**
17
+ * Execute a Cucumber test run.
18
+ *
19
+ * @public
20
+ * @param configuration - Configuration loaded from `loadConfiguration`.
21
+ * @param environment - Project environment.
22
+ * @param onMessage - Callback fired each time Cucumber emits a message.
23
+ */
24
+ async function runCucumber(configuration, environment = {}, onMessage) {
25
+ const { cwd, stdout, stderr, env, debug } = (0, environment_1.mergeEnvironment)(environment);
26
+ const logger = new console_logger_1.ConsoleLogger(stderr, debug);
27
+ const newId = messages_1.IdGenerator.uuid();
28
+ const supportCoordinates = 'World' in configuration.support
29
+ ? configuration.support.originalCoordinates
30
+ : configuration.support;
31
+ const { unexpandedFeaturePaths, featurePaths, requirePaths, importPaths } = await (0, paths_1.resolvePaths)(logger, cwd, configuration.sources, supportCoordinates);
32
+ const supportCodeLibrary = 'World' in configuration.support
33
+ ? configuration.support
34
+ : await (0, support_1.getSupportCodeLibrary)({
35
+ cwd,
36
+ newId,
37
+ requirePaths,
38
+ importPaths,
39
+ requireModules: supportCoordinates.requireModules,
40
+ });
41
+ const plugins = await (0, plugins_1.initializePlugins)(logger, configuration, environment);
42
+ const eventBroadcaster = new events_1.EventEmitter();
43
+ if (onMessage) {
44
+ eventBroadcaster.on('envelope', onMessage);
45
+ }
46
+ eventBroadcaster.on('envelope', (value) => plugins.emit('message', value));
47
+ const eventDataCollector = new helpers_2.EventDataCollector(eventBroadcaster);
48
+ let formatterStreamError = false;
49
+ const cleanupFormatters = await (0, formatters_1.initializeFormatters)({
50
+ env,
51
+ cwd,
52
+ stdout,
53
+ stderr,
54
+ logger,
55
+ onStreamError: () => (formatterStreamError = true),
56
+ eventBroadcaster,
57
+ eventDataCollector,
58
+ configuration: configuration.formats,
59
+ supportCodeLibrary,
60
+ });
61
+ await (0, helpers_1.emitMetaMessage)(eventBroadcaster, env, configuration.runName);
62
+ let pickleIds = [];
63
+ let parseErrors = [];
64
+ if (featurePaths.length > 0) {
65
+ const gherkinResult = await (0, gherkin_1.getFilteredPicklesAndErrors)({
66
+ newId,
67
+ cwd,
68
+ logger,
69
+ unexpandedFeaturePaths,
70
+ featurePaths,
71
+ coordinates: configuration.sources,
72
+ onEnvelope: (envelope) => eventBroadcaster.emit('envelope', envelope),
73
+ });
74
+ pickleIds = gherkinResult.filteredPickles.map(({ pickle }) => pickle.id);
75
+ parseErrors = gherkinResult.parseErrors;
76
+ }
77
+ if (parseErrors.length) {
78
+ parseErrors.forEach((parseError) => {
79
+ logger.error(`Parse error in "${parseError.source.uri}" ${parseError.message}`);
80
+ });
81
+ await cleanupFormatters();
82
+ await plugins.cleanup();
83
+ return {
84
+ success: false,
85
+ support: supportCodeLibrary,
86
+ };
87
+ }
88
+ (0, helpers_1.emitSupportCodeMessages)({
89
+ eventBroadcaster,
90
+ supportCodeLibrary,
91
+ newId,
92
+ });
93
+ const runtime = (0, runtime_1.makeRuntime)({
94
+ cwd,
95
+ logger,
96
+ eventBroadcaster,
97
+ eventDataCollector,
98
+ pickleIds,
99
+ newId,
100
+ supportCodeLibrary,
101
+ requireModules: supportCoordinates.requireModules,
102
+ requirePaths,
103
+ importPaths,
104
+ options: configuration.runtime,
105
+ });
106
+ const success = await runtime.start();
107
+ await cleanupFormatters();
108
+ await plugins.cleanup();
109
+ return {
110
+ success: success && !formatterStreamError,
111
+ support: supportCodeLibrary,
112
+ };
113
+ }
114
+ exports.runCucumber = runCucumber;
115
115
  //# sourceMappingURL=run_cucumber.js.map
@@ -1,21 +1,21 @@
1
- /// <reference types="node" />
2
- import { IRuntime } from '../runtime';
3
- import { EventEmitter } from 'events';
4
- import { EventDataCollector } from '../formatter/helpers';
5
- import { IdGenerator } from '@cucumber/messages';
6
- import { ISupportCodeLibrary } from '../support_code_library_builder/types';
7
- import { IRunOptionsRuntime } from './types';
8
- import { ILogger } from '../logger';
9
- export declare function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options }, }: {
10
- cwd: string;
11
- logger: ILogger;
12
- eventBroadcaster: EventEmitter;
13
- eventDataCollector: EventDataCollector;
14
- newId: IdGenerator.NewId;
15
- pickleIds: string[];
16
- supportCodeLibrary: ISupportCodeLibrary;
17
- requireModules: string[];
18
- requirePaths: string[];
19
- importPaths: string[];
20
- options: IRunOptionsRuntime;
21
- }): IRuntime;
1
+ /// <reference types="node" />
2
+ import { IRuntime } from '../runtime';
3
+ import { EventEmitter } from 'events';
4
+ import { EventDataCollector } from '../formatter/helpers';
5
+ import { IdGenerator } from '@cucumber/messages';
6
+ import { ISupportCodeLibrary } from '../support_code_library_builder/types';
7
+ import { IRunOptionsRuntime } from './types';
8
+ import { ILogger } from '../logger';
9
+ export declare function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options }, }: {
10
+ cwd: string;
11
+ logger: ILogger;
12
+ eventBroadcaster: EventEmitter;
13
+ eventDataCollector: EventDataCollector;
14
+ newId: IdGenerator.NewId;
15
+ pickleIds: string[];
16
+ supportCodeLibrary: ISupportCodeLibrary;
17
+ requireModules: string[];
18
+ requirePaths: string[];
19
+ importPaths: string[];
20
+ options: IRunOptionsRuntime;
21
+ }): IRuntime;