@zohodesk/testinglibrary 0.1.8-exp-bdd-v10 → 0.1.8-exp.10

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 (109) hide show
  1. package/.babelrc +21 -18
  2. package/.eslintrc.js +31 -31
  3. package/.prettierrc +5 -5
  4. package/README.md +17 -17
  5. package/bin/cli.js +2 -2
  6. package/build/bdd-framework/cli/commands/env.js +3 -3
  7. package/build/bdd-framework/cli/options.js +4 -4
  8. package/build/bdd-framework/cli/worker.js +3 -3
  9. package/build/bdd-framework/config/dir.js +6 -6
  10. package/build/bdd-framework/config/env.js +3 -3
  11. package/build/bdd-framework/config/index.js +2 -2
  12. package/build/bdd-framework/config/lang.js +2 -2
  13. package/build/bdd-framework/cucumber/buildStepDefinition.js +3 -3
  14. package/build/bdd-framework/cucumber/loadSnippetBuilder.js +3 -3
  15. package/build/bdd-framework/cucumber/loadSources.js +9 -9
  16. package/build/bdd-framework/gen/fixtures.js +8 -8
  17. package/build/bdd-framework/gen/formatter.js +7 -7
  18. package/build/bdd-framework/gen/i18n.js +3 -3
  19. package/build/bdd-framework/gen/index.js +2 -2
  20. package/build/bdd-framework/gen/testFile.js +16 -16
  21. package/build/bdd-framework/gen/testNode.js +3 -3
  22. package/build/bdd-framework/gen/testPoms.js +31 -31
  23. package/build/bdd-framework/hooks/scenario.js +6 -6
  24. package/build/bdd-framework/hooks/worker.js +4 -4
  25. package/build/bdd-framework/playwright/fixtureParameterNames.js +3 -3
  26. package/build/bdd-framework/playwright/getLocationInFile.js +4 -4
  27. package/build/bdd-framework/playwright/loadConfig.js +3 -3
  28. package/build/bdd-framework/playwright/testTypeImpl.js +11 -11
  29. package/build/bdd-framework/playwright/transform.js +4 -4
  30. package/build/bdd-framework/playwright/utils.js +2 -2
  31. package/build/bdd-framework/run/StepInvoker.js +2 -2
  32. package/build/bdd-framework/run/bddWorld.js +15 -15
  33. package/build/bdd-framework/snippets/index.js +2 -2
  34. package/build/bdd-framework/snippets/snippetSyntaxTs.js +4 -4
  35. package/build/bdd-framework/stepDefinitions/createBdd.js +2 -2
  36. package/build/bdd-framework/stepDefinitions/decorators/class.js +7 -7
  37. package/build/bdd-framework/stepDefinitions/decorators/steps.js +6 -6
  38. package/build/bdd-framework/stepDefinitions/defineStep.js +3 -3
  39. package/build/bdd-framework/stepDefinitions/stepConfig.js +5 -5
  40. package/build/bdd-framework/utils/exit.js +22 -18
  41. package/build/bdd-framework/utils/index.js +9 -9
  42. package/build/bdd-framework/utils/jsStringWrap.js +9 -9
  43. package/build/bdd-framework/utils/logger.js +2 -2
  44. package/build/core/playwright/builtInFixtures/addTags.js +1 -1
  45. package/build/core/playwright/builtInFixtures/context.js +12 -1
  46. package/build/core/playwright/builtInFixtures/i18N.js +33 -0
  47. package/build/core/playwright/builtInFixtures/index.js +8 -5
  48. package/build/core/playwright/builtInFixtures/page.js +53 -39
  49. package/build/core/playwright/builtInFixtures/unauthenticatedPage.js +18 -0
  50. package/build/core/playwright/clear-caches.js +19 -8
  51. package/build/core/playwright/codegen.js +4 -4
  52. package/build/core/playwright/constants/browserTypes.js +12 -0
  53. package/build/core/playwright/custom-commands.js +1 -1
  54. package/build/core/playwright/env-initializer.js +10 -6
  55. package/build/core/playwright/helpers/auth/accountLogin.js +18 -0
  56. package/build/core/playwright/helpers/auth/checkAuthCookies.js +47 -0
  57. package/build/core/playwright/helpers/auth/getUrlOrigin.js +13 -0
  58. package/build/core/playwright/helpers/auth/getUsers.js +72 -0
  59. package/build/core/playwright/helpers/auth/index.js +58 -0
  60. package/build/core/playwright/helpers/auth/loginSteps.js +36 -0
  61. package/build/core/playwright/helpers/configFileNameProvider.js +13 -0
  62. package/build/core/playwright/helpers/getUserFixtures.js +18 -0
  63. package/build/core/playwright/helpers/mergeObjects.js +13 -0
  64. package/build/core/playwright/index.js +68 -7
  65. package/build/core/playwright/readConfigFile.js +49 -39
  66. package/build/core/playwright/report-generator.js +7 -7
  67. package/build/core/playwright/setup/config-creator.js +13 -14
  68. package/build/core/playwright/setup/config-utils.js +37 -26
  69. package/build/core/playwright/tag-processor.js +2 -4
  70. package/build/core/playwright/test-runner.js +37 -42
  71. package/build/core/playwright/types.js +43 -0
  72. package/build/decorators.d.ts +1 -1
  73. package/build/decorators.js +16 -2
  74. package/build/index.d.ts +77 -60
  75. package/build/index.js +51 -9
  76. package/build/lib/cli.js +0 -3
  77. package/build/lib/post-install.js +15 -10
  78. package/build/parser/sample.feature +34 -34
  79. package/build/parser/sample.spec.js +18 -18
  80. package/build/setup-folder-structure/helper.js +2 -0
  81. package/build/setup-folder-structure/reportEnhancement/addonScript.html +24 -24
  82. package/build/setup-folder-structure/samples/auth-setup-sample.js +72 -72
  83. package/build/setup-folder-structure/samples/authUsers-sample.json +8 -8
  84. package/build/setup-folder-structure/samples/env-config-sample.json +20 -20
  85. package/build/setup-folder-structure/samples/git-ignore.sample.js +36 -36
  86. package/build/setup-folder-structure/samples/uat-config-sample.js +44 -44
  87. package/build/utils/cliArgsToObject.js +30 -26
  88. package/build/utils/fileUtils.js +4 -19
  89. package/build/utils/getFilePath.js +1 -2
  90. package/build/utils/rootPath.js +16 -9
  91. package/changelog.md +139 -131
  92. package/jest.config.js +63 -63
  93. package/npm-shrinkwrap.json +6469 -5980
  94. package/package.json +55 -54
  95. package/playwright.config.js +112 -112
  96. package/build/bdd-poc/core-runner/exportMethods.js +0 -20
  97. package/build/bdd-poc/core-runner/main.js +0 -10
  98. package/build/bdd-poc/core-runner/runner.js +0 -21
  99. package/build/bdd-poc/core-runner/stepDefinitions.js +0 -52
  100. package/build/bdd-poc/index.js +0 -26
  101. package/build/bdd-poc/test/cucumber/featureFileParer.js +0 -84
  102. package/build/bdd-poc/test/cucumber/parserCucumber.js +0 -15
  103. package/build/bdd-poc/test/stepGenerate/extractTestInputs.js +0 -37
  104. package/build/bdd-poc/test/stepGenerate/stepFileGenerate.js +0 -39
  105. package/build/bdd-poc/test/stepGenerate/stepsnippets.js +0 -58
  106. package/build/bdd-poc/test/tagsHandle.js +0 -69
  107. package/build/bdd-poc/test/testDataMap.js +0 -98
  108. package/build/bdd-poc/test/testStructure.js +0 -98
  109. package/build/bdd-poc/utils/stringManipulation.js +0 -26
