@dev-blinq/cucumber-js 1.0.6 → 1.0.8

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 (238) hide show
  1. package/bin/cucumber-js +0 -0
  2. package/bin/cucumber.js +0 -0
  3. package/lib/api/console_logger.d.ts +12 -12
  4. package/lib/api/console_logger.js +23 -23
  5. package/lib/api/convert_configuration.d.ts +4 -4
  6. package/lib/api/convert_configuration.js +64 -64
  7. package/lib/api/environment.d.ts +2 -2
  8. package/lib/api/environment.js +13 -13
  9. package/lib/api/formatters.d.ts +20 -20
  10. package/lib/api/formatters.js +60 -60
  11. package/lib/api/gherkin.d.ts +21 -21
  12. package/lib/api/gherkin.js +99 -99
  13. package/lib/api/index.d.ts +12 -12
  14. package/lib/api/index.js +27 -27
  15. package/lib/api/load_configuration.d.ts +9 -9
  16. package/lib/api/load_configuration.js +40 -40
  17. package/lib/api/load_sources.d.ts +9 -9
  18. package/lib/api/load_sources.js +52 -52
  19. package/lib/api/load_support.d.ts +10 -10
  20. package/lib/api/load_support.js +29 -29
  21. package/lib/api/paths.d.ts +8 -8
  22. package/lib/api/paths.js +101 -101
  23. package/lib/api/plugins.d.ts +4 -4
  24. package/lib/api/plugins.js +18 -18
  25. package/lib/api/run_cucumber.d.ts +11 -11
  26. package/lib/api/run_cucumber.js +114 -114
  27. package/lib/api/runtime.d.ts +21 -21
  28. package/lib/api/runtime.js +35 -35
  29. package/lib/api/support.d.ts +9 -9
  30. package/lib/api/support.js +25 -25
  31. package/lib/api/test_helpers.d.ts +3 -3
  32. package/lib/api/test_helpers.js +30 -30
  33. package/lib/api/types.d.ts +175 -175
  34. package/lib/api/types.js +2 -2
  35. package/lib/cli/helpers.d.ts +37 -37
  36. package/lib/cli/helpers.js +202 -202
  37. package/lib/cli/i18n.d.ts +2 -2
  38. package/lib/cli/i18n.js +69 -69
  39. package/lib/cli/index.d.ts +21 -21
  40. package/lib/cli/index.js +58 -58
  41. package/lib/cli/install_validator.d.ts +1 -1
  42. package/lib/cli/install_validator.js +13 -13
  43. package/lib/cli/run.d.ts +1 -1
  44. package/lib/cli/run.js +43 -43
  45. package/lib/cli/validate_node_engine_version.d.ts +10 -10
  46. package/lib/cli/validate_node_engine_version.js +23 -23
  47. package/lib/configuration/argv_parser.d.ts +20 -20
  48. package/lib/configuration/argv_parser.js +100 -100
  49. package/lib/configuration/check_schema.d.ts +2 -2
  50. package/lib/configuration/check_schema.js +59 -59
  51. package/lib/configuration/default_configuration.d.ts +2 -2
  52. package/lib/configuration/default_configuration.js +26 -26
  53. package/lib/configuration/from_file.d.ts +3 -3
  54. package/lib/configuration/from_file.js +84 -84
  55. package/lib/configuration/helpers.d.ts +1 -1
  56. package/lib/configuration/helpers.js +10 -10
  57. package/lib/configuration/index.d.ts +7 -7
  58. package/lib/configuration/index.js +28 -28
  59. package/lib/configuration/locate_file.d.ts +1 -1
  60. package/lib/configuration/locate_file.js +20 -20
  61. package/lib/configuration/merge_configurations.d.ts +2 -2
  62. package/lib/configuration/merge_configurations.js +47 -47
  63. package/lib/configuration/option_splitter.d.ts +3 -3
  64. package/lib/configuration/option_splitter.js +22 -22
  65. package/lib/configuration/types.d.ts +28 -28
  66. package/lib/configuration/types.js +2 -2
  67. package/lib/configuration/validate_configuration.d.ts +3 -3
  68. package/lib/configuration/validate_configuration.js +12 -12
  69. package/lib/filter_stack_trace.d.ts +3 -3
  70. package/lib/filter_stack_trace.js +37 -37
  71. package/lib/formatter/builder.d.ts +37 -37
  72. package/lib/formatter/builder.js +100 -100
  73. package/lib/formatter/bvt_formatter.d.ts +5 -0
  74. package/lib/formatter/bvt_formatter.js +21 -0
  75. package/lib/formatter/bvt_formatter.js.map +1 -0
  76. package/lib/formatter/feature_data_format.d.ts +14 -14
  77. package/lib/formatter/feature_data_format.js +80 -80
  78. package/lib/formatter/feature_data_format.js.map +1 -1
  79. package/lib/formatter/fixtures/typescript.d.ts +2 -2
  80. package/lib/formatter/fixtures/typescript.js +5 -5
  81. package/lib/formatter/get_color_fns.d.ts +15 -15
  82. package/lib/formatter/get_color_fns.js +55 -55
  83. package/lib/formatter/helpers/duration_helpers.d.ts +2 -2
  84. package/lib/formatter/helpers/duration_helpers.js +8 -8
  85. package/lib/formatter/helpers/event_data_collector.d.ts +30 -30
  86. package/lib/formatter/helpers/event_data_collector.js +125 -125
  87. package/lib/formatter/helpers/formatters.d.ts +6 -6
  88. package/lib/formatter/helpers/formatters.js +44 -42
  89. package/lib/formatter/helpers/formatters.js.map +1 -1
  90. package/lib/formatter/helpers/gherkin_document_parser.d.ts +5 -5
  91. package/lib/formatter/helpers/gherkin_document_parser.js +65 -65
  92. package/lib/formatter/helpers/index.d.ts +10 -10
  93. package/lib/formatter/helpers/index.js +51 -51
  94. package/lib/formatter/helpers/issue_helpers.d.ts +19 -19
  95. package/lib/formatter/helpers/issue_helpers.js +58 -58
  96. package/lib/formatter/helpers/keyword_type.d.ts +11 -11
  97. package/lib/formatter/helpers/keyword_type.js +31 -31
  98. package/lib/formatter/helpers/location_helpers.d.ts +2 -2
  99. package/lib/formatter/helpers/location_helpers.js +16 -16
  100. package/lib/formatter/helpers/pickle_parser.d.ts +17 -17
  101. package/lib/formatter/helpers/pickle_parser.js +27 -27
  102. package/lib/formatter/helpers/report_generator.d.ts +91 -0
  103. package/lib/formatter/helpers/report_generator.js +235 -0
  104. package/lib/formatter/helpers/report_generator.js.map +1 -0
  105. package/lib/formatter/helpers/step_argument_formatter.d.ts +2 -2
  106. package/lib/formatter/helpers/step_argument_formatter.js +47 -47
  107. package/lib/formatter/helpers/summary_helpers.d.ts +9 -9
  108. package/lib/formatter/helpers/summary_helpers.js +95 -95
  109. package/lib/formatter/helpers/test_case_attempt_formatter.d.ts +12 -12
  110. package/lib/formatter/helpers/test_case_attempt_formatter.js +113 -113
  111. package/lib/formatter/helpers/test_case_attempt_parser.d.ts +32 -32
  112. package/lib/formatter/helpers/test_case_attempt_parser.js +134 -134
  113. package/lib/formatter/helpers/usage_helpers/index.d.ts +23 -23
  114. package/lib/formatter/helpers/usage_helpers/index.js +110 -110
  115. package/lib/formatter/html_formatter.d.ts +7 -7
  116. package/lib/formatter/html_formatter.js +29 -29
  117. package/lib/formatter/index.d.ts +53 -53
  118. package/lib/formatter/index.js +20 -20
  119. package/lib/formatter/json_formatter.d.ts +78 -78
  120. package/lib/formatter/json_formatter.js +229 -229
  121. package/lib/formatter/junit_formatter.d.ts +17 -17
  122. package/lib/formatter/junit_formatter.js +180 -180
  123. package/lib/formatter/message_formatter.d.ts +5 -5
  124. package/lib/formatter/message_formatter.js +14 -14
  125. package/lib/formatter/progress_bar_formatter.d.ts +18 -18
  126. package/lib/formatter/progress_bar_formatter.js +98 -98
  127. package/lib/formatter/progress_formatter.d.ts +9 -9
  128. package/lib/formatter/progress_formatter.js +58 -58
  129. package/lib/formatter/rerun_formatter.d.ts +13 -13
  130. package/lib/formatter/rerun_formatter.js +79 -79
  131. package/lib/formatter/snippets_formatter.d.ts +6 -6
  132. package/lib/formatter/snippets_formatter.js +60 -60
  133. package/lib/formatter/step_definition_snippet_builder/index.d.ts +20 -20
  134. package/lib/formatter/step_definition_snippet_builder/index.js +45 -45
  135. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.d.ts +7 -7
  136. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.js +45 -45
  137. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.d.ts +16 -16
  138. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.js +10 -10
  139. package/lib/formatter/summary_formatter.d.ts +14 -14
  140. package/lib/formatter/summary_formatter.js +67 -67
  141. package/lib/formatter/usage_formatter.d.ts +6 -6
  142. package/lib/formatter/usage_formatter.js +97 -97
  143. package/lib/formatter/usage_json_formatter.d.ts +7 -7
  144. package/lib/formatter/usage_json_formatter.js +33 -33
  145. package/lib/index.d.ts +58 -58
  146. package/lib/index.js +108 -108
  147. package/lib/logger.d.ts +5 -5
  148. package/lib/logger.js +2 -2
  149. package/lib/models/data_table.d.ts +10 -10
  150. package/lib/models/data_table.js +45 -45
  151. package/lib/models/definition.d.ts +55 -55
  152. package/lib/models/definition.js +21 -21
  153. package/lib/models/gherkin_step_keyword.d.ts +1 -1
  154. package/lib/models/gherkin_step_keyword.js +2 -2
  155. package/lib/models/pickle_order.d.ts +1 -1
  156. package/lib/models/pickle_order.js +2 -2
  157. package/lib/models/step_definition.d.ts +11 -11
  158. package/lib/models/step_definition.js +36 -36
  159. package/lib/models/test_case_hook_definition.d.ts +10 -10
  160. package/lib/models/test_case_hook_definition.js +26 -26
  161. package/lib/models/test_run_hook_definition.d.ts +3 -3
  162. package/lib/models/test_run_hook_definition.js +9 -9
  163. package/lib/models/test_step_hook_definition.d.ts +9 -9
  164. package/lib/models/test_step_hook_definition.js +25 -25
  165. package/lib/pickle_filter.d.ts +42 -42
  166. package/lib/pickle_filter.js +98 -98
  167. package/lib/plugin/index.d.ts +2 -2
  168. package/lib/plugin/index.js +18 -18
  169. package/lib/plugin/plugin_manager.d.ts +13 -13
  170. package/lib/plugin/plugin_manager.js +35 -35
  171. package/lib/plugin/types.d.ts +14 -14
  172. package/lib/plugin/types.js +2 -2
  173. package/lib/publish/http_stream.d.ts +30 -30
  174. package/lib/publish/http_stream.js +111 -111
  175. package/lib/publish/index.d.ts +2 -2
  176. package/lib/publish/index.js +4 -4
  177. package/lib/publish/publish_plugin.d.ts +2 -2
  178. package/lib/publish/publish_plugin.js +47 -47
  179. package/lib/runtime/assemble_test_cases.d.ts +13 -13
  180. package/lib/runtime/assemble_test_cases.js +87 -87
  181. package/lib/runtime/attachment_manager/index.d.ts +33 -33
  182. package/lib/runtime/attachment_manager/index.js +118 -118
  183. package/lib/runtime/format_error.d.ts +2 -2
  184. package/lib/runtime/format_error.js +35 -35
  185. package/lib/runtime/helpers.d.ts +6 -6
  186. package/lib/runtime/helpers.js +100 -100
  187. package/lib/runtime/index.d.ts +40 -40
  188. package/lib/runtime/index.js +75 -75
  189. package/lib/runtime/parallel/command_types.d.ts +32 -32
  190. package/lib/runtime/parallel/command_types.js +2 -2
  191. package/lib/runtime/parallel/coordinator.d.ts +72 -72
  192. package/lib/runtime/parallel/coordinator.js +221 -221
  193. package/lib/runtime/parallel/run_worker.d.ts +1 -1
  194. package/lib/runtime/parallel/run_worker.js +28 -28
  195. package/lib/runtime/parallel/worker.d.ts +26 -26
  196. package/lib/runtime/parallel/worker.js +86 -86
  197. package/lib/runtime/run_test_run_hooks.d.ts +3 -3
  198. package/lib/runtime/run_test_run_hooks.js +27 -27
  199. package/lib/runtime/step_runner.d.ts +16 -16
  200. package/lib/runtime/step_runner.js +87 -87
  201. package/lib/runtime/stopwatch.d.ts +12 -12
  202. package/lib/runtime/stopwatch.js +33 -33
  203. package/lib/runtime/test_case_runner.d.ts +54 -54
  204. package/lib/runtime/test_case_runner.js +267 -267
  205. package/lib/step_arguments.d.ts +6 -6
  206. package/lib/step_arguments.js +18 -18
  207. package/lib/support_code_library_builder/build_parameter_type.d.ts +3 -3
  208. package/lib/support_code_library_builder/build_parameter_type.js +12 -12
  209. package/lib/support_code_library_builder/get_definition_line_and_uri.d.ts +3 -3
  210. package/lib/support_code_library_builder/get_definition_line_and_uri.js +28 -28
  211. package/lib/support_code_library_builder/index.d.ts +74 -74
  212. package/lib/support_code_library_builder/index.js +296 -296
  213. package/lib/support_code_library_builder/parallel_can_assign_helpers.d.ts +2 -2
  214. package/lib/support_code_library_builder/parallel_can_assign_helpers.js +15 -15
  215. package/lib/support_code_library_builder/sourced_parameter_type_registry.d.ts +7 -7
  216. package/lib/support_code_library_builder/sourced_parameter_type_registry.js +18 -18
  217. package/lib/support_code_library_builder/types.d.ts +88 -88
  218. package/lib/support_code_library_builder/types.js +2 -2
  219. package/lib/support_code_library_builder/validate_arguments.d.ts +12 -12
  220. package/lib/support_code_library_builder/validate_arguments.js +72 -72
  221. package/lib/support_code_library_builder/world.d.ts +18 -18
  222. package/lib/support_code_library_builder/world.js +10 -10
  223. package/lib/time.d.ts +18 -18
  224. package/lib/time.js +60 -60
  225. package/lib/try_require.d.ts +7 -7
  226. package/lib/try_require.js +22 -22
  227. package/lib/types/index.d.ts +4 -4
  228. package/lib/types/index.js +2 -2
  229. package/lib/uncaught_exception_manager.d.ts +7 -7
  230. package/lib/uncaught_exception_manager.js +11 -11
  231. package/lib/user_code_runner.d.ts +14 -14
  232. package/lib/user_code_runner.js +81 -81
  233. package/lib/value_checker.d.ts +3 -3
  234. package/lib/value_checker.js +18 -18
  235. package/lib/version.d.ts +1 -1
  236. package/lib/version.js +5 -5
  237. package/lib/version.js.map +1 -1
  238. package/package.json +2 -2
