dceky 1.0.5-beta.ky-declarations.13 → 1.0.6

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/checkRequiredFiles/index.js +7 -0
  88. package/lib/setup/checkRequiredFiles/index.js.map +1 -1
  89. package/lib/src/commands/extractDataFromClass.d.ts +7 -4
  90. package/lib/src/commands/extractDataFromClass.js +2 -1
  91. package/lib/src/commands/extractDataFromClass.js.map +1 -1
  92. package/lib/src/commands/extractDataFromClassByContents.d.ts +9 -5
  93. package/lib/src/commands/extractDataFromClassByContents.js +2 -1
  94. package/lib/src/commands/extractDataFromClassByContents.js.map +1 -1
  95. package/lib/src/commands/genTextOfLength.d.ts +20 -0
  96. package/lib/src/commands/genTextOfLength.js +20 -0
  97. package/lib/src/commands/genTextOfLength.js.map +1 -0
  98. package/lib/src/commands/getAttribute.d.ts +20 -0
  99. package/lib/src/commands/getAttribute.js +22 -0
  100. package/lib/src/commands/getAttribute.js.map +1 -0
  101. package/lib/src/commands/getClassName.d.ts +15 -0
  102. package/lib/src/commands/getClassName.js +21 -0
  103. package/lib/src/commands/getClassName.js.map +1 -0
  104. package/lib/src/commands/getCurrentDateInfo.d.ts +21 -0
  105. package/lib/src/commands/getCurrentDateInfo.js +25 -0
  106. package/lib/src/commands/getCurrentDateInfo.js.map +1 -0
  107. package/lib/src/commands/getId.d.ts +15 -0
  108. package/lib/src/commands/getId.js +21 -0
  109. package/lib/src/commands/getId.js.map +1 -0
  110. package/lib/src/commands/getJSON.d.ts +0 -1
  111. package/lib/src/commands/getJSON.js +1 -4
  112. package/lib/src/commands/getJSON.js.map +1 -1
  113. package/lib/src/commands/getSpecialChars.d.ts +14 -0
  114. package/lib/src/commands/getSpecialChars.js +16 -0
  115. package/lib/src/commands/getSpecialChars.js.map +1 -0
  116. package/lib/src/commands/getTitle.d.ts +13 -0
  117. package/lib/src/commands/getTitle.js +20 -0
  118. package/lib/src/commands/getTitle.js.map +1 -0
  119. package/lib/src/commands/index.js +29 -5
  120. package/lib/src/commands/index.js.map +1 -1
  121. package/lib/src/commands/launchLTIUsingToken.js +12 -4
  122. package/lib/src/commands/launchLTIUsingToken.js.map +1 -1
  123. package/lib/src/commands/listSelectLabels.d.ts +15 -0
  124. package/lib/src/commands/listSelectLabels.js +24 -0
  125. package/lib/src/commands/listSelectLabels.js.map +1 -0
  126. package/lib/src/commands/listSelectValues.d.ts +15 -0
  127. package/lib/src/commands/listSelectValues.js +27 -0
  128. package/lib/src/commands/listSelectValues.js.map +1 -0
  129. package/lib/src/commands/padWithZeros.d.ts +20 -0
  130. package/lib/src/commands/padWithZeros.js +24 -0
  131. package/lib/src/commands/padWithZeros.js.map +1 -0
  132. package/lib/src/commands/uniquify.d.ts +15 -0
  133. package/lib/src/commands/uniquify.js +26 -0
  134. package/lib/src/commands/uniquify.js.map +1 -0
  135. package/lib/src/commands/visitCanvasEndpoint.d.ts +26 -0
  136. package/lib/src/commands/visitCanvasEndpoint.js +36 -0
  137. package/lib/src/commands/visitCanvasEndpoint.js.map +1 -0
  138. package/lib/src/commands/waitForAtLeastOneElementPresent.d.ts +23 -0
  139. package/lib/src/commands/waitForAtLeastOneElementPresent.js +28 -0
  140. package/lib/src/commands/waitForAtLeastOneElementPresent.js.map +1 -0
  141. package/lib/src/genConfiguration/index.js +21 -3
  142. package/lib/src/genConfiguration/index.js.map +1 -1
  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/checkRequiredFiles/index.ts +7 -0
  204. package/src/commands/extractDataFromClass.ts +17 -6
  205. package/src/commands/extractDataFromClassByContents.ts +21 -8
  206. package/src/commands/genTextOfLength.ts +54 -0
  207. package/src/commands/getAttribute.ts +58 -0
  208. package/src/commands/getClassName.ts +44 -0
  209. package/src/commands/getCurrentDateInfo.ts +57 -0
  210. package/src/commands/getId.ts +44 -0
  211. package/src/commands/getJSON.ts +0 -4
  212. package/src/commands/getSpecialChars.ts +34 -0
  213. package/src/commands/getTitle.ts +39 -0
  214. package/src/commands/index.ts +29 -5
  215. package/src/commands/launchLTIUsingToken.ts +12 -4
  216. package/src/commands/listSelectLabels.ts +47 -0
  217. package/src/commands/listSelectValues.ts +50 -0
  218. package/src/commands/padWithZeros.ts +53 -0
  219. package/src/commands/uniquify.ts +49 -0
  220. package/src/commands/visitCanvasEndpoint.ts +75 -0
  221. package/src/commands/waitForAtLeastOneElementPresent.ts +64 -0
  222. package/src/genConfiguration/index.ts +20 -2
  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,23 @@
