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.
- 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/checkRequiredFiles/index.js +7 -0
- package/lib/setup/checkRequiredFiles/index.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/genConfiguration/index.js +21 -3
- package/lib/src/genConfiguration/index.js.map +1 -1
- 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/checkRequiredFiles/index.ts +7 -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/src/genConfiguration/index.ts +20 -2
- 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,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 || '
|
|
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 = [
|
|
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":";;;;;;;;;;;;;;;;AAAA,+BAA+B;AAC/B,mCAAmC;AACnC,8CAA8C;AAC9C,8CAAwB;AAExB,iBAAiB;AACjB,mCAAuC;AAEvC,4BAA4B;AAC5B,wDAAkC;AAElC,iBAAiB;AACjB,gEAA0C;AAC1C,kFAA4D;AAC5D,sEAAgD;AAMhD,8BAA8B;AAC9B,IAAM,GAAG,GAAG,IAAA,qBAAW,GAAE,CAAC;AAE1B;;;;;GAKG;AACH,IAAM,gBAAgB,GAAG;;IACvB,eAAe;IACf,IAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACxD,IAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAE1D,gCAAgC;IAChC,IAAM,iBAAiB,GAAqB,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACnG,IAAM,eAAe,GAAqB,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC/F,IAAM,YAAY,GAAqB,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAEzF,iDAAiD;IACjD,IAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC;
|
|
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
|
package/lib/src/init.js.map
CHANGED
|
@@ -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,
|
|
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,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;
|