@zohodesk/testinglibrary 0.1.9 → 0.1.16-experimental

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 (241) hide show
  1. package/.babelrc +4 -2
  2. package/.claude/settings.local.json +14 -0
  3. package/.gitlab-ci.yml +206 -0
  4. package/README.md +264 -1
  5. package/build/common/data-generator/steps/DataGenerator.spec.js +19 -0
  6. package/build/common/data-generator/steps/DataGeneratorStepsHelper.js +21 -0
  7. package/build/common/multi-actor/steps/multiActorHandling.spec.js +26 -0
  8. package/build/common/searchFake/helpers/rpcRequestHelper.js +52 -0
  9. package/build/common/searchFake/steps/searchFake.spec.js +85 -0
  10. package/build/core/dataGenerator/DataGenerator.js +161 -0
  11. package/build/core/dataGenerator/DataGeneratorError.js +60 -0
  12. package/build/core/dataGenerator/DataGeneratorHelper.js +121 -0
  13. package/build/core/dataGenerator/authenticator/Authenticator.js +37 -0
  14. package/build/core/dataGenerator/authenticator/CookieAuthenticator.js +48 -0
  15. package/build/core/dataGenerator/authenticator/JWTauthenticator.js +59 -0
  16. package/build/core/dataGenerator/authenticator/OAuthAuthenticator.js +26 -0
  17. package/build/core/dataGenerator/authenticator/OrgOAuthAuthenticator.js +26 -0
  18. package/build/core/dataGenerator/authenticator/cookieAuthConfig.js +11 -0
  19. package/build/core/jest/preprocessor/jsPreprocessor.js +2 -7
  20. package/build/core/jest/setup/index.js +1 -7
  21. package/build/core/playwright/builtInFixtures/actorContext.js +78 -0
  22. package/build/core/playwright/builtInFixtures/caseTimeout.js +20 -0
  23. package/build/core/playwright/builtInFixtures/context.js +34 -16
  24. package/build/core/playwright/builtInFixtures/executionContext.js +17 -0
  25. package/build/core/playwright/builtInFixtures/i18N.js +8 -0
  26. package/build/core/playwright/builtInFixtures/index.js +7 -1
  27. package/build/core/playwright/builtInFixtures/page.js +22 -66
  28. package/build/core/playwright/clear-caches.js +17 -5
  29. package/build/core/playwright/codegen.js +4 -21
  30. package/build/core/playwright/configuration/Configuration.js +25 -0
  31. package/build/core/playwright/configuration/ConfigurationHelper.js +45 -0
  32. package/build/core/playwright/configuration/UserArgs.js +12 -0
  33. package/build/core/playwright/constants/configConstants.js +17 -0
  34. package/build/core/playwright/constants/failureTagConstants.js +17 -0
  35. package/build/core/playwright/constants/fileMutexConfig.js +9 -0
  36. package/build/core/playwright/constants/reporterConstants.js +20 -0
  37. package/build/core/playwright/constants/retryConstants.js +8 -0
  38. package/build/core/playwright/custom-commands.js +1 -1
  39. package/build/core/playwright/env-initializer.js +28 -9
  40. package/build/core/playwright/fixtures.js +24 -0
  41. package/build/core/playwright/helpers/additionalProfiles.js +25 -0
  42. package/build/core/playwright/helpers/auth/accountLogin.js +4 -1
  43. package/build/core/playwright/helpers/auth/checkAuthCookies.js +27 -23
  44. package/build/core/playwright/helpers/auth/getUsers.js +92 -45
  45. package/build/core/playwright/helpers/auth/index.js +30 -5
  46. package/build/core/playwright/helpers/auth/loginDefaultStepsHelper.js +62 -0
  47. package/build/core/playwright/helpers/auth/loginSteps.js +40 -22
  48. package/build/core/playwright/helpers/browserTimeoutFactor.js +16 -0
  49. package/build/core/playwright/helpers/caseTimeoutResolver.js +37 -0
  50. package/build/core/playwright/helpers/checkAuthDirectory.js +27 -0
  51. package/build/core/playwright/helpers/configFileNameProvider.js +26 -5
  52. package/build/core/playwright/helpers/configPathResolver.js +38 -0
  53. package/build/core/playwright/helpers/contextFailureHandler.js +81 -0
  54. package/build/core/playwright/helpers/customFixturesHelper.js +58 -0
  55. package/build/core/playwright/helpers/failureTagClassifier.js +197 -0
  56. package/build/core/playwright/helpers/fileMutex.js +71 -0
  57. package/build/core/playwright/helpers/logCollector.js +147 -0
  58. package/build/core/playwright/helpers/parseUserArgs.js +2 -3
  59. package/build/core/playwright/helpers/runtimeLogAnnotator.js +140 -0
  60. package/build/core/playwright/helpers/runtimeLogPath.js +61 -0
  61. package/build/core/playwright/helpers/runtimeLogReader.js +54 -0
  62. package/build/core/playwright/helpers/thirdPartyLib.js +13 -0
  63. package/build/core/playwright/index.js +8 -76
  64. package/build/core/playwright/patterns/casePatterns.js +9 -0
  65. package/build/core/playwright/patterns/codePatterns.js +9 -0
  66. package/build/core/playwright/patterns/environmentPatterns.js +15 -0
  67. package/build/core/playwright/patterns/index.js +33 -0
  68. package/build/core/playwright/patterns/logCollectorIgnorePatterns.js +15 -0
  69. package/build/core/playwright/patterns/toolPatterns.js +26 -0
  70. package/build/core/playwright/readConfigFile.js +49 -16
  71. package/build/core/playwright/reporter/PlaywrightReporter.js +58 -0
  72. package/build/core/playwright/reporter/Reporter.js +60 -0
  73. package/build/core/playwright/reporter/ShardReporter.js +62 -0
  74. package/build/core/playwright/reporter/UnitReporter.js +27 -0
  75. package/build/core/playwright/reporter/helpers/mergeAbortedTests.js +78 -0
  76. package/build/core/playwright/runCommand.js +71 -0
  77. package/build/core/playwright/runner/Runner.js +22 -0
  78. package/build/core/playwright/runner/RunnerHelper.js +43 -0
  79. package/build/core/playwright/runner/RunnerTypes.js +17 -0
  80. package/build/core/playwright/runner/SpawnRunner.js +93 -0
  81. package/build/core/playwright/setup/Project.js +35 -0
  82. package/build/core/playwright/setup/ProjectConfiguration.js +66 -0
  83. package/build/core/playwright/setup/config-creator.js +58 -40
  84. package/build/core/playwright/setup/config-utils.js +68 -37
  85. package/build/core/playwright/setup/custom-reporter.js +137 -14
  86. package/build/core/playwright/setup/merge-config.js +32 -0
  87. package/build/core/playwright/setup/qc-custom-reporter.js +342 -0
  88. package/build/core/playwright/tagProcessor.js +69 -0
  89. package/build/core/playwright/test-runner.js +44 -98
  90. package/build/core/playwright/types.js +4 -1
  91. package/build/core/playwright/validateFeature.js +28 -0
  92. package/build/decorators.d.ts +1 -1
  93. package/build/decorators.js +1 -1
  94. package/build/index.d.ts +17 -19
  95. package/build/index.js +28 -6
  96. package/build/lib/cli.js +42 -7
  97. package/build/setup-folder-structure/helper.js +2 -0
  98. package/build/setup-folder-structure/samples/accountLogin-sample.js +19 -0
  99. package/build/setup-folder-structure/samples/actors-index.js +2 -0
  100. package/build/setup-folder-structure/samples/auth-setup-sample.js +10 -67
  101. package/build/setup-folder-structure/samples/editions-index.js +3 -0
  102. package/build/setup-folder-structure/samples/free-sample.json +25 -0
  103. package/build/setup-folder-structure/samples/settings.json +7 -0
  104. package/build/setup-folder-structure/samples/testSetup-sample.js +14 -0
  105. package/build/setup-folder-structure/samples/uat-config-sample.js +7 -2
  106. package/build/setup-folder-structure/setupProject.js +23 -5
  107. package/build/test/core/dataGenerator/__tests__/DataGenerator.test.js +311 -0
  108. package/build/test/core/dataGenerator/__tests__/DataGeneratorHelper.test.js +204 -0
  109. package/build/test/core/dataGenerator/__tests__/DataGeneratorResolution.test.js +126 -0
  110. package/build/test/core/dataGenerator/authenticator/__tests__/Authenticator.test.js +88 -0
  111. package/build/test/core/dataGenerator/authenticator/__tests__/JWTauthenticator.test.js +136 -0
  112. package/build/test/core/dataGenerator/authenticator/__tests__/OAuthAuthenticator.test.js +39 -0
  113. package/build/test/core/dataGenerator/authenticator/__tests__/OrgOAuthAuthenticator.test.js +39 -0
  114. package/build/test/core/playwright/__tests__/runCommand.test.js +148 -0
  115. package/build/test/core/playwright/__tests__/tagProcessor.test.js +94 -0
  116. package/build/test/core/playwright/__tests__/validateFeature.test.js +72 -0
  117. package/build/test/core/playwright/buildInFixtures/__tests__/caseTimeout.test.js +96 -0
  118. package/build/test/core/playwright/buildInFixtures/__tests__/executionContext.test.js +27 -0
  119. package/build/test/core/playwright/configuration/__tests__/Configuration.test.js +53 -0
  120. package/build/test/core/playwright/helpers/__tests__/additionalProfiles.test.js +45 -0
  121. package/build/test/core/playwright/helpers/__tests__/configFileNameProvider.test.js +75 -0
  122. package/build/test/core/playwright/helpers/__tests__/configPathResolver.test.js +55 -0
  123. package/build/test/core/playwright/helpers/__tests__/customFixturesHelper.test.js +51 -0
  124. package/build/test/core/playwright/helpers/__tests__/failureTagClassifier.test.js +604 -0
  125. package/build/test/core/playwright/helpers/__tests__/fileMutex.test.js +79 -0
  126. package/build/test/core/playwright/helpers/__tests__/getUsers_ListOfActors.test.js +83 -0
  127. package/build/test/core/playwright/helpers/__tests__/logCollector.test.js +163 -0
  128. package/build/test/core/playwright/helpers/__tests__/runtimeLogReader.test.js +112 -0
  129. package/build/test/core/playwright/helpers/auth/__tests__/checkAuthCookies.test.js +120 -0
  130. package/build/test/core/playwright/runner/__tests__/RunnerHelper.test.js +19 -0
  131. package/build/test/core/playwright/runner/__tests__/SpawnRunner.test.js +30 -0
  132. package/build/utils/cliArgsToObject.js +3 -0
  133. package/build/utils/commonUtils.js +20 -0
  134. package/build/utils/fileUtils.js +43 -1
  135. package/build/utils/logger.js +1 -30
  136. package/changelog.md +23 -0
  137. package/docs/CODE-REVIEW-AGENT.md +399 -0
  138. package/docs/code-review-instructions.md +157 -0
  139. package/jest.config.js +29 -11
  140. package/npm-shrinkwrap.json +13478 -4778
  141. package/package.json +39 -28
  142. package/playwright.config.js +13 -57
  143. package/unit_reports/unit-report.html +277 -0
  144. package/build/bdd-framework/cli/commands/env.js +0 -42
  145. package/build/bdd-framework/cli/commands/export.js +0 -47
  146. package/build/bdd-framework/cli/commands/test.js +0 -64
  147. package/build/bdd-framework/cli/index.js +0 -11
  148. package/build/bdd-framework/cli/options.js +0 -19
  149. package/build/bdd-framework/cli/worker.js +0 -13
  150. package/build/bdd-framework/config/configDir.js +0 -35
  151. package/build/bdd-framework/config/enrichReporterData.js +0 -23
  152. package/build/bdd-framework/config/env.js +0 -50
  153. package/build/bdd-framework/config/index.js +0 -94
  154. package/build/bdd-framework/config/lang.js +0 -14
  155. package/build/bdd-framework/cucumber/buildStepDefinition.js +0 -43
  156. package/build/bdd-framework/cucumber/createTestStep.js +0 -43
  157. package/build/bdd-framework/cucumber/formatter/EventDataCollector.js +0 -126
  158. package/build/bdd-framework/cucumber/formatter/GherkinDocumentParser.js +0 -72
  159. package/build/bdd-framework/cucumber/formatter/PickleParser.js +0 -25
  160. package/build/bdd-framework/cucumber/formatter/durationHelpers.js +0 -13
  161. package/build/bdd-framework/cucumber/formatter/getColorFns.js +0 -57
  162. package/build/bdd-framework/cucumber/formatter/index.js +0 -16
  163. package/build/bdd-framework/cucumber/formatter/locationHelpers.js +0 -16
  164. package/build/bdd-framework/cucumber/loadConfig.js +0 -17
  165. package/build/bdd-framework/cucumber/loadFeatures.js +0 -70
  166. package/build/bdd-framework/cucumber/loadSnippetBuilder.js +0 -20
  167. package/build/bdd-framework/cucumber/loadSteps.js +0 -47
  168. package/build/bdd-framework/cucumber/resolveFeaturePaths.js +0 -62
  169. package/build/bdd-framework/cucumber/stepArguments.js +0 -21
  170. package/build/bdd-framework/cucumber/types.js +0 -5
  171. package/build/bdd-framework/cucumber/valueChecker.js +0 -23
  172. package/build/bdd-framework/decorators.js +0 -18
  173. package/build/bdd-framework/gen/fixtures.js +0 -48
  174. package/build/bdd-framework/gen/formatter.js +0 -123
  175. package/build/bdd-framework/gen/i18n.js +0 -39
  176. package/build/bdd-framework/gen/index.js +0 -185
  177. package/build/bdd-framework/gen/testFile.js +0 -465
  178. package/build/bdd-framework/gen/testMeta.js +0 -60
  179. package/build/bdd-framework/gen/testNode.js +0 -60
  180. package/build/bdd-framework/gen/testPoms.js +0 -133
  181. package/build/bdd-framework/hooks/scenario.js +0 -130
  182. package/build/bdd-framework/hooks/worker.js +0 -89
  183. package/build/bdd-framework/index.js +0 -52
  184. package/build/bdd-framework/playwright/fixtureParameterNames.js +0 -93
  185. package/build/bdd-framework/playwright/getLocationInFile.js +0 -79
  186. package/build/bdd-framework/playwright/loadConfig.js +0 -42
  187. package/build/bdd-framework/playwright/loadUtils.js +0 -33
  188. package/build/bdd-framework/playwright/testTypeImpl.js +0 -61
  189. package/build/bdd-framework/playwright/transform.js +0 -88
  190. package/build/bdd-framework/playwright/types.js +0 -5
  191. package/build/bdd-framework/playwright/utils.js +0 -34
  192. package/build/bdd-framework/reporter/cucumber/base.js +0 -57
  193. package/build/bdd-framework/reporter/cucumber/custom.js +0 -73
  194. package/build/bdd-framework/reporter/cucumber/helper.js +0 -12
  195. package/build/bdd-framework/reporter/cucumber/html.js +0 -35
  196. package/build/bdd-framework/reporter/cucumber/index.js +0 -74
  197. package/build/bdd-framework/reporter/cucumber/json.js +0 -312
  198. package/build/bdd-framework/reporter/cucumber/junit.js +0 -205
  199. package/build/bdd-framework/reporter/cucumber/message.js +0 -20
  200. package/build/bdd-framework/reporter/cucumber/messagesBuilder/AttachmentMapper.js +0 -64
  201. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Builder.js +0 -196
  202. package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocument.js +0 -43
  203. package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocumentClone.js +0 -52
  204. package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocuments.js +0 -105
  205. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Hook.js +0 -70
  206. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Meta.js +0 -45
  207. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Pickles.js +0 -27
  208. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Projects.js +0 -38
  209. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCase.js +0 -128
  210. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRun.js +0 -126
  211. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRunHooks.js +0 -102
  212. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepAttachments.js +0 -50
  213. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepRun.js +0 -88
  214. package/build/bdd-framework/reporter/cucumber/messagesBuilder/index.js +0 -30
  215. package/build/bdd-framework/reporter/cucumber/messagesBuilder/pwUtils.js +0 -51
  216. package/build/bdd-framework/reporter/cucumber/messagesBuilder/timing.js +0 -35
  217. package/build/bdd-framework/reporter/cucumber/messagesBuilder/types.js +0 -5
  218. package/build/bdd-framework/run/StepInvoker.js +0 -68
  219. package/build/bdd-framework/run/bddDataAttachment.js +0 -46
  220. package/build/bdd-framework/run/bddFixtures.js +0 -191
  221. package/build/bdd-framework/run/bddWorld.js +0 -79
  222. package/build/bdd-framework/run/bddWorldInternal.js +0 -15
  223. package/build/bdd-framework/snippets/index.js +0 -132
  224. package/build/bdd-framework/snippets/snippetSyntax.js +0 -43
  225. package/build/bdd-framework/snippets/snippetSyntaxDecorators.js +0 -26
  226. package/build/bdd-framework/snippets/snippetSyntaxTs.js +0 -18
  227. package/build/bdd-framework/stepDefinitions/createBdd.js +0 -66
  228. package/build/bdd-framework/stepDefinitions/decorators/class.js +0 -68
  229. package/build/bdd-framework/stepDefinitions/decorators/steps.js +0 -99
  230. package/build/bdd-framework/stepDefinitions/defineStep.js +0 -62
  231. package/build/bdd-framework/stepDefinitions/stepConfig.js +0 -24
  232. package/build/bdd-framework/utils/AutofillMap.js +0 -20
  233. package/build/bdd-framework/utils/exit.js +0 -62
  234. package/build/bdd-framework/utils/index.js +0 -93
  235. package/build/bdd-framework/utils/jsStringWrap.js +0 -44
  236. package/build/bdd-framework/utils/logger.js +0 -30
  237. package/build/bdd-framework/utils/stripAnsiEscapes.js +0 -20
  238. package/build/core/playwright/report-generator.js +0 -42
  239. package/build/core/playwright/tag-processor.js +0 -68
  240. package/build/setup-folder-structure/samples/authUsers-sample.json +0 -9
  241. package/build/setup-folder-structure/samples/env-config-sample.json +0 -21
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _test = require("@playwright/test");
5
+ var _playwrightBdd = require("playwright-bdd");
6
+ var _readConfigFile = require("./readConfigFile");
7
+ var _builtInFixtures = _interopRequireDefault(require("./builtInFixtures"));
8
+ var _getUserFixtures = _interopRequireDefault(require("./helpers/getUserFixtures"));
9
+ const {
10
+ bddMode
11
+ } = (0, _readConfigFile.generateConfigFromFile)();
12
+ let base = bddMode ? _playwrightBdd.test : _test.test;
13
+ const buildInFixtures = (0, _builtInFixtures.default)(bddMode);
14
+ const buildInFixturesTest = base.extend({
15
+ ...buildInFixtures
16
+ });
17
+ const userFixtures = (0, _getUserFixtures.default)();
18
+ const userFixturesTest = base.extend({
19
+ ...userFixtures
20
+ });
21
+ const test = (0, _test.mergeTests)(buildInFixturesTest, userFixturesTest);
22
+ module.exports = {
23
+ test
24
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.additionProfiles = additionProfiles;
7
+ var _getUsers = require("./auth/getUsers");
8
+ var _customFixturesHelper = require("./customFixturesHelper");
9
+ function additionProfiles(tags) {
10
+ const {
11
+ editionInfo,
12
+ betaFeature,
13
+ portalInfo
14
+ } = (0, _customFixturesHelper.extractTagInfo)(tags);
15
+ const additionalProfileTags = tags.filter(tag => tag.startsWith('@additional_profile_'));
16
+ let additionalProfileActors = {};
17
+ if (additionalProfileTags.length > 0) {
18
+ additionalProfileTags.forEach(tag => {
19
+ const additionalProfile = tag.replace('@additional_profile_', '');
20
+ const actorDetails = (0, _getUsers.getUserForSelectedEditionAndProfile)(editionInfo, additionalProfile, betaFeature, portalInfo);
21
+ additionalProfileActors[additionalProfile] = actorDetails;
22
+ });
23
+ }
24
+ return additionalProfileActors;
25
+ }
@@ -13,6 +13,9 @@ async function accountLogin(page, useremail, password) {
13
13
  await page.locator('#nextbtn').click();
14
14
  const domainUrlOrigin = (0, _getUrlOrigin.default)(process.env.domain);
15
15
  await page.waitForNavigation();
16
- await Promise.race([page.waitForURL(`${domainUrlOrigin}/**`), page.waitForURL('**/announcement/**')]);
16
+ if (!page.url().includes(domainUrlOrigin)) {
17
+ await page.goto(domainUrlOrigin);
18
+ }
19
+ await page.waitForURL(`${domainUrlOrigin}/**`);
17
20
  }
18
21
  var _default = exports.default = accountLogin;
@@ -4,44 +4,48 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.authDirectory = void 0;
7
+ exports.getAuthFileDirectory = getAuthFileDirectory;
8
8
  exports.loadCookiesIfPresent = loadCookiesIfPresent;
9
+ exports.storeFilteredStorageState = storeFilteredStorageState;
9
10
  exports.verifyIfCookieFileExists = verifyIfCookieFileExists;
10
11
  var _path = _interopRequireDefault(require("path"));
11
12
  var _fs = require("fs");
12
13
  var _readConfigFile = require("../../readConfigFile");
14
+ var _fileUtils = require("../../../../utils/fileUtils");
15
+ var _logger = require("../../../../utils/logger");
13
16
  /* eslint-disable no-console */
14
17
 
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
- };
18
+ const authCookieNameKeys = ['iamadt', 'iambdt', 'iamsdt'];
19
+ function getAuthFileDirectory() {
20
+ const {
21
+ uatDirectory
22
+ } = (0, _readConfigFile.generateConfigFromFile)();
23
+ return _path.default.resolve(_path.default.join(uatDirectory, 'playwright', '.auth'));
24
+ }
22
25
  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
