@dev-blinq/cucumber-js 1.0.35 → 1.0.36

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 +65 -65
  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 +177 -177
  34. package/lib/api/types.js +2 -2
  35. package/lib/cli/helpers.d.ts +39 -39
  36. package/lib/cli/helpers.js +223 -223
  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 +63 -63
  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 +102 -102
  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 +28 -28
  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 +30 -30
  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 -18
  74. package/lib/formatter/bvt_analysis_formatter.js +192 -192
  75. package/lib/formatter/feature_data_format.d.ts +14 -14
  76. package/lib/formatter/feature_data_format.js +80 -80
  77. package/lib/formatter/fixtures/typescript.d.ts +2 -2
  78. package/lib/formatter/fixtures/typescript.js +5 -5
  79. package/lib/formatter/get_color_fns.d.ts +15 -15
  80. package/lib/formatter/get_color_fns.js +55 -55
  81. package/lib/formatter/helpers/duration_helpers.d.ts +2 -2
  82. package/lib/formatter/helpers/duration_helpers.js +8 -8
  83. package/lib/formatter/helpers/event_data_collector.d.ts +30 -30
  84. package/lib/formatter/helpers/event_data_collector.js +125 -125
  85. package/lib/formatter/helpers/formatters.d.ts +6 -6
  86. package/lib/formatter/helpers/formatters.js +44 -44
  87. package/lib/formatter/helpers/gherkin_document_parser.d.ts +5 -5
  88. package/lib/formatter/helpers/gherkin_document_parser.js +65 -65
  89. package/lib/formatter/helpers/index.d.ts +10 -10
  90. package/lib/formatter/helpers/index.js +51 -51
  91. package/lib/formatter/helpers/issue_helpers.d.ts +19 -19
  92. package/lib/formatter/helpers/issue_helpers.js +58 -58
  93. package/lib/formatter/helpers/keyword_type.d.ts +11 -11
  94. package/lib/formatter/helpers/keyword_type.js +31 -31
  95. package/lib/formatter/helpers/location_helpers.d.ts +2 -2
  96. package/lib/formatter/helpers/location_helpers.js +16 -16
  97. package/lib/formatter/helpers/pickle_parser.d.ts +17 -17
  98. package/lib/formatter/helpers/pickle_parser.js +27 -27
  99. package/lib/formatter/helpers/report_generator.d.ts +103 -103
  100. package/lib/formatter/helpers/report_generator.js +247 -247
  101. package/lib/formatter/helpers/step_argument_formatter.d.ts +2 -2
  102. package/lib/formatter/helpers/step_argument_formatter.js +47 -47
  103. package/lib/formatter/helpers/summary_helpers.d.ts +9 -9
  104. package/lib/formatter/helpers/summary_helpers.js +95 -95
  105. package/lib/formatter/helpers/test_case_attempt_formatter.d.ts +12 -12
  106. package/lib/formatter/helpers/test_case_attempt_formatter.js +113 -113
  107. package/lib/formatter/helpers/test_case_attempt_parser.d.ts +32 -32
  108. package/lib/formatter/helpers/test_case_attempt_parser.js +134 -134
  109. package/lib/formatter/helpers/upload_serivce.d.ts +9 -9
  110. package/lib/formatter/helpers/upload_serivce.js +46 -46
  111. package/lib/formatter/helpers/uploader.d.ts +11 -11
  112. package/lib/formatter/helpers/uploader.js +56 -56
  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 +1 -1