@@ -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.split('/').pop();
19
- _logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting auth files present in ${authFilePath}`);
20
- (0, _fileUtils.deleteFolder)(_path.default.resolve(process.cwd(), authFilePath));
21
- _logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting Playwright report ${reportPath}`);
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'];
@@ -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[mode]) {
14
+ process.env[key] = configJSON[mode][key];
15
+ }
16
+ }
10
17
  function initializeEnvConfig(mode = 'dev') {
11
18
  try {
12
- const configFile = (0, _fs.readFileSync)(_path.default.resolve(process.cwd(), './uat/env-config.json'));
19
+ const configFile = (0, _fs.readFileSync)(_path.default.resolve(process.cwd(), `./${(0, _configFileNameProvider.getEnvConfigFilePath)()}`));
13
20
  const configJSON = JSON.parse(configFile);
14
- process.env.mode = mode;
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('Config File Not Exists. Please provide a config file to intiailize the environment variables');
23
+ throw new Error(`Config File Not Exists. Please provide a config file ${(0, _configFileNameProvider.getEnvConfigFilePath)()} 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,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.authDirectory = void 0;
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 {
16
+ uatDirectory
17
+ } = (0, _readConfigFile.generateConfigFromFile)();
18
+ const authDirectory = exports.authDirectory = _path.default.resolve(_path.default.join(uatDirectory, 'playwright', '.auth'));
19
+ const authContent = {
20
+ cookies: []
21
+ };
22
+ function verifyIfCookieFileExists(authFile) {
23
+ if (!(0, _fs.existsSync)(authDirectory)) {
24
+ console.log('Creating auth directory for the first time setup...');
25
+ (0, _fs.mkdirSync)(authDirectory, {
26
+ recursive: true
27
+ });
28
+ }
29
+ if (!(0, _fs.existsSync)(authFile)) {
30
+ console.log('creating auth file..');
31
+ (0, _fs.writeFileSync)(authFile, JSON.stringify(authContent, null, 2));
32
+ }
33
+ }
34
+ function convertCookiesToParse(cookies, authFilePath) {
35
+ try {
36
+ return JSON.parse(cookies);
37
+ } catch (err) {
38
+ throw new Error(` Error while parsing cookies ${err} \n${_path.default.resolve(process.cwd(), authFilePath)} File is Empty`);
39
+ // process.exit()
40
+ }
41
+ }
42
+ async function loadCookiesIfPresent(page, authFile) {
43
+ verifyIfCookieFileExists(authFile);
44
+ const cookies = (0, _fs.readFileSync)(authFile);
45
+ const parsedCookies = convertCookiesToParse(cookies, authFile);
46
+ await page.context().addCookies(parsedCookies.cookies === undefined ? [] : parsedCookies.cookies);
47
+ }
@@ -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,72 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getListOfUsers = getListOfUsers;
8
+ exports.getPrimaryUser = getPrimaryUser;
9
+ exports.getUserForSelectedEditionAndProfile = getUserForSelectedEditionAndProfile;
10
+ exports.isCI = isCI;
11
+ var _path = _interopRequireDefault(require("path"));
12
+ var _readConfigFile = require("../../readConfigFile");
13
+ /* eslint-disable global-require */
14
+ function isCI() {
15
+ return process.env.mode === 'CI' || process.env.mode === 'ci';
16
+ }
17
+ function getListOfUsers() {
18
+ let users;
19
+ const {
20
+ uatDirectory
21
+ } = (0, _readConfigFile.generateConfigFromFile)();
22
+ if (isCI()) {
23
+ users = require(_path.default.join(uatDirectory, 'conf/ci/actors/index'));
24
+ } else {
25
+ users = require(_path.default.join(uatDirectory, 'conf/dev/actors/index'));
26
+ }
27
+ return users;
28
+ }
29
+ function getPrimaryUser() {
30
+ let primaryUser;
31
+ const {
32
+ uatDirectory
33
+ } = (0, _readConfigFile.generateConfigFromFile)();
34
+ if (isCI()) {
35
+ primaryUser = require(_path.default.join(uatDirectory, 'conf/ci/settings.json'));
36
+ } else {
37
+ primaryUser = require(_path.default.join(uatDirectory, 'conf/dev/settings.json'));
38
+ }
39
+ return primaryUser;
40
+ }
41
+ function getUserForSelectedEditionAndProfile(preferedEdition, preferredProfile, darkLaunchFeature) {
42
+ const {
43
+ editions: userdata,
44
+ darkLaunch
45
+ } = getListOfUsers();
46
+ const primaryUser = getPrimaryUser();
47
+ const edition = preferedEdition || primaryUser.edition;
48
+ const profile = preferredProfile || primaryUser.role;
49
+ let selectedProfile = {};
50
+ if (darkLaunchFeature && darkLaunchFeature !== null) {
51
+ const {
52
+ profiles: darkLaunchProfiles,
53
+ ...darkLaunchEditionData
54
+ } = darkLaunch[darkLaunchFeature] ? darkLaunch[darkLaunchFeature][0] : {};
55
+ selectedProfile = darkLaunchProfiles.find(user => user.role === profile);
56
+ return {
57
+ ...darkLaunchEditionData,
58
+ ...selectedProfile
59
+ };
60
+ }
61
+ // TODO: We are returning the first data from array. We need to check the possiblity of having multiple users for same role and possibly round robin
62
+ // For this we need to get the data from ci environment.
63
+ const {
64
+ profiles,
65
+ ...editionData
66
+ } = userdata[edition] ? userdata[edition][0] : {};
67
+ selectedProfile = profiles.find(user => user.role === profile);
68
+ return {
69
+ ...editionData,
70
+ ...selectedProfile
71
+ };
72
+ }
@@ -0,0 +1,58 @@
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, "getListOfUsers", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _getUsers.getListOfUsers;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "getPrimaryUser", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _getUsers.getPrimaryUser;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "getUserForSelectedEditionAndProfile", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _getUsers.getUserForSelectedEditionAndProfile;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "isCI", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _getUsers.isCI;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "loadCookiesIfPresent", {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _checkAuthCookies.loadCookiesIfPresent;
41
+ }
42
+ });
43
+ Object.defineProperty(exports, "performLoginSteps", {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _loginSteps.default;
47
+ }
48
+ });
49
+ Object.defineProperty(exports, "verifyIfCookieFileExists", {
50
+ enumerable: true,
51
+ get: function () {
52
+ return _checkAuthCookies.verifyIfCookieFileExists;
53
+ }
54
+ });
55
+ var _accountLogin = _interopRequireDefault(require("./accountLogin"));
56
+ var _checkAuthCookies = require("./checkAuthCookies");
57
+ var _getUsers = require("./getUsers");
58
+ 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
+ role,
16
+ useremail,
17
+ password
18
+ }, isLoggedIn) {
19
+ const authFile = _path.default.resolve(_path.default.join(_checkAuthCookies.authDirectory, `${role}-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,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getEnvConfigFilePath = getEnvConfigFilePath;
7
+ exports.getUATFileName = getUATFileName;
8
+ function getUATFileName() {
9
+ return 'uat.config.js';
10
+ }
11
+ function getEnvConfigFilePath() {
12
+ return `uat/env-config.json`;
13
+ }
@@ -0,0 +1,18 @@
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
+ if (additionalPages.page || additionalPages.context) {
14
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Not allowed to override the page and context fixture. Use Test Setup in uat configuration');
15
+ }
16
+ return additionalPages;
17
+ }
18
+ 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
+ }
@@ -4,28 +4,89 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
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
+ });
14
+ Object.defineProperty(exports, "createBdd", {
15
+ enumerable: true,
16
+ get: function () {
17
+ return _bddFramework.createBdd;
18
+ }
19
+ });
7
20
  Object.defineProperty(exports, "expect", {
8
21
  enumerable: true,
9
22
  get: function () {
10
23
  return _test.expect;
11
24
  }
12
25
  });