- }
26
+ return (0, _fs.existsSync)(authFile);
33
27
  }
34
28
  function convertCookiesToParse(cookies, authFilePath) {
35
29
  try {
36
30
  return JSON.parse(cookies);
37
31
  } catch (err) {
32
+ _logger.Logger.error(err);
38
33
  throw new Error(` Error while parsing cookies ${err} \n${_path.default.resolve(process.cwd(), authFilePath)} File is Empty`);
39
- // process.exit()
40
34
  }
41
35
  }
42
36
  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);
37
+ if (verifyIfCookieFileExists(authFile)) {
38
+ const fileContent = (0, _fs.readFileSync)(authFile);
39
+ const stroageState = convertCookiesToParse(fileContent, authFile);
40
+ if (stroageState.cookies) {
41
+ await page.context().addCookies(stroageState.cookies);
42
+ }
43
+ }
44
+ }
45
+ async function storeFilteredStorageState(page, authFile) {
46
+ const storageState = await page.context().storageState();
47
+ const filteredCookies = storageState.cookies.filter(cookie => authCookieNameKeys.some(key => cookie.name.includes(key)));
48
+ (0, _fileUtils.writeFileContents)(authFile, JSON.stringify({
49
+ cookies: filteredCookies
50
+ }, null, 2));
47
51
  }