@@ -1,248 +1,248 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class ReportGenerator {
4
- constructor() {
5
- this.report = {
6
- result: {
7
- status: 'UNKNOWN',
8
- },
9
- testCases: [],
10
- };
11
- this.gherkinDocumentMap = new Map();
12
- this.pickleMap = new Map();
13
- this.testCaseMap = new Map();
14
- this.testStepMap = new Map();
15
- this.stepProgressMap = new Map();
16
- this.testProgressMap = new Map();
17
- this.reportFolder = null;
18
- }
19
- handleMessage(envelope) {
20
- const type = Object.keys(envelope)[0];
21
- switch (type) {
22
- // case "meta": { break}
23
- // case "source": { break}
24
- case 'parseError': {
25
- const parseError = envelope[type];
26
- this.handleParseError(parseError);
27
- break;
28
- }
29
- case 'gherkinDocument': {
30
- const doc = envelope[type];
31
- this.onGherkinDocument(doc);
32
- break;
33
- }
34
- case 'pickle': {
35
- const pickle = envelope[type];
36
- this.onPickle(pickle);
37
- break;
38
- }
39
- // case "stepDefinition": { break}
40
- // case "hook": { break} // Before Hook
41
- case 'testRunStarted': {
42
- const testRunStarted = envelope[type];
43
- this.onTestRunStarted(testRunStarted);
44
- break;
45
- }
46
- case 'testCase': {
47
- const testCase = envelope[type];
48
- this.onTestCase(testCase);
49
- break;
50
- }
51
- case 'testCaseStarted': {
52
- const testCaseStarted = envelope[type];
53
- this.onTestCaseStarted(testCaseStarted);
54
- break;
55
- }
56
- case 'testStepStarted': {
57
- const testStepStarted = envelope[type];
58
- this.onTestStepStarted(testStepStarted);
59
- break;
60
- }
61
- case 'attachment': {
62
- const attachment = envelope[type];
63
- this.onAttachment(attachment);
64
- break;
65
- }
66
- case 'testStepFinished': {
67
- const testStepFinished = envelope[type];
68
- this.onTestStepFinished(testStepFinished);
69
- break;
70
- }
71
- case 'testCaseFinished': {
72
- const testCaseFinished = envelope[type];
73
- this.onTestCaseFinished(testCaseFinished);
74
- break;
75
- }
76
- // case "hook": { break} // After Hook
77
- case 'testRunFinished': {
78
- const testRunFinished = envelope[type];
79
- this.onTestRunFinished(testRunFinished);
80
- break;
81
- }
82
- // case "parameterType" : { break}
83
- // case "undefinedParameterType": { break}
84
- }
85
- }
86
- getReport() {
87
- return this.report;
88
- }
89
- handleParseError(parseError) {
90
- const { message, source } = parseError;
91
- const timestamp = new Date().getTime();
92
- this.report.result = {
93
- status: 'FAILED',
94
- startTime: timestamp,
95
- endTime: timestamp,
96
- message: message,
97
- };
98
- }
99
- onGherkinDocument(doc) {
100
- this.gherkinDocumentMap.set(doc.uri, doc);
101
- }
102
- onPickle(pickle) {
103
- this.pickleMap.set(pickle.id, pickle);
104
- }
105
- getTimeStamp(timestamp) {
106
- return timestamp.seconds * 1000 + timestamp.nanos / 1000000;
107
- }
108
- onTestRunStarted(testRunStarted) {
109
- this.report.result = {
110
- status: 'STARTED',
111
- startTime: this.getTimeStamp(testRunStarted.timestamp),
112
- };
113
- }
114
- onTestCase(testCase) {
115
- this.testCaseMap.set(testCase.id, testCase);
116
- testCase.testSteps.forEach((testStep) => {
117
- this.testStepMap.set(testStep.id, testStep);
118
- });
119
- }
120
- onTestCaseStarted(testCaseStarted) {
121
- const { testCaseId, id, timestamp } = testCaseStarted;
122
- const testCase = this.testCaseMap.get(testCaseId);
123
- if (testCase === undefined)
124
- throw new Error(`testCase with id ${testCaseId} not found`);
125
- const pickle = this.pickleMap.get(testCase.pickleId);
126
- if (pickle === undefined)
127
- throw new Error(`pickle with id ${testCase.pickleId} not found`);
128
- const doc = this.gherkinDocumentMap.get(pickle.uri);
129
- if (doc === undefined)
130
- throw new Error(`gherkinDocument with uri ${pickle.uri} not found`);
131
- const featureName = doc.feature.name;
132
- const scenarioName = pickle.name;
133
- const steps = pickle.steps.map((step) => {
134
- this.stepProgressMap.set(step.id, {
135
- type: step.type,
136
- text: step.text,
137
- commands: [],
138
- result: {
139
- status: 'UNKNOWN',
140
- },
141
- });
142
- return this.stepProgressMap.get(step.id);
143
- });
144
- this.testProgressMap.set(id, {
145
- id,
146
- uri: pickle.uri,
147
- featureName,
148
- scenarioName,
149
- // TODO: compute parameters
150
- parameters: {},
151
- steps,
152
- result: {
153
- status: 'STARTED',
154
- startTime: this.getTimeStamp(timestamp),
155
- },
156
- });
157
- this.report.testCases.push(this.testProgressMap.get(id));
158
- }
159
- onTestStepStarted(testStepStarted) {
160
- const { testStepId, timestamp, testCaseStartedId } = testStepStarted;
161
- const testStep = this.testStepMap.get(testStepId);
162
- if (testStep === undefined)
163
- throw new Error(`testStep with id ${testStepId} not found`);
164
- if (testStep.pickleStepId === undefined)
165
- return;
166
- const stepProgess = this.stepProgressMap.get(testStep.pickleStepId);
167
- stepProgess.result = {
168
- status: 'STARTED',
169
- startTime: this.getTimeStamp(timestamp),
170
- };
171
- }
172
- onAttachment(attachment) {
173
- const { testCaseStartedId, testStepId, body, mediaType, contentEncoding, fileName, source, url, } = attachment;
174
- if (mediaType === 'text/plain') {
175
- this.reportFolder = body.replaceAll('\\', '/');
176
- }
177
- const testStep = this.testStepMap.get(testStepId);
178
- if (testStep.pickleStepId === undefined)
179
- return;
180
- const stepProgess = this.stepProgressMap.get(testStep.pickleStepId);
181
- if (mediaType === 'application/json') {
182
- const command = JSON.parse(body);
183
- stepProgess.commands.push(command);
184
- }
185
- }
186
- onTestStepFinished(testStepFinished) {
187
- const { testStepId, testCaseStartedId, testStepResult, timestamp } = testStepFinished;
188
- const testStep = this.testStepMap.get(testStepId);
189
- if (testStep.pickleStepId === undefined)
190
- return;
191
- const stepProgess = this.stepProgressMap.get(testStep.pickleStepId);
192
- const prevStepResult = stepProgess.result;
193
- stepProgess.result = {
194
- status: testStepResult.status,
195
- startTime: prevStepResult.startTime,
196
- endTime: this.getTimeStamp(timestamp),
197
- message: testStepResult.message,
198
- // exception: testStepResult.exception,
199
- };
200
- }
201
- getTestCaseResult(steps) {
202
- for (const step of steps) {
203
- switch (step.result.status) {
204
- case 'FAILED':
205
- return {
206
- status: step.result.status,
207
- message: step.result.message,
208
- // exception: step.result.exception,
209
- };
210
- case 'AMBIGUOUS':
211
- case 'UNDEFINED':
212
- case 'PENDING':
213
- return {
214
- status: 'FAILED',
215
- message: `step "${step.text}" is ${step.result.status}`,
216
- };
217
- }
218
- }
219
- return {
220
- status: 'PASSED',
221
- };
222
- }
223
- onTestCaseFinished(testCaseFinished) {
224
- const { testCaseStartedId, timestamp } = testCaseFinished;
225
- const testProgress = this.testProgressMap.get(testCaseStartedId);
226
- const prevResult = testProgress.result;
227
- const steps = Object.values(testProgress.steps);
228
- const result = this.getTestCaseResult(steps);
229
- testProgress.result = {
230
- ...result,
231
- startTime: prevResult.startTime,
232
- endTime: this.getTimeStamp(timestamp),
233
- };
234
- }
235
- onTestRunFinished(testRunFinished) {
236
- const { timestamp, success, exception, message } = testRunFinished;
237
- const prevResult = this.report.result;
238
- this.report.result = {
239
- status: success ? 'PASSED' : 'FAILED',
240
- startTime: prevResult.startTime,
241
- endTime: this.getTimeStamp(timestamp),
242
- message,
243
- // exception,
244
- };
245
- }
246
- }
247
- exports.default = ReportGenerator;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ReportGenerator {
4
+ constructor() {
5
+ this.report = {
6
+ result: {
7
+ status: 'UNKNOWN',
8
+ },
9
+ testCases: [],
10
+ };
11
+ this.gherkinDocumentMap = new Map();
12
+ this.pickleMap = new Map();
13
+ this.testCaseMap = new Map();
14
+ this.testStepMap = new Map();
15
+ this.stepProgressMap = new Map();
16
+ this.testProgressMap = new Map();
17
+ this.reportFolder = null;
18
+ }
19
+ handleMessage(envelope) {
20
+ const type = Object.keys(envelope)[0];
21
+ switch (type) {
22
+ // case "meta": { break}
23
+ // case "source": { break}
24
+ case 'parseError': {
25
+ const parseError = envelope[type];
26
+ this.handleParseError(parseError);
27
+ break;
28
+ }
29
+ case 'gherkinDocument': {
30
+ const doc = envelope[type];
31
+ this.onGherkinDocument(doc);
32
+ break;
33
+ }
34
+ case 'pickle': {
35
+ const pickle = envelope[type];
36
+ this.onPickle(pickle);
37
+ break;
38
+ }
39
+ // case "stepDefinition": { break}
40
+ // case "hook": { break} // Before Hook
41
+ case 'testRunStarted': {
42
+ const testRunStarted = envelope[type];
43
+ this.onTestRunStarted(testRunStarted);
44
+ break;
45
+ }
46
+ case 'testCase': {
47
+ const testCase = envelope[type];
48
+ this.onTestCase(testCase);
49
+ break;
50
+ }
51
+ case 'testCaseStarted': {
52
+ const testCaseStarted = envelope[type];
53
+ this.onTestCaseStarted(testCaseStarted);
54
+ break;
55
+ }
56
+ case 'testStepStarted': {
57
+ const testStepStarted = envelope[type];
58
+ this.onTestStepStarted(testStepStarted);
59
+ break;
60
+ }
61
+ case 'attachment': {
62
+ const attachment = envelope[type];
63
+ this.onAttachment(attachment);
64
+ break;
65
+ }
66
+ case 'testStepFinished': {
67
+ const testStepFinished = envelope[type];
68
+ this.onTestStepFinished(testStepFinished);
69
+ break;
70
+ }
71
+ case 'testCaseFinished': {
72
+ const testCaseFinished = envelope[type];
73
+ this.onTestCaseFinished(testCaseFinished);
74
+ break;
75
+ }
76
+ // case "hook": { break} // After Hook
77
+ case 'testRunFinished': {
78
+ const testRunFinished = envelope[type];
79
+ this.onTestRunFinished(testRunFinished);
80
+ break;
81
+ }
82
+ // case "parameterType" : { break}
83
+ // case "undefinedParameterType": { break}
84
+ }
85
+ }
86
+ getReport() {
87
+ return this.report;
88
+ }
89
+ handleParseError(parseError) {
90
+ const { message, source } = parseError;
91
+ const timestamp = new Date().getTime();
92
+ this.report.result = {
93
+ status: 'FAILED',
94
+ startTime: timestamp,
95
+ endTime: timestamp,
96
+ message: message,
97
+ };
98
+ }
99
+ onGherkinDocument(doc) {
100
+ this.gherkinDocumentMap.set(doc.uri, doc);
101
+ }
102
+ onPickle(pickle) {
103
+ this.pickleMap.set(pickle.id, pickle);
104
+ }
105
+ getTimeStamp(timestamp) {
106
+ return timestamp.seconds * 1000 + timestamp.nanos / 1000000;
107
+ }
108
+ onTestRunStarted(testRunStarted) {
109
+ this.report.result = {
110
+ status: 'STARTED',
111
+ startTime: this.getTimeStamp(testRunStarted.timestamp),
112
+ };
113
+ }
114
+ onTestCase(testCase) {
115
+ this.testCaseMap.set(testCase.id, testCase);
116
+ testCase.testSteps.forEach((testStep) => {
117
+ this.testStepMap.set(testStep.id, testStep);
118
+ });
119
+ }
120
+ onTestCaseStarted(testCaseStarted) {
121
+ const { testCaseId, id, timestamp } = testCaseStarted;
122
+ const testCase = this.testCaseMap.get(testCaseId);
123
+ if (testCase === undefined)
124
+ throw new Error(`testCase with id ${testCaseId} not found`);
125
+ const pickle = this.pickleMap.get(testCase.pickleId);
126
+ if (pickle === undefined)
127
+ throw new Error(`pickle with id ${testCase.pickleId} not found`);
128
+ const doc = this.gherkinDocumentMap.get(pickle.uri);
129
+ if (doc === undefined)
130
+ throw new Error(`gherkinDocument with uri ${pickle.uri} not found`);
131
+ const featureName = doc.feature.name;
132
+ const scenarioName = pickle.name;
133
+ const steps = pickle.steps.map((step) => {
134
+ this.stepProgressMap.set(step.id, {
135
+ type: step.type,
136
+ text: step.text,
137
+ commands: [],
138
+ result: {
139
+ status: 'UNKNOWN',
140
+ },
141
+ });
142
+ return this.stepProgressMap.get(step.id);
143
+ });
144
+ this.testProgressMap.set(id, {
145
+ id,
146
+ uri: pickle.uri,
147
+ featureName,
148
+ scenarioName,
149
+ // TODO: compute parameters
150
+ parameters: {},
151
+ steps,
152
+ result: {
153
+ status: 'STARTED',
154
+ startTime: this.getTimeStamp(timestamp),
155
+ },
156
+ });
157
+ this.report.testCases.push(this.testProgressMap.get(id));
158
+ }
159
+ onTestStepStarted(testStepStarted) {
160
+ const { testStepId, timestamp, testCaseStartedId } = testStepStarted;
161
+ const testStep = this.testStepMap.get(testStepId);
162
+ if (testStep === undefined)
163
+ throw new Error(`testStep with id ${testStepId} not found`);
164
+ if (testStep.pickleStepId === undefined)
165
+ return;
166
+ const stepProgess = this.stepProgressMap.get(testStep.pickleStepId);
167
+ stepProgess.result = {
168
+ status: 'STARTED',
169
+ startTime: this.getTimeStamp(timestamp),
170
+ };
171
+ }
172
+ onAttachment(attachment) {
173
+ const { testCaseStartedId, testStepId, body, mediaType, contentEncoding, fileName, source, url, } = attachment;
174
+ if (mediaType === 'text/plain') {
175
+ this.reportFolder = body.replaceAll('\\', '/');
176
+ }
177
+ const testStep = this.testStepMap.get(testStepId);
178
+ if (testStep.pickleStepId === undefined)
179
+ return;
180
+ const stepProgess = this.stepProgressMap.get(testStep.pickleStepId);
181
+ if (mediaType === 'application/json') {
182
+ const command = JSON.parse(body);
183
+ stepProgess.commands.push(command);
184
+ }
185
+ }
186
+ onTestStepFinished(testStepFinished) {
187
+ const { testStepId, testCaseStartedId, testStepResult, timestamp } = testStepFinished;
188
+ const testStep = this.testStepMap.get(testStepId);
189
+ if (testStep.pickleStepId === undefined)
190
+ return;
191
+ const stepProgess = this.stepProgressMap.get(testStep.pickleStepId);
192
+ const prevStepResult = stepProgess.result;
193
+ stepProgess.result = {
194
+ status: testStepResult.status,
195
+ startTime: prevStepResult.startTime,
196
+ endTime: this.getTimeStamp(timestamp),
197
+ message: testStepResult.message,
198
+ // exception: testStepResult.exception,
199
+ };
200
+ }
201
+ getTestCaseResult(steps) {
202
+ for (const step of steps) {
203
+ switch (step.result.status) {
204
+ case 'FAILED':
205
+ return {
206
+ status: step.result.status,
207
+ message: step.result.message,
208
+ // exception: step.result.exception,
209
+ };
210
+ case 'AMBIGUOUS':
211
+ case 'UNDEFINED':
212
+ case 'PENDING':
213
+ return {
214
+ status: 'FAILED',
215
+ message: `step "${step.text}" is ${step.result.status}`,
216
+ };
217
+ }
218
+ }
219
+ return {
220
+ status: 'PASSED',
221
+ };
222
+ }
223
+ onTestCaseFinished(testCaseFinished) {
224
+ const { testCaseStartedId, timestamp } = testCaseFinished;
225
+ const testProgress = this.testProgressMap.get(testCaseStartedId);
226
+ const prevResult = testProgress.result;
227
+ const steps = Object.values(testProgress.steps);
228
+ const result = this.getTestCaseResult(steps);
229
+ testProgress.result = {
230
+ ...result,
231
+ startTime: prevResult.startTime,
232
+ endTime: this.getTimeStamp(timestamp),
233
+ };
234
+ }
235
+ onTestRunFinished(testRunFinished) {
236
+ const { timestamp, success, exception, message } = testRunFinished;
237
+ const prevResult = this.report.result;
238
+ this.report.result = {
239
+ status: success ? 'PASSED' : 'FAILED',
240
+ startTime: prevResult.startTime,
241
+ endTime: this.getTimeStamp(timestamp),
242
+ message,
243
+ // exception,
244
+ };
245
+ }
246
+ }
247
+ exports.default = ReportGenerator;
248
248
  //# sourceMappingURL=report_generator.js.map
