@zohodesk/testinglibrary 0.1.8 → 0.1.9-exp-actors
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/.babelrc +3 -0
- package/build/bdd-framework/cli/commands/env.js +1 -1
- package/build/bdd-framework/config/configDir.js +35 -0
- package/build/bdd-framework/config/enrichReporterData.js +23 -0
- package/build/bdd-framework/config/index.js +10 -6
- package/build/bdd-framework/cucumber/createTestStep.js +43 -0
- package/build/bdd-framework/cucumber/formatter/EventDataCollector.js +126 -0
- package/build/bdd-framework/cucumber/formatter/GherkinDocumentParser.js +72 -0
- package/build/bdd-framework/cucumber/formatter/PickleParser.js +25 -0
- package/build/bdd-framework/cucumber/formatter/durationHelpers.js +13 -0
- package/build/bdd-framework/cucumber/formatter/getColorFns.js +57 -0
- package/build/bdd-framework/cucumber/formatter/index.js +16 -0
- package/build/bdd-framework/cucumber/formatter/locationHelpers.js +16 -0
- package/build/bdd-framework/cucumber/loadFeatures.js +62 -31
- package/build/bdd-framework/cucumber/loadSteps.js +7 -0
- package/build/bdd-framework/cucumber/resolveFeaturePaths.js +62 -0
- package/build/bdd-framework/cucumber/stepArguments.js +21 -0
- package/build/bdd-framework/cucumber/valueChecker.js +23 -0
- package/build/bdd-framework/gen/formatter.js +11 -23
- package/build/bdd-framework/gen/index.js +41 -20
- package/build/bdd-framework/gen/testFile.js +69 -26
- package/build/bdd-framework/gen/testMeta.js +60 -0
- package/build/bdd-framework/gen/testNode.js +11 -12
- package/build/bdd-framework/hooks/scenario.js +29 -6
- package/build/bdd-framework/hooks/worker.js +7 -1
- package/build/bdd-framework/index.js +8 -1
- package/build/bdd-framework/playwright/getLocationInFile.js +36 -9
- package/build/bdd-framework/playwright/loadUtils.js +33 -0
- package/build/bdd-framework/playwright/transform.js +5 -1
- package/build/bdd-framework/reporter/cucumber/base.js +57 -0
- package/build/bdd-framework/reporter/cucumber/custom.js +73 -0
- package/build/bdd-framework/reporter/cucumber/helper.js +12 -0
- package/build/bdd-framework/reporter/cucumber/html.js +35 -0
- package/build/bdd-framework/reporter/cucumber/index.js +74 -0
- package/build/bdd-framework/reporter/cucumber/json.js +312 -0
- package/build/bdd-framework/reporter/cucumber/junit.js +205 -0
- package/build/bdd-framework/reporter/cucumber/message.js +20 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/AttachmentMapper.js +64 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Builder.js +196 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocument.js +43 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocumentClone.js +52 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocuments.js +105 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Hook.js +70 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Meta.js +45 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Pickles.js +27 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Projects.js +38 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCase.js +128 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRun.js +126 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRunHooks.js +102 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepAttachments.js +50 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepRun.js +88 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/index.js +30 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/pwUtils.js +51 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/timing.js +35 -0
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/types.js +5 -0
- package/build/bdd-framework/run/StepInvoker.js +21 -26
- package/build/bdd-framework/run/bddDataAttachment.js +46 -0
- package/build/bdd-framework/run/bddFixtures.js +31 -10
- package/build/bdd-framework/run/bddWorld.js +5 -2
- package/build/bdd-framework/run/bddWorldInternal.js +15 -0
- package/build/bdd-framework/snippets/index.js +3 -7
- package/build/bdd-framework/stepDefinitions/defineStep.js +1 -1
- package/build/bdd-framework/utils/AutofillMap.js +20 -0
- package/build/bdd-framework/utils/index.js +23 -0
- package/build/bdd-framework/utils/stripAnsiEscapes.js +20 -0
- package/build/core/playwright/builtInFixtures/cacheLayer.js +1 -0
- package/build/core/playwright/builtInFixtures/context.js +18 -1
- package/build/core/playwright/builtInFixtures/i18N.js +33 -0
- package/build/core/playwright/builtInFixtures/index.js +17 -1
- package/build/core/playwright/builtInFixtures/page.js +87 -39
- package/build/core/playwright/builtInFixtures/unauthenticatedPage.js +18 -0
- package/build/core/playwright/clear-caches.js +19 -8
- package/build/core/playwright/codegen.js +4 -4
- package/build/core/playwright/constants/browserTypes.js +12 -0
- package/build/core/playwright/custom-commands.js +1 -1
- package/build/core/playwright/env-initializer.js +10 -6
- package/build/core/playwright/helpers/auth/accountLogin.js +18 -0
- package/build/core/playwright/helpers/auth/checkAuthCookies.js +50 -0
- package/build/core/playwright/helpers/auth/getUrlOrigin.js +13 -0
- package/build/core/playwright/helpers/auth/getUsers.js +111 -0
- package/build/core/playwright/helpers/auth/index.js +70 -0
- package/build/core/playwright/helpers/auth/loginSteps.js +36 -0
- package/build/core/playwright/helpers/configFileNameProvider.js +24 -0
- package/build/core/playwright/helpers/getUserFixtures.js +23 -0
- package/build/core/playwright/helpers/mergeObjects.js +13 -0
- package/build/core/playwright/helpers/parseUserArgs.js +11 -0
- package/build/core/playwright/index.js +63 -1
- package/build/core/playwright/readConfigFile.js +23 -12
- package/build/core/playwright/report-generator.js +7 -7
- package/build/core/playwright/setup/config-creator.js +4 -1
- package/build/core/playwright/setup/config-utils.js +43 -7
- package/build/core/playwright/setup/custom-reporter.js +3 -2
- package/build/core/playwright/test-runner.js +20 -10
- package/build/core/playwright/types.js +43 -0
- package/build/index.d.ts +39 -2
- package/build/index.js +60 -11
- package/build/lib/cli.js +12 -3
- package/build/lib/post-install.js +18 -10
- package/build/setup-folder-structure/helper.js +3 -0
- package/build/setup-folder-structure/samples/auth-setup-sample.js +20 -21
- package/build/utils/cliArgsToObject.js +5 -1
- package/build/utils/fileUtils.js +3 -0
- package/build/utils/rootPath.js +16 -9
- package/changelog.md +13 -0
- package/npm-shrinkwrap.json +18 -12
- package/package.json +6 -4
- package/build/bdd-framework/config/dir.js +0 -27
- package/build/bdd-framework/cucumber/loadSources.js +0 -57
- /package/build/bdd-framework/cucumber/{gherkin.d.js → types.js} +0 -0
|
@@ -9,21 +9,32 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
9
9
|
var _fileUtils = require("../../utils/fileUtils");
|
|
10
10
|
var _logger = require("../../utils/logger");
|
|
11
11
|
var _readConfigFile = require("./readConfigFile");
|
|
12
|
+
function deleteAuthFiles(authFilePath) {
|
|
13
|
+
authFilePath.split('/').pop();
|
|
14
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting auth files present in ${authFilePath}`);
|
|
15
|
+
(0, _fileUtils.deleteFolder)(_path.default.resolve(process.cwd(), authFilePath));
|
|
16
|
+
}
|
|
17
|
+
function deletePlaywrightReport(reportPath) {
|
|
18
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting Playwright report ${reportPath}`);
|
|
19
|
+
(0, _fileUtils.deleteFolder)(reportPath);
|
|
20
|
+
}
|
|
21
|
+
function deleteGeneratedFeatures() {
|
|
22
|
+
const featuresGenPath = _path.default.resolve(process.cwd(), 'uat', '.features-gen');
|
|
23
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting generated features at ${featuresGenPath}`);
|
|
24
|
+
(0, _fileUtils.deleteFolder)(featuresGenPath);
|
|
25
|
+
}
|
|
12
26
|
function clearCaches() {
|
|
13
27
|
try {
|
|
14
28
|
const {
|
|
15
29
|
authFilePath,
|
|
16
30
|
reportPath
|
|
17
31
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
18
|
-
authFilePath
|
|
19
|
-
|
|
20
|
-
(
|
|
21
|
-
_logger.Logger.log(_logger.Logger.
|
|
22
|
-
(0, _fileUtils.deleteFolder)(reportPath);
|
|
23
|
-
(0, _fileUtils.deleteFolder)(_path.default.resolve(process.cwd(), 'uat', '.features-gen'));
|
|
24
|
-
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Caches Cleared');
|
|
32
|
+
deleteAuthFiles(authFilePath);
|
|
33
|
+
deletePlaywrightReport(reportPath);
|
|
34
|
+
deleteGeneratedFeatures();
|
|
35
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Caches Cleared. Now you can try running npm run uat');
|
|
25
36
|
} catch (err) {
|
|
26
|
-
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, 'Error While clearing cookies');
|
|
37
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, 'Error While clearing cookies. Try manually delete folder uat/playwright and uat/playwright-report');
|
|
27
38
|
}
|
|
28
39
|
}
|
|
29
40
|
var _default = exports.default = clearCaches;
|
|
@@ -9,11 +9,11 @@ var _child_process = require("child_process");
|
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
10
|
var _logger = require("../../utils/logger");
|
|
11
11
|
var _rootPath = require("../../utils/rootPath");
|
|
12
|
-
const userArgs = process.argv.slice(3);
|
|
13
|
-
const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
|
|
14
|
-
const command = playwrightPath;
|
|
15
|
-
const args = ['codegen'].concat(userArgs);
|
|
16
12
|
function generateCodegen() {
|
|
13
|
+
const domainUrl = process.argv.slice(3);
|
|
14
|
+
const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
|
|
15
|
+
const command = playwrightPath;
|
|
16
|
+
const args = ['codegen'].concat(domainUrl);
|
|
17
17
|
const childProcess = (0, _child_process.spawn)(command, args, {
|
|
18
18
|
stdio: 'inherit'
|
|
19
19
|
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BROWSER_PROJECT_MAPPING = void 0;
|
|
7
|
+
const BROWSER_PROJECT_MAPPING = exports.BROWSER_PROJECT_MAPPING = {
|
|
8
|
+
CHROME: 'chromium',
|
|
9
|
+
EDGE: 'Microsoft Edge',
|
|
10
|
+
FIREFOX: 'firefox',
|
|
11
|
+
SAFARI: 'webkit'
|
|
12
|
+
};
|
|
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CUSTOM_COMMANDS = void 0;
|
|
7
|
-
const CUSTOM_COMMANDS = exports.CUSTOM_COMMANDS = ['mode', 'tags', 'edition'];
|
|
7
|
+
const CUSTOM_COMMANDS = exports.CUSTOM_COMMANDS = ['mode', 'tags', 'edition', 'browsers', 'filePath'];
|
|
@@ -7,15 +7,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.initializeEnvConfig = initializeEnvConfig;
|
|
8
8
|
var _fs = require("fs");
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _configFileNameProvider = require("./helpers/configFileNameProvider");
|
|
11
|
+
function setEnvironmentVariables(mode, configJSON) {
|
|
12
|
+
process.env.mode = mode;
|
|
13
|
+
for (const key in configJSON) {
|
|
14
|
+
process.env[key] = configJSON[key];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
10
17
|
function initializeEnvConfig(mode = 'dev') {
|
|
11
18
|
try {
|
|
12
|
-
const configFile = (0, _fs.readFileSync)(_path.default.resolve(process.cwd(),
|
|
19
|
+
const configFile = (0, _fs.readFileSync)(_path.default.resolve(process.cwd(), `./${(0, _configFileNameProvider.getEnvConfigFilePath)(mode)}`));
|
|
13
20
|
const configJSON = JSON.parse(configFile);
|
|
14
|
-
|
|
15
|
-
for (const key in configJSON[mode]) {
|
|
16
|
-
process.env[key] = configJSON[mode][key];
|
|
17
|
-
}
|
|
21
|
+
setEnvironmentVariables(mode, configJSON);
|
|
18
22
|
} catch (err) {
|
|
19
|
-
throw new Error(
|
|
23
|
+
throw new Error(`Config File Not Exists. Please provide a config file ${(0, _configFileNameProvider.getEnvConfigFilePath)(mode)} to intiailize the environment variables`);
|
|
20
24
|
}
|
|
21
25
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _getUrlOrigin = _interopRequireDefault(require("./getUrlOrigin"));
|
|
9
|
+
async function accountLogin(page, useremail, password) {
|
|
10
|
+
await page.locator('#login_id').fill(useremail);
|
|
11
|
+
await page.locator('#nextbtn').click();
|
|
12
|
+
await page.locator('#password').fill(password);
|
|
13
|
+
await page.locator('#nextbtn').click();
|
|
14
|
+
const domainUrlOrigin = (0, _getUrlOrigin.default)(process.env.domain);
|
|
15
|
+
await page.waitForNavigation();
|
|
16
|
+
await Promise.race([page.waitForURL(`${domainUrlOrigin}/**`), page.waitForURL('**/announcement/**')]);
|
|
17
|
+
}
|
|
18
|
+
var _default = exports.default = accountLogin;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getAuthFileDirectory = getAuthFileDirectory;
|
|
8
|
+
exports.loadCookiesIfPresent = loadCookiesIfPresent;
|
|
9
|
+
exports.verifyIfCookieFileExists = verifyIfCookieFileExists;
|
|
10
|
+
var _path = _interopRequireDefault(require("path"));
|
|
11
|
+
var _fs = require("fs");
|
|
12
|
+
var _readConfigFile = require("../../readConfigFile");
|
|
13
|
+
/* eslint-disable no-console */
|
|
14
|
+
|
|
15
|
+
const authContent = {
|
|
16
|
+
cookies: []
|
|
17
|
+
};
|
|
18
|
+
function getAuthFileDirectory() {
|
|
19
|
+
const {
|
|
20
|
+
uatDirectory
|
|
21
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
22
|
+
return _path.default.resolve(_path.default.join(uatDirectory, 'playwright', '.auth'));
|
|
23
|
+
}
|
|
24
|
+
function verifyIfCookieFileExists(authFile) {
|
|
25
|
+
const authDirectory = getAuthFileDirectory();
|
|
26
|
+
if (!(0, _fs.existsSync)(authDirectory)) {
|
|
27
|
+
console.log('Creating auth directory for the first time setup...');
|
|
28
|
+
(0, _fs.mkdirSync)(authDirectory, {
|
|
29
|
+
recursive: true
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (!(0, _fs.existsSync)(authFile)) {
|
|
33
|
+
console.log('creating auth file..');
|
|
34
|
+
(0, _fs.writeFileSync)(authFile, JSON.stringify(authContent, null, 2));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function convertCookiesToParse(cookies, authFilePath) {
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(cookies);
|
|
40
|
+
} catch (err) {
|
|
41
|
+
throw new Error(` Error while parsing cookies ${err} \n${_path.default.resolve(process.cwd(), authFilePath)} File is Empty`);
|
|
42
|
+
// process.exit()
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async function loadCookiesIfPresent(page, authFile) {
|
|
46
|
+
verifyIfCookieFileExists(authFile);
|
|
47
|
+
const cookies = (0, _fs.readFileSync)(authFile);
|
|
48
|
+
const parsedCookies = convertCookiesToParse(cookies, authFile);
|
|
49
|
+
await page.context().addCookies(parsedCookies.cookies === undefined ? [] : parsedCookies.cookies);
|
|
50
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
function getUrlOrigin(url) {
|
|
8
|
+
const {
|
|
9
|
+
origin
|
|
10
|
+
} = new URL(url);
|
|
11
|
+
return origin;
|
|
12
|
+
}
|
|
13
|
+
var _default = exports.default = getUrlOrigin;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getDefaultActor = getDefaultActor;
|
|
8
|
+
exports.getListOfActors = getListOfActors;
|
|
9
|
+
exports.getRunMode = getRunMode;
|
|
10
|
+
exports.getUserForSelectedEditionAndProfile = getUserForSelectedEditionAndProfile;
|
|
11
|
+
exports.isCI = isCI;
|
|
12
|
+
exports.isDevelopmentSetup = isDevelopmentSetup;
|
|
13
|
+
var _path = _interopRequireDefault(require("path"));
|
|
14
|
+
var _fs = require("fs");
|
|
15
|
+
var _readConfigFile = require("../../readConfigFile");
|
|
16
|
+
/* eslint-disable global-require */
|
|
17
|
+
function getRunMode() {
|
|
18
|
+
let {
|
|
19
|
+
mode
|
|
20
|
+
} = process.env;
|
|
21
|
+
return mode || 'dev';
|
|
22
|
+
}
|
|
23
|
+
function isCI() {
|
|
24
|
+
const mode = getRunMode();
|
|
25
|
+
return mode === 'CI' || mode === 'ci';
|
|
26
|
+
}
|
|
27
|
+
function isDevelopmentSetup() {
|
|
28
|
+
const mode = getRunMode();
|
|
29
|
+
return mode === 'DEV' || mode === 'dev';
|
|
30
|
+
}
|
|
31
|
+
function getDefaultActor() {
|
|
32
|
+
const {
|
|
33
|
+
uatDirectory
|
|
34
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
35
|
+
const defaultSettingFile = `conf/${getRunMode()}/settings.json`;
|
|
36
|
+
const filePath = _path.default.join(uatDirectory, defaultSettingFile);
|
|
37
|
+
if (!(0, _fs.existsSync)(filePath)) {
|
|
38
|
+
throw new Error(`${defaultSettingFile} is missing.`);
|
|
39
|
+
}
|
|
40
|
+
return require(filePath);
|
|
41
|
+
}
|
|
42
|
+
function getListOfActors() {
|
|
43
|
+
const {
|
|
44
|
+
uatDirectory
|
|
45
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
46
|
+
const mode = getRunMode();
|
|
47
|
+
const configFile = `conf/${mode}/actors/index`;
|
|
48
|
+
const filePath = _path.default.join(uatDirectory, configFile);
|
|
49
|
+
if (!(0, _fs.existsSync)(filePath + '.js')) {
|
|
50
|
+
throw new Error(`${configFile}.js is missing.`);
|
|
51
|
+
}
|
|
52
|
+
return require(filePath);
|
|
53
|
+
}
|
|
54
|
+
function getUserForSelectedEditionAndProfile(preferedEdition, preferredProfile, betaFeature, testDataPortal = null) {
|
|
55
|
+
const {
|
|
56
|
+
editions: userdata,
|
|
57
|
+
beta: betaPortals
|
|
58
|
+
} = getListOfActors();
|
|
59
|
+
const primaryUser = getDefaultActor();
|
|
60
|
+
const edition = preferedEdition || primaryUser.edition;
|
|
61
|
+
const profile = preferredProfile || primaryUser.profile;
|
|
62
|
+
let selectedProfile = {};
|
|
63
|
+
if (betaFeature && betaFeature !== null) {
|
|
64
|
+
if (!betaPortals.hasOwnProperty(betaFeature)) {
|
|
65
|
+
throw new Error(`There is no "${betaFeature}" beta feature configured.`);
|
|
66
|
+
}
|
|
67
|
+
const betaEdition = betaPortals[betaFeature].find(portal => portal.edition === edition);
|
|
68
|
+
if (!betaEdition) {
|
|
69
|
+
throw new Error(`There is no "${edition}" edition configured in "${betaFeature}" beta feature.`);
|
|
70
|
+
}
|
|
71
|
+
const {
|
|
72
|
+
profiles: betaProfiles,
|
|
73
|
+
...betaEditionData
|
|
74
|
+
} = betaEdition;
|
|
75
|
+
selectedProfile = betaProfiles.find(user => user.profile === profile);
|
|
76
|
+
if (!selectedProfile) {
|
|
77
|
+
throw new Error(`There is no "${profile}" configured in edition of "${edition}" in "${betaFeature}" beta features.`);
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
...betaEditionData,
|
|
81
|
+
...selectedProfile
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// TODO: We are returning the first data from array. We need to check the possiblity of having multiple users for same profile and possibly round robin
|
|
86
|
+
// For this we need to get the data from ci environment.
|
|
87
|
+
let testingPortal = null;
|
|
88
|
+
if (!userdata.hasOwnProperty(edition)) {
|
|
89
|
+
throw new Error(`There is no "${edition}" edition configured.`);
|
|
90
|
+
}
|
|
91
|
+
if (testDataPortal !== null) {
|
|
92
|
+
testingPortal = userdata[edition].find(editionData => editionData.orgName === testDataPortal);
|
|
93
|
+
if (!testingPortal) {
|
|
94
|
+
throw new Error(`There is no "${testDataPortal}" portal configured in "${edition}" edition.`);
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
testingPortal = userdata[edition] ? userdata[edition][0] : {};
|
|
98
|
+
}
|
|
99
|
+
const {
|
|
100
|
+
profiles,
|
|
101
|
+
...editionData
|
|
102
|
+
} = testingPortal;
|
|
103
|
+
selectedProfile = profiles.find(user => user.profile === profile);
|
|
104
|
+
if (!selectedProfile) {
|
|
105
|
+
throw new Error(`There is no "${profile}" profile configured in "${edition}" edition.`);
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
...editionData,
|
|
109
|
+
...selectedProfile
|
|
110
|
+
};
|
|
111
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "accountLogin", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _accountLogin.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "getDefaultActor", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _getUsers.getDefaultActor;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "getListOfActors", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () {
|
|
22
|
+
return _getUsers.getListOfActors;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(exports, "getRunMode", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _getUsers.getRunMode;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "getUserForSelectedEditionAndProfile", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () {
|
|
34
|
+
return _getUsers.getUserForSelectedEditionAndProfile;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "isCI", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function () {
|
|
40
|
+
return _getUsers.isCI;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(exports, "isDevelopmentSetup", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _getUsers.isDevelopmentSetup;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(exports, "loadCookiesIfPresent", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function () {
|
|
52
|
+
return _checkAuthCookies.loadCookiesIfPresent;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(exports, "performLoginSteps", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
get: function () {
|
|
58
|
+
return _loginSteps.default;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(exports, "verifyIfCookieFileExists", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function () {
|
|
64
|
+
return _checkAuthCookies.verifyIfCookieFileExists;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
var _accountLogin = _interopRequireDefault(require("./accountLogin"));
|
|
68
|
+
var _checkAuthCookies = require("./checkAuthCookies");
|
|
69
|
+
var _getUsers = require("./getUsers");
|
|
70
|
+
var _loginSteps = _interopRequireDefault(require("./loginSteps"));
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
var _accountLogin = _interopRequireDefault(require("./accountLogin"));
|
|
10
|
+
var _checkAuthCookies = require("./checkAuthCookies");
|
|
11
|
+
/* eslint-disable no-console */
|
|
12
|
+
|
|
13
|
+
async function performLoginSteps({
|
|
14
|
+
page,
|
|
15
|
+
authFilePrefix,
|
|
16
|
+
useremail,
|
|
17
|
+
password
|
|
18
|
+
}, isLoggedIn) {
|
|
19
|
+
const authFile = _path.default.resolve(_path.default.join((0, _checkAuthCookies.getAuthFileDirectory)(), `${authFilePrefix}-cookies.json`));
|
|
20
|
+
await (0, _checkAuthCookies.loadCookiesIfPresent)(page, authFile);
|
|
21
|
+
await page.goto(process.env.domain);
|
|
22
|
+
await page.waitForNavigation();
|
|
23
|
+
const loginStatus = await isLoggedIn(page);
|
|
24
|
+
if (!loginStatus) {
|
|
25
|
+
await (0, _accountLogin.default)(page, useremail, password);
|
|
26
|
+
await page.goto(process.env.domain);
|
|
27
|
+
|
|
28
|
+
// await page.waitForLoadState();
|
|
29
|
+
|
|
30
|
+
await isLoggedIn(page);
|
|
31
|
+
await page.context().storageState({
|
|
32
|
+
path: authFile
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
var _default = exports.default = performLoginSteps;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getEnvConfigFilePath = getEnvConfigFilePath;
|
|
8
|
+
exports.getReportFileName = getReportFileName;
|
|
9
|
+
exports.getUATFileName = getUATFileName;
|
|
10
|
+
var _path = _interopRequireDefault(require("path"));
|
|
11
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
12
|
+
function getUATFileName() {
|
|
13
|
+
return 'uat.config.js';
|
|
14
|
+
}
|
|
15
|
+
function getEnvConfigFilePath(mode) {
|
|
16
|
+
const confFilePath = _path.default.resolve(process.cwd(), `uat/conf/${mode}/settings.json`);
|
|
17
|
+
if (_fs.default.existsSync(confFilePath)) {
|
|
18
|
+
return `uat/conf/${mode}/settings.json`;
|
|
19
|
+
}
|
|
20
|
+
return `uat/env-config.json`;
|
|
21
|
+
}
|
|
22
|
+
function getReportFileName() {
|
|
23
|
+
return `test-summary.json`;
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _logger = require("../../../utils/logger");
|
|
8
|
+
var _readConfigFile = require("../readConfigFile");
|
|
9
|
+
function getUserFixtures() {
|
|
10
|
+
const {
|
|
11
|
+
additionalPages
|
|
12
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
13
|
+
|
|
14
|
+
// if (additionalPages.page || additionalPages.context) {
|
|
15
|
+
// // Logger.log(
|
|
16
|
+
// // Logger.INFO_TYPE,
|
|
17
|
+
// // 'Not allowed to override the page and context fixture. Use Test Setup in uat configuration'
|
|
18
|
+
// // );
|
|
19
|
+
// }
|
|
20
|
+
|
|
21
|
+
return additionalPages;
|
|
22
|
+
}
|
|
23
|
+
var _default = exports.default = getUserFixtures;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mergeObjects = mergeObjects;
|
|
7
|
+
// Utility function to merge objects using spread operator
|
|
8
|
+
function mergeObjects(obj1, obj2) {
|
|
9
|
+
return {
|
|
10
|
+
...obj1,
|
|
11
|
+
...obj2
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _cliArgsToObject = require("../../../utils/cliArgsToObject");
|
|
8
|
+
function parseUserArgs() {
|
|
9
|
+
return (0, _cliArgsToObject.cliArgsToObject)(process.argv.slice(2));
|
|
10
|
+
}
|
|
11
|
+
var _default = exports.default = parseUserArgs;
|
|
@@ -5,6 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.When = exports.Then = exports.Given = void 0;
|
|
8
|
+
Object.defineProperty(exports, "accountLogin", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () {
|
|
11
|
+
return _index.accountLogin;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
8
14
|
Object.defineProperty(exports, "createBdd", {
|
|
9
15
|
enumerable: true,
|
|
10
16
|
get: function () {
|
|
@@ -17,17 +23,73 @@ Object.defineProperty(exports, "expect", {
|
|
|
17
23
|
return _test.expect;
|
|
18
24
|
}
|
|
19
25
|
});
|
|
26
|
+
Object.defineProperty(exports, "getDefaultActor", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () {
|
|
29
|
+
return _index.getDefaultActor;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports, "getListOfActors", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _index.getListOfActors;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(exports, "getRunMode", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () {
|
|
41
|
+
return _index.getRunMode;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(exports, "getUserForSelectedEditionAndProfile", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function () {
|
|
47
|
+
return _index.getUserForSelectedEditionAndProfile;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
Object.defineProperty(exports, "isCI", {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
get: function () {
|
|
53
|
+
return _index.isCI;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
Object.defineProperty(exports, "isDevelopmentSetup", {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
get: function () {
|
|
59
|
+
return _index.isDevelopmentSetup;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(exports, "loadCookiesIfPresent", {
|
|
63
|
+
enumerable: true,
|
|
64
|
+
get: function () {
|
|
65
|
+
return _index.loadCookiesIfPresent;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
Object.defineProperty(exports, "performLoginSteps", {
|
|
69
|
+
enumerable: true,
|
|
70
|
+
get: function () {
|
|
71
|
+
return _index.performLoginSteps;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
20
74
|
exports.test = void 0;
|
|
75
|
+
Object.defineProperty(exports, "verifyIfCookieFileExists", {
|
|
76
|
+
enumerable: true,
|
|
77
|
+
get: function () {
|
|
78
|
+
return _index.verifyIfCookieFileExists;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
21
81
|
var _bddFramework = require("../../bdd-framework");
|
|
22
82
|
var _test = require("@playwright/test");
|
|
23
83
|
var _readConfigFile = require("./readConfigFile");
|
|
24
84
|
var _builtInFixtures = _interopRequireDefault(require("./builtInFixtures"));
|
|
85
|
+
var _index = require("./helpers/auth/index");
|
|
86
|
+
var _getUserFixtures = _interopRequireDefault(require("./helpers/getUserFixtures"));
|
|
25
87
|
const {
|
|
26
|
-
additionalPages: userFixtures,
|
|
27
88
|
bddMode
|
|
28
89
|
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
29
90
|
let base = bddMode ? _bddFramework.test : _test.test;
|
|
30
91
|
const buildInFixtures = (0, _builtInFixtures.default)(bddMode);
|
|
92
|
+
const userFixtures = (0, _getUserFixtures.default)();
|
|
31
93
|
const test = exports.test = base.extend({
|
|
32
94
|
...buildInFixtures,
|
|
33
95
|
...userFixtures
|
|
@@ -4,16 +4,17 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.fileName = void 0;
|
|
8
7
|
exports.generateConfigFromFile = generateConfigFromFile;
|
|
9
8
|
exports.getAuthFilePath = getAuthFilePath;
|
|
10
9
|
exports.isUserConfigFileAvailable = isUserConfigFileAvailable;
|
|
11
10
|
var _fs = require("fs");
|
|
12
11
|
var _path = _interopRequireDefault(require("path"));
|
|
13
12
|
var _logger = require("../../utils/logger");
|
|
14
|
-
|
|
13
|
+
var _configFileNameProvider = require("./helpers/configFileNameProvider");
|
|
14
|
+
var _mergeObjects = require("./helpers/mergeObjects");
|
|
15
15
|
function getDefaultConfig() {
|
|
16
16
|
return {
|
|
17
|
+
uatDirectory: _path.default.join(process.cwd(), 'uat'),
|
|
17
18
|
headless: false,
|
|
18
19
|
browsers: ['Chrome'],
|
|
19
20
|
trace: false,
|
|
@@ -35,6 +36,7 @@ function getDefaultConfig() {
|
|
|
35
36
|
featureFilesFolder: 'feature-files',
|
|
36
37
|
stepDefinitionsFolder: 'steps',
|
|
37
38
|
testIdAttribute: 'data-testid',
|
|
39
|
+
testSetup: {},
|
|
38
40
|
editionOrder: ['Free', 'Express', 'Standard', 'Professional', 'Enterprise']
|
|
39
41
|
};
|
|
40
42
|
}
|
|
@@ -51,21 +53,29 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
|
51
53
|
_logger.Logger.log(_logger.Logger.INFO_TYPE, `key - ${configKey} is not yet supported in uat configuration. This will not be used while creating playwright configuration`);
|
|
52
54
|
}
|
|
53
55
|
});
|
|
54
|
-
return
|
|
55
|
-
...defaultConfig,
|
|
56
|
-
...configurationObj
|
|
57
|
-
};
|
|
56
|
+
return (0, _mergeObjects.mergeObjects)(defaultConfig, configurationObj);
|
|
58
57
|
}
|
|
59
|
-
|
|
60
58
|
/**
|
|
61
59
|
* @typedef {Object|null} viewportConfig
|
|
62
60
|
* @property {number} width - width of the viewport
|
|
63
|
-
* @property {number} height - height of the viewport
|
|
61
|
+
* @property {number} height - height of the viewport
|
|
62
|
+
*/
|
|
63
|
+
/**
|
|
64
|
+
* @typedef {Object|null} viewportConfig
|
|
65
|
+
* @property {number} width - width of the viewport
|
|
66
|
+
* @property {number} height - height of the viewport
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @typedef {Object|null} testSetupConfig
|
|
71
|
+
* @property {any} page - Function that will be called while setting up page fixtures
|
|
72
|
+
* @property {any} context - Function that will be called while setting up context fixtures
|
|
64
73
|
*/
|
|
65
74
|
|
|
66
75
|
/**
|
|
67
76
|
* Represents the user configuration object.
|
|
68
77
|
* @typedef {Object} UserConfig
|
|
78
|
+
* @property {string} uatDirectory - Directory in which uat configuration is places.
|
|
69
79
|
* @property {string} headless - Headless Browsers mode.
|
|
70
80
|
* @property {number} trace - trace for test cases.
|
|
71
81
|
* @property {boolean} video - video for test cases,
|
|
@@ -74,7 +84,7 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
|
74
84
|
* @property {boolean} isAuthMode - Auth Mode. config whether authentication step needed before running test cases
|
|
75
85
|
* @property {string} authFilePath - File Path where the cookies stored
|
|
76
86
|
* @property {any} browsers: List of browsers
|
|
77
|
-
* @property {string} openReportOn: default Option value (never, on-failure and always)
|
|
87
|
+
* @property {string} openReportOn: default Option value (never, on-failure and always)
|
|
78
88
|
* @property {any} reportPath : directory where report is generate
|
|
79
89
|
* @property {boolean} bddMode: Feature files needs to be processed
|
|
80
90
|
* @property {number} expectTimeout: time in milliseconds which the expect condition should fail
|
|
@@ -85,15 +95,16 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
|
|
|
85
95
|
* @property {viewportConfig} viewport: viewport configuration for the browser. Default is { width: 1280, height: 720 }
|
|
86
96
|
* @property {string} testIdAttribute: Change the default data-testid attribute. configure what attribute to search while calling getByTestId
|
|
87
97
|
* @property {Array} editionOrder: Order in the form of larger editions in the back. Edition with the most privelages should be last
|
|
98
|
+
* @property {testSetupConfig} testSetup: Specify page and context functions that will be called while intilaizing fixtures.
|
|
88
99
|
*/
|
|
89
100
|
|
|
90
101
|
/**
|
|
91
102
|
* Generates a configuration object from a file, if it exists.
|
|
92
103
|
*
|
|
93
104
|
* @returns {UserConfig}
|
|
94
|
-
*/
|
|
105
|
+
*/
|
|
95
106
|
function generateConfigFromFile() {
|
|
96
|
-
const filePath = _path.default.resolve(process.cwd(),
|
|
107
|
+
const filePath = _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)());
|
|
97
108
|
if ((0, _fs.existsSync)(filePath)) {
|
|
98
109
|
/** @type {UserConfig} */
|
|
99
110
|
const config = require(filePath);
|
|
@@ -103,7 +114,7 @@ function generateConfigFromFile() {
|
|
|
103
114
|
return {};
|
|
104
115
|
}
|
|
105
116
|
function isUserConfigFileAvailable() {
|
|
106
|
-
const filePath = _path.default.resolve(process.cwd(),
|
|
117
|
+
const filePath = _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)());
|
|
107
118
|
if ((0, _fs.existsSync)(filePath)) {
|
|
108
119
|
return true;
|
|
109
120
|
}
|