@@ -4,69 +4,116 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getListOfUsers = getListOfUsers;
8
- exports.getPrimaryUser = getPrimaryUser;
7
+ exports.getDefaultActor = getDefaultActor;
8
+ exports.getDefaultActorConf = getDefaultActorConf;
9
+ exports.getListOfActors = getListOfActors;
10
+ exports.getRunMode = getRunMode;
9
11
  exports.getUserForSelectedEditionAndProfile = getUserForSelectedEditionAndProfile;
10
12
  exports.isCI = isCI;
13
+ exports.isDevelopmentSetup = isDevelopmentSetup;
11
14
  var _path = _interopRequireDefault(require("path"));
12
- var _readConfigFile = require("../../readConfigFile");
15
+ var _fs = require("fs");
16
+ var _configPathResolver = require("../configPathResolver");
17
+ var _ConfigurationHelper = require("./../../configuration/ConfigurationHelper");
18
+ var _configConstants = _interopRequireDefault(require("../../constants/configConstants"));
13
19
  /* eslint-disable global-require */
20
+ function getRunMode() {
21
+ let {
22
+ mode
23
+ } = process.env;
24
+ return mode || 'dev';
25
+ }
14
26
  function isCI() {
15
- return process.env.mode === 'CI' || process.env.mode === 'ci';
27
+ const mode = getRunMode();
28
+ return mode === 'CI' || mode === 'ci';
16
29
  }
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'));
30
+ function isDevelopmentSetup() {
31
+ const mode = getRunMode();
32
+ return mode === 'DEV' || mode === 'dev';
33
+ }
34
+ function getDefaultActorConf() {
35
+ const stage = (0, _ConfigurationHelper.getRunStage)();
36
+ const stagePath = (0, _configPathResolver.getConfigPath)(stage);
37
+ const modeSettingsFile = `${stagePath}/${getRunMode()}/${_configConstants.default.SETTINGS_FILE}`;
38
+ const filePath = _path.default.join(_path.default.resolve(process.cwd(), modeSettingsFile));
39
+ try {
40
+ if (!(0, _fs.existsSync)(filePath)) {
41
+ const defaultSettingsFile = _path.default.join(_path.default.resolve(process.cwd(), `${stagePath}/${_configConstants.default.DEFAULT_CONFIG_DIR}/${_configConstants.default.SETTINGS_FILE}`));
42
+ return require(defaultSettingsFile);
43
+ }
44
+ return require(filePath);
45
+ } catch (error) {
46
+ throw new Error(`${filePath} file missing.`);
26
47
  }
27
- return users;
28
48
  }