@@ -1,114 +1,114 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.formatTestCaseAttempt = void 0;
30
- const indent_string_1 = __importDefault(require("indent-string"));
31
- const messages = __importStar(require("@cucumber/messages"));
32
- const figures_1 = __importDefault(require("figures"));
33
- const location_helpers_1 = require("./location_helpers");
34
- const test_case_attempt_parser_1 = require("./test_case_attempt_parser");
35
- const step_argument_formatter_1 = require("./step_argument_formatter");
36
- const value_checker_1 = require("../../value_checker");
37
- const CHARACTERS = new Map([
38
- [messages.TestStepResultStatus.AMBIGUOUS, figures_1.default.cross],
39
- [messages.TestStepResultStatus.FAILED, figures_1.default.cross],
40
- [messages.TestStepResultStatus.PASSED, figures_1.default.tick],
41
- [messages.TestStepResultStatus.PENDING, '?'],
42
- [messages.TestStepResultStatus.SKIPPED, '-'],
43
- [messages.TestStepResultStatus.UNDEFINED, '?'],
44
- ]);
45
- function getStepMessage(testStep) {
46
- switch (testStep.result.status) {
47
- case messages.TestStepResultStatus.AMBIGUOUS:
48
- case messages.TestStepResultStatus.FAILED:
49
- return testStep.result.message;
50
- case messages.TestStepResultStatus.UNDEFINED:
51
- return `${'Undefined. Implement with the following snippet:' + '\n\n'}${(0, indent_string_1.default)(testStep.snippet, 2)}\n`;
52
- case messages.TestStepResultStatus.PENDING:
53
- return 'Pending';
54
- }
55
- return '';
56
- }
57
- function formatStep({ colorFns, testStep, printAttachments, }) {
58
- const { name, result: { status }, actionLocation, attachments, } = testStep;
59
- const colorFn = colorFns.forStatus(status);
60
- const identifier = testStep.keyword + (0, value_checker_1.valueOrDefault)(testStep.text, '');
61
- let text = colorFn(`${CHARACTERS.get(status)} ${identifier}`);
62
- if ((0, value_checker_1.doesHaveValue)(name)) {
63
- text += colorFn(` (${name})`);
64
- }
65
- if ((0, value_checker_1.doesHaveValue)(actionLocation)) {
66
- text += ` # ${colorFns.location((0, location_helpers_1.formatLocation)(actionLocation))}`;
67
- }
68
- text += '\n';
69
- if ((0, value_checker_1.doesHaveValue)(testStep.argument)) {
70
- const argumentsText = (0, step_argument_formatter_1.formatStepArgument)(testStep.argument);
71
- text += (0, indent_string_1.default)(`${colorFn(argumentsText)}\n`, 4);
72
- }
73
- if ((0, value_checker_1.valueOrDefault)(printAttachments, true)) {
74
- attachments.forEach(({ body, mediaType, fileName }) => {
75
- let message = '';
76
- if (mediaType === 'text/plain') {
77
- message = `: ${body}`;
78
- }
79
- else if (fileName) {
80
- message = `: ${fileName}`;
81
- }
82
- text += (0, indent_string_1.default)(`Attachment (${mediaType})${message}\n`, 4);
83
- });
84
- }
85
- const message = getStepMessage(testStep);
86
- if (message !== '') {
87
- text += `${(0, indent_string_1.default)(colorFn(message), 4)}\n`;
88
- }
89
- return text;
90
- }
91
- function formatTestCaseAttempt({ colorFns, snippetBuilder, supportCodeLibrary, testCaseAttempt, printAttachments, }) {
92
- const parsed = (0, test_case_attempt_parser_1.parseTestCaseAttempt)({
93
- snippetBuilder,
94
- testCaseAttempt,
95
- supportCodeLibrary,
96
- });
97
- let text = `Scenario: ${parsed.testCase.name}`;
98
- text += getAttemptText(parsed.testCase.attempt, testCaseAttempt.willBeRetried);
99
- text += ` # ${colorFns.location((0, location_helpers_1.formatLocation)(parsed.testCase.sourceLocation))}\n`;
100
- parsed.testSteps.forEach((testStep) => {
101
- text += formatStep({ colorFns, testStep, printAttachments });
102
- });
103
- return `${text}\n`;
104
- }
105
- exports.formatTestCaseAttempt = formatTestCaseAttempt;
106
- function getAttemptText(attempt, willBeRetried) {
107
- if (attempt > 0 || willBeRetried) {
108
- const numberStr = (attempt + 1).toString();
109
- const retriedStr = willBeRetried ? ', retried' : '';
110
- return ` (attempt ${numberStr}${retriedStr})`;
111
- }
112
- return '';
113
- }
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.formatTestCaseAttempt = void 0;
30
+ const indent_string_1 = __importDefault(require("indent-string"));
31
+ const messages = __importStar(require("@cucumber/messages"));
32
+ const figures_1 = __importDefault(require("figures"));
33
+ const location_helpers_1 = require("./location_helpers");
34
+ const test_case_attempt_parser_1 = require("./test_case_attempt_parser");
35
+ const step_argument_formatter_1 = require("./step_argument_formatter");
36
+ const value_checker_1 = require("../../value_checker");
37
+ const CHARACTERS = new Map([
38
+ [messages.TestStepResultStatus.AMBIGUOUS, figures_1.default.cross],
39
+ [messages.TestStepResultStatus.FAILED, figures_1.default.cross],
40
+ [messages.TestStepResultStatus.PASSED, figures_1.default.tick],
41
+ [messages.TestStepResultStatus.PENDING, '?'],
42
+ [messages.TestStepResultStatus.SKIPPED, '-'],
43
+ [messages.TestStepResultStatus.UNDEFINED, '?'],
44
+ ]);
45
+ function getStepMessage(testStep) {
46
+ switch (testStep.result.status) {
47
+ case messages.TestStepResultStatus.AMBIGUOUS:
48
+ case messages.TestStepResultStatus.FAILED:
49
+ return testStep.result.message;
50
+ case messages.TestStepResultStatus.UNDEFINED:
51
+ return `${'Undefined. Implement with the following snippet:' + '\n\n'}${(0, indent_string_1.default)(testStep.snippet, 2)}\n`;
52
+ case messages.TestStepResultStatus.PENDING:
53
+ return 'Pending';
54
+ }
55
+ return '';
56
+ }
57
+ function formatStep({ colorFns, testStep, printAttachments, }) {
58
+ const { name, result: { status }, actionLocation, attachments, } = testStep;
59
+ const colorFn = colorFns.forStatus(status);
60
+ const identifier = testStep.keyword + (0, value_checker_1.valueOrDefault)(testStep.text, '');
61
+ let text = colorFn(`${CHARACTERS.get(status)} ${identifier}`);
62
+ if ((0, value_checker_1.doesHaveValue)(name)) {
63
+ text += colorFn(` (${name})`);
64
+ }
65
+ if ((0, value_checker_1.doesHaveValue)(actionLocation)) {
66
+ text += ` # ${colorFns.location((0, location_helpers_1.formatLocation)(actionLocation))}`;
67
+ }
68
+ text += '\n';
69
+ if ((0, value_checker_1.doesHaveValue)(testStep.argument)) {
70
+ const argumentsText = (0, step_argument_formatter_1.formatStepArgument)(testStep.argument);
71
+ text += (0, indent_string_1.default)(`${colorFn(argumentsText)}\n`, 4);
72
+ }
73
+ if ((0, value_checker_1.valueOrDefault)(printAttachments, true)) {
74
+ attachments.forEach(({ body, mediaType, fileName }) => {
75
+ let message = '';
76
+ if (mediaType === 'text/plain') {
77
+ message = `: ${body}`;
78
+ }
79
+ else if (fileName) {
80
+ message = `: ${fileName}`;
81
+ }
82
+ text += (0, indent_string_1.default)(`Attachment (${mediaType})${message}\n`, 4);
83
+ });
84
+ }
85
+ const message = getStepMessage(testStep);
86
+ if (message !== '') {
87
+ text += `${(0, indent_string_1.default)(colorFn(message), 4)}\n`;
88
+ }
89
+ return text;
90
+ }
91
+ function formatTestCaseAttempt({ colorFns, snippetBuilder, supportCodeLibrary, testCaseAttempt, printAttachments, }) {
92
+ const parsed = (0, test_case_attempt_parser_1.parseTestCaseAttempt)({
93
+ snippetBuilder,
94
+ testCaseAttempt,
95
+ supportCodeLibrary,
96
+ });
97
+ let text = `Scenario: ${parsed.testCase.name}`;
98
+ text += getAttemptText(parsed.testCase.attempt, testCaseAttempt.willBeRetried);
99
+ text += ` # ${colorFns.location((0, location_helpers_1.formatLocation)(parsed.testCase.sourceLocation))}\n`;
100
+ parsed.testSteps.forEach((testStep) => {
101
+ text += formatStep({ colorFns, testStep, printAttachments });
102
+ });
103
+ return `${text}\n`;
104
+ }
105
+ exports.formatTestCaseAttempt = formatTestCaseAttempt;
106
+ function getAttemptText(attempt, willBeRetried) {
107
+ if (attempt > 0 || willBeRetried) {
108
+ const numberStr = (attempt + 1).toString();
109
+ const retriedStr = willBeRetried ? ', retried' : '';
110
+ return ` (attempt ${numberStr}${retriedStr})`;
111
+ }
112
+ return '';
113
+ }
114
114
  //# sourceMappingURL=test_case_attempt_formatter.js.map
