@dev-blinq/cucumber-js 1.0.11 → 1.0.14

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 (246) 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_analysis_formatter.d.ts +18 -0
  74. package/lib/formatter/bvt_analysis_formatter.js +207 -0
  75. package/lib/formatter/bvt_analysis_formatter.js.map +1 -0
  76. package/lib/formatter/bvt_formatter.d.ts +6 -9
  77. package/lib/formatter/bvt_formatter.js +24 -62
  78. package/lib/formatter/bvt_formatter.js.map +1 -1
  79. package/lib/formatter/feature_data_format.d.ts +14 -14
  80. package/lib/formatter/feature_data_format.js +80 -80
  81. package/lib/formatter/fixtures/typescript.d.ts +2 -2
  82. package/lib/formatter/fixtures/typescript.js +5 -5
  83. package/lib/formatter/get_color_fns.d.ts +15 -15
  84. package/lib/formatter/get_color_fns.js +55 -55
  85. package/lib/formatter/helpers/duration_helpers.d.ts +2 -2
  86. package/lib/formatter/helpers/duration_helpers.js +8 -8
  87. package/lib/formatter/helpers/event_data_collector.d.ts +30 -30
  88. package/lib/formatter/helpers/event_data_collector.js +125 -125
  89. package/lib/formatter/helpers/formatters.d.ts +6 -6
  90. package/lib/formatter/helpers/formatters.js +46 -44
  91. package/lib/formatter/helpers/formatters.js.map +1 -1
  92. package/lib/formatter/helpers/gherkin_document_parser.d.ts +5 -5
  93. package/lib/formatter/helpers/gherkin_document_parser.js +65 -65
  94. package/lib/formatter/helpers/index.d.ts +10 -10
  95. package/lib/formatter/helpers/index.js +51 -51
  96. package/lib/formatter/helpers/issue_helpers.d.ts +19 -19
  97. package/lib/formatter/helpers/issue_helpers.js +58 -58
  98. package/lib/formatter/helpers/keyword_type.d.ts +11 -11
  99. package/lib/formatter/helpers/keyword_type.js +31 -31
  100. package/lib/formatter/helpers/location_helpers.d.ts +2 -2
  101. package/lib/formatter/helpers/location_helpers.js +16 -16
  102. package/lib/formatter/helpers/pickle_parser.d.ts +17 -17
  103. package/lib/formatter/helpers/pickle_parser.js +27 -27
  104. package/lib/formatter/helpers/report_generator.d.ts +96 -91
  105. package/lib/formatter/helpers/report_generator.js +247 -247
  106. package/lib/formatter/helpers/report_generator.js.map +1 -1
  107. package/lib/formatter/helpers/step_argument_formatter.d.ts +2 -2
  108. package/lib/formatter/helpers/step_argument_formatter.js +47 -47
  109. package/lib/formatter/helpers/summary_helpers.d.ts +9 -9
  110. package/lib/formatter/helpers/summary_helpers.js +95 -95
  111. package/lib/formatter/helpers/test_case_attempt_formatter.d.ts +12 -12
  112. package/lib/formatter/helpers/test_case_attempt_formatter.js +113 -113
  113. package/lib/formatter/helpers/test_case_attempt_parser.d.ts +32 -32
  114. package/lib/formatter/helpers/test_case_attempt_parser.js +134 -134
  115. package/lib/formatter/helpers/upload_serivce.d.ts +9 -9
  116. package/lib/formatter/helpers/upload_serivce.js +46 -46
  117. package/lib/formatter/helpers/upload_serivce.js.map +1 -1
  118. package/lib/formatter/helpers/uploader.d.ts +8 -0
  119. package/lib/formatter/helpers/uploader.js +51 -0
  120. package/lib/formatter/helpers/uploader.js.map +1 -0
  121. package/lib/formatter/helpers/usage_helpers/index.d.ts +23 -23
  122. package/lib/formatter/helpers/usage_helpers/index.js +110 -110
  123. package/lib/formatter/html_formatter.d.ts +7 -7
  124. package/lib/formatter/html_formatter.js +29 -29
  125. package/lib/formatter/index.d.ts +53 -53
  126. package/lib/formatter/index.js +20 -20
  127. package/lib/formatter/json_formatter.d.ts +78 -78
  128. package/lib/formatter/json_formatter.js +229 -229
  129. package/lib/formatter/junit_formatter.d.ts +17 -17
  130. package/lib/formatter/junit_formatter.js +180 -180
  131. package/lib/formatter/message_formatter.d.ts +5 -5
  132. package/lib/formatter/message_formatter.js +14 -14
  133. package/lib/formatter/progress_bar_formatter.d.ts +18 -18
  134. package/lib/formatter/progress_bar_formatter.js +98 -98
  135. package/lib/formatter/progress_formatter.d.ts +9 -9
  136. package/lib/formatter/progress_formatter.js +58 -58
  137. package/lib/formatter/rerun_formatter.d.ts +13 -13
  138. package/lib/formatter/rerun_formatter.js +79 -79
  139. package/lib/formatter/snippets_formatter.d.ts +6 -6
  140. package/lib/formatter/snippets_formatter.js +60 -60
  141. package/lib/formatter/step_definition_snippet_builder/index.d.ts +20 -20
  142. package/lib/formatter/step_definition_snippet_builder/index.js +45 -45
  143. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.d.ts +7 -7
  144. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.js +45 -45
  145. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.d.ts +16 -16
  146. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.js +10 -10
  147. package/lib/formatter/summary_formatter.d.ts +14 -14
  148. package/lib/formatter/summary_formatter.js +67 -67
  149. package/lib/formatter/usage_formatter.d.ts +6 -6
  150. package/lib/formatter/usage_formatter.js +97 -97
  151. package/lib/formatter/usage_json_formatter.d.ts +7 -7
  152. package/lib/formatter/usage_json_formatter.js +33 -33
  153. package/lib/index.d.ts +58 -58
  154. package/lib/index.js +108 -108
  155. package/lib/logger.d.ts +5 -5
  156. package/lib/logger.js +2 -2
  157. package/lib/models/data_table.d.ts +10 -10
  158. package/lib/models/data_table.js +45 -45
  159. package/lib/models/definition.d.ts +55 -55
  160. package/lib/models/definition.js +21 -21
  161. package/lib/models/gherkin_step_keyword.d.ts +1 -1
  162. package/lib/models/gherkin_step_keyword.js +2 -2
  163. package/lib/models/pickle_order.d.ts +1 -1
  164. package/lib/models/pickle_order.js +2 -2
  165. package/lib/models/step_definition.d.ts +11 -11
  166. package/lib/models/step_definition.js +36 -36
  167. package/lib/models/test_case_hook_definition.d.ts +10 -10
  168. package/lib/models/test_case_hook_definition.js +26 -26
  169. package/lib/models/test_run_hook_definition.d.ts +3 -3
  170. package/lib/models/test_run_hook_definition.js +9 -9
  171. package/lib/models/test_step_hook_definition.d.ts +9 -9
  172. package/lib/models/test_step_hook_definition.js +25 -25
  173. package/lib/pickle_filter.d.ts +42 -42
  174. package/lib/pickle_filter.js +98 -98
  175. package/lib/plugin/index.d.ts +2 -2
  176. package/lib/plugin/index.js +18 -18
  177. package/lib/plugin/plugin_manager.d.ts +13 -13
  178. package/lib/plugin/plugin_manager.js +35 -35
  179. package/lib/plugin/types.d.ts +14 -14
  180. package/lib/plugin/types.js +2 -2
  181. package/lib/publish/http_stream.d.ts +30 -30
  182. package/lib/publish/http_stream.js +111 -111
  183. package/lib/publish/index.d.ts +2 -2
  184. package/lib/publish/index.js +4 -4
  185. package/lib/publish/publish_plugin.d.ts +2 -2
  186. package/lib/publish/publish_plugin.js +47 -47
  187. package/lib/runtime/assemble_test_cases.d.ts +13 -13
  188. package/lib/runtime/assemble_test_cases.js +87 -87
  189. package/lib/runtime/attachment_manager/index.d.ts +33 -33
  190. package/lib/runtime/attachment_manager/index.js +118 -118
  191. package/lib/runtime/format_error.d.ts +2 -2
  192. package/lib/runtime/format_error.js +35 -35
  193. package/lib/runtime/helpers.d.ts +6 -6
  194. package/lib/runtime/helpers.js +100 -100
  195. package/lib/runtime/index.d.ts +40 -40
  196. package/lib/runtime/index.js +75 -75
  197. package/lib/runtime/parallel/command_types.d.ts +32 -32
  198. package/lib/runtime/parallel/command_types.js +2 -2
  199. package/lib/runtime/parallel/coordinator.d.ts +72 -72
  200. package/lib/runtime/parallel/coordinator.js +221 -221
  201. package/lib/runtime/parallel/run_worker.d.ts +1 -1
  202. package/lib/runtime/parallel/run_worker.js +28 -28
  203. package/lib/runtime/parallel/worker.d.ts +26 -26
  204. package/lib/runtime/parallel/worker.js +86 -86
  205. package/lib/runtime/run_test_run_hooks.d.ts +3 -3
  206. package/lib/runtime/run_test_run_hooks.js +27 -27
  207. package/lib/runtime/step_runner.d.ts +16 -16
  208. package/lib/runtime/step_runner.js +87 -87
  209. package/lib/runtime/stopwatch.d.ts +12 -12
  210. package/lib/runtime/stopwatch.js +33 -33
  211. package/lib/runtime/test_case_runner.d.ts +54 -54
  212. package/lib/runtime/test_case_runner.js +267 -267
  213. package/lib/step_arguments.d.ts +6 -6
  214. package/lib/step_arguments.js +18 -18
  215. package/lib/support_code_library_builder/build_parameter_type.d.ts +3 -3
  216. package/lib/support_code_library_builder/build_parameter_type.js +12 -12
  217. package/lib/support_code_library_builder/get_definition_line_and_uri.d.ts +3 -3
  218. package/lib/support_code_library_builder/get_definition_line_and_uri.js +28 -28
  219. package/lib/support_code_library_builder/index.d.ts +74 -74
  220. package/lib/support_code_library_builder/index.js +296 -296
  221. package/lib/support_code_library_builder/parallel_can_assign_helpers.d.ts +2 -2
  222. package/lib/support_code_library_builder/parallel_can_assign_helpers.js +15 -15
  223. package/lib/support_code_library_builder/sourced_parameter_type_registry.d.ts +7 -7
  224. package/lib/support_code_library_builder/sourced_parameter_type_registry.js +18 -18
  225. package/lib/support_code_library_builder/types.d.ts +88 -88
  226. package/lib/support_code_library_builder/types.js +2 -2
  227. package/lib/support_code_library_builder/validate_arguments.d.ts +12 -12
  228. package/lib/support_code_library_builder/validate_arguments.js +72 -72
  229. package/lib/support_code_library_builder/world.d.ts +18 -18
  230. package/lib/support_code_library_builder/world.js +10 -10
  231. package/lib/time.d.ts +18 -18
  232. package/lib/time.js +60 -60
  233. package/lib/try_require.d.ts +7 -7
  234. package/lib/try_require.js +22 -22
  235. package/lib/types/index.d.ts +4 -4
  236. package/lib/types/index.js +2 -2
  237. package/lib/uncaught_exception_manager.d.ts +7 -7
  238. package/lib/uncaught_exception_manager.js +11 -11
  239. package/lib/user_code_runner.d.ts +14 -14
  240. package/lib/user_code_runner.js +81 -81
  241. package/lib/value_checker.d.ts +3 -3
  242. package/lib/value_checker.js +18 -18
  243. package/lib/version.d.ts +1 -1
  244. package/lib/version.js +5 -5
  245. package/lib/version.js.map +1 -1
  246. package/package.json +3 -1
