@dev-blinq/cucumber-js 1.0.36 → 1.0.38
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 +65 -65
- 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 +177 -177
- package/lib/api/types.js +2 -2
- package/lib/cli/helpers.d.ts +39 -39
- package/lib/cli/helpers.js +223 -223
- 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 +63 -63
- 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 +102 -102
- 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 +28 -28
- 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 +30 -30
- 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 -18
- package/lib/formatter/bvt_analysis_formatter.js +192 -192
- 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 +44 -44
- 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 +107 -103
- package/lib/formatter/helpers/report_generator.js +310 -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/uploader.d.ts +11 -11
- package/lib/formatter/helpers/uploader.js +56 -56
- 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 +1 -1
|
@@ -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: name ? name : 'TEST',
|
|
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: name ? name : 'TEST',
|
|
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,11 +1,11 @@
|
|
|
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, runName: string): Promise<{
|
|
7
|
-
runId: any;
|
|
8
|
-
projectId: any;
|
|
9
|
-
}>;
|
|
10
|
-
createZip(reportFolder: string | null, report: JsonReport): Promise<string>;
|
|
11
|
-
}
|
|
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, runName: string): Promise<{
|
|
7
|
+
runId: any;
|
|
8
|
+
projectId: any;
|
|
9
|
+
}>;
|
|
10
|
+
createZip(reportFolder: string | null, report: JsonReport): Promise<string>;
|
|
11
|
+
}
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
var _a, _b;
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const upload_serivce_1 = require("./upload_serivce");
|
|
8
|
-
const form_data_1 = __importDefault(require("form-data"));
|
|
9
|
-
const fs_1 = __importDefault(require("fs"));
|
|
10
|
-
const jszip_1 = __importDefault(require("jszip"));
|
|
11
|
-
const path_1 = __importDefault(require("path"));
|
|
12
|
-
const URL = process.env.NODE_ENV_BLINQ === 'dev'
|
|
13
|
-
? 'https://dev.api.blinq.io/api/runs'
|
|
14
|
-
: process.env.NODE_ENV_BLINQ === 'local'
|
|
15
|
-
? 'http://localhost:5001/api/runs'
|
|
16
|
-
: 'https://api.blinq.io/api/runs';
|
|
17
|
-
const REPORT_SERVICE_URL = (_a = process.env.REPORT_SERVICE_URL) !== null && _a !== void 0 ? _a : URL;
|
|
18
|
-
const REPORT_SERVICE_TOKEN = (_b = process.env.TOKEN) !== null && _b !== void 0 ? _b : process.env.REPORT_SERVICE_TOKEN;
|
|
19
|
-
class ReportUploader {
|
|
20
|
-
constructor(reportGenerator) {
|
|
21
|
-
this.uploadService = new upload_serivce_1.RunUploadService(REPORT_SERVICE_URL, REPORT_SERVICE_TOKEN);
|
|
22
|
-
if (!REPORT_SERVICE_URL || !REPORT_SERVICE_TOKEN) {
|
|
23
|
-
throw new Error('REPORT_SERVICE_URL and REPORT_SERVICE_TOKEN must be set');
|
|
24
|
-
}
|
|
25
|
-
this.reportGenerator = reportGenerator;
|
|
26
|
-
}
|
|
27
|
-
async uploadRun(report, runName) {
|
|
28
|
-
const runDoc = await this.uploadService.createRunDocument(runName);
|
|
29
|
-
const runDocId = runDoc._id;
|
|
30
|
-
const formData = new form_data_1.default();
|
|
31
|
-
const reportFolder = this.reportGenerator.reportFolder;
|
|
32
|
-
if (!fs_1.default.existsSync(reportFolder)) {
|
|
33
|
-
fs_1.default.mkdirSync(reportFolder);
|
|
34
|
-
}
|
|
35
|
-
const zipPath = await this.createZip(reportFolder, report);
|
|
36
|
-
formData.append(runDocId, fs_1.default.readFileSync(zipPath), 'report.zip');
|
|
37
|
-
await this.uploadService.upload(formData);
|
|
38
|
-
return { runId: runDoc._id, projectId: runDoc.project_id };
|
|
39
|
-
}
|
|
40
|
-
async createZip(reportFolder, report) {
|
|
41
|
-
const zip = new jszip_1.default();
|
|
42
|
-
zip.file('report.json', JSON.stringify(report, null, 2));
|
|
43
|
-
const folder = zip.folder('screenshots');
|
|
44
|
-
const files = fs_1.default.readdirSync(path_1.default.join(reportFolder, 'screenshots'));
|
|
45
|
-
files.forEach((file) => {
|
|
46
|
-
folder.file(file, fs_1.default.readFileSync(path_1.default.join(reportFolder, 'screenshots', file)));
|
|
47
|
-
});
|
|
48
|
-
const zipBuffer = await zip.generateAsync({ type: 'nodebuffer' });
|
|
49
|
-
// save zip file
|
|
50
|
-
const zipPath = path_1.default.join(reportFolder, 'report.zip');
|
|
51
|
-
fs_1.default.writeFileSync(zipPath, zipBuffer);
|
|
52
|
-
fs_1.default.writeFileSync(path_1.default.join(reportFolder, 'report.json'), JSON.stringify(report, null, 2));
|
|
53
|
-
return zipPath;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.default = ReportUploader;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
var _a, _b;
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const upload_serivce_1 = require("./upload_serivce");
|
|
8
|
+
const form_data_1 = __importDefault(require("form-data"));
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const jszip_1 = __importDefault(require("jszip"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const URL = process.env.NODE_ENV_BLINQ === 'dev'
|
|
13
|
+
? 'https://dev.api.blinq.io/api/runs'
|
|
14
|
+
: process.env.NODE_ENV_BLINQ === 'local'
|
|
15
|
+
? 'http://localhost:5001/api/runs'
|
|
16
|
+
: 'https://api.blinq.io/api/runs';
|
|
17
|
+
const REPORT_SERVICE_URL = (_a = process.env.REPORT_SERVICE_URL) !== null && _a !== void 0 ? _a : URL;
|
|
18
|
+
const REPORT_SERVICE_TOKEN = (_b = process.env.TOKEN) !== null && _b !== void 0 ? _b : process.env.REPORT_SERVICE_TOKEN;
|
|
19
|
+
class ReportUploader {
|
|
20
|
+
constructor(reportGenerator) {
|
|
21
|
+
this.uploadService = new upload_serivce_1.RunUploadService(REPORT_SERVICE_URL, REPORT_SERVICE_TOKEN);
|
|
22
|
+
if (!REPORT_SERVICE_URL || !REPORT_SERVICE_TOKEN) {
|
|
23
|
+
throw new Error('REPORT_SERVICE_URL and REPORT_SERVICE_TOKEN must be set');
|
|
24
|
+
}
|
|
25
|
+
this.reportGenerator = reportGenerator;
|
|
26
|
+
}
|
|
27
|
+
async uploadRun(report, runName) {
|
|
28
|
+
const runDoc = await this.uploadService.createRunDocument(runName);
|
|
29
|
+
const runDocId = runDoc._id;
|
|
30
|
+
const formData = new form_data_1.default();
|
|
31
|
+
const reportFolder = this.reportGenerator.reportFolder;
|
|
32
|
+
if (!fs_1.default.existsSync(reportFolder)) {
|
|
33
|
+
fs_1.default.mkdirSync(reportFolder);
|
|
34
|
+
}
|
|
35
|
+
const zipPath = await this.createZip(reportFolder, report);
|
|
36
|
+
formData.append(runDocId, fs_1.default.readFileSync(zipPath), 'report.zip');
|
|
37
|
+
await this.uploadService.upload(formData);
|
|
38
|
+
return { runId: runDoc._id, projectId: runDoc.project_id };
|
|
39
|
+
}
|
|
40
|
+
async createZip(reportFolder, report) {
|
|
41
|
+
const zip = new jszip_1.default();
|
|
42
|
+
zip.file('report.json', JSON.stringify(report, null, 2));
|
|
43
|
+
const folder = zip.folder('screenshots');
|
|
44
|
+
const files = fs_1.default.readdirSync(path_1.default.join(reportFolder, 'screenshots'));
|
|
45
|
+
files.forEach((file) => {
|
|
46
|
+
folder.file(file, fs_1.default.readFileSync(path_1.default.join(reportFolder, 'screenshots', file)));
|
|
47
|
+
});
|
|
48
|
+
const zipBuffer = await zip.generateAsync({ type: 'nodebuffer' });
|
|
49
|
+
// save zip file
|
|
50
|
+
const zipPath = path_1.default.join(reportFolder, 'report.zip');
|
|
51
|
+
fs_1.default.writeFileSync(zipPath, zipBuffer);
|
|
52
|
+
fs_1.default.writeFileSync(path_1.default.join(reportFolder, 'report.json'), JSON.stringify(report, null, 2));
|
|
53
|
+
return zipPath;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.default = ReportUploader;
|
|
57
57
|
//# sourceMappingURL=uploader.js.map
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import * as messages from '@cucumber/messages';
|
|
2
|
-
import StepDefinition from '../../../models/step_definition';
|
|
3
|
-
import EventDataCollector from '../event_data_collector';
|
|
4
|
-
export interface IUsageMatch {
|
|
5
|
-
duration?: messages.Duration;
|
|
6
|
-
line: number;
|
|
7
|
-
text: string;
|
|
8
|
-
uri: string;
|
|
9
|
-
}
|
|
10
|
-
export interface IUsage {
|
|
11
|
-
code: string;
|
|
12
|
-
line: number;
|
|
13
|
-
matches: IUsageMatch[];
|
|
14
|
-
meanDuration?: messages.Duration;
|
|
15
|
-
pattern: string;
|
|
16
|
-
patternType: string;
|
|
17
|
-
uri: string;
|
|
18
|
-
}
|
|
19
|
-
export interface IGetUsageRequest {
|
|
20
|
-
eventDataCollector: EventDataCollector;
|
|
21
|
-
stepDefinitions: StepDefinition[];
|
|
22
|
-
}
|
|
23
|
-
export declare function getUsage({ stepDefinitions, eventDataCollector, }: IGetUsageRequest): IUsage[];
|
|
1
|
+
import * as messages from '@cucumber/messages';
|
|
2
|
+
import StepDefinition from '../../../models/step_definition';
|
|
3
|
+
import EventDataCollector from '../event_data_collector';
|
|
4
|
+
export interface IUsageMatch {
|
|
5
|
+
duration?: messages.Duration;
|
|
6
|
+
line: number;
|
|
7
|
+
text: string;
|
|
8
|
+
uri: string;
|
|
9
|
+
}
|
|
10
|
+
export interface IUsage {
|
|
11
|
+
code: string;
|
|
12
|
+
line: number;
|
|
13
|
+
matches: IUsageMatch[];
|
|
14
|
+
meanDuration?: messages.Duration;
|
|
15
|
+
pattern: string;
|
|
16
|
+
patternType: string;
|
|
17
|
+
uri: string;
|
|
18
|
+
}
|
|
19
|
+
export interface IGetUsageRequest {
|
|
20
|
+
eventDataCollector: EventDataCollector;
|
|
21
|
+
stepDefinitions: StepDefinition[];
|
|
22
|
+
}
|
|
23
|
+
export declare function getUsage({ stepDefinitions, eventDataCollector, }: IGetUsageRequest): IUsage[];
|
|
@@ -1,111 +1,111 @@
|
|
|
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.getUsage = void 0;
|
|
27
|
-
const pickle_parser_1 = require("../pickle_parser");
|
|
28
|
-
const gherkin_document_parser_1 = require("../gherkin_document_parser");
|
|
29
|
-
const messages = __importStar(require("@cucumber/messages"));
|
|
30
|
-
const value_checker_1 = require("../../../value_checker");
|
|
31
|
-
function buildEmptyMapping(stepDefinitions) {
|
|
32
|
-
const mapping = {};
|
|
33
|
-
stepDefinitions.forEach((stepDefinition) => {
|
|
34
|
-
mapping[stepDefinition.id] = {
|
|
35
|
-
code: stepDefinition.unwrappedCode.toString(),
|
|
36
|
-
line: stepDefinition.line,
|
|
37
|
-
pattern: stepDefinition.expression.source,
|
|
38
|
-
patternType: stepDefinition.expression.constructor.name,
|
|
39
|
-
matches: [],
|
|
40
|
-
uri: stepDefinition.uri,
|
|
41
|
-
};
|
|
42
|
-
});
|
|
43
|
-
return mapping;
|
|
44
|
-
}
|
|
45
|
-
const unexecutedStatuses = [
|
|
46
|
-
messages.TestStepResultStatus.AMBIGUOUS,
|
|
47
|
-
messages.TestStepResultStatus.SKIPPED,
|
|
48
|
-
messages.TestStepResultStatus.UNDEFINED,
|
|
49
|
-
];
|
|
50
|
-
function buildMapping({ stepDefinitions, eventDataCollector, }) {
|
|
51
|
-
const mapping = buildEmptyMapping(stepDefinitions);
|
|
52
|
-
eventDataCollector.getTestCaseAttempts().forEach((testCaseAttempt) => {
|
|
53
|
-
const pickleStepMap = (0, pickle_parser_1.getPickleStepMap)(testCaseAttempt.pickle);
|
|
54
|
-
const gherkinStepMap = (0, gherkin_document_parser_1.getGherkinStepMap)(testCaseAttempt.gherkinDocument);
|
|
55
|
-
testCaseAttempt.testCase.testSteps.forEach((testStep) => {
|
|
56
|
-
if ((0, value_checker_1.doesHaveValue)(testStep.pickleStepId) &&
|
|
57
|
-
testStep.stepDefinitionIds.length === 1) {
|
|
58
|
-
const stepDefinitionId = testStep.stepDefinitionIds[0];
|
|
59
|
-
const pickleStep = pickleStepMap[testStep.pickleStepId];
|
|
60
|
-
const gherkinStep = gherkinStepMap[pickleStep.astNodeIds[0]];
|
|
61
|
-
const match = {
|
|
62
|
-
line: gherkinStep.location.line,
|
|
63
|
-
text: pickleStep.text,
|
|
64
|
-
uri: testCaseAttempt.pickle.uri,
|
|
65
|
-
};
|
|
66
|
-
const { duration, status } = testCaseAttempt.stepResults[testStep.id];
|
|
67
|
-
if (!unexecutedStatuses.includes(status) && (0, value_checker_1.doesHaveValue)(duration)) {
|
|
68
|
-
match.duration = duration;
|
|
69
|
-
}
|
|
70
|
-
if ((0, value_checker_1.doesHaveValue)(mapping[stepDefinitionId])) {
|
|
71
|
-
mapping[stepDefinitionId].matches.push(match);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
return mapping;
|
|
77
|
-
}
|
|
78
|
-
function normalizeDuration(duration) {
|
|
79
|
-
if (duration == null) {
|
|
80
|
-
return Number.MIN_SAFE_INTEGER;
|
|
81
|
-
}
|
|
82
|
-
return messages.TimeConversion.durationToMilliseconds(duration);
|
|
83
|
-
}
|
|
84
|
-
function buildResult(mapping) {
|
|
85
|
-
return Object.keys(mapping)
|
|
86
|
-
.map((stepDefinitionId) => {
|
|
87
|
-
const { matches, ...rest } = mapping[stepDefinitionId];
|
|
88
|
-
const sortedMatches = matches.sort((a, b) => {
|
|
89
|
-
if (a.duration === b.duration) {
|
|
90
|
-
return a.text < b.text ? -1 : 1;
|
|
91
|
-
}
|
|
92
|
-
return normalizeDuration(b.duration) - normalizeDuration(a.duration);
|
|
93
|
-
});
|
|
94
|
-
const result = { matches: sortedMatches, ...rest };
|
|
95
|
-
const durations = matches
|
|
96
|
-
.filter((m) => m.duration != null)
|
|
97
|
-
.map((m) => m.duration);
|
|
98
|
-
if (durations.length > 0) {
|
|
99
|
-
const totalMilliseconds = durations.reduce((acc, x) => acc + messages.TimeConversion.durationToMilliseconds(x), 0);
|
|
100
|
-
result.meanDuration = messages.TimeConversion.millisecondsToDuration(totalMilliseconds / durations.length);
|
|
101
|
-
}
|
|
102
|
-
return result;
|
|
103
|
-
})
|
|
104
|
-
.sort((a, b) => normalizeDuration(b.meanDuration) - normalizeDuration(a.meanDuration));
|
|
105
|
-
}
|
|
106
|
-
function getUsage({ stepDefinitions, eventDataCollector, }) {
|
|
107
|
-
const mapping = buildMapping({ stepDefinitions, eventDataCollector });
|
|
108
|
-
return buildResult(mapping);
|
|
109
|
-
}
|
|
110
|
-
exports.getUsage = getUsage;
|
|
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.getUsage = void 0;
|
|
27
|
+
const pickle_parser_1 = require("../pickle_parser");
|
|
28
|
+
const gherkin_document_parser_1 = require("../gherkin_document_parser");
|
|
29
|
+
const messages = __importStar(require("@cucumber/messages"));
|
|
30
|
+
const value_checker_1 = require("../../../value_checker");
|
|
31
|
+
function buildEmptyMapping(stepDefinitions) {
|
|
32
|
+
const mapping = {};
|
|
33
|
+
stepDefinitions.forEach((stepDefinition) => {
|
|
34
|
+
mapping[stepDefinition.id] = {
|
|
35
|
+
code: stepDefinition.unwrappedCode.toString(),
|
|
36
|
+
line: stepDefinition.line,
|
|
37
|
+
pattern: stepDefinition.expression.source,
|
|
38
|
+
patternType: stepDefinition.expression.constructor.name,
|
|
39
|
+
matches: [],
|
|
40
|
+
uri: stepDefinition.uri,
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
return mapping;
|
|
44
|
+
}
|
|
45
|
+
const unexecutedStatuses = [
|
|
46
|
+
messages.TestStepResultStatus.AMBIGUOUS,
|
|
47
|
+
messages.TestStepResultStatus.SKIPPED,
|
|
48
|
+
messages.TestStepResultStatus.UNDEFINED,
|
|
49
|
+
];
|
|
50
|
+
function buildMapping({ stepDefinitions, eventDataCollector, }) {
|
|
51
|
+
const mapping = buildEmptyMapping(stepDefinitions);
|
|
52
|
+
eventDataCollector.getTestCaseAttempts().forEach((testCaseAttempt) => {
|
|
53
|
+
const pickleStepMap = (0, pickle_parser_1.getPickleStepMap)(testCaseAttempt.pickle);
|
|
54
|
+
const gherkinStepMap = (0, gherkin_document_parser_1.getGherkinStepMap)(testCaseAttempt.gherkinDocument);
|
|
55
|
+
testCaseAttempt.testCase.testSteps.forEach((testStep) => {
|
|
56
|
+
if ((0, value_checker_1.doesHaveValue)(testStep.pickleStepId) &&
|
|
57
|
+
testStep.stepDefinitionIds.length === 1) {
|
|
58
|
+
const stepDefinitionId = testStep.stepDefinitionIds[0];
|
|
59
|
+
const pickleStep = pickleStepMap[testStep.pickleStepId];
|
|
60
|
+
const gherkinStep = gherkinStepMap[pickleStep.astNodeIds[0]];
|
|
61
|
+
const match = {
|
|
62
|
+
line: gherkinStep.location.line,
|
|
63
|
+
text: pickleStep.text,
|
|
64
|
+
uri: testCaseAttempt.pickle.uri,
|
|
65
|
+
};
|
|
66
|
+
const { duration, status } = testCaseAttempt.stepResults[testStep.id];
|
|
67
|
+
if (!unexecutedStatuses.includes(status) && (0, value_checker_1.doesHaveValue)(duration)) {
|
|
68
|
+
match.duration = duration;
|
|
69
|
+
}
|
|
70
|
+
if ((0, value_checker_1.doesHaveValue)(mapping[stepDefinitionId])) {
|
|
71
|
+
mapping[stepDefinitionId].matches.push(match);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
return mapping;
|
|
77
|
+
}
|
|
78
|
+
function normalizeDuration(duration) {
|
|
79
|
+
if (duration == null) {
|
|
80
|
+
return Number.MIN_SAFE_INTEGER;
|
|
81
|
+
}
|
|
82
|
+
return messages.TimeConversion.durationToMilliseconds(duration);
|
|
83
|
+
}
|
|
84
|
+
function buildResult(mapping) {
|
|
85
|
+
return Object.keys(mapping)
|
|
86
|
+
.map((stepDefinitionId) => {
|
|
87
|
+
const { matches, ...rest } = mapping[stepDefinitionId];
|
|
88
|
+
const sortedMatches = matches.sort((a, b) => {
|
|
89
|
+
if (a.duration === b.duration) {
|
|
90
|
+
return a.text < b.text ? -1 : 1;
|
|
91
|
+
}
|
|
92
|
+
return normalizeDuration(b.duration) - normalizeDuration(a.duration);
|
|
93
|
+
});
|
|
94
|
+
const result = { matches: sortedMatches, ...rest };
|
|
95
|
+
const durations = matches
|
|
96
|
+
.filter((m) => m.duration != null)
|
|
97
|
+
.map((m) => m.duration);
|
|
98
|
+
if (durations.length > 0) {
|
|
99
|
+
const totalMilliseconds = durations.reduce((acc, x) => acc + messages.TimeConversion.durationToMilliseconds(x), 0);
|
|
100
|
+
result.meanDuration = messages.TimeConversion.millisecondsToDuration(totalMilliseconds / durations.length);
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
})
|
|
104
|
+
.sort((a, b) => normalizeDuration(b.meanDuration) - normalizeDuration(a.meanDuration));
|
|
105
|
+
}
|
|
106
|
+
function getUsage({ stepDefinitions, eventDataCollector, }) {
|
|
107
|
+
const mapping = buildMapping({ stepDefinitions, eventDataCollector });
|
|
108
|
+
return buildResult(mapping);
|
|
109
|
+
}
|
|
110
|
+
exports.getUsage = getUsage;
|
|
111
111
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import Formatter, { IFormatterOptions } from '.';
|
|
2
|
-
export default class HtmlFormatter extends Formatter {
|
|
3
|
-
private readonly _htmlStream;
|
|
4
|
-
static readonly documentation: string;
|
|
5
|
-
constructor(options: IFormatterOptions);
|
|
6
|
-
finished(): Promise<void>;
|
|
7
|
-
}
|
|
1
|
+
import Formatter, { IFormatterOptions } from '.';
|
|
2
|
+
export default class HtmlFormatter extends Formatter {
|
|
3
|
+
private readonly _htmlStream;
|
|
4
|
+
static readonly documentation: string;
|
|
5
|
+
constructor(options: IFormatterOptions);
|
|
6
|
+
finished(): Promise<void>;
|
|
7
|
+
}
|
|
@@ -1,30 +1,30 @@
|
|
|
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 _1 = __importDefault(require("."));
|
|
7
|
-
const resolve_pkg_1 = __importDefault(require("resolve-pkg"));
|
|
8
|
-
const html_formatter_1 = __importDefault(require("@cucumber/html-formatter"));
|
|
9
|
-
const stream_1 = require("stream");
|
|
10
|
-
const util_1 = require("util");
|
|
11
|
-
class HtmlFormatter extends _1.default {
|
|
12
|
-
constructor(options) {
|
|
13
|
-
super(options);
|
|
14
|
-
this._htmlStream = new html_formatter_1.default((0, resolve_pkg_1.default)('@cucumber/html-formatter', { cwd: __dirname }) +
|
|
15
|
-
'/dist/main.css', (0, resolve_pkg_1.default)('@cucumber/html-formatter', { cwd: __dirname }) +
|
|
16
|
-
'/dist/main.js');
|
|
17
|
-
options.eventBroadcaster.on('envelope', (envelope) => {
|
|
18
|
-
this._htmlStream.write(envelope);
|
|
19
|
-
});
|
|
20
|
-
this._htmlStream.on('data', (chunk) => this.log(chunk));
|
|
21
|
-
}
|
|
22
|
-
async finished() {
|
|
23
|
-
this._htmlStream.end();
|
|
24
|
-
await (0, util_1.promisify)(stream_1.finished)(this._htmlStream);
|
|
25
|
-
await super.finished();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
exports.default = HtmlFormatter;
|
|
29
|
-
HtmlFormatter.documentation = 'Outputs HTML report';
|
|
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 _1 = __importDefault(require("."));
|
|
7
|
+
const resolve_pkg_1 = __importDefault(require("resolve-pkg"));
|
|
8
|
+
const html_formatter_1 = __importDefault(require("@cucumber/html-formatter"));
|
|
9
|
+
const stream_1 = require("stream");
|
|
10
|
+
const util_1 = require("util");
|
|
11
|
+
class HtmlFormatter extends _1.default {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super(options);
|
|
14
|
+
this._htmlStream = new html_formatter_1.default((0, resolve_pkg_1.default)('@cucumber/html-formatter', { cwd: __dirname }) +
|
|
15
|
+
'/dist/main.css', (0, resolve_pkg_1.default)('@cucumber/html-formatter', { cwd: __dirname }) +
|
|
16
|
+
'/dist/main.js');
|
|
17
|
+
options.eventBroadcaster.on('envelope', (envelope) => {
|
|
18
|
+
this._htmlStream.write(envelope);
|
|
19
|
+
});
|
|
20
|
+
this._htmlStream.on('data', (chunk) => this.log(chunk));
|
|
21
|
+
}
|
|
22
|
+
async finished() {
|
|
23
|
+
this._htmlStream.end();
|
|
24
|
+
await (0, util_1.promisify)(stream_1.finished)(this._htmlStream);
|
|
25
|
+
await super.finished();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = HtmlFormatter;
|
|
29
|
+
HtmlFormatter.documentation = 'Outputs HTML report';
|
|
30
30
|
//# sourceMappingURL=html_formatter.js.map
|