@zohodesk/testinglibrary 0.0.7-exp.1 → 0.0.7-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 (160) hide show
  1. package/.babelrc +7 -2
  2. package/.eslintrc.js +5 -1
  3. package/.gitlab-ci.yml +206 -0
  4. package/README.md +172 -1
  5. package/build/common/data-generator/steps/DataGenerator.spec.js +19 -0
  6. package/build/common/data-generator/steps/DataGeneratorStepsHelper.js +19 -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 +77 -0
  10. package/build/core/dataGenerator/DataGenerator.js +108 -0
  11. package/build/core/dataGenerator/DataGeneratorError.js +50 -0
  12. package/build/core/dataGenerator/DataGeneratorHelper.js +49 -0
  13. package/build/core/jest/preprocessor/jsPreprocessor.js +3 -9
  14. package/build/core/jest/setup/index.js +1 -7
  15. package/build/core/playwright/builtInFixtures/actorContext.js +75 -0
  16. package/build/core/playwright/builtInFixtures/addTags.js +19 -0
  17. package/build/core/playwright/builtInFixtures/cacheLayer.js +13 -0
  18. package/build/core/playwright/builtInFixtures/context.js +32 -0
  19. package/build/core/playwright/builtInFixtures/executionContext.js +17 -0
  20. package/build/core/playwright/builtInFixtures/i18N.js +41 -0
  21. package/build/core/playwright/builtInFixtures/index.js +46 -0
  22. package/build/core/playwright/builtInFixtures/page.js +38 -0
  23. package/build/core/playwright/builtInFixtures/unauthenticatedPage.js +18 -0
  24. package/build/core/playwright/clear-caches.js +49 -0
  25. package/build/core/playwright/codegen.js +4 -4
  26. package/build/core/playwright/configuration/Configuration.js +25 -0
  27. package/build/core/playwright/configuration/ConfigurationHelper.js +43 -0
  28. package/build/core/playwright/configuration/UserArgs.js +12 -0
  29. package/build/core/playwright/constants/browserTypes.js +12 -0
  30. package/build/core/playwright/constants/fileMutexConfig.js +9 -0
  31. package/build/core/playwright/custom-commands.js +1 -2
  32. package/build/core/playwright/env-initializer.js +28 -6
  33. package/build/core/playwright/fixtures.js +24 -0
  34. package/build/core/playwright/helpers/additionalProfiles.js +25 -0
  35. package/build/core/playwright/helpers/auth/accountLogin.js +21 -0
  36. package/build/core/playwright/helpers/auth/checkAuthCookies.js +41 -0
  37. package/build/core/playwright/helpers/auth/getUrlOrigin.js +13 -0
  38. package/build/core/playwright/helpers/auth/getUsers.js +118 -0
  39. package/build/core/playwright/helpers/auth/index.js +76 -0
  40. package/build/core/playwright/helpers/auth/loginDefaultStepsHelper.js +54 -0
  41. package/build/core/playwright/helpers/auth/loginSteps.js +51 -0
  42. package/build/core/playwright/helpers/checkAuthDirectory.js +27 -0
  43. package/build/core/playwright/helpers/configFileNameProvider.js +31 -0
  44. package/build/core/playwright/helpers/customFixturesHelper.js +58 -0
  45. package/build/core/playwright/helpers/fileMutex.js +72 -0
  46. package/build/core/playwright/helpers/getUserFixtures.js +23 -0
  47. package/build/core/playwright/helpers/mergeObjects.js +13 -0
  48. package/build/core/playwright/helpers/parseUserArgs.js +10 -0
  49. package/build/core/playwright/index.js +10 -98
  50. package/build/core/playwright/readConfigFile.js +71 -25
  51. package/build/core/playwright/report-generator.js +9 -8
  52. package/build/core/playwright/runner/Runner.js +22 -0
  53. package/build/core/playwright/runner/RunnerHelper.js +43 -0
  54. package/build/core/playwright/runner/RunnerTypes.js +17 -0
  55. package/build/core/playwright/runner/SpawnRunner.js +113 -0
  56. package/build/core/playwright/setup/Project.js +35 -0
  57. package/build/core/playwright/setup/ProjectConfiguration.js +80 -0
  58. package/build/core/playwright/setup/config-creator.js +54 -33
  59. package/build/core/playwright/setup/config-utils.js +99 -16
  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 +57 -43
  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 -1
  67. package/build/decorators.js +1 -1
  68. package/build/index.d.ts +76 -3
  69. package/build/index.js +63 -17
  70. package/build/lib/cli.js +28 -4
  71. package/build/lib/post-install.js +19 -11
  72. package/build/parser/parser.js +0 -1
  73. package/build/setup-folder-structure/helper.js +37 -0
  74. package/build/setup-folder-structure/reportEnhancement/addonScript.html +25 -0
  75. package/build/setup-folder-structure/reportEnhancement/reportAlteration.js +25 -0
  76. package/build/setup-folder-structure/samples/accountLogin-sample.js +19 -0
  77. package/build/setup-folder-structure/samples/actors-index.js +2 -0
  78. package/build/setup-folder-structure/samples/auth-setup-sample.js +10 -67
  79. package/build/setup-folder-structure/samples/editions-index.js +3 -0
  80. package/build/setup-folder-structure/samples/free-sample.json +25 -0
  81. package/build/setup-folder-structure/samples/git-ignore.sample.js +8 -4
  82. package/build/setup-folder-structure/samples/settings.json +7 -0
  83. package/build/setup-folder-structure/samples/testSetup-sample.js +14 -0
  84. package/build/setup-folder-structure/samples/uat-config-sample.js +7 -3
  85. package/build/setup-folder-structure/setupProject.js +34 -12
  86. package/build/test/core/playwright/__tests__/tagProcessor.test.js +94 -0
  87. package/build/test/core/playwright/__tests__/validateFeature.test.js +69 -0
  88. package/build/test/core/playwright/buildInFixtures/__tests__/executionContext.test.js +27 -0
  89. package/build/test/core/playwright/configuration/__tests__/Configuration.test.js +53 -0
  90. package/build/test/core/playwright/helpers/__tests__/additionalProfiles.test.js +45 -0
  91. package/build/test/core/playwright/helpers/__tests__/configFileNameProvider.test.js +34 -0
  92. package/build/test/core/playwright/helpers/__tests__/customFixturesHelper.test.js +51 -0
  93. package/build/test/core/playwright/helpers/__tests__/fileMutex.test.js +79 -0
  94. package/build/test/core/playwright/helpers/__tests__/getUsers_ListOfActors.test.js +80 -0
  95. package/build/test/core/playwright/runner/__tests__/RunnerHelper.test.js +16 -0
  96. package/build/test/core/playwright/runner/__tests__/SpawnRunner.test.js +27 -0
  97. package/build/utils/cliArgsToObject.js +8 -1
  98. package/build/utils/commonUtils.js +17 -0
  99. package/build/utils/fileUtils.js +60 -4
  100. package/build/utils/logger.js +1 -31
  101. package/build/utils/rootPath.js +16 -9
  102. package/build/utils/stepDefinitionsFormatter.js +1 -2
  103. package/changelog.md +167 -0
  104. package/jest.config.js +29 -11
  105. package/npm-shrinkwrap.json +9731 -6645
  106. package/package.json +34 -27
  107. package/playwright.config.js +0 -50
  108. package/test-results/.last-run.json +4 -0
  109. package/unit_reports/unit-report.html +260 -0
  110. package/Changelog.md +0 -49
  111. package/build/bdd-framework/cli/commands/env.js +0 -43
  112. package/build/bdd-framework/cli/commands/export.js +0 -48
  113. package/build/bdd-framework/cli/commands/test.js +0 -59
  114. package/build/bdd-framework/cli/index.js +0 -11
  115. package/build/bdd-framework/cli/options.js +0 -20
  116. package/build/bdd-framework/cli/worker.js +0 -13
  117. package/build/bdd-framework/config/dir.js +0 -27
  118. package/build/bdd-framework/config/env.js +0 -49
  119. package/build/bdd-framework/config/index.js +0 -91
  120. package/build/bdd-framework/cucumber/buildStepDefinition.js +0 -43
  121. package/build/bdd-framework/cucumber/gherkin.d.js +0 -5
  122. package/build/bdd-framework/cucumber/gherkin.d.ts +0 -45
  123. package/build/bdd-framework/cucumber/loadConfig.js +0 -17
  124. package/build/bdd-framework/cucumber/loadFeatures.js +0 -39
  125. package/build/bdd-framework/cucumber/loadSnippetBuilder.js +0 -20
  126. package/build/bdd-framework/cucumber/loadSources.js +0 -57
  127. package/build/bdd-framework/cucumber/loadSteps.js +0 -35
  128. package/build/bdd-framework/decorators.js +0 -22
  129. package/build/bdd-framework/gen/formatter.js +0 -88
  130. package/build/bdd-framework/gen/i18n.js +0 -35
  131. package/build/bdd-framework/gen/index.js +0 -160
  132. package/build/bdd-framework/gen/poms.js +0 -46
  133. package/build/bdd-framework/gen/testFile.js +0 -356
  134. package/build/bdd-framework/gen/testNode.js +0 -48
  135. package/build/bdd-framework/gen/testPoms.js +0 -123
  136. package/build/bdd-framework/index.js +0 -45
  137. package/build/bdd-framework/playwright/fixtureParameterNames.js +0 -77
  138. package/build/bdd-framework/playwright/getLocationInFile.js +0 -46
  139. package/build/bdd-framework/playwright/loadConfig.js +0 -42
  140. package/build/bdd-framework/playwright/testTypeImpl.js +0 -41
  141. package/build/bdd-framework/playwright/transform.js +0 -80
  142. package/build/bdd-framework/playwright/types.js +0 -5
  143. package/build/bdd-framework/playwright/utils.js +0 -34
  144. package/build/bdd-framework/run/bddFixtures.js +0 -108
  145. package/build/bdd-framework/run/bddWorld.js +0 -87
  146. package/build/bdd-framework/snippets/index.js +0 -131
  147. package/build/bdd-framework/snippets/snippetSyntax.js +0 -41
  148. package/build/bdd-framework/snippets/snippetSyntaxDecorators.js +0 -26
  149. package/build/bdd-framework/snippets/snippetSyntaxTs.js +0 -18
  150. package/build/bdd-framework/stepDefinitions/createBdd.js +0 -49
  151. package/build/bdd-framework/stepDefinitions/createDecorators.js +0 -109
  152. package/build/bdd-framework/stepDefinitions/decorators/poms.js +0 -50
  153. package/build/bdd-framework/stepDefinitions/decorators/steps.js +0 -94
  154. package/build/bdd-framework/stepDefinitions/defineStep.js +0 -61
  155. package/build/bdd-framework/stepDefinitions/stepConfig.js +0 -24
  156. package/build/bdd-framework/utils/index.js +0 -50
  157. package/build/bdd-framework/utils/jsStringWrap.js +0 -44
  158. package/build/bdd-framework/utils/logger.js +0 -29
  159. package/build/setup-folder-structure/samples/authUsers-sample.json +0 -9
  160. package/build/setup-folder-structure/samples/env-config-sample.json +0 -21