@@ -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,9 +1,9 @@
1
- import FormData from "form-data";
2
- declare class RunUploadService {
3
- private runsApiBaseURL;
4
- private accessToken;
5
- constructor(runsApiBaseURL: string, accessToken: string);
6
- createRunDocument(name: string): Promise<any>;
7
- upload(formData: FormData): Promise<void>;
8
- }
9
- export { RunUploadService };
1
+ import FormData from "form-data";
2
+ declare class RunUploadService {
3
+ private runsApiBaseURL;
4
+ private accessToken;
5
+ constructor(runsApiBaseURL: string, accessToken: string);
6
+ createRunDocument(name: string): Promise<any>;
7
+ upload(formData: FormData): Promise<void>;
8
+ }
9
+ export { RunUploadService };
@@ -1,47 +1,47 @@
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.RunUploadService = void 0;
7
- const axios_1 = __importDefault(require("axios"));
8
- class RunUploadService {
9
- constructor(runsApiBaseURL, accessToken) {
10
- this.runsApiBaseURL = runsApiBaseURL;
11
- this.accessToken = accessToken;
12
- }
13
- async createRunDocument(name) {
14
- const runDocResult = await axios_1.default.post(this.runsApiBaseURL + "/cucumber-runs/create", {
15
- name,
16
- }, {
17
- headers: {
18
- Authorization: "Bearer " + this.accessToken,
19
- "x-source": "cucumber_js"
20
- },
21
- });
22
- if (runDocResult.status !== 200) {
23
- throw new Error("Failed to create run document in the server");
24
- }
25
- if (runDocResult.data.status !== true) {
26
- throw new Error("Failed to create run document in the server");
27
- }
28
- return runDocResult.data.run;
29
- }
30
- async upload(formData) {
31
- const response = await axios_1.default.post(this.runsApiBaseURL + "/cucumber-runs/upload", formData, {
32
- headers: {
33
- ...formData.getHeaders(),
34
- Authorization: "Bearer " + this.accessToken,
35
- "x-source": "cucumber_js"
36
- },
37
- });
38
- if (response.status !== 200) {
39
- throw new Error("Failed to upload run to the server");
40
- }
41
- if (response.data.status !== true) {
42
- throw new Error("Failed to upload run to the server");
43
- }
44
- }
45
- }
46
- exports.RunUploadService = RunUploadService;
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.RunUploadService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ class RunUploadService {
9
+ constructor(runsApiBaseURL, accessToken) {
10
+ this.runsApiBaseURL = runsApiBaseURL;
11
+ this.accessToken = accessToken;
12
+ }
13
+ async createRunDocument(name) {
14
+ const runDocResult = await axios_1.default.post(this.runsApiBaseURL + "/cucumber-runs/create", {
15
+ name,
16
+ }, {
17
+ headers: {
18
+ Authorization: "Bearer " + this.accessToken,
19
+ "x-source": "cucumber_js"
20
+ },
21
+ });
22
+ if (runDocResult.status !== 200) {
23
+ throw new Error("Failed to create run document in the server");
24
+ }
25
+ if (runDocResult.data.status !== true) {
26
+ throw new Error("Failed to create run document in the server");
27
+ }
28
+ return runDocResult.data.run;
29
+ }
30
+ async upload(formData) {
31
+ const response = await axios_1.default.post(this.runsApiBaseURL + "/cucumber-runs/upload", formData, {
32
+ headers: {
33
+ ...formData.getHeaders(),
34
+ Authorization: "Bearer " + this.accessToken,
35
+ "x-source": "cucumber_js"
36
+ },
37
+ });
38
+ if (response.status !== 200) {
39
+ throw new Error("Failed to upload run to the server");
40
+ }
41
+ if (response.data.status !== true) {
42
+ throw new Error("Failed to upload run to the server");
43
+ }
44
+ }
45
+ }
46
+ exports.RunUploadService = RunUploadService;
47
47
  //# sourceMappingURL=upload_serivce.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload_serivce.js","sourceRoot":"","sources":["../../../src/formatter/helpers/upload_serivce.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAM,gBAAgB;IAClB,YAAoB,cAAqB,EAAU,WAAkB;QAAjD,mBAAc,GAAd,cAAc,CAAO;QAAU,gBAAW,GAAX,WAAW,CAAO;IACrE,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,IAAW;QACjC,MAAM,YAAY,GAAG,MAAM,eAAK,CAAC,IAAI,CACnC,IAAI,CAAC,cAAc,GAAG,uBAAuB,EAC7C;YACE,IAAI;SACL,EACD;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW;gBAC3C,UAAU,EAAC,aAAa;aACzB;SACF,CACF,CAAC;QACF,IAAG,YAAY,CAAC,MAAM,KAAK,GAAG,EAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QACD,IAAG,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAC;YACnC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAA;IAC9B,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,QAAiB;QAC1B,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,uBAAuB,EAAE,QAAQ,EAAE;YACvF,OAAO,EAAE;gBACP,GAAG,QAAQ,CAAC,UAAU,EAAE;gBACxB,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW;gBAC3C,UAAU,EAAC,aAAa;aACzB;SACF,CAAC,CAAA;QACF,IAAG,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAC;YACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,IAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;IACP,CAAC;CACJ;AACO,4CAAgB","sourcesContent":["import axios from \"axios\";\r\nimport FormData from \"form-data\";\r\nclass RunUploadService {\r\n constructor(private runsApiBaseURL:string, private accessToken:string){\r\n }\r\n async createRunDocument(name:string){\r\n const runDocResult = await axios.post(\r\n this.runsApiBaseURL + \"/cucumber-runs/create\",\r\n {\r\n name,\r\n },\r\n {\r\n headers: {\r\n Authorization: \"Bearer \" + this.accessToken,\r\n \"x-source\":\"cucumber_js\"\r\n },\r\n }\r\n );\r\n if(runDocResult.status !== 200){\r\n throw new Error(\"Failed to create run document in the server\");\r\n }\r\n if(runDocResult.data.status !== true){\r\n throw new Error(\"Failed to create run document in the server\");\r\n }\r\n return runDocResult.data.run\r\n }\r\n async upload(formData:FormData){\r\n const response = await axios.post(this.runsApiBaseURL + \"/cucumber-runs/upload\", formData, {\r\n headers: {\r\n ...formData.getHeaders(),\r\n Authorization: \"Bearer \" + this.accessToken,\r\n \"x-source\":\"cucumber_js\"\r\n },\r\n })\r\n if(response.status !== 200){\r\n throw new Error(\"Failed to upload run to the server\");\r\n }\r\n if(response.data.status !== true){\r\n throw new Error(\"Failed to upload run to the server\");\r\n }\r\n }\r\n}\r\nexport {RunUploadService}"]}