29
- function getPrimaryUser() {
30
- let primaryUser;
49
+ function getDefaultActor() {
31
50
  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'));
51
+ edition,
52
+ profile
53
+ } = getDefaultActorConf();
54
+ return getUserForSelectedEditionAndProfile(edition, profile);
55
+ }
56
+ function getListOfActors(betaFeature) {
57
+ const mode = getRunMode();
58
+ const stage = (0, _ConfigurationHelper.getRunStage)();
59
+ const stagePath = (0, _configPathResolver.getConfigPath)(stage);
60
+ let configFile = _path.default.join(_path.default.resolve(process.cwd(), `${stagePath}/${mode}/${_configConstants.default.ACTOR_DIR}/${_configConstants.default.INDEX_FILE}`));
61
+ let betaReference = mode;
62
+ if (!(0, _fs.existsSync)(configFile)) {
63
+ configFile = _path.default.join(_path.default.resolve(process.cwd(), `${stagePath}/${_configConstants.default.DEFAULT_CONFIG_DIR}/${_configConstants.default.ACTOR_DIR}/${_configConstants.default.INDEX_FILE}`));
64
+ betaReference = "default";
65
+ }
66
+ if (betaFeature) {
67
+ configFile = _path.default.join(_path.default.resolve(process.cwd(), `${stagePath}/${betaReference}/${_configConstants.default.ACTOR_DIR}/${_configConstants.default.BETA_DIR}/${betaFeature}/${_configConstants.default.INDEX_FILE}`));
68
+ if (!(0, _fs.existsSync)(configFile)) {
69
+ throw new Error(`There is no beta feature configured with the name "${betaFeature}"`);
70
+ }
71
+ }
72
+ try {
73
+ return require(configFile);
74
+ } catch (error) {
75
+ throw new Error(`Error loading actor configuration from ${configFile}`);
38
76
  }
39
- return primaryUser;
40
77
  }