26
+ Object.defineProperty(exports, "getListOfUsers", {
27
+ enumerable: true,
28
+ get: function () {
29
+ return _index.getListOfUsers;
30
+ }
31
+ });
32
+ Object.defineProperty(exports, "getPrimaryUser", {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _index.getPrimaryUser;
36
+ }
37
+ });
38
+ Object.defineProperty(exports, "getUserForSelectedEditionAndProfile", {
39
+ enumerable: true,
40
+ get: function () {
41
+ return _index.getUserForSelectedEditionAndProfile;
42
+ }
43
+ });
44
+ Object.defineProperty(exports, "isCI", {
45
+ enumerable: true,
46
+ get: function () {
47
+ return _index.isCI;
48
+ }
49
+ });
50
+ Object.defineProperty(exports, "loadCookiesIfPresent", {
51
+ enumerable: true,
52
+ get: function () {
53
+ return _index.loadCookiesIfPresent;
54
+ }
55
+ });
56
+ Object.defineProperty(exports, "performLoginSteps", {
57
+ enumerable: true,
58
+ get: function () {
59
+ return _index.performLoginSteps;
60
+ }
61
+ });
13
62
  exports.test = void 0;
63
+ Object.defineProperty(exports, "verifyIfCookieFileExists", {
64
+ enumerable: true,
65
+ get: function () {
66
+ return _index.verifyIfCookieFileExists;
67
+ }
68
+ });
69
+ var _bddFramework = require("../../bdd-framework");
14
70
  var _test = require("@playwright/test");
