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.
Files changed (243) hide show
  1. package/README.md +45 -29
  2. package/lib/commands/assertDoesNotHaveClass.d.ts +18 -0
  3. package/lib/commands/assertDoesNotHaveClass.js +17 -0
  4. package/lib/commands/assertDoesNotHaveClass.js.map +1 -0
  5. package/lib/commands/assertHasClass.d.ts +18 -0
  6. package/lib/commands/assertHasClass.js +17 -0
  7. package/lib/commands/assertHasClass.js.map +1 -0
  8. package/lib/commands/assertNumElements.d.ts +18 -0
  9. package/lib/commands/assertNumElements.js +17 -0
  10. package/lib/commands/assertNumElements.js.map +1 -0
  11. package/lib/commands/clickWithRetry.d.ts +19 -0
  12. package/lib/commands/clickWithRetry.js +29 -0
  13. package/lib/commands/clickWithRetry.js.map +1 -0
  14. package/lib/commands/genTextOfLength.d.ts +20 -0
  15. package/lib/commands/genTextOfLength.js +20 -0
  16. package/lib/commands/genTextOfLength.js.map +1 -0
  17. package/lib/commands/getAttribute.d.ts +20 -0
  18. package/lib/commands/getAttribute.js +22 -0
  19. package/lib/commands/getAttribute.js.map +1 -0
  20. package/lib/commands/getClassName.d.ts +15 -0
  21. package/lib/commands/getClassName.js +21 -0
  22. package/lib/commands/getClassName.js.map +1 -0
  23. package/lib/commands/getCurrentDateInfo.d.ts +21 -0
  24. package/lib/commands/getCurrentDateInfo.js +25 -0
  25. package/lib/commands/getCurrentDateInfo.js.map +1 -0
  26. package/lib/commands/getId.d.ts +15 -0
  27. package/lib/commands/getId.js +21 -0
  28. package/lib/commands/getId.js.map +1 -0
  29. package/lib/commands/getNumElements.d.ts +14 -0
  30. package/lib/commands/getNumElements.js +19 -0
  31. package/lib/commands/getNumElements.js.map +1 -0
  32. package/lib/commands/getSpecialChars.d.ts +14 -0
  33. package/lib/commands/getSpecialChars.js +16 -0
  34. package/lib/commands/getSpecialChars.js.map +1 -0
  35. package/lib/commands/getTitle.d.ts +13 -0
  36. package/lib/commands/getTitle.js +20 -0
  37. package/lib/commands/getTitle.js.map +1 -0
  38. package/lib/commands/handleHarvardKey.d.ts +18 -0
  39. package/lib/commands/handleHarvardKey.js +56 -0
  40. package/lib/commands/handleHarvardKey.js.map +1 -0
  41. package/lib/commands/handleHarvardKey2.d.ts +14 -0
  42. package/lib/commands/handleHarvardKey2.js +88 -0
  43. package/lib/commands/handleHarvardKey2.js.map +1 -0
  44. package/lib/commands/launchAs.d.ts +20 -0
  45. package/lib/commands/launchAs.js +60 -0
  46. package/lib/commands/launchAs.js.map +1 -0
  47. package/lib/commands/launchLTIUsingToken.d.ts +19 -0
  48. package/lib/commands/launchLTIUsingToken.js +74 -0
  49. package/lib/commands/launchLTIUsingToken.js.map +1 -0
  50. package/lib/commands/listSelectLabels.d.ts +15 -0
  51. package/lib/commands/listSelectLabels.js +24 -0
  52. package/lib/commands/listSelectLabels.js.map +1 -0
  53. package/lib/commands/listSelectValues.d.ts +15 -0
  54. package/lib/commands/listSelectValues.js +26 -0
  55. package/lib/commands/listSelectValues.js.map +1 -0
  56. package/lib/commands/navigateToHref.d.ts +19 -0
  57. package/lib/commands/navigateToHref.js +23 -0
  58. package/lib/commands/navigateToHref.js.map +1 -0
  59. package/lib/commands/padWithZeros.d.ts +20 -0
  60. package/lib/commands/padWithZeros.js +24 -0
  61. package/lib/commands/padWithZeros.js.map +1 -0
  62. package/lib/commands/runScript.d.ts +16 -0
  63. package/lib/commands/runScript.js +25 -0
  64. package/lib/commands/runScript.js.map +1 -0
  65. package/lib/commands/typeInto.d.ts +20 -0
  66. package/lib/commands/typeInto.js +28 -0
  67. package/lib/commands/typeInto.js.map +1 -0
  68. package/lib/commands/uniquify.d.ts +15 -0
  69. package/lib/commands/uniquify.js +25 -0
  70. package/lib/commands/uniquify.js.map +1 -0
  71. package/lib/commands/visitCanvasEndpoint.d.ts +27 -0
  72. package/lib/commands/visitCanvasEndpoint.js +35 -0
  73. package/lib/commands/visitCanvasEndpoint.js.map +1 -0
  74. package/lib/commands/visitCanvasGETEndpoint.d.ts +20 -0
  75. package/lib/commands/visitCanvasGETEndpoint.js +26 -0
  76. package/lib/commands/visitCanvasGETEndpoint.js.map +1 -0
  77. package/lib/commands/waitForAtLeastOneElementPresent.d.ts +23 -0
  78. package/lib/commands/waitForAtLeastOneElementPresent.js +27 -0
  79. package/lib/commands/waitForAtLeastOneElementPresent.js.map +1 -0
  80. package/lib/commands/waitForElementVisible.d.ts +14 -0
  81. package/lib/commands/waitForElementVisible.js +20 -0
  82. package/lib/commands/waitForElementVisible.js.map +1 -0
  83. package/lib/index.js.map +1 -0
  84. package/lib/init.d.ts +6 -0
  85. package/lib/init.js +69 -0
  86. package/lib/init.js.map +1 -0
  87. package/lib/setup/genCommandImportFile.js +5 -0
  88. package/lib/setup/genCommandImportFile.js.map +1 -1
  89. package/lib/setup/genE2ELaunchFile.js +5 -0
  90. package/lib/setup/genE2ELaunchFile.js.map +1 -1
  91. package/lib/src/commands/extractDataFromClass.d.ts +7 -4
  92. package/lib/src/commands/extractDataFromClass.js +2 -1
  93. package/lib/src/commands/extractDataFromClass.js.map +1 -1
  94. package/lib/src/commands/extractDataFromClassByContents.d.ts +9 -5
  95. package/lib/src/commands/extractDataFromClassByContents.js +2 -1
  96. package/lib/src/commands/extractDataFromClassByContents.js.map +1 -1
  97. package/lib/src/commands/genTextOfLength.d.ts +20 -0
  98. package/lib/src/commands/genTextOfLength.js +20 -0
  99. package/lib/src/commands/genTextOfLength.js.map +1 -0
  100. package/lib/src/commands/getAttribute.d.ts +20 -0
  101. package/lib/src/commands/getAttribute.js +22 -0
  102. package/lib/src/commands/getAttribute.js.map +1 -0
  103. package/lib/src/commands/getClassName.d.ts +15 -0
  104. package/lib/src/commands/getClassName.js +21 -0
  105. package/lib/src/commands/getClassName.js.map +1 -0
  106. package/lib/src/commands/getCurrentDateInfo.d.ts +21 -0
  107. package/lib/src/commands/getCurrentDateInfo.js +25 -0
  108. package/lib/src/commands/getCurrentDateInfo.js.map +1 -0
  109. package/lib/src/commands/getId.d.ts +15 -0
  110. package/lib/src/commands/getId.js +21 -0
  111. package/lib/src/commands/getId.js.map +1 -0
  112. package/lib/src/commands/getJSON.d.ts +0 -1
  113. package/lib/src/commands/getJSON.js +1 -4
  114. package/lib/src/commands/getJSON.js.map +1 -1
  115. package/lib/src/commands/getSpecialChars.d.ts +14 -0
  116. package/lib/src/commands/getSpecialChars.js +16 -0
  117. package/lib/src/commands/getSpecialChars.js.map +1 -0
  118. package/lib/src/commands/getTitle.d.ts +13 -0
  119. package/lib/src/commands/getTitle.js +20 -0
  120. package/lib/src/commands/getTitle.js.map +1 -0
  121. package/lib/src/commands/index.js +29 -5
  122. package/lib/src/commands/index.js.map +1 -1
  123. package/lib/src/commands/launchLTIUsingToken.js +12 -4
  124. package/lib/src/commands/launchLTIUsingToken.js.map +1 -1
  125. package/lib/src/commands/listSelectLabels.d.ts +15 -0
  126. package/lib/src/commands/listSelectLabels.js +24 -0
  127. package/lib/src/commands/listSelectLabels.js.map +1 -0
  128. package/lib/src/commands/listSelectValues.d.ts +15 -0
  129. package/lib/src/commands/listSelectValues.js +27 -0
  130. package/lib/src/commands/listSelectValues.js.map +1 -0
  131. package/lib/src/commands/padWithZeros.d.ts +20 -0
  132. package/lib/src/commands/padWithZeros.js +24 -0
  133. package/lib/src/commands/padWithZeros.js.map +1 -0
  134. package/lib/src/commands/uniquify.d.ts +15 -0
  135. package/lib/src/commands/uniquify.js +26 -0
  136. package/lib/src/commands/uniquify.js.map +1 -0
  137. package/lib/src/commands/visitCanvasEndpoint.d.ts +26 -0
  138. package/lib/src/commands/visitCanvasEndpoint.js +36 -0
  139. package/lib/src/commands/visitCanvasEndpoint.js.map +1 -0
  140. package/lib/src/commands/waitForAtLeastOneElementPresent.d.ts +23 -0
  141. package/lib/src/commands/waitForAtLeastOneElementPresent.js +28 -0
  142. package/lib/src/commands/waitForAtLeastOneElementPresent.js.map +1 -0
  143. package/lib/src/init.js +28 -2
  144. package/lib/src/init.js.map +1 -1
  145. package/lib/start/constants/DEFAULT_THREADS_PER_COMBO.d.ts +6 -0
  146. package/lib/start/constants/DEFAULT_THREADS_PER_COMBO.js +9 -0
  147. package/lib/start/constants/DEFAULT_THREADS_PER_COMBO.js.map +1 -0
  148. package/lib/start/helpers/collectPngFiles.d.ts +9 -0
  149. package/lib/start/helpers/collectPngFiles.js +31 -0
  150. package/lib/start/helpers/collectPngFiles.js.map +1 -0
  151. package/lib/start/helpers/executeAllHeadlessCombinations.d.ts +15 -0
  152. package/lib/start/helpers/executeAllHeadlessCombinations.js +116 -0
  153. package/lib/start/helpers/executeAllHeadlessCombinations.js.map +1 -0
  154. package/lib/start/helpers/executeCypress.d.ts +17 -0
  155. package/lib/start/helpers/executeCypress.js +103 -0
  156. package/lib/start/helpers/executeCypress.js.map +1 -0
  157. package/lib/start/helpers/generateHtmlReport.d.ts +14 -0
  158. package/lib/start/helpers/generateHtmlReport.js +54 -0
  159. package/lib/start/helpers/generateHtmlReport.js.map +1 -0
  160. package/lib/start/helpers/generateReportHomepage.d.ts +9 -0
  161. package/lib/start/helpers/generateReportHomepage.js +142 -0
  162. package/lib/start/helpers/generateReportHomepage.js.map +1 -0
  163. package/lib/start/helpers/generateReporterConfig.d.ts +17 -0
  164. package/lib/start/helpers/generateReporterConfig.js +32 -0
  165. package/lib/start/helpers/generateReporterConfig.js.map +1 -0
  166. package/lib/start/helpers/getDateLabeledDir.d.ts +7 -0
  167. package/lib/start/helpers/getDateLabeledDir.js +38 -0
  168. package/lib/start/helpers/getDateLabeledDir.js.map +1 -0
  169. package/lib/start/helpers/mergeAllReportsAndGenerateHtml.d.ts +11 -0
  170. package/lib/start/helpers/mergeAllReportsAndGenerateHtml.js +121 -0
  171. package/lib/start/helpers/mergeAllReportsAndGenerateHtml.js.map +1 -0
  172. package/lib/start/helpers/mergeReports.d.ts +14 -0
  173. package/lib/start/helpers/mergeReports.js +63 -0
  174. package/lib/start/helpers/mergeReports.js.map +1 -0
  175. package/lib/start/helpers/reportHomepage.ejs +272 -0
  176. package/lib/start/helpers/runCypressHeadless.d.ts +18 -0
  177. package/lib/start/helpers/runCypressHeadless.js +138 -0
  178. package/lib/start/helpers/runCypressHeadless.js.map +1 -0
  179. package/lib/start/helpers/runCypressVisible.d.ts +8 -0
  180. package/lib/start/helpers/runCypressVisible.js +53 -0
  181. package/lib/start/helpers/runCypressVisible.js.map +1 -0
  182. package/lib/start/index.js +23 -5
  183. package/lib/start/index.js.map +1 -1
  184. package/lib/start/types/MochawesomeReporterConfig.d.ts +15 -0
  185. package/lib/start/types/MochawesomeReporterConfig.js +3 -0
  186. package/lib/start/types/MochawesomeReporterConfig.js.map +1 -0
  187. package/lib/start/types/Profile.d.ts +9 -0
  188. package/lib/start/types/Profile.js +3 -0
  189. package/lib/start/types/Profile.js.map +1 -0
  190. package/lib/start/types/ReportInfo.d.ts +14 -0
  191. package/lib/start/types/ReportInfo.js +3 -0
  192. package/lib/start/types/ReportInfo.js.map +1 -0
  193. package/lib/start/types/RunResult.d.ts +12 -0
  194. package/lib/start/types/RunResult.js +3 -0
  195. package/lib/start/types/RunResult.js.map +1 -0
  196. package/lib/start/types/ScreenshotInfo.d.ts +10 -0
  197. package/lib/start/types/ScreenshotInfo.js +3 -0
  198. package/lib/start/types/ScreenshotInfo.js.map +1 -0
  199. package/lib/start/types/TemplateReportInfo.d.ts +12 -0
  200. package/lib/start/types/TemplateReportInfo.js +3 -0
  201. package/lib/start/types/TemplateReportInfo.js.map +1 -0
  202. package/package.json +10 -8
  203. package/setup/genCommandImportFile.ts +6 -0
  204. package/setup/genE2ELaunchFile.ts +6 -0
  205. package/src/commands/extractDataFromClass.ts +17 -6
  206. package/src/commands/extractDataFromClassByContents.ts +21 -8
  207. package/src/commands/genTextOfLength.ts +54 -0
  208. package/src/commands/getAttribute.ts +58 -0
  209. package/src/commands/getClassName.ts +44 -0
  210. package/src/commands/getCurrentDateInfo.ts +57 -0
  211. package/src/commands/getId.ts +44 -0
  212. package/src/commands/getJSON.ts +0 -4
  213. package/src/commands/getSpecialChars.ts +34 -0
  214. package/src/commands/getTitle.ts +39 -0
  215. package/src/commands/index.ts +29 -5
  216. package/src/commands/launchLTIUsingToken.ts +12 -4
  217. package/src/commands/listSelectLabels.ts +47 -0
  218. package/src/commands/listSelectValues.ts +50 -0
  219. package/src/commands/padWithZeros.ts +53 -0
  220. package/src/commands/uniquify.ts +49 -0
  221. package/src/commands/visitCanvasEndpoint.ts +75 -0
  222. package/src/commands/waitForAtLeastOneElementPresent.ts +64 -0
  223. package/start/constants/DEFAULT_THREADS_PER_COMBO.ts +7 -0
  224. package/start/helpers/collectPngFiles.ts +25 -0
  225. package/start/helpers/executeAllHeadlessCombinations.ts +92 -0
  226. package/start/helpers/executeCypress.ts +66 -0
  227. package/start/helpers/generateHtmlReport.ts +71 -0
  228. package/start/helpers/generateReportHomepage.ts +148 -0
  229. package/start/helpers/generateReporterConfig.ts +39 -0
  230. package/start/helpers/getDateLabeledDir.ts +43 -0
  231. package/start/helpers/mergeAllReportsAndGenerateHtml.ts +150 -0
  232. package/start/helpers/mergeReports.ts +82 -0
  233. package/start/helpers/reportHomepage.ejs +272 -0
  234. package/start/helpers/runCypressHeadless.ts +164 -0
  235. package/start/helpers/runCypressVisible.ts +45 -0
  236. package/start/index.ts +23 -5
  237. package/start/types/MochawesomeReporterConfig.ts +23 -0
  238. package/start/types/Profile.ts +12 -0
  239. package/start/types/ReportInfo.ts +22 -0
  240. package/start/types/RunResult.ts +18 -0
  241. package/start/types/ScreenshotInfo.ts +13 -0
  242. package/start/types/TemplateReportInfo.ts +16 -0
  243. 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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"}