@@ -1,2 +1,2 @@
1
- import * as messages from '@cucumber/messages';
2
- export declare function formatStepArgument(arg: messages.PickleStepArgument): string;
1
+ import * as messages from '@cucumber/messages';
2
+ export declare function formatStepArgument(arg: messages.PickleStepArgument): string;
@@ -1,48 +1,48 @@
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.formatStepArgument = void 0;
7
- const cli_table3_1 = __importDefault(require("cli-table3"));
8
- const step_arguments_1 = require("../../step_arguments");
9
- function formatDataTable(dataTable) {
10
- const table = new cli_table3_1.default({
11
- chars: {
12
- bottom: '',
13
- 'bottom-left': '',
14
- 'bottom-mid': '',
15
- 'bottom-right': '',
16
- left: '|',
17
- 'left-mid': '',
18
- mid: '',
19
- 'mid-mid': '',
20
- middle: '|',
21
- right: '|',
22
- 'right-mid': '',
23
- top: '',
24
- 'top-left': '',
25
- 'top-mid': '',
26
- 'top-right': '',
27
- },
28
- style: {
29
- border: [],
30
- 'padding-left': 1,
31
- 'padding-right': 1,
32
- },
33
- });
34
- const rows = dataTable.rows.map((row) => row.cells.map((cell) => cell.value.replace(/\\/g, '\\\\').replace(/\n/g, '\\n')));
35
- table.push(...rows);
36
- return table.toString();
37
- }
38
- function formatDocString(docString) {
39
- return `"""\n${docString.content}\n"""`;
40
- }
41
- function formatStepArgument(arg) {
42
- return (0, step_arguments_1.parseStepArgument)(arg, {
43
- dataTable: formatDataTable,
44
- docString: formatDocString,
45
- });
46
- }
47
- exports.formatStepArgument = formatStepArgument;
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.formatStepArgument = void 0;
7
+ const cli_table3_1 = __importDefault(require("cli-table3"));
8
+ const step_arguments_1 = require("../../step_arguments");
9
+ function formatDataTable(dataTable) {
10
+ const table = new cli_table3_1.default({
11
+ chars: {
12
+ bottom: '',
13
+ 'bottom-left': '',
14
+ 'bottom-mid': '',
15
+ 'bottom-right': '',
16
+ left: '|',
17
+ 'left-mid': '',
18
+ mid: '',
19
+ 'mid-mid': '',
20
+ middle: '|',
21
+ right: '|',
22
+ 'right-mid': '',
23
+ top: '',
24
+ 'top-left': '',
25
+ 'top-mid': '',
26
+ 'top-right': '',
27
+ },
28
+ style: {
29
+ border: [],
30
+ 'padding-left': 1,
31
+ 'padding-right': 1,
32
+ },
33
+ });
34
+ const rows = dataTable.rows.map((row) => row.cells.map((cell) => cell.value.replace(/\\/g, '\\\\').replace(/\n/g, '\\n')));
35
+ table.push(...rows);
36
+ return table.toString();
37
+ }
38
+ function formatDocString(docString) {
39
+ return `"""\n${docString.content}\n"""`;
40
+ }
41
+ function formatStepArgument(arg) {
42
+ return (0, step_arguments_1.parseStepArgument)(arg, {
43
+ dataTable: formatDataTable,
44
+ docString: formatDocString,
45
+ });
46
+ }
47
+ exports.formatStepArgument = formatStepArgument;
48
48
  //# sourceMappingURL=step_argument_formatter.js.map
@@ -1,9 +1,9 @@
1
- import { IColorFns } from '../get_color_fns';
2
- import { ITestCaseAttempt } from './event_data_collector';
3
- import * as messages from '@cucumber/messages';
4
- export interface IFormatSummaryRequest {
5
- colorFns: IColorFns;
6
- testCaseAttempts: ITestCaseAttempt[];
7
- testRunDuration: messages.Duration;
8
- }
9
- export declare function formatSummary({ colorFns, testCaseAttempts, testRunDuration, }: IFormatSummaryRequest): string;
1
+ import { IColorFns } from '../get_color_fns';
2
+ import { ITestCaseAttempt } from './event_data_collector';
3
+ import * as messages from '@cucumber/messages';
4
+ export interface IFormatSummaryRequest {
5
+ colorFns: IColorFns;
6
+ testCaseAttempts: ITestCaseAttempt[];
7
+ testRunDuration: messages.Duration;
8
+ }
9
+ export declare function formatSummary({ colorFns, testCaseAttempts, testRunDuration, }: IFormatSummaryRequest): string;