15
71
  var _readConfigFile = require("./readConfigFile");
16
72
  var _builtInFixtures = _interopRequireDefault(require("./builtInFixtures"));
17
- // import { createBdd, test as bddBase } from '../../bdd-framework';
18
-
73
+ var _index = require("./helpers/auth/index");
74
+ var _getUserFixtures = _interopRequireDefault(require("./helpers/getUserFixtures"));
19
75
  const {
20
- additionalPages: userFixtures,
21
76
  bddMode
22
77
  } = (0, _readConfigFile.generateConfigFromFile)();
23
- // In house BDD testing. so, use playwright test
24
- let base = _test.test;
78
+ let base = bddMode ? _bddFramework.test : _test.test;
25
79
  const buildInFixtures = (0, _builtInFixtures.default)(bddMode);
80
+ const userFixtures = (0, _getUserFixtures.default)();
26
81
  const test = exports.test = base.extend({
27
82
  ...buildInFixtures,
28
83
  ...userFixtures
29
84
  });
30
-
31
- // const { Given, When, Then } = createBdd();
85
+ const {
86
+ Given,
87
+ When,
88
+ Then
89
+ } = (0, _bddFramework.createBdd)();
90
+ exports.Then = Then;
91
+ exports.When = When;
92
+ exports.Given = Given;
@@ -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
- const fileName = exports.fileName = 'uat.config.js';
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,
@@ -51,49 +52,58 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
51
52
  _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
