@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.
- package/bin/cucumber-js +0 -0
- package/bin/cucumber.js +0 -0
- package/lib/api/console_logger.d.ts +12 -12
- package/lib/api/console_logger.js +23 -23
- package/lib/api/convert_configuration.d.ts +4 -4
- package/lib/api/convert_configuration.js +64 -64
- package/lib/api/environment.d.ts +2 -2
- package/lib/api/environment.js +13 -13
- package/lib/api/formatters.d.ts +20 -20
- package/lib/api/formatters.js +60 -60
- package/lib/api/gherkin.d.ts +21 -21
- package/lib/api/gherkin.js +99 -99
- package/lib/api/index.d.ts +12 -12
- package/lib/api/index.js +27 -27
- package/lib/api/load_configuration.d.ts +9 -9
- package/lib/api/load_configuration.js +40 -40
- package/lib/api/load_sources.d.ts +9 -9
- package/lib/api/load_sources.js +52 -52
- package/lib/api/load_support.d.ts +10 -10
- package/lib/api/load_support.js +29 -29
- package/lib/api/paths.d.ts +8 -8
- package/lib/api/paths.js +101 -101
- package/lib/api/plugins.d.ts +4 -4
- package/lib/api/plugins.js +18 -18
- package/lib/api/run_cucumber.d.ts +11 -11
- package/lib/api/run_cucumber.js +114 -114
- package/lib/api/runtime.d.ts +21 -21
- package/lib/api/runtime.js +35 -35
- package/lib/api/support.d.ts +9 -9
- package/lib/api/support.js +25 -25
- package/lib/api/test_helpers.d.ts +3 -3
- package/lib/api/test_helpers.js +30 -30
- package/lib/api/types.d.ts +175 -175
- package/lib/api/types.js +2 -2
- package/lib/cli/helpers.d.ts +37 -37
- package/lib/cli/helpers.js +202 -202
- package/lib/cli/i18n.d.ts +2 -2
- package/lib/cli/i18n.js +69 -69
- package/lib/cli/index.d.ts +21 -21
- package/lib/cli/index.js +58 -58
- package/lib/cli/install_validator.d.ts +1 -1
- package/lib/cli/install_validator.js +13 -13
- package/lib/cli/run.d.ts +1 -1
- package/lib/cli/run.js +43 -43
- package/lib/cli/validate_node_engine_version.d.ts +10 -10
- package/lib/cli/validate_node_engine_version.js +23 -23
- package/lib/configuration/argv_parser.d.ts +20 -20
- package/lib/configuration/argv_parser.js +100 -100
- package/lib/configuration/check_schema.d.ts +2 -2
- package/lib/configuration/check_schema.js +59 -59
- package/lib/configuration/default_configuration.d.ts +2 -2
- package/lib/configuration/default_configuration.js +26 -26
- package/lib/configuration/from_file.d.ts +3 -3
- package/lib/configuration/from_file.js +84 -84
- package/lib/configuration/helpers.d.ts +1 -1
- package/lib/configuration/helpers.js +10 -10
- package/lib/configuration/index.d.ts +7 -7
- package/lib/configuration/index.js +28 -28
- package/lib/configuration/locate_file.d.ts +1 -1
- package/lib/configuration/locate_file.js +20 -20
- package/lib/configuration/merge_configurations.d.ts +2 -2
- package/lib/configuration/merge_configurations.js +47 -47
- package/lib/configuration/option_splitter.d.ts +3 -3
- package/lib/configuration/option_splitter.js +22 -22
- package/lib/configuration/types.d.ts +28 -28
- package/lib/configuration/types.js +2 -2
- package/lib/configuration/validate_configuration.d.ts +3 -3
- package/lib/configuration/validate_configuration.js +12 -12
- package/lib/filter_stack_trace.d.ts +3 -3
- package/lib/filter_stack_trace.js +37 -37
- package/lib/formatter/builder.d.ts +37 -37
- package/lib/formatter/builder.js +100 -100
- package/lib/formatter/bvt_analysis_formatter.d.ts +18 -0
- package/lib/formatter/bvt_analysis_formatter.js +207 -0
- package/lib/formatter/bvt_analysis_formatter.js.map +1 -0
- package/lib/formatter/bvt_formatter.d.ts +6 -9
- package/lib/formatter/bvt_formatter.js +24 -62
- package/lib/formatter/bvt_formatter.js.map +1 -1
- package/lib/formatter/feature_data_format.d.ts +14 -14
- package/lib/formatter/feature_data_format.js +80 -80
- package/lib/formatter/fixtures/typescript.d.ts +2 -2
- package/lib/formatter/fixtures/typescript.js +5 -5
- package/lib/formatter/get_color_fns.d.ts +15 -15
- package/lib/formatter/get_color_fns.js +55 -55
- package/lib/formatter/helpers/duration_helpers.d.ts +2 -2
- package/lib/formatter/helpers/duration_helpers.js +8 -8
- package/lib/formatter/helpers/event_data_collector.d.ts +30 -30
- package/lib/formatter/helpers/event_data_collector.js +125 -125
- package/lib/formatter/helpers/formatters.d.ts +6 -6
- package/lib/formatter/helpers/formatters.js +46 -44
- package/lib/formatter/helpers/formatters.js.map +1 -1
- package/lib/formatter/helpers/gherkin_document_parser.d.ts +5 -5
- package/lib/formatter/helpers/gherkin_document_parser.js +65 -65
- package/lib/formatter/helpers/index.d.ts +10 -10
- package/lib/formatter/helpers/index.js +51 -51
- package/lib/formatter/helpers/issue_helpers.d.ts +19 -19
- package/lib/formatter/helpers/issue_helpers.js +58 -58
- package/lib/formatter/helpers/keyword_type.d.ts +11 -11
- package/lib/formatter/helpers/keyword_type.js +31 -31
- package/lib/formatter/helpers/location_helpers.d.ts +2 -2
- package/lib/formatter/helpers/location_helpers.js +16 -16
- package/lib/formatter/helpers/pickle_parser.d.ts +17 -17
- package/lib/formatter/helpers/pickle_parser.js +27 -27
- package/lib/formatter/helpers/report_generator.d.ts +96 -91
- package/lib/formatter/helpers/report_generator.js +247 -247
- package/lib/formatter/helpers/report_generator.js.map +1 -1
- package/lib/formatter/helpers/step_argument_formatter.d.ts +2 -2
- package/lib/formatter/helpers/step_argument_formatter.js +47 -47
- package/lib/formatter/helpers/summary_helpers.d.ts +9 -9
- package/lib/formatter/helpers/summary_helpers.js +95 -95
- package/lib/formatter/helpers/test_case_attempt_formatter.d.ts +12 -12
- package/lib/formatter/helpers/test_case_attempt_formatter.js +113 -113
- package/lib/formatter/helpers/test_case_attempt_parser.d.ts +32 -32
- package/lib/formatter/helpers/test_case_attempt_parser.js +134 -134
- package/lib/formatter/helpers/upload_serivce.d.ts +9 -9
- package/lib/formatter/helpers/upload_serivce.js +46 -46
- package/lib/formatter/helpers/upload_serivce.js.map +1 -1
- package/lib/formatter/helpers/uploader.d.ts +8 -0
- package/lib/formatter/helpers/uploader.js +51 -0
- package/lib/formatter/helpers/uploader.js.map +1 -0
- package/lib/formatter/helpers/usage_helpers/index.d.ts +23 -23
- package/lib/formatter/helpers/usage_helpers/index.js +110 -110
- package/lib/formatter/html_formatter.d.ts +7 -7
- package/lib/formatter/html_formatter.js +29 -29
- package/lib/formatter/index.d.ts +53 -53
- package/lib/formatter/index.js +20 -20
- package/lib/formatter/json_formatter.d.ts +78 -78
- package/lib/formatter/json_formatter.js +229 -229
- package/lib/formatter/junit_formatter.d.ts +17 -17
- package/lib/formatter/junit_formatter.js +180 -180
- package/lib/formatter/message_formatter.d.ts +5 -5
- package/lib/formatter/message_formatter.js +14 -14
- package/lib/formatter/progress_bar_formatter.d.ts +18 -18
- package/lib/formatter/progress_bar_formatter.js +98 -98
- package/lib/formatter/progress_formatter.d.ts +9 -9
- package/lib/formatter/progress_formatter.js +58 -58
- package/lib/formatter/rerun_formatter.d.ts +13 -13
- package/lib/formatter/rerun_formatter.js +79 -79
- package/lib/formatter/snippets_formatter.d.ts +6 -6
- package/lib/formatter/snippets_formatter.js +60 -60
- package/lib/formatter/step_definition_snippet_builder/index.d.ts +20 -20
- package/lib/formatter/step_definition_snippet_builder/index.js +45 -45
- package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.d.ts +7 -7
- package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.js +45 -45
- package/lib/formatter/step_definition_snippet_builder/snippet_syntax.d.ts +16 -16
- package/lib/formatter/step_definition_snippet_builder/snippet_syntax.js +10 -10
- package/lib/formatter/summary_formatter.d.ts +14 -14
- package/lib/formatter/summary_formatter.js +67 -67
- package/lib/formatter/usage_formatter.d.ts +6 -6
- package/lib/formatter/usage_formatter.js +97 -97
- package/lib/formatter/usage_json_formatter.d.ts +7 -7
- package/lib/formatter/usage_json_formatter.js +33 -33
- package/lib/index.d.ts +58 -58
- package/lib/index.js +108 -108
- package/lib/logger.d.ts +5 -5
- package/lib/logger.js +2 -2
- package/lib/models/data_table.d.ts +10 -10
- package/lib/models/data_table.js +45 -45
- package/lib/models/definition.d.ts +55 -55
- package/lib/models/definition.js +21 -21
- package/lib/models/gherkin_step_keyword.d.ts +1 -1
- package/lib/models/gherkin_step_keyword.js +2 -2
- package/lib/models/pickle_order.d.ts +1 -1
- package/lib/models/pickle_order.js +2 -2
- package/lib/models/step_definition.d.ts +11 -11
- package/lib/models/step_definition.js +36 -36
- package/lib/models/test_case_hook_definition.d.ts +10 -10
- package/lib/models/test_case_hook_definition.js +26 -26
- package/lib/models/test_run_hook_definition.d.ts +3 -3
- package/lib/models/test_run_hook_definition.js +9 -9
- package/lib/models/test_step_hook_definition.d.ts +9 -9
- package/lib/models/test_step_hook_definition.js +25 -25
- package/lib/pickle_filter.d.ts +42 -42
- package/lib/pickle_filter.js +98 -98
- package/lib/plugin/index.d.ts +2 -2
- package/lib/plugin/index.js +18 -18
- package/lib/plugin/plugin_manager.d.ts +13 -13
- package/lib/plugin/plugin_manager.js +35 -35
- package/lib/plugin/types.d.ts +14 -14
- package/lib/plugin/types.js +2 -2
- package/lib/publish/http_stream.d.ts +30 -30
- package/lib/publish/http_stream.js +111 -111
- package/lib/publish/index.d.ts +2 -2
- package/lib/publish/index.js +4 -4
- package/lib/publish/publish_plugin.d.ts +2 -2
- package/lib/publish/publish_plugin.js +47 -47
- package/lib/runtime/assemble_test_cases.d.ts +13 -13
- package/lib/runtime/assemble_test_cases.js +87 -87
- package/lib/runtime/attachment_manager/index.d.ts +33 -33
- package/lib/runtime/attachment_manager/index.js +118 -118
- package/lib/runtime/format_error.d.ts +2 -2
- package/lib/runtime/format_error.js +35 -35
- package/lib/runtime/helpers.d.ts +6 -6
- package/lib/runtime/helpers.js +100 -100
- package/lib/runtime/index.d.ts +40 -40
- package/lib/runtime/index.js +75 -75
- package/lib/runtime/parallel/command_types.d.ts +32 -32
- package/lib/runtime/parallel/command_types.js +2 -2
- package/lib/runtime/parallel/coordinator.d.ts +72 -72
- package/lib/runtime/parallel/coordinator.js +221 -221
- package/lib/runtime/parallel/run_worker.d.ts +1 -1
- package/lib/runtime/parallel/run_worker.js +28 -28
- package/lib/runtime/parallel/worker.d.ts +26 -26
- package/lib/runtime/parallel/worker.js +86 -86
- package/lib/runtime/run_test_run_hooks.d.ts +3 -3
- package/lib/runtime/run_test_run_hooks.js +27 -27
- package/lib/runtime/step_runner.d.ts +16 -16
- package/lib/runtime/step_runner.js +87 -87
- package/lib/runtime/stopwatch.d.ts +12 -12
- package/lib/runtime/stopwatch.js +33 -33
- package/lib/runtime/test_case_runner.d.ts +54 -54
- package/lib/runtime/test_case_runner.js +267 -267
- package/lib/step_arguments.d.ts +6 -6
- package/lib/step_arguments.js +18 -18
- package/lib/support_code_library_builder/build_parameter_type.d.ts +3 -3
- package/lib/support_code_library_builder/build_parameter_type.js +12 -12
- package/lib/support_code_library_builder/get_definition_line_and_uri.d.ts +3 -3
- package/lib/support_code_library_builder/get_definition_line_and_uri.js +28 -28
- package/lib/support_code_library_builder/index.d.ts +74 -74
- package/lib/support_code_library_builder/index.js +296 -296
- package/lib/support_code_library_builder/parallel_can_assign_helpers.d.ts +2 -2
- package/lib/support_code_library_builder/parallel_can_assign_helpers.js +15 -15
- package/lib/support_code_library_builder/sourced_parameter_type_registry.d.ts +7 -7
- package/lib/support_code_library_builder/sourced_parameter_type_registry.js +18 -18
- package/lib/support_code_library_builder/types.d.ts +88 -88
- package/lib/support_code_library_builder/types.js +2 -2
- package/lib/support_code_library_builder/validate_arguments.d.ts +12 -12
- package/lib/support_code_library_builder/validate_arguments.js +72 -72
- package/lib/support_code_library_builder/world.d.ts +18 -18
- package/lib/support_code_library_builder/world.js +10 -10
- package/lib/time.d.ts +18 -18
- package/lib/time.js +60 -60
- package/lib/try_require.d.ts +7 -7
- package/lib/try_require.js +22 -22
- package/lib/types/index.d.ts +4 -4
- package/lib/types/index.js +2 -2
- package/lib/uncaught_exception_manager.d.ts +7 -7
- package/lib/uncaught_exception_manager.js +11 -11
- package/lib/user_code_runner.d.ts +14 -14
- package/lib/user_code_runner.js +81 -81
- package/lib/value_checker.d.ts +3 -3
- package/lib/value_checker.js +18 -18
- package/lib/version.d.ts +1 -1
- package/lib/version.js +5 -5
- package/lib/version.js.map +1 -1
- 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\";\
|
|
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[];
|