@@ -1,32 +1,32 @@
1
- import * as messages from '@cucumber/messages';
2
- import { ITestCaseAttempt } from './event_data_collector';
3
- import StepDefinitionSnippetBuilder from '../step_definition_snippet_builder';
4
- import { ISupportCodeLibrary } from '../../support_code_library_builder/types';
5
- import { ILineAndUri } from '../../types';
6
- export interface IParsedTestStep {
7
- actionLocation?: ILineAndUri;
8
- argument?: messages.PickleStepArgument;
9
- attachments: messages.Attachment[];
10
- keyword: string;
11
- name?: string;
12
- result: messages.TestStepResult;
13
- snippet?: string;
14
- sourceLocation?: ILineAndUri;
15
- text?: string;
16
- }
17
- export interface IParsedTestCase {
18
- attempt: number;
19
- name: string;
20
- sourceLocation?: ILineAndUri;
21
- worstTestStepResult: messages.TestStepResult;
22
- }
23
- export interface IParsedTestCaseAttempt {
24
- testCase: IParsedTestCase;
25
- testSteps: IParsedTestStep[];
26
- }
27
- export interface IParseTestCaseAttemptRequest {
28
- testCaseAttempt: ITestCaseAttempt;
29
- snippetBuilder: StepDefinitionSnippetBuilder;
30
- supportCodeLibrary: ISupportCodeLibrary;
31
- }
32
- export declare function parseTestCaseAttempt({ testCaseAttempt, snippetBuilder, supportCodeLibrary, }: IParseTestCaseAttemptRequest): IParsedTestCaseAttempt;
1
+ import * as messages from '@cucumber/messages';
2
+ import { ITestCaseAttempt } from './event_data_collector';
3
+ import StepDefinitionSnippetBuilder from '../step_definition_snippet_builder';
4
+ import { ISupportCodeLibrary } from '../../support_code_library_builder/types';
5
+ import { ILineAndUri } from '../../types';
6
+ export interface IParsedTestStep {
7
+ actionLocation?: ILineAndUri;
8
+ argument?: messages.PickleStepArgument;
9
+ attachments: messages.Attachment[];
10
+ keyword: string;
11
+ name?: string;
12
+ result: messages.TestStepResult;
13
+ snippet?: string;
14
+ sourceLocation?: ILineAndUri;
15
+ text?: string;
16
+ }
17
+ export interface IParsedTestCase {
18
+ attempt: number;
19
+ name: string;
20
+ sourceLocation?: ILineAndUri;
21
+ worstTestStepResult: messages.TestStepResult;
22
+ }
23
+ export interface IParsedTestCaseAttempt {
24
+ testCase: IParsedTestCase;
25
+ testSteps: IParsedTestStep[];
26
+ }
27
+ export interface IParseTestCaseAttemptRequest {
28
+ testCaseAttempt: ITestCaseAttempt;
29
+ snippetBuilder: StepDefinitionSnippetBuilder;
30
+ supportCodeLibrary: ISupportCodeLibrary;
31
+ }
32
+ export declare function parseTestCaseAttempt({ testCaseAttempt, snippetBuilder, supportCodeLibrary, }: IParseTestCaseAttemptRequest): IParsedTestCaseAttempt;
@@ -1,135 +1,135 @@
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.parseTestCaseAttempt = void 0;
27
- const keyword_type_1 = require("./keyword_type");
28
- const gherkin_document_parser_1 = require("./gherkin_document_parser");
29
- const pickle_parser_1 = require("./pickle_parser");
30
- const messages = __importStar(require("@cucumber/messages"));
31
- const value_checker_1 = require("../../value_checker");
32
- const messages_1 = require("@cucumber/messages");
33
- function parseStep({ isBeforeHook, gherkinStepMap, keyword, keywordType, pickleStep, pickleUri, snippetBuilder, supportCodeLibrary, testStep, testStepResult, testStepAttachments, }) {
34
- const out = {
35
- attachments: testStepAttachments,
36
- keyword: (0, value_checker_1.doesHaveValue)(testStep.pickleStepId)
37
- ? keyword
38
- : isBeforeHook
39
- ? 'Before'
40
- : 'After',
41
- result: testStepResult,
42
- };
43
- if ((0, value_checker_1.doesHaveValue)(testStep.hookId)) {
44
- let hookDefinition;
45
- if (isBeforeHook) {
46
- hookDefinition = supportCodeLibrary.beforeTestCaseHookDefinitions.find((x) => x.id === testStep.hookId);
47
- }
48
- else {
49
- hookDefinition = supportCodeLibrary.afterTestCaseHookDefinitions.find((x) => x.id === testStep.hookId);
50
- }
51
- out.actionLocation = {
52
- uri: hookDefinition.uri,
53
- line: hookDefinition.line,
54
- };
55
- out.name = hookDefinition.name;
56
- }
57
- if ((0, value_checker_1.doesHaveValue)(testStep.stepDefinitionIds) &&
58
- testStep.stepDefinitionIds.length === 1) {
59
- const stepDefinition = supportCodeLibrary.stepDefinitions.find((x) => x.id === testStep.stepDefinitionIds[0]);
60
- out.actionLocation = {
61
- uri: stepDefinition.uri,
62
- line: stepDefinition.line,
63
- };
64
- }
65
- if ((0, value_checker_1.doesHaveValue)(testStep.pickleStepId)) {
66
- out.sourceLocation = {
67
- uri: pickleUri,
68
- line: gherkinStepMap[pickleStep.astNodeIds[0]].location.line,
69
- };
70
- out.text = pickleStep.text;
71
- if ((0, value_checker_1.doesHaveValue)(pickleStep.argument)) {
72
- out.argument = pickleStep.argument;
73
- }
74
- }
75
- if (testStepResult.status === messages.TestStepResultStatus.UNDEFINED) {
76
- out.snippet = snippetBuilder.build({ keywordType, pickleStep });
77
- }
78
- return out;
79
- }
80
- // Converts a testCaseAttempt into a json object with all data needed for
81
- // displaying it in a pretty format
82
- function parseTestCaseAttempt({ testCaseAttempt, snippetBuilder, supportCodeLibrary, }) {
83
- const { testCase, pickle, gherkinDocument } = testCaseAttempt;
84
- const gherkinStepMap = (0, gherkin_document_parser_1.getGherkinStepMap)(gherkinDocument);
85
- const gherkinScenarioLocationMap = (0, gherkin_document_parser_1.getGherkinScenarioLocationMap)(gherkinDocument);
86
- const pickleStepMap = (0, pickle_parser_1.getPickleStepMap)(pickle);
87
- const relativePickleUri = pickle.uri;
88
- const parsedTestCase = {
89
- attempt: testCaseAttempt.attempt,
90
- name: pickle.name,
91
- sourceLocation: {
92
- uri: relativePickleUri,
93
- line: gherkinScenarioLocationMap[pickle.astNodeIds[pickle.astNodeIds.length - 1]].line,
94
- },
95
- worstTestStepResult: testCaseAttempt.worstTestStepResult,
96
- };
97
- const parsedTestSteps = [];
98
- let isBeforeHook = true;
99
- let previousKeywordType = keyword_type_1.KeywordType.Precondition;
100
- testCase.testSteps.forEach((testStep) => {
101
- const testStepResult = testCaseAttempt.stepResults[testStep.id] || new messages_1.TestStepResult();
102
- isBeforeHook = isBeforeHook && (0, value_checker_1.doesHaveValue)(testStep.hookId);
103
- let keyword, keywordType, pickleStep;
104
- if ((0, value_checker_1.doesHaveValue)(testStep.pickleStepId)) {
105
- pickleStep = pickleStepMap[testStep.pickleStepId];
106
- keyword = (0, pickle_parser_1.getStepKeyword)({ pickleStep, gherkinStepMap });
107
- keywordType = (0, keyword_type_1.getStepKeywordType)({
108
- keyword,
109
- language: gherkinDocument.feature.language,
110
- previousKeywordType,
111
- });
112
- }
113
- const parsedStep = parseStep({
114
- isBeforeHook,
115
- gherkinStepMap,
116
- keyword,
117
- keywordType,
118
- pickleStep,
119
- pickleUri: relativePickleUri,
120
- snippetBuilder,
121
- supportCodeLibrary,
122
- testStep,
123
- testStepResult,
124
- testStepAttachments: (0, value_checker_1.valueOrDefault)(testCaseAttempt.stepAttachments[testStep.id], []),
125
- });
126
- parsedTestSteps.push(parsedStep);
127
- previousKeywordType = keywordType;
128
- });
129
- return {
130
- testCase: parsedTestCase,
131
- testSteps: parsedTestSteps,
132
- };
133
- }
134
- exports.parseTestCaseAttempt = parseTestCaseAttempt;
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.parseTestCaseAttempt = void 0;
27
+ const keyword_type_1 = require("./keyword_type");
28
+ const gherkin_document_parser_1 = require("./gherkin_document_parser");
29
+ const pickle_parser_1 = require("./pickle_parser");
30
+ const messages = __importStar(require("@cucumber/messages"));
31
+ const value_checker_1 = require("../../value_checker");
32
+ const messages_1 = require("@cucumber/messages");
33
+ function parseStep({ isBeforeHook, gherkinStepMap, keyword, keywordType, pickleStep, pickleUri, snippetBuilder, supportCodeLibrary, testStep, testStepResult, testStepAttachments, }) {
34
+ const out = {
35
+ attachments: testStepAttachments,
36
+ keyword: (0, value_checker_1.doesHaveValue)(testStep.pickleStepId)
37
+ ? keyword
38
+ : isBeforeHook
39
+ ? 'Before'
40
+ : 'After',
41
+ result: testStepResult,
42
+ };
43
+ if ((0, value_checker_1.doesHaveValue)(testStep.hookId)) {
44
+ let hookDefinition;
45
+ if (isBeforeHook) {
46
+ hookDefinition = supportCodeLibrary.beforeTestCaseHookDefinitions.find((x) => x.id === testStep.hookId);
47
+ }
48
+ else {
49
+ hookDefinition = supportCodeLibrary.afterTestCaseHookDefinitions.find((x) => x.id === testStep.hookId);
50
+ }
51
+ out.actionLocation = {
52
+ uri: hookDefinition.uri,
53
+ line: hookDefinition.line,
54
+ };
55
+ out.name = hookDefinition.name;
56
+ }
57
+ if ((0, value_checker_1.doesHaveValue)(testStep.stepDefinitionIds) &&
58
+ testStep.stepDefinitionIds.length === 1) {
59
+ const stepDefinition = supportCodeLibrary.stepDefinitions.find((x) => x.id === testStep.stepDefinitionIds[0]);
60
+ out.actionLocation = {
61
+ uri: stepDefinition.uri,
62
+ line: stepDefinition.line,
63
+ };
64
+ }
65
+ if ((0, value_checker_1.doesHaveValue)(testStep.pickleStepId)) {
66
+ out.sourceLocation = {
67
+ uri: pickleUri,
68
+ line: gherkinStepMap[pickleStep.astNodeIds[0]].location.line,
69
+ };
70
+ out.text = pickleStep.text;
71
+ if ((0, value_checker_1.doesHaveValue)(pickleStep.argument)) {
72
+ out.argument = pickleStep.argument;
73
+ }
74
+ }
75
+ if (testStepResult.status === messages.TestStepResultStatus.UNDEFINED) {
76
+ out.snippet = snippetBuilder.build({ keywordType, pickleStep });
77
+ }
78
+ return out;
79
+ }
80
+ // Converts a testCaseAttempt into a json object with all data needed for
81
+ // displaying it in a pretty format
82
+ function parseTestCaseAttempt({ testCaseAttempt, snippetBuilder, supportCodeLibrary, }) {
83
+ const { testCase, pickle, gherkinDocument } = testCaseAttempt;
84
+ const gherkinStepMap = (0, gherkin_document_parser_1.getGherkinStepMap)(gherkinDocument);
85
+ const gherkinScenarioLocationMap = (0, gherkin_document_parser_1.getGherkinScenarioLocationMap)(gherkinDocument);
86
+ const pickleStepMap = (0, pickle_parser_1.getPickleStepMap)(pickle);
87
+ const relativePickleUri = pickle.uri;
88
+ const parsedTestCase = {
89
+ attempt: testCaseAttempt.attempt,
90
+ name: pickle.name,
91
+ sourceLocation: {
92
+ uri: relativePickleUri,
93
+ line: gherkinScenarioLocationMap[pickle.astNodeIds[pickle.astNodeIds.length - 1]].line,
94
+ },
95
+ worstTestStepResult: testCaseAttempt.worstTestStepResult,
96
+ };
97
+ const parsedTestSteps = [];
98
+ let isBeforeHook = true;
99
+ let previousKeywordType = keyword_type_1.KeywordType.Precondition;
100
+ testCase.testSteps.forEach((testStep) => {
101
+ const testStepResult = testCaseAttempt.stepResults[testStep.id] || new messages_1.TestStepResult();
102
+ isBeforeHook = isBeforeHook && (0, value_checker_1.doesHaveValue)(testStep.hookId);
103
+ let keyword, keywordType, pickleStep;
104
+ if ((0, value_checker_1.doesHaveValue)(testStep.pickleStepId)) {
105
+ pickleStep = pickleStepMap[testStep.pickleStepId];
106
+ keyword = (0, pickle_parser_1.getStepKeyword)({ pickleStep, gherkinStepMap });
107
+ keywordType = (0, keyword_type_1.getStepKeywordType)({
108
+ keyword,
109
+ language: gherkinDocument.feature.language,
110
+ previousKeywordType,
111
+ });
112
+ }
113
+ const parsedStep = parseStep({
114
+ isBeforeHook,
115
+ gherkinStepMap,
116
+ keyword,
117
+ keywordType,
118
+ pickleStep,
119
+ pickleUri: relativePickleUri,
120
+ snippetBuilder,
121
+ supportCodeLibrary,
122
+ testStep,
123
+ testStepResult,
124
+ testStepAttachments: (0, value_checker_1.valueOrDefault)(testCaseAttempt.stepAttachments[testStep.id], []),
125
+ });
126
+ parsedTestSteps.push(parsedStep);
127
+ previousKeywordType = keywordType;
128
+ });
129
+ return {
130
+ testCase: parsedTestCase,
131
+ testSteps: parsedTestSteps,
132
+ };
133
+ }
134
+ exports.parseTestCaseAttempt = parseTestCaseAttempt;
135
135
  //# sourceMappingURL=test_case_attempt_parser.js.map