41
- function getUserForSelectedEditionAndProfile(preferedEdition, preferredProfile, darkLaunchFeature) {
78
+ function getUserForSelectedEditionAndProfile(preferedEdition, preferredProfile, betaFeature, testDataPortal = null) {
79
+ const actorsData = getListOfActors(betaFeature);
80
+ if (!actorsData || !actorsData.editions) {
81
+ throw new Error("The actors data is missing.");
82
+ }
42
83
  const {
43
- editions: userdata,
44
- darkLaunch
45
- } = getListOfUsers();
46
- const primaryUser = getPrimaryUser();
47
- const edition = preferedEdition || primaryUser.edition;
48
- const profile = preferredProfile || primaryUser.role;
84
+ editions: userdata
85
+ } = actorsData;
86
+ const defaultConf = getDefaultActorConf();
87
+ const edition = preferedEdition || defaultConf.edition;
88
+ const profile = preferredProfile || defaultConf.profile;
49
89
  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
90
+
91
+ // 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
62
92
  // For this we need to get the data from ci environment.
93
+
94
+ let testingPortal = null;
95
+ if (!userdata.hasOwnProperty(edition)) {
96
+ throw new Error(`There is no edition configured with the name "${edition}"`);
97
+ }
98
+ if (testDataPortal !== null) {
99
+ testingPortal = userdata[edition].find(editionData => editionData.orgName === testDataPortal);
100
+ if (!testingPortal) {
101
+ throw new Error(`There is no portal configured with the name "${testDataPortal}" in the "${edition}" edition.`);
102
+ }
103
+ } else {
104
+ testingPortal = userdata[edition] ? userdata[edition][0] : {};
105
+ }
63
106
  const {
64
107
  profiles,
65
108
  ...editionData
66
- } = userdata[edition] ? userdata[edition][0] : {};
67
- selectedProfile = profiles.find(user => user.role === profile);
109
+ } = testingPortal;
110
+ selectedProfile = profiles.find(user => user.profile === profile);
111
+ if (!selectedProfile) {
112
+ throw new Error(`There is no profile configured with the name "${profile}" in the "${edition}" edition.`);
113
+ }
68
114
  return {
69
115
  ...editionData,
70
- ...selectedProfile
116
+ ...selectedProfile,
117
+ 'beta': betaFeature
71
118
  };
