@zohodesk/testinglibrary 0.0.5-exp.8 → 0.0.5-n20-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 (158) hide show
  1. package/.babelrc +9 -1
  2. package/.eslintrc.js +31 -0
  3. package/.gitlab-ci.yml +191 -0
  4. package/.prettierrc +6 -0
  5. package/README.md +151 -1
  6. package/build/common/data-generator/steps/DataGenerator.spec.js +19 -0
  7. package/build/common/data-generator/steps/DataGeneratorStepsHelper.js +19 -0
  8. package/build/common/multi-actor/steps/multiActorHandling.spec.js +26 -0
  9. package/build/common/searchFake/helpers/rpcRequestHelper.js +41 -0
  10. package/build/common/searchFake/steps/searchFake.spec.js +26 -0
  11. package/build/core/dataGenerator/DataGenerator.js +108 -0
  12. package/build/core/dataGenerator/DataGeneratorError.js +50 -0
  13. package/build/core/dataGenerator/DataGeneratorHelper.js +49 -0
  14. package/build/core/jest/preprocessor/jsPreprocessor.js +3 -9
  15. package/build/core/jest/runner/jest-runner.js +1 -0
  16. package/build/core/jest/setup/index.js +1 -7
  17. package/build/core/playwright/builtInFixtures/actorContext.js +75 -0
  18. package/build/core/playwright/builtInFixtures/addTags.js +19 -0
  19. package/build/core/playwright/builtInFixtures/cacheLayer.js +13 -0
  20. package/build/core/playwright/builtInFixtures/context.js +32 -0
  21. package/build/core/playwright/builtInFixtures/executionContext.js +17 -0
  22. package/build/core/playwright/builtInFixtures/i18N.js +41 -0
  23. package/build/core/playwright/builtInFixtures/index.js +46 -0
  24. package/build/core/playwright/builtInFixtures/page.js +38 -0
  25. package/build/core/playwright/builtInFixtures/unauthenticatedPage.js +18 -0
  26. package/build/core/playwright/clear-caches.js +49 -0
  27. package/build/core/playwright/codegen.js +5 -6
  28. package/build/core/playwright/configuration/Configuration.js +25 -0
  29. package/build/core/playwright/configuration/ConfigurationHelper.js +43 -0
  30. package/build/core/playwright/configuration/UserArgs.js +12 -0
  31. package/build/core/playwright/constants/browserTypes.js +12 -0
  32. package/build/core/playwright/constants/fileMutexConfig.js +9 -0
  33. package/build/core/playwright/custom-commands.js +1 -2
  34. package/build/core/playwright/env-initializer.js +28 -6
  35. package/build/core/playwright/fixtures.js +24 -0
  36. package/build/core/playwright/helpers/additionalProfiles.js +25 -0
  37. package/build/core/playwright/helpers/auth/accountLogin.js +21 -0
  38. package/build/core/playwright/helpers/auth/checkAuthCookies.js +41 -0
  39. package/build/core/playwright/helpers/auth/getUrlOrigin.js +13 -0
  40. package/build/core/playwright/helpers/auth/getUsers.js +118 -0
  41. package/build/core/playwright/helpers/auth/index.js +76 -0
  42. package/build/core/playwright/helpers/auth/loginDefaultStepsHelper.js +54 -0
  43. package/build/core/playwright/helpers/auth/loginSteps.js +50 -0
  44. package/build/core/playwright/helpers/checkAuthDirectory.js +27 -0
  45. package/build/core/playwright/helpers/configFileNameProvider.js +31 -0
  46. package/build/core/playwright/helpers/customFixturesHelper.js +58 -0
  47. package/build/core/playwright/helpers/fileMutex.js +71 -0
  48. package/build/core/playwright/helpers/getUserFixtures.js +23 -0
  49. package/build/core/playwright/helpers/mergeObjects.js +13 -0
  50. package/build/core/playwright/helpers/parseUserArgs.js +10 -0
  51. package/build/core/playwright/index.js +10 -96
  52. package/build/core/playwright/readConfigFile.js +97 -14
  53. package/build/core/playwright/report-generator.js +9 -10
  54. package/build/core/playwright/runner/Runner.js +22 -0
  55. package/build/core/playwright/runner/RunnerHelper.js +43 -0
  56. package/build/core/playwright/runner/RunnerTypes.js +17 -0
  57. package/build/core/playwright/runner/SpawnRunner.js +113 -0
  58. package/build/core/playwright/setup/config-creator.js +101 -90
  59. package/build/core/playwright/setup/config-utils.js +188 -0
  60. package/build/core/playwright/setup/custom-reporter.js +136 -0
  61. package/build/core/playwright/setup/qc-custom-reporter.js +291 -0
  62. package/build/core/playwright/tagProcessor.js +69 -0
  63. package/build/core/playwright/test-runner.js +84 -67
  64. package/build/core/playwright/types.js +44 -0
  65. package/build/core/playwright/validateFeature.js +28 -0
  66. package/build/decorators.d.ts +1 -0
  67. package/build/decorators.js +16 -0
  68. package/build/index.d.ts +78 -0
  69. package/build/index.js +73 -5
  70. package/build/lib/cli.js +38 -5
  71. package/build/lib/post-install.js +19 -11
  72. package/build/lint/index.js +3 -6
  73. package/build/parser/parser.js +205 -0
  74. package/build/parser/sample.feature +34 -0
  75. package/build/parser/sample.spec.js +37 -0
  76. package/build/parser/verifier.js +130 -0
  77. package/build/setup-folder-structure/helper.js +37 -0
  78. package/build/setup-folder-structure/reportEnhancement/addonScript.html +25 -0
  79. package/build/setup-folder-structure/reportEnhancement/reportAlteration.js +25 -0
  80. package/build/setup-folder-structure/samples/accountLogin-sample.js +19 -0
  81. package/build/setup-folder-structure/samples/actors-index.js +2 -0
  82. package/build/setup-folder-structure/samples/auth-setup-sample.js +15 -0
  83. package/build/setup-folder-structure/samples/editions-index.js +3 -0
  84. package/build/setup-folder-structure/samples/free-sample.json +25 -0
  85. package/build/setup-folder-structure/samples/git-ignore.sample.js +37 -0
  86. package/build/setup-folder-structure/samples/settings.json +7 -0
  87. package/build/setup-folder-structure/samples/testSetup-sample.js +14 -0
  88. package/build/setup-folder-structure/samples/uat-config-sample.js +46 -0
  89. package/build/setup-folder-structure/setupProject.js +36 -18
  90. package/build/test/core/playwright/__tests__/tagProcessor.test.js +94 -0
  91. package/build/test/core/playwright/__tests__/validateFeature.test.js +69 -0
  92. package/build/test/core/playwright/buildInFixtures/__tests__/executionContext.test.js +27 -0
  93. package/build/test/core/playwright/configuration/__tests__/Configuration.test.js +53 -0
  94. package/build/test/core/playwright/helpers/__tests__/additionalProfiles.test.js +45 -0
  95. package/build/test/core/playwright/helpers/__tests__/configFileNameProvider.test.js +34 -0
  96. package/build/test/core/playwright/helpers/__tests__/customFixturesHelper.test.js +51 -0
  97. package/build/test/core/playwright/helpers/__tests__/fileMutex.test.js +79 -0
  98. package/build/test/core/playwright/helpers/__tests__/getUsers_ListOfActors.test.js +80 -0
  99. package/build/test/core/playwright/runner/__tests__/RunnerHelper.test.js +16 -0
  100. package/build/test/core/playwright/runner/__tests__/SpawnRunner.test.js +27 -0
  101. package/build/utils/cliArgsToObject.js +9 -1
  102. package/build/utils/commonUtils.js +17 -0
  103. package/build/utils/fileUtils.js +109 -0
  104. package/build/utils/logger.js +7 -35
  105. package/build/utils/rootPath.js +16 -9
  106. package/build/utils/stepDefinitionsFormatter.js +11 -0
  107. package/changelog.md +136 -10
  108. package/jest.config.js +29 -11
  109. package/npm-shrinkwrap.json +10241 -6175
  110. package/package.json +40 -26
  111. package/playwright.config.js +5 -55
  112. package/test-results/.last-run.json +4 -0
  113. package/unit_reports/unit-report.html +277 -0
  114. package/build/bdd-framework/cli/commands/env.js +0 -44
  115. package/build/bdd-framework/cli/commands/export.js +0 -47
  116. package/build/bdd-framework/cli/commands/test.js +0 -60
  117. package/build/bdd-framework/cli/index.js +0 -11
  118. package/build/bdd-framework/cli/options.js +0 -21
  119. package/build/bdd-framework/cli/worker.js +0 -13
  120. package/build/bdd-framework/config/dir.js +0 -27
  121. package/build/bdd-framework/config/env.js +0 -49
  122. package/build/bdd-framework/config/index.js +0 -92
  123. package/build/bdd-framework/cucumber/buildStepDefinition.js +0 -45
  124. package/build/bdd-framework/cucumber/gherkin.d.ts +0 -45
  125. package/build/bdd-framework/cucumber/loadConfig.js +0 -17
  126. package/build/bdd-framework/cucumber/loadFeatures.js +0 -39
  127. package/build/bdd-framework/cucumber/loadSnippetBuilder.js +0 -20
  128. package/build/bdd-framework/cucumber/loadSources.js +0 -58
  129. package/build/bdd-framework/cucumber/loadSteps.js +0 -41
  130. package/build/bdd-framework/decorators.js +0 -21
  131. package/build/bdd-framework/gen/formatter.js +0 -92
  132. package/build/bdd-framework/gen/i18n.js +0 -44
  133. package/build/bdd-framework/gen/index.js +0 -150
  134. package/build/bdd-framework/gen/poms.js +0 -47
  135. package/build/bdd-framework/gen/testFile.js +0 -356
  136. package/build/bdd-framework/gen/testNode.js +0 -50
  137. package/build/bdd-framework/index.js +0 -33
  138. package/build/bdd-framework/playwright/fixtureParameterNames.js +0 -103
  139. package/build/bdd-framework/playwright/getLocationInFile.js +0 -50
  140. package/build/bdd-framework/playwright/loadConfig.js +0 -42
  141. package/build/bdd-framework/playwright/testTypeImpl.js +0 -47
  142. package/build/bdd-framework/playwright/transform.js +0 -85
  143. package/build/bdd-framework/playwright/utils.js +0 -24
  144. package/build/bdd-framework/run/bddFixtures.js +0 -109
  145. package/build/bdd-framework/run/bddWorld.js +0 -91
  146. package/build/bdd-framework/snippets/index.js +0 -132
  147. package/build/bdd-framework/snippets/snippetSyntax.js +0 -50
  148. package/build/bdd-framework/snippets/snippetSyntaxDecorators.js +0 -32
  149. package/build/bdd-framework/snippets/snippetSyntaxTs.js +0 -18
  150. package/build/bdd-framework/stepDefinitions/createBdd.js +0 -52
  151. package/build/bdd-framework/stepDefinitions/createDecorators.js +0 -110
  152. package/build/bdd-framework/stepDefinitions/defineStep.js +0 -62
  153. package/build/bdd-framework/utils/index.js +0 -52
  154. package/build/bdd-framework/utils/jsStringWrap.js +0 -44
  155. package/build/bdd-framework/utils/logger.js +0 -21
  156. package/build/setup-folder-structure/env-config-sample.json +0 -17
  157. package/build/setup-folder-structure/uat-config-sample.js +0 -31
  158. package/build/setup-folder-structure/user-example.json +0 -3
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GeneratorError = exports.DataGeneratorError = exports.DataGeneratorConfigurationError = void 0;
7
+ class DataGeneratorError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'DataGeneratorError';
11
+
12
+ // Maintains proper stack trace for where our error was thrown (only available on V8)
13
+ if (Error.captureStackTrace) {
14
+ Error.captureStackTrace(this, DataGeneratorError);
15
+ }
16
+ }
17
+
18
+ /**
19
+ * Get formatted error message with error type and message
20
+ * @returns {string} Formatted error message
21
+ */
22
+ getMessage() {
23
+ return `\n\n ${this.name} ::: \n\n Error Message: ${this.message} \n\n `;
24
+ }
25
+ }
26
+
27
+ // Specific error for Data Generator configuration issues
28
+ exports.DataGeneratorError = DataGeneratorError;
29
+ class DataGeneratorConfigurationError extends DataGeneratorError {
30
+ constructor(message) {
31
+ super(message);
32
+ this.name = 'DataGeneratorConfigurationError';
33
+ if (Error.captureStackTrace) {
34
+ Error.captureStackTrace(this, DataGeneratorConfigurationError);
35
+ }
36
+ }
37
+ }
38
+
39
+ // Specific error for Generator related issues
40
+ exports.DataGeneratorConfigurationError = DataGeneratorConfigurationError;
41
+ class GeneratorError extends DataGeneratorError {
42
+ constructor(message) {
43
+ super(message);
44
+ this.name = 'GeneratorError';
45
+ if (Error.captureStackTrace) {
46
+ Error.captureStackTrace(this, GeneratorError);
47
+ }
48
+ }
49
+ }
50
+ exports.GeneratorError = GeneratorError;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getGeneratorFilePath = getGeneratorFilePath;
7
+ exports.makeRequest = makeRequest;
8
+ exports.processGenerator = processGenerator;
9
+ //Create payload for the generators
10
+ async function processGenerator(generators, dataTable) {
11
+ if (!dataTable) {
12
+ return generators;
13
+ }
14
+ return generators.map(generator => {
15
+ dataTable.forEach(row => {
16
+ const generatorName = row.DG_API_NAME;
17
+ if (generatorName === generator.name) {
18
+ generator.params = generator.params ? generator.params : {};
19
+
20
+ // The API name row is only used for matching the template
21
+ // Filter out DG_API_NAME and collect other values
22
+ Object.entries(row).filter(([key]) => key !== 'DG_API_NAME').forEach(([key, value]) => {
23
+ if (value !== '') {
24
+ generator.params[key] = value;
25
+ }
26
+ });
27
+ }
28
+ });
29
+ return generator;
30
+ });
31
+ }
32
+ async function makeRequest(url, payload) {
33
+ const response = await fetch(url, {
34
+ method: 'POST',
35
+ headers: {
36
+ 'Content-Type': 'application/json'
37
+ },
38
+ body: JSON.stringify(payload)
39
+ });
40
+ if (!response.ok) {
41
+ const errorBody = await response.text();
42
+ throw new Error(`HTTP error! status: ${response.status}, body: ${errorBody}`);
43
+ }
44
+ return response.json();
45
+ }
46
+ async function getGeneratorFilePath(featureFile) {
47
+ let generatorPath = featureFile.replace(".features-gen/", "");
48
+ return generatorPath;
49
+ }
@@ -1,13 +1,7 @@
1
1
  "use strict";