@@ -1,23 +1,23 @@
1
- import * as messages from '@cucumber/messages';
2
- import StepDefinition from '../../../models/step_definition';
3
- import EventDataCollector from '../event_data_collector';
4
- export interface IUsageMatch {
5
- duration?: messages.Duration;
6
- line: number;
7
- text: string;
8
- uri: string;
9
- }
10
- export interface IUsage {
11
- code: string;
12
- line: number;
13
- matches: IUsageMatch[];
14
- meanDuration?: messages.Duration;
15
- pattern: string;
16
- patternType: string;
17
- uri: string;
18
- }
19
- export interface IGetUsageRequest {
20
- eventDataCollector: EventDataCollector;
21
- stepDefinitions: StepDefinition[];
22
- }
23
- export declare function getUsage({ stepDefinitions, eventDataCollector, }: IGetUsageRequest): IUsage[];
1
+ import * as messages from '@cucumber/messages';
2
+ import StepDefinition from '../../../models/step_definition';
3
+ import EventDataCollector from '../event_data_collector';
4
+ export interface IUsageMatch {
5
+ duration?: messages.Duration;
6
+ line: number;
7
+ text: string;
8
+ uri: string;
9
+ }
10
+ export interface IUsage {
11
+ code: string;
12
+ line: number;
13
+ matches: IUsageMatch[];
14
+ meanDuration?: messages.Duration;
15
+ pattern: string;
16
+ patternType: string;
17
+ uri: string;
18
+ }
19
+ export interface IGetUsageRequest {
20
+ eventDataCollector: EventDataCollector;
21
+ stepDefinitions: StepDefinition[];
22
+ }
23
+ export declare function getUsage({ stepDefinitions, eventDataCollector, }: IGetUsageRequest): IUsage[];