53
  }
53
54
  });
54
- return {
55
- ...defaultConfig,
56
- ...configurationObj
57
- };
55
+ return (0, _mergeObjects.mergeObjects)(defaultConfig, configurationObj);
58
56
  }
57
+ /**
58
+ * @typedef {Object|null} viewportConfig
59
+ * @property {number} width - width of the viewport
60
+ * @property {number} height - height of the viewport
61
+ */
62
+ /**
63
+ * @typedef {Object|null} viewportConfig
64
+ * @property {number} width - width of the viewport
65
+ * @property {number} height - height of the viewport
66
+ */
59
67
 
60
- /**
61
- * @typedef {Object|null} viewportConfig
62
- * @property {number} width - width of the viewport
63
- * @property {number} height - height of the viewport
68
+ /**
69
+ * @typedef {Object|null} testSetupConfig
70
+ * @property {any} page - Function that will be called while setting up page fixtures
71
+ * @property {any} context - Function that will be called while setting up context fixtures
64
72
  */
65
73
 
66
- /**
67
- * Represents the user configuration object.
68
- * @typedef {Object} UserConfig
69
- * @property {string} headless - Headless Browsers mode.
70
- * @property {number} trace - trace for test cases.
71
- * @property {boolean} video - video for test cases,
72
- * @property {boolean} debug - debug mode
73
- * @property {string} mode: mode in which the test cases needs to run
74
- * @property {boolean} isAuthMode - Auth Mode. config whether authentication step needed before running test cases
75
- * @property {string} authFilePath - File Path where the cookies stored
76
- * @property {any} browsers: List of browsers
77
- * @property {string} openReportOn: default Option value (never, on-failure and always)
78
- * @property {any} reportPath : directory where report is generate
79
- * @property {boolean} bddMode: Feature files needs to be processed
80
- * @property {number} expectTimeout: time in milliseconds which the expect condition should fail
81
- * @property {number} testTimeout: time in milliseconds which the test should fail
82
- * @property {Object} additionalPages: custom pages configuration
83
- * @property {string} featureFilesFolder: folder name under which feature-files will be placed. Default is feature-files
84
- * @property {string} stepDefinitionsFolder: folder name under which step implementations will be placed. Default is steps
85
- * @property {viewportConfig} viewport: viewport configuration for the browser. Default is { width: 1280, height: 720 }
86
- * @property {string} testIdAttribute: Change the default data-testid attribute. configure what attribute to search while calling getByTestId
87
- * @property {Array} editionOrder: Order in the form of larger editions in the back. Edition with the most privelages should be last
74
+ /**
75
+ * Represents the user configuration object.
76
+ * @typedef {Object} UserConfig
77
+ * @property {string} uatDirectory - Directory in which uat configuration is places.
78
+ * @property {string} headless - Headless Browsers mode.
79
+ * @property {number} trace - trace for test cases.
80
+ * @property {boolean} video - video for test cases,
81
+ * @property {boolean} debug - debug mode
82
+ * @property {string} mode: mode in which the test cases needs to run
83
+ * @property {boolean} isAuthMode - Auth Mode. config whether authentication step needed before running test cases
84
+ * @property {string} authFilePath - File Path where the cookies stored
85
+ * @property {any} browsers: List of browsers
86
+ * @property {string} openReportOn: default Option value (never, on-failure and always)
87
+ * @property {any} reportPath : directory where report is generate
88
+ * @property {boolean} bddMode: Feature files needs to be processed
89
+ * @property {number} expectTimeout: time in milliseconds which the expect condition should fail
90
+ * @property {number} testTimeout: time in milliseconds which the test should fail
91
+ * @property {Object} additionalPages: custom pages configuration
92
+ * @property {string} featureFilesFolder: folder name under which feature-files will be placed. Default is feature-files
93
+ * @property {string} stepDefinitionsFolder: folder name under which step implementations will be placed. Default is steps
94
+ * @property {viewportConfig} viewport: viewport configuration for the browser. Default is { width: 1280, height: 720 }
95
+ * @property {string} testIdAttribute: Change the default data-testid attribute. configure what attribute to search while calling getByTestId
96
+ * @property {Array} editionOrder: Order in the form of larger editions in the back. Edition with the most privelages should be last
97
+ * @property {testSetupConfig} testSetup: Specify page and context functions that will be called while intilaizing fixtures.
88
98
  */