1
+ declare global {
2
+ namespace Cypress {
3
+ interface Chainable {
4
+ /**
5
+ * Wait for any element in a list to be present (check every tenth
6
+ * of a second for status)
7
+ * @author Gardenia Liu
8
+ * @param opts object containing all arguments
9
+ * @param opts.items list of CSS selectors of interest
10
+ * @param [opts.timeoutSec] the number of seconds to wait before
11
+ * timing out
12
+ * @returns the selector of the item that was found first, ties
13
+ * broken by which item shows up in the list first
14
+ */
15
+ waitForAtLeastOneElementPresent(opts: {
16
+ items: string[];
17
+ timeoutSec?: number;
18
+ }): Chainable<string>;
19
+ }
20
+ }
21
+ }
22
+ declare const waitForAtLeastOneElementPresent: () => void;
23
+ export default waitForAtLeastOneElementPresent;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /// <reference types="cypress" />
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /*----------------------------------------*/
5
+ /* --------------- Command -------------- */
6
+ /*----------------------------------------*/
7
+ var waitForAtLeastOneElementPresent = function () {
8
+ Cypress.Commands.add('waitForAtLeastOneElementPresent', function (opts) {
9
+ var items = opts.items, timeoutSec = opts.timeoutSec;
10
+ // Set timeout seconds to 10 if not specified
11
+ var timeoutMs = (timeoutSec || 10) * 1000;
12
+ // Combined selector for all items
13
+ var combinedSelector = items.join(', ');
14
+ // Wait for any of the elements to be visible
15
+ return (cy
16
+ .get(combinedSelector, { timeout: timeoutMs })
17
+ .should(function ($els) { return expect($els.is(':visible'), "at least one of [".concat(combinedSelector, "] visible")).to.be.true; })
18
+ .then(function ($els) {
19
+ var $firstVisible = $els.filter(':visible').first();
20
+ return items.find(function (sel) { return $firstVisible.is(sel); });
21
+ }));
22
+ });
23
+ };
24
+ /*----------------------------------------*/
25
+ /* --------------- Export --------------- */
26
+ /*----------------------------------------*/
27
+ exports.default = waitForAtLeastOneElementPresent;
28
+ //# sourceMappingURL=waitForAtLeastOneElementPresent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waitForAtLeastOneElementPresent.js","sourceRoot":"","sources":["../../../src/commands/waitForAtLeastOneElementPresent.ts"],"names":[],"mappings":";AAAA,iCAAiC;;AA8BjC,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAE5C,IAAM,+BAA+B,GAAG;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAClB,iCAAiC,EACjC,UAAC,IAA8C;QACrC,IAAA,KAAK,GAAiB,IAAI,MAArB,EAAE,UAAU,GAAK,IAAI,WAAT,CAAU;QACnC,6CAA6C;QAC7C,IAAM,SAAS,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAE5C,kCAAkC;QAClC,IAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1C,6CAA6C;QAC7C,OAAO,CACL,EAAE;aACC,GAAG,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;aAC7C,MAAM,CAAC,UAAC,IAAI,IAAO,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,2BAAoB,gBAAgB,cAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACrH,IAAI,CAAC,UAAC,IAAI;YACT,IAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC,IAAI,CAAC,UAAC,GAAG,IAAO,OAAO,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CACL,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAE5C,kBAAe,+BAA+B,CAAC"}
@@ -35,7 +35,7 @@ var CWD = (0, getRootPath_1.default)();
35
35
  * @author Gabe Abrams
36
36
  */