72
119
  }
@@ -10,16 +10,34 @@ Object.defineProperty(exports, "accountLogin", {
10
10
  return _accountLogin.default;
11
11
  }
12
12
  });
13
- Object.defineProperty(exports, "getListOfUsers", {
13
+ Object.defineProperty(exports, "getDefaultActor", {
14
14
  enumerable: true,
15
15
  get: function () {
16
- return _getUsers.getListOfUsers;
16
+ return _getUsers.getDefaultActor;
17
17
  }
18
18
  });
19
- Object.defineProperty(exports, "getPrimaryUser", {
19
+ Object.defineProperty(exports, "getDefaultActorConf", {
20
20
  enumerable: true,
21
21
  get: function () {
22
- return _getUsers.getPrimaryUser;
22
+ return _getUsers.getDefaultActorConf;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "getListOfActors", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _getUsers.getListOfActors;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "getRunMode", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _getUsers.getRunMode;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "getRunStage", {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _ConfigurationHelper.getRunStage;
23
41
  }
24
42
  });
25
43
  Object.defineProperty(exports, "getUserForSelectedEditionAndProfile", {
@@ -34,6 +52,12 @@ Object.defineProperty(exports, "isCI", {
34
52
  return _getUsers.isCI;
35
53
  }
36
54
  });
55
+ Object.defineProperty(exports, "isDevelopmentSetup", {
56
+ enumerable: true,
57
+ get: function () {
58
+ return _getUsers.isDevelopmentSetup;
59
+ }
60
+ });
37
61
  Object.defineProperty(exports, "loadCookiesIfPresent", {
38
62
  enumerable: true,
39
63
  get: function () {
@@ -55,4 +79,5 @@ Object.defineProperty(exports, "verifyIfCookieFileExists", {
55
79
  var _accountLogin = _interopRequireDefault(require("./accountLogin"));
56
80
  var _checkAuthCookies = require("./checkAuthCookies");
57
81
  var _getUsers = require("./getUsers");
58
- var _loginSteps = _interopRequireDefault(require("./loginSteps"));
82
+ var _loginSteps = _interopRequireDefault(require("./loginSteps"));
83
+ var _ConfigurationHelper = require("../../configuration/ConfigurationHelper");
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.executeDefaultLoginSteps = executeDefaultLoginSteps;
7
+ exports.getAuthenticationPrefix = getAuthenticationPrefix;
8
+ exports.loginSteps = loginSteps;
9
+ exports.performDefaultPageSteps = performDefaultPageSteps;
10
+ exports.verifyPageIsLoaded = verifyPageIsLoaded;
11
+ var _auth = require("../auth");
12
+ var _readConfigFile = require("../../readConfigFile");
13
+ var _logger = require("../../../../utils/logger");
14
+ let {
15
+ testSetup,
16
+ isAuthMode
17
+ } = (0, _readConfigFile.generateConfigFromFile)();
18
+ async function loginSteps(pageDetail) {
19
+ const {
20
+ page
21
+ } = pageDetail;
22
+ if (testSetup.loginSteps && typeof testSetup.loginSteps === 'function') {
23
+ return await testSetup.loginSteps(pageDetail);
24
+ } else {
25
+ await page.goto(process.env.domain);
26
+ }
27
+ }
28
+ async function performDefaultPageSteps(testInfo) {
29
+ if (testSetup.page && typeof testSetup.page === 'function') {
30
+ await testSetup.page(testInfo);
31
+ }
32
+ }
33
+ async function verifyPageIsLoaded(testInfo) {
34
+ if (testSetup.validateLogin && typeof testSetup.validateLogin === 'function') {
35
+ return await testSetup.validateLogin(testInfo);
36
+ }
37
+ return true;
38
+ }
39
+ async function getAuthenticationPrefix(testDetails) {
40
+ if (testSetup.getAuthenticationPrefix && typeof testSetup.getAuthenticationPrefix === 'function') {
41
+ return await testSetup.getAuthenticationPrefix(testDetails);
42
+ }
43
+ return process.env.authFilePrefix;
44
+ }
45
+ async function executeDefaultLoginSteps(context, testInfo, testDetails, testPortalDetails) {
46
+ if (!isAuthMode) {
47
+ return;
48
+ }
49
+ try {
50
+ const projectName = testInfo.project.name;
51
+ testDetails.authFilePrefix = await getAuthenticationPrefix(testDetails);
52
+ if (testPortalDetails && projectName !== 'setup' && projectName !== 'cleanup') {
53
+ await context.clearCookies();
54
+ await (0, _auth.performLoginSteps)(testDetails, async testInfo => {
55
+ return await verifyPageIsLoaded(testInfo);
56
+ }, loginSteps);
57
+ process.env.actorInfo = JSON.stringify(testPortalDetails);
58
+ }
59
+ } catch (error) {
60
+ _logger.Logger.log(_logger.Logger.FAILURE_TYPE, 'Error while executing the default login steps:', error);
61
+ }
62
+ }
@@ -6,31 +6,49 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _path = _interopRequireDefault(require("path"));
9
- var _accountLogin = _interopRequireDefault(require("./accountLogin"));
9
+ var _fileMutex = _interopRequireDefault(require("../fileMutex"));
10
+ var _fileMutexConfig = require("../../constants/fileMutexConfig");
10
11
  var _checkAuthCookies = require("./checkAuthCookies");
12
+ var _checkAuthDirectory = require("../checkAuthDirectory");
11
13
  /* eslint-disable no-console */
12
14
 
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
- });
15
+ async function performLoginSteps(testInfo, isLoggedIn, loginSteps) {
16
+ let {
17
+ page,
18
+ authFilePrefix,
19
+ email
20
+ } = testInfo;
21
+ let authFileName;
22
+ if (authFilePrefix) {
23
+ authFileName = `${authFilePrefix}-${email}`;
24
+ process.env.authFilePrefix = authFilePrefix;
25
+ } else {
26
+ authFileName = `${email}`;
27
+ }
28
+ const authFile = _path.default.resolve(_path.default.join((0, _checkAuthCookies.getAuthFileDirectory)(), `${authFileName}-cookies.json`));
29
+ const lockFileName = `${authFileName}`.replace(/[@.]/g, '_');
30
+ const fileMutex = new _fileMutex.default((0, _checkAuthDirectory.getLockDirectoryPath)(), lockFileName, _fileMutexConfig.fileDeletionTimeoutConfig);
31
+ let loginUsingCookie = false;
32
+ try {
33
+ if ((0, _checkAuthCookies.verifyIfCookieFileExists)(authFile)) {
34
+ console.log(`${authFileName} Cookie file exists. Loading cookies, worker index - ${process.env.TEST_WORKER_INDEX}`);
35
+ loginUsingCookie = true;
36
+ } else {
37
+ await fileMutex.acquire();
38
+ }
39
+ await (0, _checkAuthCookies.loadCookiesIfPresent)(page, authFile);
40
+ const isAlreadyLoggedIn = await isLoggedIn(testInfo);
41
+ if (!isAlreadyLoggedIn) {
42
+ await loginSteps(testInfo);
43
+ await isLoggedIn(testInfo);
44
+ await (0, _checkAuthCookies.storeFilteredStorageState)(page, authFile);
45
+ }
46
+ } catch (error) {
47
+ console.error(`Error during login for ${authFileName}:`, error);
48
+ } finally {
49
+ if (!loginUsingCookie) {
50
+ await fileMutex.release();
51
+ }
34
52
  }
35
53
  }
36
54
  var _default = exports.default = performLoginSteps;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getBrowserTimeoutFactor = getBrowserTimeoutFactor;
7
+ var _browserTypes = require("../constants/browserTypes");
8
+ function getBrowserTimeoutFactor(projectName) {
9
+ if (projectName === _browserTypes.BROWSER_PROJECT_MAPPING.FIREFOX) {
10
+ return 2;
11
+ }
12
+ if (projectName === _browserTypes.BROWSER_PROJECT_MAPPING.SAFARI) {
13
+ return 4;
14
+ }
15
+ return 1;
16
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TIMEOUT_TAG_PATTERN = void 0;
7
+ exports.findTimeoutTags = findTimeoutTags;
8
+ exports.parseTimeoutSeconds = parseTimeoutSeconds;
9
+ exports.resolveCaseTimeoutMs = resolveCaseTimeoutMs;
10
+ var _logger = require("../../../utils/logger");
11
+ var _browserTimeoutFactor = require("./browserTimeoutFactor");
12
+ const TIMEOUT_TAG_PATTERN = exports.TIMEOUT_TAG_PATTERN = /^@timeout_(\d+)$/;
13
+ function findTimeoutTags(tags) {
14
+ if (!Array.isArray(tags)) {
15
+ return [];
16
+ }
17
+ return tags.filter(tag => typeof tag === 'string' && TIMEOUT_TAG_PATTERN.test(tag));
18
+ }
19
+ function parseTimeoutSeconds(tag) {
20
+ const match = tag.match(TIMEOUT_TAG_PATTERN);
21
+ return match ? Number(match[1]) : null;
22
+ }
23
+ function resolveCaseTimeoutMs(tags, projectName) {
24
+ const matched = findTimeoutTags(tags);
25
+ if (matched.length === 0) {
26
+ return null;
27
+ }
28
+ if (matched.length > 1) {
29
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, `Multiple @timeout_* tags found (${matched.join(', ')}). Using the first one: ${matched[0]}`);
30
+ }
31
+ const seconds = parseTimeoutSeconds(matched[0]);
32
+ if (seconds === 0) {
33
+ return 0;
34
+ }
35
+ const factor = (0, _browserTimeoutFactor.getBrowserTimeoutFactor)(projectName);
36
+ return seconds * 1000 * factor;
37
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createAuthDirectoryIfNotExist = createAuthDirectoryIfNotExist;
8
+ exports.getLockDirectoryPath = getLockDirectoryPath;
9
+ var _fs = require("fs");
10
+ var _path = _interopRequireDefault(require("path"));
11
+ var _checkAuthCookies = require("./auth/checkAuthCookies");
12
+ var _readConfigFile = require("../readConfigFile");
13
+ function createAuthDirectoryIfNotExist() {
14
+ const authDirectory = (0, _checkAuthCookies.getAuthFileDirectory)();
15
+ if (!(0, _fs.existsSync)(authDirectory)) {
16
+ console.log('Creating auth directory for the first time setup...');
17
+ (0, _fs.mkdirSync)(authDirectory, {
18
+ recursive: true
19
+ });
20
+ }
21
+ }
22
+ function getLockDirectoryPath() {
23
+ const {
24
+ uatDirectory
25
+ } = (0, _readConfigFile.generateConfigFromFile)();
26
+ return _path.default.resolve(_path.default.join(uatDirectory, 'playwright', '.lock'));
27
+ }
@@ -1,17 +1,38 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.getEnvConfigFilePath = getEnvConfigFilePath;
7
8
  exports.getReportFileName = getReportFileName;
8
9
  exports.getUATFileName = getUATFileName;
9
- function getUATFileName() {
10
- return 'uat.config.js';
10
+ var _path = _interopRequireDefault(require("path"));
11
+ var _fs = _interopRequireDefault(require("fs"));
12
+ var _auth = require("./auth");
13
+ var _ConfigurationHelper = require("./../configuration/ConfigurationHelper");
14
+ var _configPathResolver = require("./configPathResolver");
15
+ var _configConstants = _interopRequireDefault(require("../constants/configConstants"));
16
+ function getUATFileName(stage, mode) {
17
+ stage = stage || (0, _ConfigurationHelper.getRunStage)();
18
+ mode = mode || (0, _auth.getRunMode)();
19
+ const stagePath = (0, _configPathResolver.getConfigPath)(stage);
20
+ const uatConfFilePath = _path.default.resolve(process.cwd(), `${stagePath}/${mode}/${_configConstants.default.UAT_CONFIG_FILE}`);
21
+ if (_fs.default.existsSync(uatConfFilePath)) {
22
+ return uatConfFilePath;
23
+ }
24
+ ;
25
+ return _path.default.resolve(process.cwd(), `${stagePath}/${_configConstants.default.DEFAULT_CONFIG_DIR}/${_configConstants.default.UAT_CONFIG_FILE}`);
11
26
  }
12
- function getEnvConfigFilePath() {
13
- return `uat/env-config.json`;
27
+ function getEnvConfigFilePath(stage, mode) {
28
+ const stagePath = (0, _configPathResolver.getConfigPath)(stage);
29
+ const confFilePath = `${stagePath}/${mode}/${_configConstants.default.SETTINGS_FILE}`;
30
+ // TODO: Actors Mode as config
31
+ if (_fs.default.existsSync(confFilePath)) {
32
+ return confFilePath;
33
+ }
34
+ return `${stagePath}/${_configConstants.default.DEFAULT_CONFIG_DIR}/${_configConstants.default.SETTINGS_FILE}`;
14
35
  }
15
36
  function getReportFileName() {
16
- return `test-summary.json`;
37
+ return `${_configConstants.default.TEST_SUMMARY_FILE}`;
17
38
  }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getConfigPath = getConfigPath;
8
+ var _fs = _interopRequireDefault(require("fs"));
9
+ var _path = _interopRequireDefault(require("path"));
10
+ var _propertiesReader = _interopRequireDefault(require("properties-reader"));
11
+ var _logger = require("../../../utils/logger");
12
+ var _configConstants = _interopRequireDefault(require("../constants/configConstants"));
13
+ //This function reads a properties file and returns the entire properties
14
+
15
+ function readPropertiesFile(relativeFilePath) {
16
+ const filePath = _path.default.resolve(process.cwd(), relativeFilePath);
17
+ let properties;
18
+ if (_fs.default.existsSync(filePath)) {
19
+ properties = (0, _propertiesReader.default)(filePath);
20
+ } else {
21
+ // we have to remove this logic after adding all the projects with proper config files
22
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, `Properties file ${filePath} not found. Using default configurations.`);
23
+ properties = (0, _propertiesReader.default)();
24
+ properties.set('uat', 'uat/conf');
25
+ }
26
+ return properties;
27
+ }
28
+
29
+ // This function return the value for the passed arguments key
30
+
31
+ function getConfigPath(stage) {
32
+ const props = readPropertiesFile(_configConstants.default.STAGE_CONFIG_MAP_FILE);
33
+ const configPath = props.get(stage);
34
+ if (!configPath) {
35
+ _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `No config mapping found for stage: "${stage}"`);
36
+ }
37
+ return configPath;
38
+ }