dceky 1.0.5-beta.ky-declarations.12 → 1.0.5
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/README.md +45 -29
- package/lib/commands/assertDoesNotHaveClass.d.ts +18 -0
- package/lib/commands/assertDoesNotHaveClass.js +17 -0
- package/lib/commands/assertDoesNotHaveClass.js.map +1 -0
- package/lib/commands/assertHasClass.d.ts +18 -0
- package/lib/commands/assertHasClass.js +17 -0
- package/lib/commands/assertHasClass.js.map +1 -0
- package/lib/commands/assertNumElements.d.ts +18 -0
- package/lib/commands/assertNumElements.js +17 -0
- package/lib/commands/assertNumElements.js.map +1 -0
- package/lib/commands/clickWithRetry.d.ts +19 -0
- package/lib/commands/clickWithRetry.js +29 -0
- package/lib/commands/clickWithRetry.js.map +1 -0
- package/lib/commands/genTextOfLength.d.ts +20 -0
- package/lib/commands/genTextOfLength.js +20 -0
- package/lib/commands/genTextOfLength.js.map +1 -0
- package/lib/commands/getAttribute.d.ts +20 -0
- package/lib/commands/getAttribute.js +22 -0
- package/lib/commands/getAttribute.js.map +1 -0
- package/lib/commands/getClassName.d.ts +15 -0
- package/lib/commands/getClassName.js +21 -0
- package/lib/commands/getClassName.js.map +1 -0
- package/lib/commands/getCurrentDateInfo.d.ts +21 -0
- package/lib/commands/getCurrentDateInfo.js +25 -0
- package/lib/commands/getCurrentDateInfo.js.map +1 -0
- package/lib/commands/getId.d.ts +15 -0
- package/lib/commands/getId.js +21 -0
- package/lib/commands/getId.js.map +1 -0
- package/lib/commands/getNumElements.d.ts +14 -0
- package/lib/commands/getNumElements.js +19 -0
- package/lib/commands/getNumElements.js.map +1 -0
- package/lib/commands/getSpecialChars.d.ts +14 -0
- package/lib/commands/getSpecialChars.js +16 -0
- package/lib/commands/getSpecialChars.js.map +1 -0
- package/lib/commands/getTitle.d.ts +13 -0
- package/lib/commands/getTitle.js +20 -0
- package/lib/commands/getTitle.js.map +1 -0
- package/lib/commands/handleHarvardKey.d.ts +18 -0
- package/lib/commands/handleHarvardKey.js +56 -0
- package/lib/commands/handleHarvardKey.js.map +1 -0
- package/lib/commands/handleHarvardKey2.d.ts +14 -0
- package/lib/commands/handleHarvardKey2.js +88 -0
- package/lib/commands/handleHarvardKey2.js.map +1 -0
- package/lib/commands/launchAs.d.ts +20 -0
- package/lib/commands/launchAs.js +60 -0
- package/lib/commands/launchAs.js.map +1 -0
- package/lib/commands/launchLTIUsingToken.d.ts +19 -0
- package/lib/commands/launchLTIUsingToken.js +74 -0
- package/lib/commands/launchLTIUsingToken.js.map +1 -0
- package/lib/commands/listSelectLabels.d.ts +15 -0
- package/lib/commands/listSelectLabels.js +24 -0
- package/lib/commands/listSelectLabels.js.map +1 -0
- package/lib/commands/listSelectValues.d.ts +15 -0
- package/lib/commands/listSelectValues.js +26 -0
- package/lib/commands/listSelectValues.js.map +1 -0
- package/lib/commands/navigateToHref.d.ts +19 -0
- package/lib/commands/navigateToHref.js +23 -0
- package/lib/commands/navigateToHref.js.map +1 -0
- package/lib/commands/padWithZeros.d.ts +20 -0
- package/lib/commands/padWithZeros.js +24 -0
- package/lib/commands/padWithZeros.js.map +1 -0
- package/lib/commands/runScript.d.ts +16 -0
- package/lib/commands/runScript.js +25 -0
- package/lib/commands/runScript.js.map +1 -0
- package/lib/commands/typeInto.d.ts +20 -0
- package/lib/commands/typeInto.js +28 -0
- package/lib/commands/typeInto.js.map +1 -0
- package/lib/commands/uniquify.d.ts +15 -0
- package/lib/commands/uniquify.js +25 -0
- package/lib/commands/uniquify.js.map +1 -0
- package/lib/commands/visitCanvasEndpoint.d.ts +27 -0
- package/lib/commands/visitCanvasEndpoint.js +35 -0
- package/lib/commands/visitCanvasEndpoint.js.map +1 -0
- package/lib/commands/visitCanvasGETEndpoint.d.ts +20 -0
- package/lib/commands/visitCanvasGETEndpoint.js +26 -0
- package/lib/commands/visitCanvasGETEndpoint.js.map +1 -0
- package/lib/commands/waitForAtLeastOneElementPresent.d.ts +23 -0
- package/lib/commands/waitForAtLeastOneElementPresent.js +27 -0
- package/lib/commands/waitForAtLeastOneElementPresent.js.map +1 -0
- package/lib/commands/waitForElementVisible.d.ts +14 -0
- package/lib/commands/waitForElementVisible.js +20 -0
- package/lib/commands/waitForElementVisible.js.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/init.d.ts +6 -0
- package/lib/init.js +69 -0
- package/lib/init.js.map +1 -0
- package/lib/setup/genCommandImportFile.js +5 -0
- package/lib/setup/genCommandImportFile.js.map +1 -1
- package/lib/setup/genE2ELaunchFile.js +5 -0
- package/lib/setup/genE2ELaunchFile.js.map +1 -1
- package/lib/src/commands/extractDataFromClass.d.ts +7 -4
- package/lib/src/commands/extractDataFromClass.js +2 -1
- package/lib/src/commands/extractDataFromClass.js.map +1 -1
- package/lib/src/commands/extractDataFromClassByContents.d.ts +9 -5
- package/lib/src/commands/extractDataFromClassByContents.js +2 -1
- package/lib/src/commands/extractDataFromClassByContents.js.map +1 -1
- package/lib/src/commands/genTextOfLength.d.ts +20 -0
- package/lib/src/commands/genTextOfLength.js +20 -0
- package/lib/src/commands/genTextOfLength.js.map +1 -0
- package/lib/src/commands/getAttribute.d.ts +20 -0
- package/lib/src/commands/getAttribute.js +22 -0
- package/lib/src/commands/getAttribute.js.map +1 -0
- package/lib/src/commands/getClassName.d.ts +15 -0
- package/lib/src/commands/getClassName.js +21 -0
- package/lib/src/commands/getClassName.js.map +1 -0
- package/lib/src/commands/getCurrentDateInfo.d.ts +21 -0
- package/lib/src/commands/getCurrentDateInfo.js +25 -0
- package/lib/src/commands/getCurrentDateInfo.js.map +1 -0
- package/lib/src/commands/getId.d.ts +15 -0
- package/lib/src/commands/getId.js +21 -0
- package/lib/src/commands/getId.js.map +1 -0
- package/lib/src/commands/getJSON.d.ts +0 -1
- package/lib/src/commands/getJSON.js +1 -4
- package/lib/src/commands/getJSON.js.map +1 -1
- package/lib/src/commands/getSpecialChars.d.ts +14 -0
- package/lib/src/commands/getSpecialChars.js +16 -0
- package/lib/src/commands/getSpecialChars.js.map +1 -0
- package/lib/src/commands/getTitle.d.ts +13 -0
- package/lib/src/commands/getTitle.js +20 -0
- package/lib/src/commands/getTitle.js.map +1 -0
- package/lib/src/commands/index.js +29 -5
- package/lib/src/commands/index.js.map +1 -1
- package/lib/src/commands/launchLTIUsingToken.js +12 -4
- package/lib/src/commands/launchLTIUsingToken.js.map +1 -1
- package/lib/src/commands/listSelectLabels.d.ts +15 -0
- package/lib/src/commands/listSelectLabels.js +24 -0
- package/lib/src/commands/listSelectLabels.js.map +1 -0
- package/lib/src/commands/listSelectValues.d.ts +15 -0
- package/lib/src/commands/listSelectValues.js +27 -0
- package/lib/src/commands/listSelectValues.js.map +1 -0
- package/lib/src/commands/padWithZeros.d.ts +20 -0
- package/lib/src/commands/padWithZeros.js +24 -0
- package/lib/src/commands/padWithZeros.js.map +1 -0
- package/lib/src/commands/uniquify.d.ts +15 -0
- package/lib/src/commands/uniquify.js +26 -0
- package/lib/src/commands/uniquify.js.map +1 -0
- package/lib/src/commands/visitCanvasEndpoint.d.ts +26 -0
- package/lib/src/commands/visitCanvasEndpoint.js +36 -0
- package/lib/src/commands/visitCanvasEndpoint.js.map +1 -0
- package/lib/src/commands/waitForAtLeastOneElementPresent.d.ts +23 -0
- package/lib/src/commands/waitForAtLeastOneElementPresent.js +28 -0
- package/lib/src/commands/waitForAtLeastOneElementPresent.js.map +1 -0
- package/lib/src/init.js +28 -2
- package/lib/src/init.js.map +1 -1
- package/lib/start/constants/DEFAULT_THREADS_PER_COMBO.d.ts +6 -0
- package/lib/start/constants/DEFAULT_THREADS_PER_COMBO.js +9 -0
- package/lib/start/constants/DEFAULT_THREADS_PER_COMBO.js.map +1 -0
- package/lib/start/helpers/collectPngFiles.d.ts +9 -0
- package/lib/start/helpers/collectPngFiles.js +31 -0
- package/lib/start/helpers/collectPngFiles.js.map +1 -0
- package/lib/start/helpers/executeAllHeadlessCombinations.d.ts +15 -0
- package/lib/start/helpers/executeAllHeadlessCombinations.js +116 -0
- package/lib/start/helpers/executeAllHeadlessCombinations.js.map +1 -0
- package/lib/start/helpers/executeCypress.d.ts +17 -0
- package/lib/start/helpers/executeCypress.js +103 -0
- package/lib/start/helpers/executeCypress.js.map +1 -0
- package/lib/start/helpers/generateHtmlReport.d.ts +14 -0
- package/lib/start/helpers/generateHtmlReport.js +54 -0
- package/lib/start/helpers/generateHtmlReport.js.map +1 -0
- package/lib/start/helpers/generateReportHomepage.d.ts +9 -0
- package/lib/start/helpers/generateReportHomepage.js +142 -0
- package/lib/start/helpers/generateReportHomepage.js.map +1 -0
- package/lib/start/helpers/generateReporterConfig.d.ts +17 -0
- package/lib/start/helpers/generateReporterConfig.js +32 -0
- package/lib/start/helpers/generateReporterConfig.js.map +1 -0
- package/lib/start/helpers/getDateLabeledDir.d.ts +7 -0
- package/lib/start/helpers/getDateLabeledDir.js +38 -0
- package/lib/start/helpers/getDateLabeledDir.js.map +1 -0
- package/lib/start/helpers/mergeAllReportsAndGenerateHtml.d.ts +11 -0
- package/lib/start/helpers/mergeAllReportsAndGenerateHtml.js +121 -0
- package/lib/start/helpers/mergeAllReportsAndGenerateHtml.js.map +1 -0
- package/lib/start/helpers/mergeReports.d.ts +14 -0
- package/lib/start/helpers/mergeReports.js +63 -0
- package/lib/start/helpers/mergeReports.js.map +1 -0
- package/lib/start/helpers/reportHomepage.ejs +272 -0
- package/lib/start/helpers/runCypressHeadless.d.ts +18 -0
- package/lib/start/helpers/runCypressHeadless.js +138 -0
- package/lib/start/helpers/runCypressHeadless.js.map +1 -0
- package/lib/start/helpers/runCypressVisible.d.ts +8 -0
- package/lib/start/helpers/runCypressVisible.js +53 -0
- package/lib/start/helpers/runCypressVisible.js.map +1 -0
- package/lib/start/index.js +23 -5
- package/lib/start/index.js.map +1 -1
- package/lib/start/types/MochawesomeReporterConfig.d.ts +15 -0
- package/lib/start/types/MochawesomeReporterConfig.js +3 -0
- package/lib/start/types/MochawesomeReporterConfig.js.map +1 -0
- package/lib/start/types/Profile.d.ts +9 -0
- package/lib/start/types/Profile.js +3 -0
- package/lib/start/types/Profile.js.map +1 -0
- package/lib/start/types/ReportInfo.d.ts +14 -0
- package/lib/start/types/ReportInfo.js +3 -0
- package/lib/start/types/ReportInfo.js.map +1 -0
- package/lib/start/types/RunResult.d.ts +12 -0
- package/lib/start/types/RunResult.js +3 -0
- package/lib/start/types/RunResult.js.map +1 -0
- package/lib/start/types/ScreenshotInfo.d.ts +10 -0
- package/lib/start/types/ScreenshotInfo.js +3 -0
- package/lib/start/types/ScreenshotInfo.js.map +1 -0
- package/lib/start/types/TemplateReportInfo.d.ts +12 -0
- package/lib/start/types/TemplateReportInfo.js +3 -0
- package/lib/start/types/TemplateReportInfo.js.map +1 -0
- package/package.json +10 -8
- package/setup/genCommandImportFile.ts +6 -0
- package/setup/genE2ELaunchFile.ts +6 -0
- package/src/commands/extractDataFromClass.ts +17 -6
- package/src/commands/extractDataFromClassByContents.ts +21 -8
- package/src/commands/genTextOfLength.ts +54 -0
- package/src/commands/getAttribute.ts +58 -0
- package/src/commands/getClassName.ts +44 -0
- package/src/commands/getCurrentDateInfo.ts +57 -0
- package/src/commands/getId.ts +44 -0
- package/src/commands/getJSON.ts +0 -4
- package/src/commands/getSpecialChars.ts +34 -0
- package/src/commands/getTitle.ts +39 -0
- package/src/commands/index.ts +29 -5
- package/src/commands/launchLTIUsingToken.ts +12 -4
- package/src/commands/listSelectLabels.ts +47 -0
- package/src/commands/listSelectValues.ts +50 -0
- package/src/commands/padWithZeros.ts +53 -0
- package/src/commands/uniquify.ts +49 -0
- package/src/commands/visitCanvasEndpoint.ts +75 -0
- package/src/commands/waitForAtLeastOneElementPresent.ts +64 -0
- package/start/constants/DEFAULT_THREADS_PER_COMBO.ts +7 -0
- package/start/helpers/collectPngFiles.ts +25 -0
- package/start/helpers/executeAllHeadlessCombinations.ts +92 -0
- package/start/helpers/executeCypress.ts +66 -0
- package/start/helpers/generateHtmlReport.ts +71 -0
- package/start/helpers/generateReportHomepage.ts +148 -0
- package/start/helpers/generateReporterConfig.ts +39 -0
- package/start/helpers/getDateLabeledDir.ts +43 -0
- package/start/helpers/mergeAllReportsAndGenerateHtml.ts +150 -0
- package/start/helpers/mergeReports.ts +82 -0
- package/start/helpers/reportHomepage.ejs +272 -0
- package/start/helpers/runCypressHeadless.ts +164 -0
- package/start/helpers/runCypressVisible.ts +45 -0
- package/start/index.ts +23 -5
- package/start/types/MochawesomeReporterConfig.ts +23 -0
- package/start/types/Profile.ts +12 -0
- package/start/types/ReportInfo.ts +22 -0
- package/start/types/RunResult.ts +18 -0
- package/start/types/ScreenshotInfo.ts +13 -0
- package/start/types/TemplateReportInfo.ts +16 -0
- package/src/commands/visitCanvasGETEndpoint.ts +0 -61
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
15
|
+
if (ar || !(i in from)) {
|
|
16
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
17
|
+
ar[i] = from[i];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
|
+
};
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
/* eslint-disable no-console */
|
|
27
|
+
var fs_1 = __importDefault(require("fs"));
|
|
28
|
+
var path_1 = __importDefault(require("path"));
|
|
29
|
+
var ejs_1 = __importDefault(require("ejs"));
|
|
30
|
+
// Import helpers
|
|
31
|
+
var collectPngFiles_1 = __importDefault(require("./collectPngFiles"));
|
|
32
|
+
/**
|
|
33
|
+
* Generate an HTML homepage that links to all reports
|
|
34
|
+
* @author Yuen Ler Chow
|
|
35
|
+
* @param reports - Array of report information
|
|
36
|
+
* @param outputDir - The directory where the homepage should be created
|
|
37
|
+
*/
|
|
38
|
+
var generateReportHomepage = function (reports, outputDir) {
|
|
39
|
+
var homepagePath = path_1.default.join(outputDir, 'index.html');
|
|
40
|
+
var combinedReportPath = path_1.default.join(outputDir, 'all-runs.html');
|
|
41
|
+
var combinedJsonPath = path_1.default.join(outputDir, 'all-report-data.json');
|
|
42
|
+
var hasCombinedReport = fs_1.default.existsSync(combinedReportPath);
|
|
43
|
+
// Try to read combined stats from all-report-data.json
|
|
44
|
+
var combinedTotalTests = null;
|
|
45
|
+
var combinedPassedTests = null;
|
|
46
|
+
if (fs_1.default.existsSync(combinedJsonPath)) {
|
|
47
|
+
try {
|
|
48
|
+
var raw = fs_1.default.readFileSync(combinedJsonPath, 'utf-8');
|
|
49
|
+
var data = JSON.parse(raw);
|
|
50
|
+
var stats = (data && data.stats) || null;
|
|
51
|
+
if (stats && typeof stats.tests === 'number' && typeof stats.passes === 'number') {
|
|
52
|
+
combinedTotalTests = stats.tests;
|
|
53
|
+
combinedPassedTests = stats.passes;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
// File exists but couldn't be read/parsed - log warning
|
|
58
|
+
console.warn('⚠️ Could not read combined stats:', err);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Try to read per-combination stats from each combo's report-data.json
|
|
62
|
+
reports.forEach(function (report) {
|
|
63
|
+
var comboJsonPath = path_1.default.join(outputDir, "".concat(report.profileName, "-").concat(report.browser), 'report-data.json');
|
|
64
|
+
if (!fs_1.default.existsSync(comboJsonPath)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
var raw = fs_1.default.readFileSync(comboJsonPath, 'utf-8');
|
|
69
|
+
var data = JSON.parse(raw);
|
|
70
|
+
var stats = (data && data.stats) || null;
|
|
71
|
+
if (stats && typeof stats.tests === 'number' && typeof stats.passes === 'number') {
|
|
72
|
+
// eslint-disable-next-line no-param-reassign
|
|
73
|
+
report.totalTests = stats.tests;
|
|
74
|
+
// eslint-disable-next-line no-param-reassign
|
|
75
|
+
report.passedTests = stats.passes;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
// File exists but couldn't be read/parsed - log warning
|
|
80
|
+
console.warn("\u26A0\uFE0F Could not read stats for ".concat(report.profileName, "-").concat(report.browser, ":"), err);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
// Sort reports by profile name, then browser
|
|
84
|
+
var sortedReports = __spreadArray([], reports, true).sort(function (a, b) {
|
|
85
|
+
if (a.profileName !== b.profileName) {
|
|
86
|
+
return a.profileName.localeCompare(b.profileName);
|
|
87
|
+
}
|
|
88
|
+
return a.browser.localeCompare(b.browser);
|
|
89
|
+
});
|
|
90
|
+
// Prepare reports with computed fields for the template
|
|
91
|
+
var templateReports = sortedReports.map(function (report) {
|
|
92
|
+
// Compute relative report path
|
|
93
|
+
var relativeReportPath = null;
|
|
94
|
+
if (report.reportPath && fs_1.default.existsSync(report.reportPath)) {
|
|
95
|
+
relativeReportPath = path_1.default.relative(outputDir, report.reportPath).replace(/\\/g, '/');
|
|
96
|
+
}
|
|
97
|
+
// Collect screenshots
|
|
98
|
+
var screenshots = [];
|
|
99
|
+
var comboScreenshotsDir = path_1.default.join(outputDir, "".concat(report.profileName, "-").concat(report.browser), 'screenshots');
|
|
100
|
+
if (fs_1.default.existsSync(comboScreenshotsDir)) {
|
|
101
|
+
var pngFiles = (0, collectPngFiles_1.default)(comboScreenshotsDir);
|
|
102
|
+
pngFiles.forEach(function (rel) {
|
|
103
|
+
var href = path_1.default
|
|
104
|
+
.relative(outputDir, path_1.default.join(comboScreenshotsDir, rel))
|
|
105
|
+
.replace(/\\/g, '/');
|
|
106
|
+
screenshots.push({ href: href, name: rel });
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return __assign(__assign({}, report), { relativeReportPath: relativeReportPath, screenshots: screenshots });
|
|
110
|
+
});
|
|
111
|
+
// Group by profile
|
|
112
|
+
var reportsByProfile = {};
|
|
113
|
+
templateReports.forEach(function (report) {
|
|
114
|
+
if (!reportsByProfile[report.profileName]) {
|
|
115
|
+
reportsByProfile[report.profileName] = [];
|
|
116
|
+
}
|
|
117
|
+
reportsByProfile[report.profileName].push(report);
|
|
118
|
+
});
|
|
119
|
+
// Calculate summary stats
|
|
120
|
+
var totalRuns = reports.length;
|
|
121
|
+
var passedRuns = reports.filter(function (r) { return r.success; }).length;
|
|
122
|
+
var failedRuns = reports.filter(function (r) { return !r.success; }).length;
|
|
123
|
+
var profileCount = Object.keys(reportsByProfile).length;
|
|
124
|
+
// Load and render EJS template
|
|
125
|
+
var templatePath = path_1.default.join(__dirname, 'reportHomepage.ejs');
|
|
126
|
+
var templateFile = fs_1.default.readFileSync(templatePath, 'utf-8');
|
|
127
|
+
var html = ejs_1.default.render(templateFile, {
|
|
128
|
+
hasCombinedReport: hasCombinedReport,
|
|
129
|
+
combinedTotalTests: combinedTotalTests,
|
|
130
|
+
combinedPassedTests: combinedPassedTests,
|
|
131
|
+
totalRuns: totalRuns,
|
|
132
|
+
passedRuns: passedRuns,
|
|
133
|
+
failedRuns: failedRuns,
|
|
134
|
+
profileCount: profileCount,
|
|
135
|
+
reportsByProfile: reportsByProfile,
|
|
136
|
+
});
|
|
137
|
+
// Write the HTML file
|
|
138
|
+
fs_1.default.writeFileSync(homepagePath, html, 'utf-8');
|
|
139
|
+
console.log("\n\uD83D\uDCC4 Report homepage generated: ".concat(homepagePath));
|
|
140
|
+
};
|
|
141
|
+
exports.default = generateReportHomepage;
|
|
142
|
+
//# sourceMappingURL=generateReportHomepage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateReportHomepage.js","sourceRoot":"","sources":["../../../start/helpers/generateReportHomepage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import MochawesomeReporterConfig from '../types/MochawesomeReporterConfig';
|
|
2
|
+
/**
|
|
3
|
+
* Generate inline reporter configuration for cypress-multi-reporters
|
|
4
|
+
* that produces granular mochawesome JSON per spec
|
|
5
|
+
* @author Yuen Ler Chow
|
|
6
|
+
* @param opts - object of arguments
|
|
7
|
+
* @param opts.resultsDir - Base directory for results
|
|
8
|
+
* @param opts.profileName - Profile name
|
|
9
|
+
* @param opts.browserName - Browser name
|
|
10
|
+
* @returns Reporter config object
|
|
11
|
+
*/
|
|
12
|
+
declare const generateReporterConfig: (opts: {
|
|
13
|
+
resultsDir: string;
|
|
14
|
+
profileName: string;
|
|
15
|
+
browserName: string;
|
|
16
|
+
}) => MochawesomeReporterConfig;
|
|
17
|
+
export default generateReporterConfig;
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
var path_1 = __importDefault(require("path"));
|
|
7
|
+
/**
|
|
8
|
+
* Generate inline reporter configuration for cypress-multi-reporters
|
|
9
|
+
* that produces granular mochawesome JSON per spec
|
|
10
|
+
* @author Yuen Ler Chow
|
|
11
|
+
* @param opts - object of arguments
|
|
12
|
+
* @param opts.resultsDir - Base directory for results
|
|
13
|
+
* @param opts.profileName - Profile name
|
|
14
|
+
* @param opts.browserName - Browser name
|
|
15
|
+
* @returns Reporter config object
|
|
16
|
+
*/
|
|
17
|
+
var generateReporterConfig = function (opts) {
|
|
18
|
+
var resultsDir = opts.resultsDir, profileName = opts.profileName, browserName = opts.browserName;
|
|
19
|
+
var granularResultsDir = path_1.default.join(resultsDir, "".concat(profileName, "-").concat(browserName), 'granular-results');
|
|
20
|
+
return {
|
|
21
|
+
reporterEnabled: 'mochawesome',
|
|
22
|
+
mochawesomeReporterOptions: {
|
|
23
|
+
reportDir: granularResultsDir,
|
|
24
|
+
reportFilename: 'test-[name]',
|
|
25
|
+
overwrite: false,
|
|
26
|
+
html: false,
|
|
27
|
+
json: true,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
exports.default = generateReporterConfig;
|
|
32
|
+
//# sourceMappingURL=generateReporterConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateReporterConfig.js","sourceRoot":"","sources":["../../../start/helpers/generateReporterConfig.ts"],"names":[],"mappings":";;;;;AAAA,8CAAwB;AAGxB;;;;;;;;;GASG;AACH,IAAM,sBAAsB,GAAG,UAAC,IAI/B;IACS,IAAA,UAAU,GAA+B,IAAI,WAAnC,EAAE,WAAW,GAAkB,IAAI,YAAtB,EAAE,WAAW,GAAK,IAAI,YAAT,CAAU;IAEtD,IAAM,kBAAkB,GAAG,cAAI,CAAC,IAAI,CAClC,UAAU,EACV,UAAG,WAAW,cAAI,WAAW,CAAE,EAC/B,kBAAkB,CACnB,CAAC;IAEF,OAAO;QACL,eAAe,EAAE,aAAa;QAC9B,0BAA0B,EAAE;YAC1B,SAAS,EAAE,kBAAkB;YAC7B,cAAc,EAAE,aAAa;YAC7B,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,IAAI;SACX;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get a date-labeled directory path for results using Eastern Time
|
|
3
|
+
* @author Yuen Ler Chow
|
|
4
|
+
* @returns path to date-labeled directory (e.g., cypress-results/2024-1-15_3-05pm)
|
|
5
|
+
*/
|
|
6
|
+
declare const getDateLabeledDir: () => string;
|
|
7
|
+
export default getDateLabeledDir;
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
var path_1 = __importDefault(require("path"));
|
|
7
|
+
var getRootPath_1 = __importDefault(require("./getRootPath"));
|
|
8
|
+
/**
|
|
9
|
+
* Get a date-labeled directory path for results using Eastern Time
|
|
10
|
+
* @author Yuen Ler Chow
|
|
11
|
+
* @returns path to date-labeled directory (e.g., cypress-results/2024-1-15_3-05pm)
|
|
12
|
+
*/
|
|
13
|
+
var getDateLabeledDir = function () {
|
|
14
|
+
var root = (0, getRootPath_1.default)();
|
|
15
|
+
var now = new Date();
|
|
16
|
+
// Format date in Eastern Time
|
|
17
|
+
var str = now.toLocaleString('en-US', // Using US encoding (it's the only one installed on containers)
|
|
18
|
+
{ timeZone: 'America/New_York' });
|
|
19
|
+
// Parse the string for the date/time info
|
|
20
|
+
var _a = str.split(', '), dateStr = _a[0], timeStr = _a[1]; // Format: MM/DD/YYYY, HH:MM:SS AM
|
|
21
|
+
var _b = dateStr.split('/'), monthStr = _b[0], dayStr = _b[1], yearStr = _b[2]; // Format: MM/DD/YYYY
|
|
22
|
+
var _c = timeStr.split(':'), hourStr = _c[0], minStr = _c[1], ending = _c[2]; // Format: HH:MM:SS AM
|
|
23
|
+
// Create all time numbers
|
|
24
|
+
var year = Number.parseInt(yearStr, 10);
|
|
25
|
+
var month = Number.parseInt(monthStr, 10);
|
|
26
|
+
var day = Number.parseInt(dayStr, 10);
|
|
27
|
+
var minute = Number.parseInt(minStr, 10);
|
|
28
|
+
var hour12 = Number.parseInt(hourStr, 10);
|
|
29
|
+
// Determine AM/PM
|
|
30
|
+
var isAM = ending.toLowerCase().includes('am');
|
|
31
|
+
// Pad minute with leading zero if needed
|
|
32
|
+
var minutePadded = minute.toString().padStart(2, '0');
|
|
33
|
+
// Build formatted date string: YYYY-M-D_H-MMam/pm (no spaces for shell compatibility)
|
|
34
|
+
var formattedDate = "".concat(year, "-").concat(month, "-").concat(day, "_").concat(hour12, "-").concat(minutePadded).concat(isAM ? 'am' : 'pm');
|
|
35
|
+
return path_1.default.join(root, 'cypress-results', formattedDate);
|
|
36
|
+
};
|
|
37
|
+
exports.default = getDateLabeledDir;
|
|
38
|
+
//# sourceMappingURL=getDateLabeledDir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDateLabeledDir.js","sourceRoot":"","sources":["../../../start/helpers/getDateLabeledDir.ts"],"names":[],"mappings":";;;;;AAAA,8CAAwB;AACxB,8DAAwC;AAExC;;;;GAIG;AACH,IAAM,iBAAiB,GAAG;IACxB,IAAM,IAAI,GAAG,IAAA,qBAAW,GAAE,CAAC;IAC3B,IAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,8BAA8B;IAC9B,IAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAC5B,OAAO,EAAE,gEAAgE;IACzE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CACjC,CAAC;IAEF,0CAA0C;IACpC,IAAA,KAAqB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAnC,OAAO,QAAA,EAAE,OAAO,QAAmB,CAAC,CAAC,kCAAkC;IACxE,IAAA,KAA8B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAA/C,QAAQ,QAAA,EAAE,MAAM,QAAA,EAAE,OAAO,QAAsB,CAAC,CAAC,qBAAqB;IACvE,IAAA,KAA4B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAA7C,OAAO,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAsB,CAAC,CAAC,sBAAsB;IAE5E,0BAA0B;IAC1B,IAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,IAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3C,IAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE5C,kBAAkB;IAClB,IAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjD,yCAAyC;IACzC,IAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAExD,sFAAsF;IACtF,IAAM,aAAa,GAAG,UAAG,IAAI,cAAI,KAAK,cAAI,GAAG,cAAI,MAAM,cAAI,YAAY,SAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC;IAE/F,OAAO,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import RunResult from '../types/RunResult';
|
|
2
|
+
/**
|
|
3
|
+
* Merge all per-combination mochawesome JSON reports into a single JSON
|
|
4
|
+
* and generate one combined HTML report for all runs.
|
|
5
|
+
* Each suite/test is annotated with [profile][browser] in its title.
|
|
6
|
+
* @author Yuen Ler Chow
|
|
7
|
+
* @param outputDir - Date-labeled results directory
|
|
8
|
+
* @param results - Array of run results
|
|
9
|
+
*/
|
|
10
|
+
declare const mergeAllReportsAndGenerateHtml: (outputDir: string, results: RunResult[]) => void;
|
|
11
|
+
export default mergeAllReportsAndGenerateHtml;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable no-console */
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
// Import libs
|
|
8
|
+
var child_process_1 = require("child_process");
|
|
9
|
+
var fs_1 = __importDefault(require("fs"));
|
|
10
|
+
var path_1 = __importDefault(require("path"));
|
|
11
|
+
// Import helpers
|
|
12
|
+
var getRootPath_1 = __importDefault(require("./getRootPath"));
|
|
13
|
+
/**
|
|
14
|
+
* Recursively annotate mochawesome suites (not individual tests) with a label
|
|
15
|
+
* so the combined report shows profile+browser for each suite
|
|
16
|
+
* @author Yuen Ler Chow
|
|
17
|
+
* @param node - The mochawesome node to annotate
|
|
18
|
+
* @param label - The label to prepend to suite titles
|
|
19
|
+
*/
|
|
20
|
+
var annotateMochawesomeSuites = function (node, label) {
|
|
21
|
+
if (!node || typeof node !== 'object') {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// If this is an array of nodes, annotate each element
|
|
25
|
+
if (Array.isArray(node)) {
|
|
26
|
+
node.forEach(function (child) {
|
|
27
|
+
annotateMochawesomeSuites(child, label);
|
|
28
|
+
});
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Only annotate if this is a suite (has suites or tests arrays)
|
|
32
|
+
var isSuite = Array.isArray(node.suites) || Array.isArray(node.tests);
|
|
33
|
+
if (isSuite) {
|
|
34
|
+
if (typeof node.title === 'string') {
|
|
35
|
+
// eslint-disable-next-line no-param-reassign
|
|
36
|
+
node.title = "".concat(label).concat(node.title);
|
|
37
|
+
}
|
|
38
|
+
if (typeof node.fullTitle === 'string') {
|
|
39
|
+
// eslint-disable-next-line no-param-reassign
|
|
40
|
+
node.fullTitle = "".concat(label).concat(node.fullTitle);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Recurse into child suites (but not tests)
|
|
44
|
+
if (Array.isArray(node.suites)) {
|
|
45
|
+
node.suites.forEach(function (suite) {
|
|
46
|
+
annotateMochawesomeSuites(suite, label);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Merge all per-combination mochawesome JSON reports into a single JSON
|
|
52
|
+
* and generate one combined HTML report for all runs.
|
|
53
|
+
* Each suite/test is annotated with [profile][browser] in its title.
|
|
54
|
+
* @author Yuen Ler Chow
|
|
55
|
+
* @param outputDir - Date-labeled results directory
|
|
56
|
+
* @param results - Array of run results
|
|
57
|
+
*/
|
|
58
|
+
var mergeAllReportsAndGenerateHtml = function (outputDir, results) {
|
|
59
|
+
// Collect annotated copies of report-data.json files from successful runs
|
|
60
|
+
var annotatedJsonPaths = [];
|
|
61
|
+
results.forEach(function (result) {
|
|
62
|
+
var jsonPath = path_1.default.join(outputDir, "".concat(result.profileName, "-").concat(result.browser), 'report-data.json');
|
|
63
|
+
if (!fs_1.default.existsSync(jsonPath)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
// Import the json report
|
|
68
|
+
var raw = fs_1.default.readFileSync(jsonPath, 'utf-8');
|
|
69
|
+
var data = JSON.parse(raw);
|
|
70
|
+
var label_1 = "[".concat(result.profileName, "][").concat(result.browser, "] ");
|
|
71
|
+
if (Array.isArray(data.results)) {
|
|
72
|
+
data.results.forEach(function (res) {
|
|
73
|
+
if (res && res.suites) {
|
|
74
|
+
annotateMochawesomeSuites(res.suites, label_1);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
// Annotate tests with their profile+browser
|
|
79
|
+
var annotatedPath = path_1.default.join(outputDir, "".concat(result.profileName, "-").concat(result.browser, "-labeled.json"));
|
|
80
|
+
fs_1.default.writeFileSync(annotatedPath, JSON.stringify(data, null, 2), 'utf-8');
|
|
81
|
+
annotatedJsonPaths.push(annotatedPath);
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
console.error("Error annotating report for ".concat(result.profileName, " + ").concat(result.browser, ":"), e);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
if (annotatedJsonPaths.length === 0) {
|
|
88
|
+
console.warn('No annotated report-data.json files found. Skipping global merge.');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
var allReportDataPath = path_1.default.join(outputDir, 'all-report-data.json');
|
|
92
|
+
var allReportHtmlDir = outputDir;
|
|
93
|
+
try {
|
|
94
|
+
// Build mochawesome-merge command with all annotated JSON paths
|
|
95
|
+
var mergedArgs = (annotatedJsonPaths
|
|
96
|
+
.map(function (p) {
|
|
97
|
+
return "\"".concat(p, "\"");
|
|
98
|
+
})
|
|
99
|
+
.join(' '));
|
|
100
|
+
var mergeCommand = "npx mochawesome-merge ".concat(mergedArgs, " > \"").concat(allReportDataPath, "\"");
|
|
101
|
+
console.log('Merging all annotated report-data.json files into a single JSON for all runs...');
|
|
102
|
+
(0, child_process_1.execSync)(mergeCommand, {
|
|
103
|
+
stdio: 'inherit',
|
|
104
|
+
cwd: (0, getRootPath_1.default)(),
|
|
105
|
+
shell: '/bin/bash',
|
|
106
|
+
});
|
|
107
|
+
// Generate combined HTML using marge
|
|
108
|
+
var margeCommand = "npx marge \"".concat(allReportDataPath, "\" --reportDir \"").concat(allReportHtmlDir, "\" --reportFilename \"all-runs\"");
|
|
109
|
+
console.log('Generating combined HTML report for all runs...');
|
|
110
|
+
(0, child_process_1.execSync)(margeCommand, {
|
|
111
|
+
stdio: 'inherit',
|
|
112
|
+
cwd: (0, getRootPath_1.default)(),
|
|
113
|
+
});
|
|
114
|
+
console.log("Combined HTML report generated at: ".concat(path_1.default.join(allReportHtmlDir, 'all-runs.html')));
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
console.error('Error generating combined HTML report for all runs:', e);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
exports.default = mergeAllReportsAndGenerateHtml;
|
|
121
|
+
//# sourceMappingURL=mergeAllReportsAndGenerateHtml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeAllReportsAndGenerateHtml.js","sourceRoot":"","sources":["../../../start/helpers/mergeAllReportsAndGenerateHtml.ts"],"names":[],"mappings":";AAAA,+BAA+B;;;;;AAE/B,cAAc;AACd,+CAAyC;AACzC,0CAAoB;AACpB,8CAAwB;AAExB,iBAAiB;AACjB,8DAAwC;AAGxC;;;;;;GAMG;AACH,IAAM,yBAAyB,GAAG,UAAC,IAAS,EAAE,KAAa;IACzD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IAED,sDAAsD;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,UAAC,KAAU;YACtB,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,gEAAgE;IAChE,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnC,6CAA6C;YAC7C,IAAI,CAAC,KAAK,GAAG,UAAG,KAAK,SAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACvC,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACvC,6CAA6C;YAC7C,IAAI,CAAC,SAAS,GAAG,UAAG,KAAK,SAAG,IAAI,CAAC,SAAS,CAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAU;YAC7B,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,IAAM,8BAA8B,GAAG,UACrC,SAAiB,EACjB,OAAoB;IAEpB,0EAA0E;IAC1E,IAAM,kBAAkB,GAAa,EAAE,CAAC;IAExC,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM;QACrB,IAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CACxB,SAAS,EACT,UAAG,MAAM,CAAC,WAAW,cAAI,MAAM,CAAC,OAAO,CAAE,EACzC,kBAAkB,CACnB,CAAC;QACF,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,yBAAyB;YACzB,IAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAM,OAAK,GAAG,WAAI,MAAM,CAAC,WAAW,eAAK,MAAM,CAAC,OAAO,OAAI,CAAC;YAE5D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,GAAQ;oBAC5B,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;wBACtB,yBAAyB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAK,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,4CAA4C;YAC5C,IAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAC7B,SAAS,EACT,UAAG,MAAM,CAAC,WAAW,cAAI,MAAM,CAAC,OAAO,kBAAe,CACvD,CAAC;YACF,YAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACxE,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,sCAA+B,MAAM,CAAC,WAAW,gBAAM,MAAM,CAAC,OAAO,MAAG,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IAED,IAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IACvE,IAAM,gBAAgB,GAAG,SAAS,CAAC;IAEnC,IAAI,CAAC;QACH,gEAAgE;QAChE,IAAM,UAAU,GAAG,CACjB,kBAAkB;aACf,GAAG,CAAC,UAAC,CAAC;YACL,OAAO,YAAI,CAAC,OAAG,CAAC;QAClB,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CACb,CAAC;QACF,IAAM,YAAY,GAAG,gCAAyB,UAAU,kBAAO,iBAAiB,OAAG,CAAC;QAEpF,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;QAE/F,IAAA,wBAAQ,EAAC,YAAY,EAAE;YACrB,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,IAAA,qBAAW,GAAE;YAClB,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;QAEH,qCAAqC;QACrC,IAAM,YAAY,GAAG,sBAAc,iBAAiB,8BAAkB,gBAAgB,qCAA+B,CAAC;QAEtH,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAE/D,IAAA,wBAAQ,EACN,YAAY,EACZ;YACE,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,IAAA,qBAAW,GAAE;SACnB,CACF,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,6CAAsC,cAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAE,CAAC,CAAC;IACpG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge mochawesome JSON reports into a single JSON file using mochawesome-merge
|
|
3
|
+
* @author Yuen Ler Chow
|
|
4
|
+
* @param opts - object of arguments
|
|
5
|
+
* @param opts.resultsDir - Results directory containing the reports
|
|
6
|
+
* @param opts.profileName - Profile name
|
|
7
|
+
* @param opts.browserName - Browser name
|
|
8
|
+
*/
|
|
9
|
+
declare const mergeReports: (opts: {
|
|
10
|
+
resultsDir: string;
|
|
11
|
+
profileName: string;
|
|
12
|
+
browserName: string;
|
|
13
|
+
}) => void;
|
|
14
|
+
export default mergeReports;
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
+
/* eslint-disable no-console */
|
|
7
|
+
var child_process_1 = require("child_process");
|
|
8
|
+
var path_1 = __importDefault(require("path"));
|
|
9
|
+
var fs_1 = require("fs");
|
|
10
|
+
var getRootPath_1 = __importDefault(require("./getRootPath"));
|
|
11
|
+
/**
|
|
12
|
+
* Merge mochawesome JSON reports into a single JSON file using mochawesome-merge
|
|
13
|
+
* @author Yuen Ler Chow
|
|
14
|
+
* @param opts - object of arguments
|
|
15
|
+
* @param opts.resultsDir - Results directory containing the reports
|
|
16
|
+
* @param opts.profileName - Profile name
|
|
17
|
+
* @param opts.browserName - Browser name
|
|
18
|
+
*/
|
|
19
|
+
var mergeReports = function (opts) {
|
|
20
|
+
var resultsDir = opts.resultsDir, profileName = opts.profileName, browserName = opts.browserName;
|
|
21
|
+
var granularResultsDir = path_1.default.join(resultsDir, "".concat(profileName, "-").concat(browserName), 'granular-results');
|
|
22
|
+
var reportDataPath = path_1.default.join(resultsDir, "".concat(profileName, "-").concat(browserName), 'report-data.json');
|
|
23
|
+
console.log("\n\uD83D\uDCCA Merge Reports Debug for ".concat(profileName, " + ").concat(browserName, ":"));
|
|
24
|
+
console.log(" Granular results dir: ".concat(granularResultsDir));
|
|
25
|
+
console.log(" Report data path: ".concat(reportDataPath));
|
|
26
|
+
if (!(0, fs_1.existsSync)(granularResultsDir)) {
|
|
27
|
+
var errorMsg = "\u274C ERROR: Granular results directory does not exist: ".concat(granularResultsDir);
|
|
28
|
+
console.error(errorMsg);
|
|
29
|
+
throw new Error(errorMsg);
|
|
30
|
+
}
|
|
31
|
+
// List files in granular results directory
|
|
32
|
+
var files = (0, fs_1.readdirSync)(granularResultsDir);
|
|
33
|
+
var jsonFiles = files.filter(function (f) { return f.endsWith('.json'); });
|
|
34
|
+
console.log(" Found ".concat(jsonFiles.length, " JSON files: ").concat(jsonFiles.join(', ') || '(none)'));
|
|
35
|
+
if (jsonFiles.length === 0) {
|
|
36
|
+
var errorMsg = "\u274C ERROR: No JSON files found in granular results directory: ".concat(granularResultsDir);
|
|
37
|
+
console.error(errorMsg);
|
|
38
|
+
throw new Error(errorMsg);
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
var command = "npx mochawesome-merge \"".concat(path_1.default.join(granularResultsDir, '*.json'), "\" > \"").concat(reportDataPath, "\"");
|
|
42
|
+
console.log(" Running: ".concat(command));
|
|
43
|
+
console.log("Merging reports for ".concat(profileName, " + ").concat(browserName, "..."));
|
|
44
|
+
(0, child_process_1.execSync)(command, {
|
|
45
|
+
stdio: 'inherit',
|
|
46
|
+
cwd: (0, getRootPath_1.default)(),
|
|
47
|
+
shell: '/bin/bash',
|
|
48
|
+
});
|
|
49
|
+
// Verify the report was created
|
|
50
|
+
if (!(0, fs_1.existsSync)(reportDataPath)) {
|
|
51
|
+
var errorMsg = "\u274C ERROR: Report data was not created at: ".concat(reportDataPath);
|
|
52
|
+
console.error(errorMsg);
|
|
53
|
+
throw new Error(errorMsg);
|
|
54
|
+
}
|
|
55
|
+
console.log(" \u2705 Report data created successfully at: ".concat(reportDataPath));
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
console.error("Error merging reports for ".concat(profileName, " + ").concat(browserName, ":"), e);
|
|
59
|
+
throw e;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
exports.default = mergeReports;
|
|
63
|
+
//# sourceMappingURL=mergeReports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeReports.js","sourceRoot":"","sources":["../../../start/helpers/mergeReports.ts"],"names":[],"mappings":"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"}
|