2
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 _babelJest = _interopRequireDefault(require("babel-jest"));
9
- var _default = _babelJest.default.createTransformer({
3
+ const babelJest = require('babel-jest');
4
+ module.exports = babelJest.createTransformer({
10
5
  presets: [require.resolve('@babel/preset-env'), require.resolve('@babel/preset-react')],
11
6
  plugins: [require.resolve('babel-plugin-transform-dynamic-import')]
12
- });
13
- exports.default = _default;
7
+ });
@@ -8,6 +8,7 @@ exports.default = createJestRunner;
8
8
  var _child_process = require("child_process");
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
  var _rootPath = require("../../../utils/rootPath");
11
+ /* eslint-disable no-unused-vars */
11
12
  // import { run } from 'jest';
12
13
 
13
14
  // function createJestRunner() {
@@ -1,9 +1,3 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _testUtils = _interopRequireDefault(require("react-dom/test-utils"));
5
- var _globals = require("@jest/globals");
6
- var _react = _interopRequireDefault(require("react"));
7
- var _propTypes = _interopRequireDefault(require("prop-types"));
8
- var _reactDom = _interopRequireDefault(require("react-dom"));
9
- require("@testing-library/jest-dom/extend-expect");
3
+ require("@testing-library/jest-dom");
@@ -0,0 +1,75 @@
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 _additionalProfiles = require("../helpers/additionalProfiles");
9
+ var _loginDefaultStepsHelper = require("../helpers/auth/loginDefaultStepsHelper");
10
+ class ActorContext {
11
+ constructor() {
12
+ this.actorsObj = {};
13
+ }
14
+ async setup(browser, $tags, testInfo, context, page, executionContext) {
15
+ try {
16
+ const {
17
+ profile
18
+ } = executionContext.actorInfo;
19
+ this.actorsObj[profile] = {
20
+ role: profile,
21
+ browser,
22
+ context,
23
+ page,
24
+ executionContext
25
+ };
26
+ const additionalActors = (0, _additionalProfiles.additionProfiles)($tags);
27
+ await Promise.all(Object.entries(additionalActors).map(async ([role, actorInfo]) => {
28
+ let context = await browser.newContext();
29
+ let page = await context.newPage();
30
+ let ctxTestDetails = {
31
+ page,
32
+ $tags,
33
+ context,
34
+ ...actorInfo
35
+ };
36
+ await (0, _loginDefaultStepsHelper.executeDefaultLoginSteps)(context, testInfo, ctxTestDetails, actorInfo);
37
+ this.actorsObj[role] = {
38
+ role,
39
+ browser,
40
+ context,
41
+ page,
42
+ executionContext: {
43
+ actorInfo
44
+ }
45
+ };
46
+ }));
47
+ } catch (error) {
48
+ _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to setup additional actors:`, error);
49
+ throw error;
50
+ }
51
+ }
52
+ async cleanup() {
53
+ for (const actor of Object.values(this.actorsObj)) {
54
+ try {
55
+ await actor.context.close();
56
+ } catch (error) {
57
+ _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to close context for actor ${actor.role}:`, error);
58
+ }
59
+ }
60
+ }
61
+ }
62
+ var _default = exports.default = {
63
+ actorContext: async ({
64
+ page,
65
+ context,
66
+ executionContext,
67
+ $tags,
68
+ browser
69
+ }, use, testInfo) => {
70
+ const ctxObject = new ActorContext();
71
+ await ctxObject.setup(browser, $tags, testInfo, context, page, executionContext);
72
+ await use(ctxObject);
73
+ await ctxObject.cleanup();
74
+ }
75
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = exports.default = {
8
+ addTags: [async ({
9
+ $tags
10
+ }, use, testInfo) => {
11
+ testInfo.annotations.push({
12
+ type: 'tags',
13
+ description: $tags.join(', ')
14
+ });
15
+ await use();
16
+ }, {
17
+ auto: true
18
+ }]
19
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ const cacheMap = new Map();
8
+ var _default = exports.default = {
9
+ // eslint-disable-next-line no-empty-pattern
10
+ cacheLayer: async ({}, use) => {
11
+ await use(cacheMap);
12
+ }
13
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _readConfigFile = require("../readConfigFile");
8
+ const {
9
+ testSetup
10
+ } = (0, _readConfigFile.generateConfigFromFile)();
11
+ async function performDefaultContextSteps({
12
+ context
13
+ }) {
14
+ if (testSetup.context && typeof testSetup.context === 'function') {
15
+ await testSetup.context({
16
+ context
17
+ });
18
+ }
19
+ }
20
+ var _default = exports.default = {
21
+ context: async ({
22
+ context
23
+ }, use) => {
24
+ await context.addInitScript(() =>
25
+ // eslint-disable-next-line no-undef
26
+ window.localStorage.setItem('isDnBannerHide', true));
27
+ await performDefaultContextSteps({
28
+ context
29
+ });
30
+ await use(context);
31
+ }
32
+ };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _customFixturesHelper = require("../helpers/customFixturesHelper");
8
+ var _default = exports.default = {
9
+ executionContext: async ({
10
+ $tags
11
+ }, use) => {
12
+ const actorInfo = (0, _customFixturesHelper.getCustomAccountDetails)($tags);
13
+ await use({
14
+ actorInfo
15
+ });
16
+ }
17
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /* eslint-disable no-undef */
8
+ /* eslint-disable no-param-reassign */
9
+
10
+ // Note: We are duplicating below method from @zohodesk/i18n. We are not importing it as react package not yet availble in test environment.
11
+ function replaceI18NValuesWithRegex(i18nStr, values) {
12
+ if (typeof values !== 'undefined') {
13
+ if (Array.isArray(values)) {
14
+ for (let i = 0; i < values.length; i++) {
15
+ i18nStr = i18nStr.replace(new RegExp(`\\{${i}\\}`, 'g'), values[i]);
16
+ }
17
+ } else {
18
+ i18nStr = i18nStr.replace(new RegExp('\\{0\\}', 'g'), values);
19
+ }
20
+ }
21
+ return i18nStr;
22
+ }
23
+ async function isI18NKeyDefined(key) {
24
+ return new Promise(resolve => {
25
+ if (typeof window.i18n[key] !== 'undefined') {
26
+ resolve();
27
+ }
28
+ });
29
+ }
30
+ var _default = exports.default = {
31
+ i18N: async ({
32
+ page
33
+ }, use) => {
34
+ await use(async (key, values) => {
35
+ await page.waitForFunction(isI18NKeyDefined(key));
36
+ const i18nValue = await page.evaluate(i18nKey => window.i18n[i18nKey], key);
37
+ const i18nStr = replaceI18NValuesWithRegex(i18nValue, values);
38
+ return i18nStr;
39
+ });
40
+ }
41
+ };
@@ -0,0 +1,46 @@
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 _page = _interopRequireDefault(require("./page"));
9
+ var _context = _interopRequireDefault(require("./context"));
10
+ var _cacheLayer = _interopRequireDefault(require("./cacheLayer"));
11
+ var _addTags = _interopRequireDefault(require("./addTags"));
12
+ var _i18N = _interopRequireDefault(require("./i18N"));
13
+ var _unauthenticatedPage = _interopRequireDefault(require("./unauthenticatedPage"));
14
+ var _executionContext = _interopRequireDefault(require("./executionContext"));
15
+ var _actorContext = _interopRequireDefault(require("./actorContext"));
16
+ function extractTagsFromTitle(text) {
17
+ return text.match(/@\w+/g) || [];
18
+ }
19
+ function getBuiltInFixtures(bddMode) {
20
+ let builtInFixtures = {
21
+ ..._page.default,
22
+ ..._actorContext.default,
23
+ ..._context.default,
24
+ ..._cacheLayer.default,
25
+ ..._i18N.default,
26
+ ..._unauthenticatedPage.default,
27
+ ..._executionContext.default
28
+ };
29
+ if (bddMode) {
30
+ builtInFixtures = {
31
+ ...builtInFixtures,
32
+ ..._addTags.default
33
+ };
34
+ } else {
35
+ builtInFixtures = {
36
+ ...builtInFixtures,
37
+ $tags: async ({}, use, testInfo) => {
38
+ // Extract only the elements after the "@" symbol as tags
39
+ const tags = testInfo.title ? extractTagsFromTitle(testInfo.title) : [];
40
+ await use(tags);
41
+ }
42
+ };
43
+ }
44
+ return builtInFixtures;
45
+ }
46
+ var _default = exports.default = getBuiltInFixtures;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _loginDefaultStepsHelper = require("../helpers/auth/loginDefaultStepsHelper");
8
+ /* eslint-disable global-require */
9
+ var _default = exports.default = {
10
+ page: async ({
11
+ context,
12
+ $tags,
13
+ page,
14
+ executionContext
15
+ }, use, testInfo) => {
16
+ let testPortalDetails = executionContext.actorInfo;
17
+ let testDetails = {
18
+ page,
19
+ $tags,
20
+ context,
21
+ ...testPortalDetails
22
+ };
23
+ try {
24
+ //This block is used to skip the login process if the @unauthenticated tag is added to the script
25
+ if ($tags.includes('@unauthenticated')) {
26
+ await context.clearCookies();
27
+ return;
28
+ }
29
+ await (0, _loginDefaultStepsHelper.executeDefaultLoginSteps)(context, testInfo, testDetails, testPortalDetails);
30
+ } catch (e) {
31
+ console.error('Error during page', e);
32
+ } finally {
33
+ await (0, _loginDefaultStepsHelper.performDefaultPageSteps)(testDetails);
34
+ await use(page);
35
+ await context.close();
36
+ }
37
+ }
38
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = exports.default = {
8
+ unauthenticatedPage: async ({
9
+ browser
10
+ }, use) => {
11
+ const context = await browser.newContext({
12
+ storageState: null
13
+ });
14
+ const unauthenticatedPage = await context.newPage();
15
+ await use(unauthenticatedPage);
16
+ await context.close();
17
+ }
18
+ };
@@ -0,0 +1,49 @@
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 _fileUtils = require("../../utils/fileUtils");
10
+ var _logger = require("../../utils/logger");
11
+ var _readConfigFile = require("./readConfigFile");
12
+ var _checkAuthDirectory = require("./helpers/checkAuthDirectory");
13
+ function deleteAuthFiles(authFilePath) {
14
+ authFilePath = _path.default.resolve(process.cwd(), authFilePath);
15
+ const authFileFolder = _path.default.dirname(authFilePath);
16
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting auth files present in ${authFileFolder}`);
17
+ (0, _fileUtils.deleteFolder)(authFileFolder);
18
+ }
19
+ function deletePlaywrightReport(reportPath) {
20
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting Playwright report ${reportPath}`);
21
+ (0, _fileUtils.deleteFolder)(reportPath);
22
+ }
23
+ function deleteGeneratedFeatures() {
24
+ const featuresGenPath = _path.default.resolve(process.cwd(), 'uat', '.features-gen');
25
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting generated features at ${featuresGenPath}`);
26
+ (0, _fileUtils.deleteFolder)(featuresGenPath);
27
+ }
28
+ function deleteLockFiles() {
29
+ const lockFilePath = (0, _checkAuthDirectory.getLockDirectoryPath)();
30
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, `Deleting lock files at ${lockFilePath}`);
31
+ (0, _fileUtils.deleteFolder)(lockFilePath);
32
+ }
33
+ function clearCaches() {
34
+ try {
35
+ const {
36
+ authFilePath,
37
+ reportPath
38
+ } = (0, _readConfigFile.generateConfigFromFile)();
39
+ deleteAuthFiles(authFilePath);
40
+ deletePlaywrightReport(reportPath);
41
+ deleteGeneratedFeatures();
42
+ deleteLockFiles();
43
+ _logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Caches Cleared. Now you can try running npm run uat');
44
+ } catch (err) {
45
+ _logger.Logger.error(err);
46
+ _logger.Logger.log(_logger.Logger.FAILURE_TYPE, 'Error While clearing cookies. Try manually delete folder uat/playwright and uat/playwright-report');
47
+ }
48
+ }
49
+ var _default = exports.default = clearCaches;
@@ -7,14 +7,13 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = generateCodegen;
8
8
  var _child_process = require("child_process");
9
9
  var _path = _interopRequireDefault(require("path"));
10
- var _test = require("@playwright/test");
11
10
  var _logger = require("../../utils/logger");
12
11
  var _rootPath = require("../../utils/rootPath");
13
- const userArgs = process.argv.slice(3);
14
- const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
15
- const command = playwrightPath;
16
- const args = ['codegen'].concat(userArgs);
17
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);
18
17
  const childProcess = (0, _child_process.spawn)(command, args, {
19
18
  stdio: 'inherit'
20
19
  });
@@ -44,7 +43,7 @@ function generateCodegen() {
44
43
  // const browser = await chromium.launch({ headless: false });
45
44
 
46
45
  // // Setup context however you like.
47
- // const context = await browser.newContext({ storageState: path.resolve(process.cwd(), 'playwright/.auth/user.json') });
46
+ // const context = await browser.newContext({ storageState: path.resolve(process.cwd(), 'uat', 'playwright/.auth/user.json') });
48
47
  // await context.route('**/*', route => route.continue());
49
48
 
50
49
  // // Pause the page, and start recording manually.
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _ConfigurationHelper = require("./ConfigurationHelper");
4
+ class Configuration {
5
+ properties = {};
6
+ constructor(props) {
7
+ this.properties = props;
8
+ }
9
+ add(key, value) {
10
+ this.properties[key] = value;
11
+ }
12
+ addAll(newConfig) {
13
+ this.properties = (0, _ConfigurationHelper.combineConfiguration)(this.properties, newConfig.getAll());
14
+ }
15
+ get(key) {
16
+ return this.properties[key];
17
+ }
18
+ getAll() {
19
+ return this.properties;
20
+ }
21
+ delete(key) {
22
+ delete this.properties[key];
23
+ }
24
+ }
25
+ module.exports = Configuration;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.combineConfiguration = combineConfiguration;
8
+ exports.getApplicationConfig = getApplicationConfig;
9
+ var _path = _interopRequireDefault(require("path"));
10
+ var _logger = require("../../../utils/logger");
11
+ var _configFileNameProvider = require("../helpers/configFileNameProvider");
12
+ var _mergeObjects = require("../helpers/mergeObjects");
13
+ var _fs = require("fs");
14
+ const Configuration = require("./Configuration");
15
+ function combineConfiguration(defaultConfig, userConfiguration) {
16
+ let configurationObj = {};
17
+ Object.keys(userConfiguration).forEach(configKey => {
18
+ let configValue = userConfiguration[configKey];
19
+ if (configValue !== null && configValue !== undefined) {
20
+ configurationObj[configKey] = configValue;
21
+ } else if (defaultConfig[configKey]) {
22
+ configurationObj[configKey] = defaultConfig[configKey];
23
+ } else {
24
+ _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`);
25
+ }
26
+ });
27
+ return (0, _mergeObjects.mergeObjects)(defaultConfig, configurationObj);
28
+ }
29
+ function getApplicationConfig(mode) {
30
+ let filePath = "";
31
+ try {
32
+ filePath = _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)(mode));
33
+ if (!(0, _fs.existsSync)(filePath)) {
34
+ throw new Error("Exception while getting the uat file from the application - " + filePath);
35
+ }
36
+ const config = require(filePath);
37
+ return config;
38
+ } catch (err) {
39
+ _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Founded Path - ${filePath} Application config file not Exist ...`);
40
+ _logger.Logger.error(err);
41
+ return {};
42
+ }
43
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ var _cliArgsToObject = require("../../../utils/cliArgsToObject");
4
+ class UserArgs {
5
+ static parseToObject(config) {
6
+ return (0, _cliArgsToObject.cliArgsToObject)(config);
7
+ }
8
+ static parseToArgs(object) {
9
+ return (0, _cliArgsToObject.objectToCliArgs)(object);
10
+ }
11
+ }
12
+ module.exports = UserArgs;
@@ -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
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fileDeletionTimeoutConfig = void 0;
7
+ const fileDeletionTimeoutConfig = exports.fileDeletionTimeoutConfig = {
8
+ timeout: 45000
9
+ };
@@ -4,5 +4,4 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.CUSTOM_COMMANDS = void 0;
7
- const CUSTOM_COMMANDS = ['mode'];
8
- exports.CUSTOM_COMMANDS = CUSTOM_COMMANDS;
7
+ const CUSTOM_COMMANDS = exports.CUSTOM_COMMANDS = ['mode', 'tags', 'edition', 'browsers', 'filePath', 'headless', 'modules'];