1
+ {"version":3,"file":"upload_serivce.js","sourceRoot":"","sources":["../../../src/formatter/helpers/upload_serivce.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAM,gBAAgB;IAClB,YAAoB,cAAqB,EAAU,WAAkB;QAAjD,mBAAc,GAAd,cAAc,CAAO;QAAU,gBAAW,GAAX,WAAW,CAAO;IACrE,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,IAAW;QACjC,MAAM,YAAY,GAAG,MAAM,eAAK,CAAC,IAAI,CACnC,IAAI,CAAC,cAAc,GAAG,uBAAuB,EAC7C;YACE,IAAI;SACL,EACD;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW;gBAC3C,UAAU,EAAC,aAAa;aACzB;SACF,CACF,CAAC;QACF,IAAG,YAAY,CAAC,MAAM,KAAK,GAAG,EAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QACD,IAAG,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAC;YACnC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAA;IAC9B,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,QAAiB;QAC1B,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,uBAAuB,EAAE,QAAQ,EAAE;YACvF,OAAO,EAAE;gBACP,GAAG,QAAQ,CAAC,UAAU,EAAE;gBACxB,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW;gBAC3C,UAAU,EAAC,aAAa;aACzB;SACF,CAAC,CAAA;QACF,IAAG,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAC;YACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,IAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;IACP,CAAC;CACJ;AACO,4CAAgB","sourcesContent":["import axios from \"axios\";\nimport FormData from \"form-data\";\nclass RunUploadService {\n constructor(private runsApiBaseURL:string, private accessToken:string){\n }\n async createRunDocument(name:string){\n const runDocResult = await axios.post(\n this.runsApiBaseURL + \"/cucumber-runs/create\",\n {\n name,\n },\n {\n headers: {\n Authorization: \"Bearer \" + this.accessToken,\n \"x-source\":\"cucumber_js\"\n },\n }\n );\n if(runDocResult.status !== 200){\n throw new Error(\"Failed to create run document in the server\");\n }\n if(runDocResult.data.status !== true){\n throw new Error(\"Failed to create run document in the server\");\n }\n return runDocResult.data.run\n }\n async upload(formData:FormData){\n const response = await axios.post(this.runsApiBaseURL + \"/cucumber-runs/upload\", formData, {\n headers: {\n ...formData.getHeaders(),\n Authorization: \"Bearer \" + this.accessToken,\n \"x-source\":\"cucumber_js\"\n },\n })\n if(response.status !== 200){\n throw new Error(\"Failed to upload run to the server\");\n }\n if(response.data.status !== true){\n throw new Error(\"Failed to upload run to the server\");\n }\n }\n}\nexport {RunUploadService}"]}
@@ -0,0 +1,8 @@
1
+ import ReportGenerator, { JsonReport } from './report_generator';
2
+ export default class ReportUploader {
3
+ private uploadService;
4
+ private reportGenerator;
5
+ constructor(reportGenerator: ReportGenerator);
6
+ uploadRun(report: JsonReport): Promise<void>;
7
+ createZip(reportFolder: string | null, report: JsonReport): Promise<string>;
8
+ }
@@ -0,0 +1,51 @@
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 upload_serivce_1 = require("./upload_serivce");
7
+ const form_data_1 = __importDefault(require("form-data"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const jszip_1 = __importDefault(require("jszip"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const REPORT_SERVICE_URL = process.env.REPORT_SERVICE_URL;
12
+ const REPORT_SERVICE_TOKEN = process.env.REPORT_SERVICE_TOKEN;
13
+ class ReportUploader {
14
+ constructor(reportGenerator) {
15
+ this.uploadService = new upload_serivce_1.RunUploadService(REPORT_SERVICE_URL, REPORT_SERVICE_TOKEN);
16
+ if (!REPORT_SERVICE_URL || !REPORT_SERVICE_TOKEN) {
17
+ throw new Error('REPORT_SERVICE_URL and REPORT_SERVICE_TOKEN must be set');
18
+ }
19
+ this.reportGenerator = reportGenerator;
20
+ }
21
+ async uploadRun(report) {
22
+ const runDoc = await this.uploadService.createRunDocument('test');
23
+ const runDocId = runDoc._id;
24
+ const formData = new form_data_1.default();
25
+ const reportFolder = this.reportGenerator.reportFolder;
26
+ if (!fs_1.default.existsSync(reportFolder)) {
27
+ fs_1.default.mkdirSync(reportFolder);
28
+ }
29
+ const zipPath = await this.createZip(reportFolder, report);
30
+ formData.append(runDocId, fs_1.default.readFileSync(zipPath), 'report.zip');
31
+ await this.uploadService.upload(formData);
32
+ process.exit(0);
33
+ }
34
+ async createZip(reportFolder, report) {
35
+ const zip = new jszip_1.default();
36
+ zip.file('report.json', JSON.stringify(report, null, 2));
37
+ const folder = zip.folder('screenshots');
38
+ const files = fs_1.default.readdirSync(path_1.default.join(reportFolder, 'screenshots'));
39
+ files.forEach((file) => {
40
+ folder.file(file, fs_1.default.readFileSync(path_1.default.join(reportFolder, file)));
41
+ });
42
+ const zipBuffer = await zip.generateAsync({ type: 'nodebuffer' });
43
+ // save zip file
44
+ const zipPath = path_1.default.join(reportFolder, 'report.zip');
45
+ fs_1.default.writeFileSync(zipPath, zipBuffer);
46
+ fs_1.default.writeFileSync(path_1.default.join(reportFolder, 'report.json'), JSON.stringify(report, null, 2));
47
+ return zipPath;
48
+ }
49
+ }
50
+ exports.default = ReportUploader;
51
+ //# sourceMappingURL=uploader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploader.js","sourceRoot":"","sources":["../../../src/formatter/helpers/uploader.ts"],"names":[],"mappings":";;;;;AACA,qDAAmD;AAEnD,0DAAgC;AAChC,4CAAmB;AACnB,kDAAyB;AACzB,gDAAuB;AACvB,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;AACzD,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;AAC7D,MAAqB,cAAc;IAMjC,YAAY,eAAgC;QALpC,kBAAa,GAAG,IAAI,iCAAgB,CAC1C,kBAAkB,EAClB,oBAAoB,CACrB,CAAA;QAGC,IAAI,CAAC,kBAAkB,IAAI,CAAC,oBAAoB,EAAE;YAChD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;SAC3E;QACD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAkB;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;QACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAA;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAA;QACtD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YAChC,YAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;SAC3B;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAC1D,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;QACjE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,YAA2B,EAAE,MAAkB;QAC7D,MAAM,GAAG,GAAG,IAAI,eAAK,EAAE,CAAA;QACvB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QACxC,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAA;QACpE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;QACF,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;QACjE,gBAAgB;QAChB,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QACrD,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QACpC,YAAE,CAAC,aAAa,CACd,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,EACtC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAChC,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AA5CD,iCA4CC","sourcesContent":["import ReportGenerator, { JsonReport } from './report_generator'\nimport { RunUploadService } from './upload_serivce'\n\nimport FormData from 'form-data'\nimport fs from 'fs'\nimport JSZip from 'jszip'\nimport path from 'path'\nconst REPORT_SERVICE_URL = process.env.REPORT_SERVICE_URL\nconst REPORT_SERVICE_TOKEN = process.env.REPORT_SERVICE_TOKEN\nexport default class ReportUploader {\n private uploadService = new RunUploadService(\n REPORT_SERVICE_URL,\n REPORT_SERVICE_TOKEN\n )\n private reportGenerator: ReportGenerator\n constructor(reportGenerator: ReportGenerator) {\n if (!REPORT_SERVICE_URL || !REPORT_SERVICE_TOKEN) {\n throw new Error('REPORT_SERVICE_URL and REPORT_SERVICE_TOKEN must be set')\n }\n this.reportGenerator = reportGenerator\n }\n\n async uploadRun(report: JsonReport) {\n const runDoc = await this.uploadService.createRunDocument('test')\n const runDocId = runDoc._id\n const formData = new FormData()\n const reportFolder = this.reportGenerator.reportFolder\n if (!fs.existsSync(reportFolder)) {\n fs.mkdirSync(reportFolder)\n }\n const zipPath = await this.createZip(reportFolder, report)\n formData.append(runDocId, fs.readFileSync(zipPath), 'report.zip')\n await this.uploadService.upload(formData)\n process.exit(0)\n }\n async createZip(reportFolder: string | null, report: JsonReport) {\n const zip = new JSZip()\n zip.file('report.json', JSON.stringify(report, null, 2))\n const folder = zip.folder('screenshots')\n const files = fs.readdirSync(path.join(reportFolder, 'screenshots'))\n files.forEach((file) => {\n folder.file(file, fs.readFileSync(path.join(reportFolder, file)))\n })\n const zipBuffer = await zip.generateAsync({ type: 'nodebuffer' })\n // save zip file\n const zipPath = path.join(reportFolder, 'report.zip')\n fs.writeFileSync(zipPath, zipBuffer)\n fs.writeFileSync(\n path.join(reportFolder, 'report.json'),\n JSON.stringify(report, null, 2)\n )\n return zipPath\n }\n}\n"]}
@@ -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[];