89
99
 
90
- /**
91
- * Generates a configuration object from a file, if it exists.
92
- *
93
- * @returns {UserConfig}
94
- */
100
+ /**
101
+ * Generates a configuration object from a file, if it exists.
102
+ *
103
+ * @returns {UserConfig}
104
+ */
95
105
  function generateConfigFromFile() {
96
- const filePath = _path.default.resolve(process.cwd(), fileName);
106
+ const filePath = _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)());
97
107
  if ((0, _fs.existsSync)(filePath)) {
98
108
  /** @type {UserConfig} */
99
109
  const config = require(filePath);
@@ -103,7 +113,7 @@ function generateConfigFromFile() {
103
113
  return {};
104
114
  }
105
115
  function isUserConfigFileAvailable() {
106
- const filePath = _path.default.resolve(process.cwd(), fileName);
116
+ const filePath = _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)());
107
117
  if ((0, _fs.existsSync)(filePath)) {
108
118
  return true;
109
119
  }
@@ -10,15 +10,15 @@ var _path = _interopRequireDefault(require("path"));
10
10
  var _logger = require("../../utils/logger");
11
11
  var _rootPath = require("../../utils/rootPath");
12
12
  var _readConfigFile = require("./readConfigFile");
13
- const userArgs = process.argv.slice(3);
14
- const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
15
- const command = playwrightPath;
16
- const {
17
- reportPath: htmlPath
18
- } = (0, _readConfigFile.generateConfigFromFile)();
19
- const args = ['show-report', htmlPath].concat(userArgs);
20
13
  async function generateReport() {
21
14
  // await preProcessReport()
15
+ const userArgs = process.argv.slice(3);
16
+ const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
17
+ const command = playwrightPath;
18
+ const {
19
+ reportPath: htmlPath
20
+ } = (0, _readConfigFile.generateConfigFromFile)();
21
+ const args = ['show-report', htmlPath].concat(userArgs);
22
22
  const childProcess = (0, _child_process.spawn)(command, args, {
23
23
  stdio: 'inherit'
24
24
  });