37
37
  var genConfiguration = function () {
38
- var _a, _b;
38
+ var _a, _b, _c, _d;
39
39
  // Define paths
40
40
  var GLOBALS_PATH = path_1.default.join(CWD, '/cypress/globals');
41
41
  var PROFILES_PATH = path_1.default.join(CWD, '/cypress/profiles');
@@ -44,7 +44,8 @@ var genConfiguration = function () {
44
44
  var GlobalResources = require(path_1.default.join(GLOBALS_PATH, '/GlobalResources'));
45
45
  var GlobalValues = require(path_1.default.join(GLOBALS_PATH, '/GlobalValues'));
46
46
  // Determine profile file name (default is stage)
47
- var profileName = process.env.CYPRESS_PROFILE || 'stage';
47
+ var profileName = process.env.CYPRESS_PROFILE || 'Stage';
48
+ var defaultProfileName = 'Default';
48
49
  // Load in chosen profile configuration
49
50
  var profileModules = {};
50
51
  try {
@@ -56,8 +57,25 @@ var genConfiguration = function () {
56
57
  console.warn("[cypress.config] Could not load profile '".concat(profileName, ".Profile'"), e);
57
58
  process.exit(1);
58
59
  }
60
+ // Load default profile configuration
61
+ var defaultProfileModules = {};
62
+ try {
63
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
64
+ var mod = require(path_1.default.join(PROFILES_PATH, "/".concat(defaultProfileName, ".Profile")));
65
+ defaultProfileModules = ((_d = (_c = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _c !== void 0 ? _c : mod) !== null && _d !== void 0 ? _d : {});
66
+ }
67
+ catch (e) {
68
+ console.warn("[cypress.config] Could not load profile '".concat(defaultProfileName, ".Profile'"), e);
69
+ process.exit(1);
70
+ }
59
71
  // NOTE: Order matters (later overrides earlier)
60
- var sources = [GlobalCredentials, GlobalResources, GlobalValues, profileModules];
72
+ var sources = [
73
+ GlobalCredentials,
74
+ GlobalResources,
75
+ GlobalValues,
76
+ profileModules,
77
+ defaultProfileModules,
78
+ ];
61
79
  // Split all sources into basic and dependent
62
80
  var splits = sources.map(function (source) {
63
81
  return (0, splitEnv_1.default)(source);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/genConfiguration/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/genConfiguration/index.ts"],"names":[],"mappings":"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"}
package/lib/src/init.js CHANGED
@@ -17,8 +17,21 @@ var launchLTIUsingToken_1 = __importDefault(require("./commands/launchLTIUsingTo
17
17
  var navigateToHref_1 = __importDefault(require("./commands/navigateToHref"));
18
18
  var runScript_1 = __importDefault(require("./commands/runScript"));
19
19
  var typeInto_1 = __importDefault(require("./commands/typeInto"));
20
- var visitCanvasGETEndpoint_1 = __importDefault(require("./commands/visitCanvasGETEndpoint"));
21
20
  var waitForElementVisible_1 = __importDefault(require("./commands/waitForElementVisible"));
21
+ // New commands
22
+ var genTextOfLength_1 = __importDefault(require("./commands/genTextOfLength"));
23
+ var getSpecialChars_1 = __importDefault(require("./commands/getSpecialChars"));
24
+ var uniquify_1 = __importDefault(require("./commands/uniquify"));
25
+ var getAttribute_1 = __importDefault(require("./commands/getAttribute"));
26
+ var getClassName_1 = __importDefault(require("./commands/getClassName"));
27
+ var getId_1 = __importDefault(require("./commands/getId"));
28
+ var getCurrentDateInfo_1 = __importDefault(require("./commands/getCurrentDateInfo"));
29
+ var getTitle_1 = __importDefault(require("./commands/getTitle"));
30
+ var listSelectLabels_1 = __importDefault(require("./commands/listSelectLabels"));
31
+ var listSelectValues_1 = __importDefault(require("./commands/listSelectValues"));
32
+ var padWithZeros_1 = __importDefault(require("./commands/padWithZeros"));
33
+ var visitCanvasEndpoint_1 = __importDefault(require("./commands/visitCanvasEndpoint"));
34
+ var waitForAtLeastOneElementPresent_1 = __importDefault(require("./commands/waitForAtLeastOneElementPresent"));
22
35
  /**
23
36
  * Initialize custom commands
24
37
  * @author Gabe Abrams
@@ -35,11 +48,24 @@ var init = function () {
35
48
  (0, navigateToHref_1.default)();
36
49
  (0, runScript_1.default)();
37
50
  (0, typeInto_1.default)();
38
- (0, visitCanvasGETEndpoint_1.default)();
39
51
  (0, waitForElementVisible_1.default)();
40
52
  (0, extractDataFromClass_1.default)();
41
53
  (0, extractDataFromClassByContents_1.default)();
42
54
  (0, getJSON_1.default)();
55
+ // New commands
56
+ (0, genTextOfLength_1.default)();
57
+ (0, getSpecialChars_1.default)();
58
+ (0, uniquify_1.default)();
59
+ (0, getAttribute_1.default)();
60
+ (0, getClassName_1.default)();
61
+ (0, getId_1.default)();
62
+ (0, getCurrentDateInfo_1.default)();
63
+ (0, getTitle_1.default)();
64
+ (0, listSelectLabels_1.default)();
65
+ (0, listSelectValues_1.default)();
66
+ (0, padWithZeros_1.default)();
67
+ (0, visitCanvasEndpoint_1.default)();
68
+ (0, waitForAtLeastOneElementPresent_1.default)();
43
69
  };
44
70
  exports.default = init;
45
71
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":";;;;;AAAA,sBAAsB;AACtB,6FAAuE;AACvE,6EAAuD;AACvD,mFAA6D;AAC7D,yFAAmE;AACnE,6GAAuF;AACvF,+DAAyC;AACzC,6EAAuD;AACvD,iFAA2D;AAC3D,iEAA2C;AAC3C,uFAAiE;AACjE,6EAAuD;AACvD,mEAA6C;AAC7C,iEAA2C;AAC3C,6FAAuE;AACvE,2FAAqE;AAErE;;;GAGG;AACH,IAAM,IAAI,GAAG;IACX,6BAA6B;IAC7B,IAAA,gCAAsB,GAAE,CAAC;IACzB,IAAA,wBAAc,GAAE,CAAC;IACjB,IAAA,2BAAiB,GAAE,CAAC;IACpB,IAAA,wBAAc,GAAE,CAAC;IACjB,IAAA,0BAAgB,GAAE,CAAC;IACnB,IAAA,kBAAQ,GAAE,CAAC;IACX,IAAA,6BAAmB,GAAE,CAAC;IACtB,IAAA,wBAAc,GAAE,CAAC;IACjB,IAAA,mBAAS,GAAE,CAAC;IACZ,IAAA,kBAAQ,GAAE,CAAC;IACX,IAAA,gCAAsB,GAAE,CAAC;IACzB,IAAA,+BAAqB,GAAE,CAAC;IACxB,IAAA,8BAAoB,GAAE,CAAC;IACvB,IAAA,wCAA8B,GAAE,CAAC;IACjC,IAAA,iBAAO,GAAE,CAAC;AACZ,CAAC,CAAC;AAEF,kBAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":";;;;;AAAA,sBAAsB;AACtB,6FAAuE;AACvE,6EAAuD;AACvD,mFAA6D;AAC7D,yFAAmE;AACnE,6GAAuF;AACvF,+DAAyC;AACzC,6EAAuD;AACvD,iFAA2D;AAC3D,iEAA2C;AAC3C,uFAAiE;AACjE,6EAAuD;AACvD,mEAA6C;AAC7C,iEAA2C;AAC3C,2FAAqE;AAErE,eAAe;AACf,+EAAyD;AACzD,+EAAyD;AACzD,iEAA2C;AAC3C,yEAAmD;AACnD,yEAAmD;AACnD,2DAAqC;AACrC,qFAA+D;AAC/D,iEAA2C;AAC3C,iFAA2D;AAC3D,iFAA2D;AAC3D,yEAAmD;AACnD,uFAAiE;AACjE,+GAAyF;AAEzF;;;GAGG;AACH,IAAM,IAAI,GAAG;IACX,6BAA6B;IAC7B,IAAA,gCAAsB,GAAE,CAAC;IACzB,IAAA,wBAAc,GAAE,CAAC;IACjB,IAAA,2BAAiB,GAAE,CAAC;IACpB,IAAA,wBAAc,GAAE,CAAC;IACjB,IAAA,0BAAgB,GAAE,CAAC;IACnB,IAAA,kBAAQ,GAAE,CAAC;IACX,IAAA,6BAAmB,GAAE,CAAC;IACtB,IAAA,wBAAc,GAAE,CAAC;IACjB,IAAA,mBAAS,GAAE,CAAC;IACZ,IAAA,kBAAQ,GAAE,CAAC;IACX,IAAA,+BAAqB,GAAE,CAAC;IACxB,IAAA,8BAAoB,GAAE,CAAC;IACvB,IAAA,wCAA8B,GAAE,CAAC;IACjC,IAAA,iBAAO,GAAE,CAAC;IAEV,eAAe;IACf,IAAA,yBAAe,GAAE,CAAC;IAClB,IAAA,yBAAe,GAAE,CAAC;IAClB,IAAA,kBAAQ,GAAE,CAAC;IACX,IAAA,sBAAY,GAAE,CAAC;IACf,IAAA,sBAAY,GAAE,CAAC;IACf,IAAA,eAAK,GAAE,CAAC;IACR,IAAA,4BAAkB,GAAE,CAAC;IACrB,IAAA,kBAAQ,GAAE,CAAC;IACX,IAAA,0BAAgB,GAAE,CAAC;IACnB,IAAA,0BAAgB,GAAE,CAAC;IACnB,IAAA,sBAAY,GAAE,CAAC;IACf,IAAA,6BAAmB,GAAE,CAAC;IACtB,IAAA,yCAA+B,GAAE,CAAC;AACpC,CAAC,CAAC;AAEF,kBAAe,IAAI,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Default number of threads per combo
3
+ * @author Yuen Ler Chow
4
+ */
5
+ declare const DEFAULT_THREADS_PER_COMBO = 2;
6
+ export default DEFAULT_THREADS_PER_COMBO;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Default number of threads per combo
5
+ * @author Yuen Ler Chow
6
+ */
7
+ var DEFAULT_THREADS_PER_COMBO = 2;
8
+ exports.default = DEFAULT_THREADS_PER_COMBO;
9
+ //# sourceMappingURL=DEFAULT_THREADS_PER_COMBO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DEFAULT_THREADS_PER_COMBO.js","sourceRoot":"","sources":["../../../start/constants/DEFAULT_THREADS_PER_COMBO.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,IAAM,yBAAyB,GAAG,CAAC,CAAC;AAEpC,kBAAe,yBAAyB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Collect all PNG files recursively from a directory
3
+ * @author Yuen Ler Chow
4
+ * @param dir - Directory to search
5
+ * @param prefix - Path prefix for relative paths
6
+ * @returns Array of relative file paths
7
+ */
8
+ declare const collectPngFiles: (dir: string, prefix?: string) => string[];
9
+ export default collectPngFiles;
@@ -0,0 +1,31 @@
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 fs_1 = __importDefault(require("fs"));
7
+ var path_1 = __importDefault(require("path"));
8
+ /**
9
+ * Collect all PNG files recursively from a directory
10
+ * @author Yuen Ler Chow
11
+ * @param dir - Directory to search
12
+ * @param prefix - Path prefix for relative paths
13
+ * @returns Array of relative file paths
14
+ */
15
+ var collectPngFiles = function (dir, prefix) {
16
+ if (prefix === void 0) { prefix = ''; }
17
+ var files = [];
18
+ var dirEntries = fs_1.default.readdirSync(dir, { withFileTypes: true });
19
+ dirEntries.forEach(function (entry) {
20
+ var fullPath = path_1.default.join(dir, entry.name);
21
+ if (entry.isDirectory()) {
22
+ files.push.apply(files, collectPngFiles(fullPath, path_1.default.join(prefix, entry.name)));
23
+ }
24
+ else if (entry.isFile() && entry.name.toLowerCase().endsWith('.png')) {
25
+ files.push(path_1.default.join(prefix, entry.name));
26
+ }
27
+ });
28
+ return files;
29
+ };
30
+ exports.default = collectPngFiles;
31
+ //# sourceMappingURL=collectPngFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectPngFiles.js","sourceRoot":"","sources":["../../../start/helpers/collectPngFiles.ts"],"names":[],"mappings":";;;;;AAAA,0CAAoB;AACpB,8CAAwB;AAExB;;;;;;GAMG;AACH,IAAM,eAAe,GAAG,UAAC,GAAW,EAAE,MAAW;IAAX,uBAAA,EAAA,WAAW;IAC/C,IAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAM,UAAU,GAAG,YAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,UAAU,CAAC,OAAO,CAAC,UAAC,KAAK;QACvB,IAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,OAAV,KAAK,EAAS,eAAe,CAAC,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;QAC1E,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,15 @@
1
+ import Profile from '../types/Profile';
2
+ /**
3
+ * Execute all headless Cypress test combinations in parallel
4
+ * @author Yuen Ler Chow
5
+ * @param opts - object of arguments
6
+ * @param opts.selectedProfiles - Array of selected profiles
7
+ * @param opts.selectedBrowsers - Array of selected browsers
8
+ * @param [opts.threadsPerCombo] - Number of parallel threads per combo (default: 2)
9
+ */
10
+ declare const executeAllHeadlessCombinations: (opts: {
11
+ selectedProfiles: Profile[];
12
+ selectedBrowsers: string[];
13
+ threadsPerCombo?: number;
14
+ }) => Promise<void>;
15
+ export default executeAllHeadlessCombinations;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ /* eslint-disable no-console */
43
+ var fs_1 = __importDefault(require("fs"));
44
+ var path_1 = __importDefault(require("path"));
45
+ // Import helpers
46
+ var runCypressHeadless_1 = __importDefault(require("./runCypressHeadless"));
47
+ var getDateLabeledDir_1 = __importDefault(require("./getDateLabeledDir"));
48
+ var generateReportHomepage_1 = __importDefault(require("./generateReportHomepage"));
49
+ var mergeAllReportsAndGenerateHtml_1 = __importDefault(require("./mergeAllReportsAndGenerateHtml"));
50
+ /**
51
+ * Execute all headless Cypress test combinations in parallel
52
+ * @author Yuen Ler Chow
53
+ * @param opts - object of arguments
54
+ * @param opts.selectedProfiles - Array of selected profiles
55
+ * @param opts.selectedBrowsers - Array of selected browsers
56
+ * @param [opts.threadsPerCombo] - Number of parallel threads per combo (default: 2)
57
+ */
58
+ var executeAllHeadlessCombinations = function (opts) { return __awaiter(void 0, void 0, void 0, function () {
59
+ var selectedProfiles, selectedBrowsers, threadsPerCombo, outputDir, combinations, runPromises, results, reportInfos, passed, failed;
60
+ return __generator(this, function (_a) {
61
+ switch (_a.label) {
62
+ case 0:
63
+ selectedProfiles = opts.selectedProfiles, selectedBrowsers = opts.selectedBrowsers, threadsPerCombo = opts.threadsPerCombo;
64
+ outputDir = (0, getDateLabeledDir_1.default)();
65
+ if (!fs_1.default.existsSync(outputDir)) {
66
+ fs_1.default.mkdirSync(outputDir, { recursive: true });
67
+ }
68
+ console.log("\uD83D\uDCC1 Results will be saved to: ".concat(outputDir, "\n"));
69
+ combinations = [];
70
+ selectedProfiles.forEach(function (profile) {
71
+ selectedBrowsers.forEach(function (browser) {
72
+ combinations.push({
73
+ profileName: profile.profileName,
74
+ browser: browser,
75
+ });
76
+ });
77
+ });
78
+ console.log("\uD83D\uDD04 Running ".concat(combinations.length, " test combination(s) in parallel...\n"));
79
+ runPromises = combinations.map(function (combo) {
80
+ return (0, runCypressHeadless_1.default)({
81
+ profileName: combo.profileName,
82
+ browser: combo.browser,
83
+ outputDir: outputDir,
84
+ numThreads: threadsPerCombo,
85
+ });
86
+ });
87
+ return [4 /*yield*/, Promise.all(runPromises)];
88
+ case 1:
89
+ results = _a.sent();
90
+ // Generate combined HTML report across all profile+browser combinations
91
+ (0, mergeAllReportsAndGenerateHtml_1.default)(outputDir, results);
92
+ reportInfos = results.map(function (result) {
93
+ return {
94
+ profileName: result.profileName,
95
+ browser: result.browser,
96
+ reportPath: result.reportPath || '',
97
+ success: result.success,
98
+ timestamp: new Date().toLocaleString(),
99
+ };
100
+ });
101
+ (0, generateReportHomepage_1.default)(reportInfos, outputDir);
102
+ passed = results.filter(function (r) { return r.success; }).length;
103
+ failed = results.filter(function (r) { return !r.success; }).length;
104
+ console.log('\n═══════════════════════════════════════════════════════════');
105
+ console.log('📊 Execution Summary:');
106
+ console.log(" Total: ".concat(results.length));
107
+ console.log(" \u2705 Passed: ".concat(passed));
108
+ console.log(" \u274C Failed: ".concat(failed));
109
+ console.log(" \uD83D\uDCC4 Report homepage: file://".concat(path_1.default.join(outputDir, 'index.html')));
110
+ console.log('═══════════════════════════════════════════════════════════\n');
111
+ return [2 /*return*/];
112
+ }
113
+ });
114
+ }); };
115
+ exports.default = executeAllHeadlessCombinations;
116
+ //# sourceMappingURL=executeAllHeadlessCombinations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeAllHeadlessCombinations.js","sourceRoot":"","sources":["../../../start/helpers/executeAllHeadlessCombinations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import Profile from '../types/Profile';
2
+ /**
3
+ * Execute Cypress tests in either headless or visible mode
4
+ * @author Yuen Ler Chow
5
+ * @param opts - object of arguments
6
+ * @param opts.selectedProfiles - Array of selected profiles
7
+ * @param opts.selectedBrowsers - Array of selected browsers
8
+ * @param opts.isHeadless - Whether to run in headless mode
9
+ * @param [opts.threadsPerCombo] - Number of parallel threads per combo (default: 2)
10
+ */
11
+ declare const executeCypress: (opts: {
12
+ selectedProfiles: Profile[];
13
+ selectedBrowsers: string[];
14
+ isHeadless: boolean;
15
+ threadsPerCombo?: number;
16
+ }) => Promise<void>;
17
+ export default executeCypress;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /* eslint-disable no-console */
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ var __generator = (this && this.__generator) || function (thisArg, body) {
13
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
14
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
15
+ function verb(n) { return function (v) { return step([n, v]); }; }
16
+ function step(op) {
17
+ if (f) throw new TypeError("Generator is already executing.");
18
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
19
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
20
+ if (y = 0, t) op = [op[0] & 2, t.value];
21
+ switch (op[0]) {
22
+ case 0: case 1: t = op; break;
23
+ case 4: _.label++; return { value: op[1], done: false };
24
+ case 5: _.label++; y = op[1]; op = [0]; continue;
25
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
26
+ default:
27
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
28
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
29
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
30
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
31
+ if (t[2]) _.ops.pop();
32
+ _.trys.pop(); continue;
33
+ }
34
+ op = body.call(thisArg, _);
35
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
36
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
37
+ }
38
+ };
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ // Import helpers
44
+ var runCypressVisible_1 = __importDefault(require("./runCypressVisible"));
45
+ var executeAllHeadlessCombinations_1 = __importDefault(require("./executeAllHeadlessCombinations"));
46
+ // Import constants
47
+ var DEFAULT_THREADS_PER_COMBO_1 = __importDefault(require("../constants/DEFAULT_THREADS_PER_COMBO"));
48
+ /**
49
+ * Execute Cypress tests in either headless or visible mode
50
+ * @author Yuen Ler Chow
51
+ * @param opts - object of arguments
52
+ * @param opts.selectedProfiles - Array of selected profiles
53
+ * @param opts.selectedBrowsers - Array of selected browsers
54
+ * @param opts.isHeadless - Whether to run in headless mode
55
+ * @param [opts.threadsPerCombo] - Number of parallel threads per combo (default: 2)
56
+ */
57
+ var executeCypress = function (opts) { return __awaiter(void 0, void 0, void 0, function () {
58
+ var selectedProfiles, selectedBrowsers, isHeadless, threadsPerCombo, profileName, error_1;
59
+ return __generator(this, function (_a) {
60
+ switch (_a.label) {
61
+ case 0:
62
+ selectedProfiles = opts.selectedProfiles, selectedBrowsers = opts.selectedBrowsers, isHeadless = opts.isHeadless, threadsPerCombo = opts.threadsPerCombo;
63
+ console.log('\n═══════════════════════════════════════════════════════════');
64
+ console.log('Starting Cypress with the following configuration:');
65
+ console.log("Profile(s): ".concat(selectedProfiles.map(function (p) { return p.profileName; }).join(', ')));
66
+ console.log("Browser(s): ".concat(selectedBrowsers.join(', ')));
67
+ console.log("Headless: ".concat(isHeadless));
68
+ if (isHeadless) {
69
+ console.log("Threads per combo: ".concat(threadsPerCombo !== null && threadsPerCombo !== void 0 ? threadsPerCombo : DEFAULT_THREADS_PER_COMBO_1.default));
70
+ }
71
+ console.log('═══════════════════════════════════════════════════════════\n');
72
+ _a.label = 1;
73
+ case 1:
74
+ _a.trys.push([1, 6, , 7]);
75
+ if (!!isHeadless) return [3 /*break*/, 3];
76
+ profileName = selectedProfiles[0].profileName;
77
+ return [4 /*yield*/, (0, runCypressVisible_1.default)(profileName)];
78
+ case 2:
79
+ _a.sent();
80
+ return [3 /*break*/, 5];
81
+ case 3:
82
+ // Headless mode: run parallel instances for each Profile+Browser combination
83
+ return [4 /*yield*/, (0, executeAllHeadlessCombinations_1.default)({
84
+ selectedProfiles: selectedProfiles,
85
+ selectedBrowsers: selectedBrowsers,
86
+ threadsPerCombo: threadsPerCombo,
87
+ })];
88
+ case 4:
89
+ // Headless mode: run parallel instances for each Profile+Browser combination
90
+ _a.sent();
91
+ _a.label = 5;
92
+ case 5: return [3 /*break*/, 7];
93
+ case 6:
94
+ error_1 = _a.sent();
95
+ console.error('\n❌ Error during execution:', error_1);
96
+ process.exit(1);
97
+ return [3 /*break*/, 7];
98
+ case 7: return [2 /*return*/];
99
+ }
100
+ });
101
+ }); };
102
+ exports.default = executeCypress;
103
+ //# sourceMappingURL=executeCypress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeCypress.js","sourceRoot":"","sources":["../../../start/helpers/executeCypress.ts"],"names":[],"mappings":";AAAA,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAK/B,iBAAiB;AACjB,0EAAoD;AACpD,oGAA8E;AAE9E,mBAAmB;AACnB,qGAA+E;AAE/E;;;;;;;;GAQG;AACH,IAAM,cAAc,GAAG,UACrB,IAKC;;;;;gBAGC,gBAAgB,GAId,IAAI,iBAJU,EAChB,gBAAgB,GAGd,IAAI,iBAHU,EAChB,UAAU,GAER,IAAI,WAFI,EACV,eAAe,GACb,IAAI,gBADS,CACR;gBAET,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;gBAC7E,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,sBAAe,gBAAgB,CAAC,GAAG,CAAC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC;gBAChG,OAAO,CAAC,GAAG,CAAC,sBAAe,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,oBAAa,UAAU,CAAE,CAAC,CAAC;gBACvC,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,6BAAsB,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,mCAAyB,CAAE,CAAC,CAAC;gBACpF,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;;;;qBAGvE,CAAC,UAAU,EAAX,wBAAW;gBAEL,WAAW,GAAK,gBAAgB,CAAC,CAAC,CAAC,YAAxB,CAAyB;gBAC5C,qBAAM,IAAA,2BAAiB,EAAC,WAAW,CAAC,EAAA;;gBAApC,SAAoC,CAAC;;;YAErC,6EAA6E;YAC7E,qBAAM,IAAA,wCAA8B,EAAC;oBACnC,gBAAgB,kBAAA;oBAChB,gBAAgB,kBAAA;oBAChB,eAAe,iBAAA;iBAChB,CAAC,EAAA;;gBALF,6EAA6E;gBAC7E,SAIE,CAAC;;;;;gBAGL,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAK,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;;;KAEnB,CAAC;AAEF,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Generate HTML report from merged JSON report using mochawesome-report-generator (marge)
3
+ * @author Yuen Ler Chow
4
+ * @param opts - object of arguments
5
+ * @param opts.resultsDir - Results directory
6
+ * @param opts.profileName - Profile name
7
+ * @param opts.browserName - Browser name
8
+ */
9
+ declare const generateHtmlReport: (opts: {
10
+ resultsDir: string;
11
+ profileName: string;
12
+ browserName: string;
13
+ }) => void;
14
+ export default generateHtmlReport;
@@ -0,0 +1,54 @@
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
+ * Generate HTML report from merged JSON report using mochawesome-report-generator (marge)
13
+ * @author Yuen Ler Chow
14
+ * @param opts - object of arguments
15
+ * @param opts.resultsDir - Results directory
16
+ * @param opts.profileName - Profile name
17
+ * @param opts.browserName - Browser name
18
+ */
19
+ var generateHtmlReport = function (opts) {
20
+ var resultsDir = opts.resultsDir, profileName = opts.profileName, browserName = opts.browserName;
21
+ var reportDataPath = path_1.default.join(resultsDir, "".concat(profileName, "-").concat(browserName), 'report-data.json');
22
+ var reportDir = path_1.default.join(resultsDir, "".concat(profileName, "-").concat(browserName), 'report');
23
+ var expectedHtmlPath = path_1.default.join(reportDir, 'report-data.html');
24
+ console.log("\n\uD83D\uDCC4 Generate HTML Report Debug for ".concat(profileName, " + ").concat(browserName, ":"));
25
+ console.log(" Report data path: ".concat(reportDataPath));
26
+ console.log(" Report output dir: ".concat(reportDir));
27
+ if (!(0, fs_1.existsSync)(reportDataPath)) {
28
+ var errorMsg = "\u274C ERROR: Report data JSON does not exist: ".concat(reportDataPath);
29
+ console.error(errorMsg);
30
+ throw new Error(errorMsg);
31
+ }
32
+ try {
33
+ var command = "npx marge \"".concat(reportDataPath, "\" --reportDir \"").concat(reportDir, "\"");
34
+ console.log(" Running: ".concat(command));
35
+ console.log("Generating HTML report for ".concat(profileName, " + ").concat(browserName, "..."));
36
+ (0, child_process_1.execSync)(command, {
37
+ stdio: 'inherit',
38
+ cwd: (0, getRootPath_1.default)(),
39
+ });
40
+ // Verify the HTML report was created
41
+ if (!(0, fs_1.existsSync)(expectedHtmlPath)) {
42
+ var errorMsg = "\u274C ERROR: HTML report was not created at: ".concat(expectedHtmlPath);
43
+ console.error(errorMsg);
44
+ throw new Error(errorMsg);
45
+ }
46
+ console.log(" \u2705 HTML report generated successfully at: ".concat(expectedHtmlPath));
47
+ }
48
+ catch (e) {
49
+ console.error("Error generating HTML report for ".concat(profileName, " + ").concat(browserName, ":"), e);
50
+ throw e;
51
+ }
52
+ };
53
+ exports.default = generateHtmlReport;
54
+ //# sourceMappingURL=generateHtmlReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateHtmlReport.js","sourceRoot":"","sources":["../../../start/helpers/generateHtmlReport.ts"],"names":[],"mappings":";;;;;AAAA,+BAA+B;AAC/B,+CAAyC;AACzC,8CAAwB;AACxB,yBAAgC;AAChC,8DAAwC;AAExC;;;;;;;GAOG;AACH,IAAM,kBAAkB,GAAG,UACzB,IAIC;IAEO,IAAA,UAAU,GAA+B,IAAI,WAAnC,EAAE,WAAW,GAAkB,IAAI,YAAtB,EAAE,WAAW,GAAK,IAAI,YAAT,CAAU;IAEtD,IAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAC9B,UAAU,EACV,UAAG,WAAW,cAAI,WAAW,CAAE,EAC/B,kBAAkB,CACnB,CAAC;IACF,IAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CACzB,UAAU,EACV,UAAG,WAAW,cAAI,WAAW,CAAE,EAC/B,QAAQ,CACT,CAAC;IACF,IAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAElE,OAAO,CAAC,GAAG,CAAC,wDAAuC,WAAW,gBAAM,WAAW,MAAG,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,+BAAwB,cAAc,CAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,gCAAyB,SAAS,CAAE,CAAC,CAAC;IAElD,IAAI,CAAC,IAAA,eAAU,EAAC,cAAc,CAAC,EAAE,CAAC;QAChC,IAAM,QAAQ,GAAG,yDAA6C,cAAc,CAAE,CAAC;QAC/E,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,IAAM,OAAO,GAAG,sBAAc,cAAc,8BAAkB,SAAS,OAAG,CAAC;QAE3E,OAAO,CAAC,GAAG,CAAC,sBAAe,OAAO,CAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,qCAA8B,WAAW,gBAAM,WAAW,QAAK,CAAC,CAAC;QAE7E,IAAA,wBAAQ,EAAC,OAAO,EAAE;YAChB,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,IAAA,qBAAW,GAAE;SACnB,CAAC,CAAC;QAEH,qCAAqC;QACrC,IAAI,CAAC,IAAA,eAAU,EAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,IAAM,QAAQ,GAAG,wDAA4C,gBAAgB,CAAE,CAAC;YAChF,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,2DAA+C,gBAAgB,CAAE,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,2CAAoC,WAAW,gBAAM,WAAW,MAAG,EAAE,CAAC,CAAC,CAAC;QACtF,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import ReportInfo from '../types/ReportInfo';
2
+ /**
3
+ * Generate an HTML homepage that links to all reports
4
+ * @author Yuen Ler Chow
5
+ * @param reports - Array of report information
6
+ * @param outputDir - The directory where the homepage should be created
7
+ */
8
+ declare const generateReportHomepage: (reports: ReportInfo[], outputDir: string) => void;
9
+ export default generateReportHomepage;