package/build/index.js CHANGED
@@ -3,7 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.When = exports.Then = exports.Step = exports.Given = void 0;
6
+ exports.When = exports.Then = exports.Step = exports.Given = exports.But = exports.And = void 0;
7
+ Object.defineProperty(exports, "accountLogin", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _index.accountLogin;
11
+ }
12
+ });
7
13
  Object.defineProperty(exports, "createBdd", {
8
14
  enumerable: true,
9
15
  get: function () {
@@ -16,16 +22,58 @@ Object.defineProperty(exports, "expect", {
16
22
  return _index.expect;
17
23
  }
18
24
  });
19
- Object.defineProperty(exports, "fireEvent", {
25
+ Object.defineProperty(exports, "getDefaultActor", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _index.getDefaultActor;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "getListOfActors", {
20
32
  enumerable: true,
21
33
  get: function () {
22
- return _react.fireEvent;
34
+ return _index.getListOfActors;
23
35
  }
24
36
  });
25
- Object.defineProperty(exports, "render", {
37
+ Object.defineProperty(exports, "getRunMode", {
26
38
  enumerable: true,
27
39
  get: function () {
28
- return _react.render;
40
+ return _index.getRunMode;
41
+ }
42
+ });
43
+ Object.defineProperty(exports, "getUserForSelectedEditionAndProfile", {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _index.getUserForSelectedEditionAndProfile;
47
+ }
48
+ });
49
+ Object.defineProperty(exports, "isCI", {
50
+ enumerable: true,
51
+ get: function () {
52
+ return _index.isCI;
53
+ }
54
+ });
55
+ Object.defineProperty(exports, "isDevelopmentSetup", {
56
+ enumerable: true,
57
+ get: function () {
58
+ return _index.isDevelopmentSetup;
59
+ }
60
+ });
61
+ Object.defineProperty(exports, "loadCookiesIfPresent", {
62
+ enumerable: true,
63
+ get: function () {
64
+ return _index.loadCookiesIfPresent;
65
+ }
66
+ });
67
+ Object.defineProperty(exports, "performLoginSteps", {
68
+ enumerable: true,
69
+ get: function () {
70
+ return _index.performLoginSteps;
71
+ }
72
+ });
73
+ Object.defineProperty(exports, "setup", {
74
+ enumerable: true,
75
+ get: function () {
76
+ return _index.setup;
29
77
  }
30
78
  });
31
79
  Object.defineProperty(exports, "test", {
@@ -34,18 +82,14 @@ Object.defineProperty(exports, "test", {
34
82
  return _index.test;
35
83
  }
36
84
  });
85
+ Object.defineProperty(exports, "verifyIfCookieFileExists", {
86
+ enumerable: true,
87
+ get: function () {
88
+ return _index.verifyIfCookieFileExists;
89
+ }
90
+ });
37
91
  var _index = require("./core/playwright/index");
38
- var _react = require("@testing-library/react");
39
- // const { expect, test, createBdd } = require('./core/playwright/index');
40
- // const { fireEvent, render } = require('@testing-library/react');
41
-
42
- // module.exports = {
43
- // expect,
44
- // test,
45
- // fireEvent,
46
- // render,
47
- // createBdd
48
- // }
92
+ // import { fireEvent, render } from '@testing-library/react';
49
93
 
50
94
  const {
51
95
  Given,
@@ -56,4 +100,6 @@ const {
56
100
  exports.Step = Step;
57
101
  exports.When = When;
58
102
  exports.Then = Then;
59
- exports.Given = Given;
103
+ exports.Given = Given;
104
+ const And = exports.And = Then;
105
+ const But = exports.But = Then;
package/build/lib/cli.js CHANGED
@@ -7,12 +7,13 @@ var _codegen = _interopRequireDefault(require("../core/playwright/codegen"));
7
7
  var _logger = require("../utils/logger");
8
8
  var _setupProject = _interopRequireDefault(require("../setup-folder-structure/setupProject"));
9
9
  var _parser = require("../parser/parser");
10
+ var _clearCaches = _interopRequireDefault(require("../core/playwright/clear-caches"));
11
+ var _helper = _interopRequireDefault(require("../setup-folder-structure/helper"));
12
+ var _parseUserArgs = _interopRequireDefault(require("../core/playwright/helpers/parseUserArgs"));
13
+ var _validateFeature = _interopRequireDefault(require("../core/playwright/validateFeature"));
10
14
  // import createJestRunner from '../core/jest/runner/jest-runner';
11
15
 
12
16
  const [,, option, ...otherOptions] = process.argv;
13
- // const args = process.argv.slice(3);
14
- // const appPath = process.cwd();
15
-
16
17
  switch (option) {
17
18
  case 'test':
18
19
  {
@@ -21,6 +22,22 @@ switch (option) {
21
22
  //createJestRunner();
22
23
  break;
23
24
  }
25
+ case 'validate':
26
+ {
27
+ (0, _validateFeature.default)();
28
+ break;
29
+ }
30
+ case 're-run-failed':
31
+ {
32
+ _logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Running Failed Tests..');
33
+ let {
34
+ filePath
35
+ } = (0, _parseUserArgs.default)();
36
+ process.env.isRerunFailedCases = true;
37
+ process.env.filePath = filePath;
38
+ (0, _testRunner.default)();
39
+ break;
40
+ }
24
41
  case 'report':
25
42
  {
26
43
  // console.log('\x1b[36mGenerating Reports...\x1b[0m');
@@ -46,9 +63,16 @@ switch (option) {
46
63
  (0, _parser.generateSpecCodeForFeatureFile)(otherOptions);
47
64
  break;
48
65
  }
66
+ case 'clearCaches':
67
+ {
68
+ _logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Clearing caches...');
69
+ (0, _clearCaches.default)();
70
+ break;
71
+ }
72
+ case 'help':
49
73
  default:
50
74
  {
51
- _logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Supported Commands test and report');
75
+ (0, _helper.default)();
52
76
  break;
53
77
  }
54
78
  }
@@ -4,14 +4,22 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  var _path = _interopRequireDefault(require("path"));
5
5
  var _child_process = require("child_process");
6
6
  var _logger = require("../utils/logger");
7
- var _getFilePath = _interopRequireDefault(require("../utils/getFilePath"));
8
- const playwrightPath = _path.default.resolve('node_modules', '.bin', (0, _getFilePath.default)('playwright'));
9
- const command = playwrightPath;
10
- const args = ['install'];
11
- _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Downloading browsers for running tests');
12
- const childProcess = (0, _child_process.spawn)(command, args, {
13
- stdio: 'inherit'
14
- });
15
- childProcess.on('error', error => {
16
- _logger.Logger.log(_logger.Logger.FAILURE_TYPE, error);
17
- });
7
+ var _rootPath = require("../utils/rootPath");
8
+ // We are skipping the download of browsers when NODE_ENV is set to production or flag SKIP_BROWSER_DOWNLOAD is set to true
9
+
10
+ let isSkipDownloadingBrowsers = Boolean(process.env.SKIP_BROWSER_DOWNLOAD);
11
+ let isProductionMode = process.env.NODE_ENV === 'production';
12
+ if (isSkipDownloadingBrowsers || isProductionMode) {
13
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Skipping browsers download in production mode');
14
+ } else {
15
+ const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
16
+ const command = playwrightPath;
17
+ const args = ['install'];
18
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, `Downloading browsers for running tests`);
19
+ const childProcess = (0, _child_process.spawn)(command, args, {
20
+ stdio: 'inherit'
21
+ });
22
+ childProcess.on('error', error => {
23
+ _logger.Logger.log(_logger.Logger.FAILURE_TYPE, error);
24
+ });
25
+ }
@@ -108,7 +108,6 @@ function generateSpecFileContent({
108
108
  });
109
109
  //specContent += `});\n\n`;
110
110
  }
111
-
112
111
  return specContent;
113
112
  }
114
113
  function updateExistingSpecFile({
@@ -0,0 +1,37 @@
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 _commander = require("commander");
9
+ var _fs = require("fs");
10
+ var _path = _interopRequireDefault(require("path"));
11
+ var _logger = require("../utils/logger");
12
+ function helpercmd() {
13
+ const packageJsonPath = _path.default.resolve(process.cwd(), './package.json');
14
+ if ((0, _fs.existsSync)(packageJsonPath) && process.argv.includes('--version')) {
15
+ const {
16
+ dependencies
17
+ } = require(packageJsonPath);
18
+ _logger.Logger.log(_logger.Logger.SUCCESS_TYPE, `zohodesk/testinglibrary Version : ${dependencies['@zohodesk/testinglibrary']}`);
19
+ _commander.program.version(dependencies['@zohodesk/testinglibrary'] || '0.0.1');
20
+ return;
21
+ }
22
+ _logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'Supported Commands...');
23
+ _commander.program.name('npx ZDTestingFramework');
24
+ _commander.program.command('test').description('This command is used to execute tests');
25
+ _commander.program.command('init').description('This command will initialize Project');
26
+ _commander.program.command('report').description('This command is used to generate a report summarizing the results of executed tests.');
27
+ _commander.program.command('re-run-failed').description('This command will re-run the failed test cases based on test summary');
28
+ _commander.program.command('codegen').description('This command is used to assist developer to write test case');
29
+ _commander.program.option('--headed', 'Run tests with a headed browser.');
30
+ _commander.program.option('--debug', 'This command is used to initiate a debugging session');
31
+ _commander.program.option('--tags', 'Run specific test case with mentioned tags (Usage: -- --tags="@live")');
32
+ _commander.program.option('--workers', 'Specify number of workers to run the test case parallely (Usage: -- --workers=2)');
33
+ _commander.program.option('--edition', 'Specify edition to run the test cases (Usage: -- --edition="standard". This will run the test cases with either no edition mentioned or edition standard)');
34
+ _commander.program.option('--browsers', 'Specify the browsers on which the test case should run (Usage: -- --browsers="chrome,firefox,safari")');
35
+ _commander.program.parse(process.argv);
36
+ }
37
+ var _default = exports.default = helpercmd;
@@ -0,0 +1,25 @@
1
+ <script>
2
+ function sortEdition(event) {
3
+ var currentURL = window.location.href;
4
+ const endPointCount = window.location.href.indexOf('#');
5
+ if (!(endPointCount == -1)) {
6
+ window.history.pushState({}, '', currentURL.slice(0, endPointCount));
7
+ currentURL = currentURL.slice(0, endPointCount);
8
+ }
9
+ console.log(currentURL);
10
+ window.open(`${currentURL}#?q=@edition_${event.target.value}`, '_self');
11
+ }
12
+ </script>
13
+ <div class="mainContainer" style="margin-left: 20px; display: flex;">
14
+ <div class="selectEditionContainer" style="padding: 20px;">
15
+ <select class="selectEdition" style="padding: 5px; width: 100px; border-radius: 6px; border: 1px solid var(--color-border-default);" onchange="sortEdition(event)">
16
+ <option value="EnterPrise">EnterPrise</option>
17
+ <option value="Professional">Professional</option>
18
+ <option value="Express">Express</option>
19
+ <option value="Standard">Standard</option>
20
+ <option value="Free">Free</option>
21
+ </select>
22
+ </div>
23
+ </div>
24
+
25
+
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.preProcessReport = preProcessReport;
8
+ var _fs = _interopRequireDefault(require("fs"));
9
+ var _logger = require("./../../utils/logger");
10
+ var _path = _interopRequireDefault(require("path"));
11
+ const htmlFilePath = _path.default.resolve(process.cwd(), 'uat', 'playwright-report', 'index.html');
12
+ const fileHtml = _fs.default.readFileSync(htmlFilePath, 'utf-8');
13
+ const addOnHtml = _fs.default.readFileSync(_path.default.resolve(__filename, '../', 'addonScript.html'), 'utf-8');
14
+ const splitedHTML = fileHtml.split('\n');
15
+ const toAdd = addOnHtml.split('\n');
16
+ function preProcessReport() {
17
+ if (_fs.default.existsSync(htmlFilePath)) {
18
+ const modifiedContent = [...splitedHTML.slice(0, 55), ...toAdd, ...splitedHTML.slice(56)].join('').toString();
19
+ _fs.default.writeFileSync(htmlFilePath, modifiedContent);
20
+ return;
21
+ } else {
22
+ _logger.Logger.log(_logger.Logger.FAILURE_TYPE, 'Report is not generated Properly ...');
23
+ }
24
+ return null;
25
+ }
@@ -0,0 +1,19 @@
1
+ // This is the sample file generated by testing framework. You can change as per the respective project login
2
+
3
+ const getUrlOrigin = require('../shared/url-helpers/getUrlOrigin');
4
+
5
+ async function accountLogin( { page, email, password } ) {
6
+ await page.locator('#login_id').fill(email);
7
+ await page.locator('#nextbtn').click();
8
+ await page.locator('#password').fill(password);
9
+ await page.locator('#nextbtn').click();
10
+
11
+ const domainUrlOrigin = getUrlOrigin(process.env.domain);
12
+ await page.waitForNavigation();
13
+ await Promise.race([
14
+ page.waitForURL(`${domainUrlOrigin}/**`),
15
+ page.waitForURL('**/announcement/**')
16
+ ]);
17
+ }
18
+
19
+ module.exports = accountLogin;
@@ -0,0 +1,2 @@
1
+ const editions = require('./editions/index');
2
+ module.exports = { editions }
@@ -1,72 +1,15 @@
1
1
  /* eslint-disable no-console */
2
2
  import { test as setup, expect } from '@zohodesk/testinglibrary';
3
- import path from 'path';
4
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
3
+ import {
4
+ performLoginSteps,
5
+ getDefaultActor
6
+ } from '@zohodesk/testinglibrary/helpers';
5
7
 
6
- const userdata = require('./authUsers.json');
8
+ import { loginSteps , validateLogin } from './testSetup';
7
9
 
8
- const authDirectory = path.resolve(process.cwd(), 'uat', 'playwright', '.auth');
10
+ const user = getDefaultActor();
9
11
 
10
- const authContent = { "cookies": [] };
11
-
12
- const LOGIN_ERR_MESSAGE = 'Need go be logged in';
13
- // const AUTH_ERR_MESSAGE = `Founded Path - ${path.resolve(process.cwd(),'uat','playwright','.auth')} \n Find if file is Properly Created. Cookies Cannot Be Read .. `
14
-
15
-
16
- function convertCookiesToParse(cookies, authFilePath) {
17
- try {
18
- return JSON.parse(cookies)
19
- } catch (err) {
20
- throw new Error(` Error while parsing cookies ${err} \n${path.resolve(process.cwd(), authFilePath)} File is Empty`)
21
- // process.exit()
22
- }
23
- }
24
-
25
- if (!existsSync(authDirectory)) {
26
- console.log('Creating auth directory for the first time setup...');
27
- mkdirSync(authDirectory, { recursive: true });
28
- }
29
-
30
- userdata.forEach((data) => {
31
- const authFile = path.resolve(path.join(authDirectory, `${data.filename}`));
32
- if (!existsSync(authFile)) {
33
- console.log('creating auth file..');
34
- writeFileSync(authFile, JSON.stringify(authContent, null, 2))
35
- }
36
- setup(data.description, async ({ page }) => {
37
-
38
- try {
39
- const cookies = readFileSync(authFile);
40
- const parsedCookies = convertCookiesToParse(cookies, authFile);
41
- await page.context().addCookies(parsedCookies.cookies === undefined ? [] : parsedCookies.cookies)
42
- await page.goto(page.getBaseUrl());
43
- await page.waitForLoadState();
44
- if (await page.url().includes(process.env.domain)) {
45
- await page.waitForSelector(data.locator);
46
- } else {
47
- throw new Error(LOGIN_ERR_MESSAGE);
48
- }
49
-
50
-
51
- } catch (err) {
52
- if (err.message === LOGIN_ERR_MESSAGE) {
53
-
54
- await expect(page.locator('.load-bg')).toBeHidden();
55
- await page.locator('#login_id').type(data.useremail);
56
- await page.locator('#nextbtn').click();
57
- await page.locator('#password').type(data.password);
58
- await page.locator('#nextbtn').click();
59
-
60
- await page.waitForLoadState("networkidle");
61
-
62
- await page.waitForSelector(data.locator)
63
-
64
- await page.context().storageState({ path: authFile });
65
- }
66
-
67
- }
68
-
69
- });
70
-
71
-
72
- })
12
+ setup(`${user.edition} - Authentication`, async ({ page }) => {
13
+ //Implement performLoginSteps here
14
+ await performLoginSteps({page, ...user},validateLogin ,loginSteps);
15
+ });
@@ -0,0 +1,3 @@
1
+ const free = require('./free.json');
2
+ const editions = { free};
3
+ module.exports = editions;
@@ -0,0 +1,25 @@
1
+ [
2
+ {
3
+ "id": "1",
4
+ "edition": "free",
5
+ "orgName": "orgFree",
6
+ "profiles": [
7
+ {
8
+ "profile": "admin",
9
+ "email": "admin+free@zohotest.com",
10
+ "password": "password@0987"
11
+ },
12
+ {
13
+ "profile": "agent",
14
+ "email": "agent@zohotest.com",
15
+ "password": "password@12345"
16
+ },
17
+ {
18
+ "profile": "lightagent",
19
+ "email": "lightagent@zohotest.com",
20
+ "password": "password@12345"
21
+ }
22
+ ]
23
+ }
24
+ ]
25
+
@@ -2,15 +2,19 @@ import { existsSync, readFileSync, writeFileSync } from 'fs';
2
2
  import path from 'path';
3
3
  import { Logger } from '../utils/logger';
4
4
  import { generateConfigFromFile } from '../core/playwright/readConfigFile';
5
-
5
+ const gitIgnoreAbsolutePath = path.resolve(process.cwd(), '../', '../')
6
6
 
7
7
  const { reportPath = path.resolve(process.cwd(), 'uat', 'playwright-reports') } = generateConfigFromFile();
8
8
  const testResultsPath = path.resolve(process.cwd(), 'uat', 'test-results');
9
9
 
10
- const testResultsRelativepath = path.relative(path.resolve(process.cwd(), '../', '../'), testResultsPath)
11
- const reportRelativepath = path.relative(path.resolve(process.cwd(), '../', '../'), reportPath)
10
+ const testResultsRelativepath = path.relative(gitIgnoreAbsolutePath, testResultsPath)
11
+ const reportRelativepath = path.relative(gitIgnoreAbsolutePath, reportPath)
12
+
13
+
14
+ const absolutePathfeaturegen = path.resolve(process.cwd(), 'uat', '.features-gen');
15
+ const featuregenRelativePath = path.relative(gitIgnoreAbsolutePath,absolutePathfeaturegen)
12
16
 
13
- const dirpathtoIgnore = `${testResultsRelativepath}\n${reportRelativepath}`
17
+ const dirpathtoIgnore = `${testResultsRelativepath}\n${reportRelativepath}\n${featuregenRelativePath}`
14
18
 
15
19
  function updateGitIgnore() {
16
20
  if (existsSync(path.resolve(process.cwd(), '../', '../', '.gitignore'))) {
@@ -0,0 +1,7 @@
1
+ {
2
+ "environment": "dev",
3
+ "edition": "enterprise",
4
+ "profile": "admin",
5
+ "domain": "https://zdesk-devops25.csez.zohocorpin.com:31037/agent",
6
+ "devUrl" : ""
7
+ }
@@ -0,0 +1,14 @@
1
+ /* eslint-disable global-require */
2
+ const accountLogin = require('./accountLogin');
3
+
4
+ async function verifyPageIsLoaded({page}) {
5
+
6
+ //Implement your validation logic here
7
+ //Refer deskclientapp testSetup.js
8
+ }
9
+
10
+ module.exports = {
11
+ loginSteps:accountLogin,
12
+ validateLogin:verifyPageIsLoaded,
13
+ page:()=>{}
14
+ };
@@ -1,3 +1,4 @@
1
+ const testSetup = require('../../fixtures/testSetup');
1
2
  /**
2
3
  * @typedef {Object|null} viewportConfig
3
4
  * @property {number} width - width of the viewport
@@ -11,7 +12,7 @@
11
12
  * @property {boolean} video - video for test cases,
12
13
  * @property {boolean} debug - debug mode
13
14
  * @property {string} mode: mode in which the test cases needs to run
14
- * @property {boolean} isAuthMode - Auth Mode
15
+ * @property {boolean} isAuthMode - Auth Mode. config whether authentication step needed before running test cases
15
16
  * @property {string} authFilePath - File Path where the cookies stored
16
17
  * @property {any} browsers: List of browsers
17
18
  * @property {string} openReportOn: default Option value (never, on-failure and always)
@@ -22,7 +23,8 @@
22
23
  * @property {Object} additionalPages: custom pages configuration
23
24
  * @property {string} featureFilesFolder: folder name under which feature-files will be placed. Default is feature-files
24
25
  * @property {string} stepDefinitionsFolder: folder name under which step implementations will be placed. Default is steps
25
- * @property {viewportConfig} viewport: viewport configuration for the browser. If null, it will take the screen width and height
26
+ * @property {viewportConfig} viewport: viewport configuration for the browser. Default is { width: 1280, height: 720 }
27
+ * @property {string} testIdAttribute: Change the default data-testid attribute. configure what attribute to search while calling getByTestId
26
28
  */
27
29
 
28
30
  /**
@@ -36,7 +38,9 @@ module.exports = {
36
38
  authFilePath: 'uat/playwright/.auth/user.json',
37
39
  trace: true,
38
40
  video: true,
41
+ bddMode: true,
39
42
  featureFilesFolder: 'feature-files',
40
43
  stepDefinitionsFolder: 'steps',
41
- viewport: null
44
+ viewport: { width: 1280, height: 720 },
45
+ testSetup
42
46
  }
@@ -10,10 +10,10 @@ var _path = _interopRequireDefault(require("path"));
10
10
  var _logger = require("../utils/logger");
11
11
  function getScriptsToBeAdded() {
12
12
  return {
13
- "ua-test": "ZDTestingFramework test --mode=prod --headed",
14
- "ua-test-debug": "ZDTestingFramework test --mode=prod --debug",
15
- "ua-test-ci": "ZDTestingFramework test --mode=prod",
16
- "ua-report": "ZDTestingFramework report --port=9009",
13
+ "uat": "ZDTestingFramework test --mode=dev --headed",
14
+ "uat-debug": "ZDTestingFramework test --mode=dev --debug",
15
+ "uat-validate": "ZDTestingFramework validate",
16
+ "uat-report": "ZDTestingFramework report --port=9009",
17
17
  "codegen": "ZDTestingFramework codegen deskclientapp.localzoho.com/agent"
18
18
  };
19
19
  }
@@ -62,15 +62,23 @@ function createUatConfig() {
62
62
  function createAuthenticationFile() {
63
63
  const isUATexist = _path.default.resolve(process.cwd(), 'uat');
64
64
  if ((0, _fs.existsSync)(isUATexist)) {
65
- _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Creating Authentication File ....');
66
65
  try {
67
- (0, _fs.mkdirSync)(_path.default.resolve(process.cwd(), 'uat', 'fixtures'));
68
- (0, _fs.mkdirSync)(_path.default.resolve(process.cwd(), 'uat', 'playwright', '.auth'), {
69
- recursive: true
70
- });
66
+ if (!(0, _fs.existsSync)(_path.default.resolve(process.cwd(), 'uat', 'fixtures'))) {
67
+ (0, _fs.mkdirSync)(_path.default.resolve(process.cwd(), 'uat', 'fixtures'));
68
+ }
69
+ if (!(0, _fs.existsSync)(_path.default.resolve(process.cwd(), 'uat', 'playwright', '.auth'))) {
70
+ (0, _fs.mkdirSync)(_path.default.resolve(process.cwd(), 'uat', 'playwright', '.auth'), {
71
+ recursive: true
72
+ });
73
+ }
71
74
  (0, _fs.writeFileSync)(_path.default.resolve(process.cwd(), 'uat', 'fixtures', 'auth.setup.js'), getSetupFileAsString('auth-setup-sample.js'), null, 2);
72
- (0, _fs.writeFileSync)(_path.default.resolve(process.cwd(), 'uat', 'fixtures', 'authUsers.json'), getSetupFileAsString('authUsers-sample.json'), null, 2);
75
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Creating Authentication File ....');
76
+ (0, _fs.writeFileSync)(_path.default.resolve(process.cwd(), 'uat', 'fixtures', 'accountLogin.js'), getSetupFileAsString('accountLogin-sample.js'), null, 2);
77
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Creating login script File ....');
78
+ (0, _fs.writeFileSync)(_path.default.resolve(process.cwd(), 'uat', 'fixtures', 'testSetup.js'), getSetupFileAsString('testSetup-sample.js'), null, 2);
79
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Creating testSetup File ....');
73
80
  } catch (err) {
81
+ _logger.Logger.error(err);
74
82
  _logger.Logger.log(_logger.Logger.FAILURE_TYPE, 'Something went wrong ! Folder not Created. Please re-initialize npm init-uat');
75
83
  }
76
84
  } else {
@@ -80,8 +88,21 @@ function createAuthenticationFile() {
80
88
  function createConfigJson() {
81
89
  const uatFolder = _path.default.resolve(process.cwd(), 'uat');
82
90
  if ((0, _fs.existsSync)(uatFolder)) {
83
- _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Creating env-config file inside UAT Folder');
84
- (0, _fs.writeFileSync)(_path.default.resolve(uatFolder, './env-config.json'), getSetupFileAsString('env-config-sample.json'), null, 2);
91
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Creating settings.json file inside UAT Folder');
92
+ if (!(0, _fs.existsSync)(_path.default.resolve(uatFolder, 'conf', 'default'))) {
93
+ (0, _fs.mkdirSync)(_path.default.resolve(uatFolder, 'conf', 'default'), {
94
+ recursive: true
95
+ });
96
+ }
97
+ (0, _fs.writeFileSync)(_path.default.resolve(uatFolder, 'conf', 'default', './settings.json'), getSetupFileAsString('settings.json'), null, 2);
98
+ if (!(0, _fs.existsSync)(_path.default.resolve(uatFolder, 'conf', 'default', 'actors', 'editions'))) {
99
+ (0, _fs.mkdirSync)(_path.default.resolve(uatFolder, 'conf', 'default', 'actors', 'editions'), {
100
+ recursive: true
101
+ });
102
+ }
103
+ (0, _fs.writeFileSync)(_path.default.resolve(uatFolder, 'conf', 'default', 'actors', 'editions', 'free.json'), getSetupFileAsString('free-sample.json'), null, 2);
104
+ (0, _fs.writeFileSync)(_path.default.resolve(uatFolder, 'conf', 'default', 'actors', 'editions', 'index.js'), getSetupFileAsString('editions-index.js'), null, 2);
105
+ (0, _fs.writeFileSync)(_path.default.resolve(uatFolder, 'conf', 'default', 'actors', 'index.js'), getSetupFileAsString('actors-index.js'), null, 2);
85
106
  } else {
86
107
  _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Something went wrong. Please re-initialize the @zohodesk/testinglibrary');
87
108
  }
@@ -92,6 +113,7 @@ function setupProject() {
92
113
  createFolderForUAT();
93
114
  createConfigJson();
94
115
  createAuthenticationFile();
116
+ //updateGitIgnore()
95
117
  // Create folder for playwright . Inside .auth folder needs to be created. user.json
96
118
  // Add playwright and test-results to .gitignore
97
119
  setTimeout(() => {