@zohodesk/testinglibrary 0.0.7 → 0.0.8-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 +50 -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 +71 -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 +93 -14
  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 +75 -103
  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 -98
  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 +13 -2
  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 +9610 -6631
  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 +277 -0
  110. package/Changelog.md +0 -42
  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
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ class Project {
4
+ constructor(name) {
5
+ this.properties = {};
6
+ this.properties.name = name;
7
+ }
8
+ setTestDir(value) {
9
+ this.properties.testDir = value;
10
+ }
11
+ setTestMatch(value) {
12
+ this.properties.testMatch = value;
13
+ }
14
+ setRetries(value) {
15
+ this.properties.retries = value;
16
+ }
17
+ setUse(value) {
18
+ this.properties.use = value;
19
+ }
20
+ setTearDown(value) {
21
+ this.properties.teardown = value;
22
+ }
23
+ setDependencies(value) {
24
+ this.properties.dependencies = value;
25
+ }
26
+ setProperty(key, value) {
27
+ this.properties[key] = value;
28
+ }
29
+ getProperties() {
30
+ return this.properties;
31
+ }
32
+ }
33
+ module.exports = {
34
+ Project
35
+ };
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.cleanupConfig = cleanupConfig;
8
+ exports.setupConfig = setupConfig;
9
+ exports.smokeTestConfig = smokeTestConfig;
10
+ var _path = _interopRequireDefault(require("path"));
11
+ var _Project = require("./Project");
12
+ var _configUtils = require("./config-utils");
13
+ var _readConfigFile = require("../readConfigFile");
14
+ const uatConfig = (0, _readConfigFile.generateConfigFromFile)();
15
+ const {
16
+ isAuthMode,
17
+ isSmokeTest,
18
+ bddMode,
19
+ authFilePath,
20
+ trace,
21
+ video,
22
+ testIdAttribute,
23
+ viewport
24
+ } = uatConfig;
25
+ function setupConfig() {
26
+ const setupProject = new _Project.Project('setup');
27
+ setupProject.setTestMatch(/.*\.setup\.js/);
28
+ setupProject.setTestDir(_path.default.join(process.cwd(), 'uat'));
29
+ const isTearDown = JSON.parse(process.env.tearDown);
30
+ setupProject.setTearDown(isTearDown ? 'cleanup' : '');
31
+ const setupProjectConfig = [setupProject.getProperties()];
32
+ return setupProjectConfig;
33
+ }
34
+ function smokeTestConfig() {
35
+ const smokeTestProject = new _Project.Project('smokeTest');
36
+ const smokeTestDir = (0, _configUtils.getTestDir)(bddMode, {
37
+ featureFilesFolder: _path.default.join(process.cwd(), 'uat', 'smokeTest', '**', '*.feature'),
38
+ stepDefinitionsFolder: _path.default.join(process.cwd(), 'uat', '**', 'steps', '*.spec.js'),
39
+ outputDir: _path.default.join(process.cwd(), 'uat', '.features-smoke-gen'),
40
+ uatPath: _path.default.join(process.cwd(), 'uat', 'smokeTest')
41
+ });
42
+ const commonConfig = {
43
+ storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
44
+ };
45
+ smokeTestProject.setTestDir(smokeTestDir);
46
+ smokeTestProject.setRetries(0);
47
+ smokeTestProject.setUse({
48
+ ...commonConfig
49
+ });
50
+ smokeTestProject.setDependencies(isAuthMode ? ['setup'] : []);
51
+ const smokeTestProjectConfig = [smokeTestProject.getProperties()];
52
+ return smokeTestProjectConfig;
53
+ }
54
+ function defaultConfig() {
55
+ const defaultProject = new _Project.Project('default');
56
+ const testDir = (0, _configUtils.getTestDir)(bddMode, {
57
+ featureFilesFolder: (0, _configUtils.getPathsForFeatureFiles)(process.cwd()),
58
+ stepDefinitionsFolder: _path.default.join(process.cwd(), 'uat', '**', 'steps', '*.spec.js'),
59
+ outputDir: _path.default.join(process.cwd(), 'uat', '.features-gen'),
60
+ uatPath: _path.default.join(process.cwd(), 'uat')
61
+ });
62
+ const use = {
63
+ trace,
64
+ video,
65
+ viewport,
66
+ testIdAttribute
67
+ };
68
+ defaultProject.setUse(use);
69
+ defaultProject.setTestDir(testDir);
70
+ defaultProject.setDependencies(isSmokeTest ? ['smokeTest'] : []);
71
+ const defaultProjectConfig = [defaultProject.getProperties()];
72
+ return defaultProjectConfig;
73
+ }
74
+ function cleanupConfig() {
75
+ const cleanupProject = new _Project.Project('cleanup');
76
+ cleanupProject.setTestMatch(/.*\.teardown\.js/);
77
+ cleanupProject.setTestDir(_path.default.join(process.cwd(), 'uat'));
78
+ const cleanupProjectConfig = [cleanupProject.getProperties()];
79
+ return cleanupProjectConfig;
80
+ }
@@ -7,111 +7,83 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _test = require("@playwright/test");
9
9
  var _path = _interopRequireDefault(require("path"));
10
- var _bddFramework = require("../../../bdd-framework");
11
10
  var _readConfigFile = require("../readConfigFile");
12
- // @ts-check
13
-
14
- // import { cpus } from 'os';
15
- // const numOfCpus = cpus().length;
16
- const defaultBrowser = ['Chrome'];
11
+ var _configUtils = require("./config-utils");
12
+ var _ProjectConfiguration = require("./ProjectConfiguration");
13
+ const uatConfig = (0, _readConfigFile.generateConfigFromFile)();
17
14
  const {
18
- browsers = defaultBrowser,
19
- trace = false,
20
- video = false,
15
+ bddMode,
16
+ browsers,
17
+ isSmokeTest,
21
18
  isAuthMode,
22
19
  openReportOn,
23
- reportPath = _path.default.join(process.cwd(), 'uat', 'playwright-report'),
24
- bddMode = false,
25
- expectTimeout = 5 * 1000,
26
- testTimeout = 60 * 1000,
27
- authFilePath = 'uat/playwright/.auth/user.json'
28
- } = (0, _readConfigFile.generateConfigFromFile)();
29
- let projects = browsers.map(browserName => {
30
- let browser = browserName.toLowerCase();
31
- if (browser === 'chrome') {
32
- return {
33
- name: 'chromium',
34
- use: {
35
- ..._test.devices['Desktop Chrome'],
36
- storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
37
- },
38
- dependencies: isAuthMode ? ['setup'] : []
39
- };
40
- } else if (browser === 'edge') {
41
- return {
42
- name: 'Microsoft Edge',
43
- use: {
44
- ..._test.devices['Desktop Chrome'],
45
- channel: 'msedge',
46
- storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
47
- },
48
- dependencies: isAuthMode ? ['setup'] : []
49
- };
50
- } else if (browser === 'firefox') {
51
- return {
52
- name: 'firefox',
53
- timeout: 4 * 60 * 1000,
54
- expect: {
55
- timeout: 80 * 1000
56
- },
57
- use: {
58
- ..._test.devices['Desktop Firefox'],
59
- storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
60
- },
61
- dependencies: isAuthMode ? ['setup'] : []
62
- };
63
- } else if (browser === 'safari') {
64
- return {
65
- name: 'webkit',
66
- timeout: 2 * 60 * 1000,
67
- expect: {
68
- timeout: 80 * 1000
69
- },
70
- use: {
71
- ..._test.devices['Desktop Safari'],
72
- storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
73
- },
74
- dependencies: isAuthMode ? ['setup'] : null
75
- };
76
- }
77
- }).filter(Boolean);
78
- const testPath = _path.default.join(_path.default.resolve(process.cwd()), 'uat');
79
- const testDir = bddMode ? (0, _bddFramework.defineBddConfig)({
80
- paths: [`${testPath}/**/*.feature`],
81
- import: [`${testPath}/**/steps/*.spec.js`],
82
- featuresRoot: `${testPath}`,
83
- outputDir: `${testPath}/.features-gen`,
84
- publish: true
85
- }) : _path.default.join(_path.default.resolve(process.cwd()), 'uat');
86
- var _default = (0, _test.defineConfig)({
87
- testDir,
88
- outputDir: _path.default.join(process.cwd(), 'uat', 'test-results'),
89
- fullyParallel: true,
90
- forbidOnly: !!process.env.CI,
91
- retries: process.env.CI ? 2 : 0,
92
- workers: process.env.CI ? 1 : 1,
93
- reporter: [['html', {
94
- outputFolder: reportPath,
95
- open: openReportOn
96
- }]],
97
- timeout: testTimeout,
98
- expect: {
99
- timeout: expectTimeout
100
- },
101
- use: {
102
- trace: trace ? 'on' : 'off',
103
- video: video ? {
104
- mode: 'on',
105
- size: {
106
- width: 640,
107
- height: 480
108
- }
109
- } : 'off'
110
- },
111
- projects: isAuthMode ? [{
112
- name: 'setup',
113
- testMatch: /.*\.setup\.js/,
114
- testDir: _path.default.join(_path.default.resolve(process.cwd()), 'uat')
115
- }, ...projects] : [...projects]
20
+ reportPath,
21
+ expectTimeout,
22
+ testTimeout,
23
+ authFilePath,
24
+ viewport,
25
+ globalTimeout,
26
+ customReporter,
27
+ trace,
28
+ video,
29
+ testIdAttribute
30
+ } = uatConfig;
31
+ const projects = (0, _configUtils.getProjects)({
32
+ browsers,
33
+ isAuthMode,
34
+ isSmokeTest,
35
+ authFilePath,
36
+ expectTimeout,
37
+ testTimeout,
38
+ viewport
39
+ });
40
+ let reporter = [['html', {
41
+ outputFolder: reportPath,
42
+ open: openReportOn
43
+ }], ['list'], ['json', {
44
+ outputFile: _path.default.join(process.cwd(), 'uat', 'test-results', 'playwright-test-results.json')
45
+ }], ['./custom-reporter.js'], ['./qc-custom-reporter.js']];
46
+ if (customReporter) {
47
+ reporter = [customReporter, ...reporter];
48
+ }
49
+
50
+ /**
51
+ * Playwright configuration object
52
+ *
53
+ * @returns {import('@playwright/test').PlaywrightTestConfig}
54
+ */
55
+
56
+ const use = {
57
+ trace,
58
+ video,
59
+ viewport,
60
+ testIdAttribute
61
+ };
62
+ const testDir = (0, _configUtils.getTestDir)(bddMode, {
63
+ featureFilesFolder: (0, _configUtils.getPathsForFeatureFiles)(process.cwd()),
64
+ stepDefinitionsFolder: _path.default.join(process.cwd(), 'uat', '**', 'steps', '*.spec.js'),
65
+ outputDir: _path.default.join(process.cwd(), 'uat', '.features-gen'),
66
+ uatPath: _path.default.join(process.cwd(), 'uat')
116
67
  });
117
- exports.default = _default;
68
+ function getPlaywrightConfig() {
69
+ const smokeTestProject = isSmokeTest ? (0, _ProjectConfiguration.smokeTestConfig)() : [];
70
+ const setupProject = isAuthMode ? (0, _ProjectConfiguration.setupConfig)() : [];
71
+ const isTearDown = JSON.parse(process.env.tearDown);
72
+ const cleanupProject = isTearDown ? (0, _ProjectConfiguration.cleanupConfig)() : [];
73
+ const playwrightConfig = {
74
+ testDir,
75
+ globalTimeout: globalTimeout || 3600000,
76
+ outputDir: _path.default.join(process.cwd(), 'uat', 'test-results'),
77
+ fullyParallel: true,
78
+ reporter,
79
+ timeout: testTimeout,
80
+ expect: {
81
+ timeout: expectTimeout
82
+ },
83
+ use,
84
+ projects: [...setupProject, ...smokeTestProject, ...projects, ...cleanupProject],
85
+ ...uatConfig
86
+ };
87
+ return playwrightConfig;
88
+ }
89
+ var _default = exports.default = (0, _test.defineConfig)(getPlaywrightConfig());
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getBrowsersList = getBrowsersList;
8
+ exports.getModulePathForFeatureFiles = getModulePathForFeatureFiles;
9
+ exports.getPathsForFeatureFiles = getPathsForFeatureFiles;
10
+ exports.getProjects = getProjects;
11
+ exports.getTestDir = getTestDir;
12
+ var _test = require("@playwright/test");
13
+ var _path = _interopRequireDefault(require("path"));
14
+ var _readConfigFile = require("../readConfigFile");
15
+ var _playwrightBdd = require("playwright-bdd");
16
+ var _logger = require("../../../utils/logger");
17
+ var _browserTypes = require("../constants/browserTypes");
18
+ var _fileUtils = require("../../../utils/fileUtils");
19
+ /**
20
+ ** Playwright project configuration
21
+ * @returns {import('@playwright/test').Project}
22
+ */
23
+
24
+ function getBrowserConfig({
25
+ browserName,
26
+ isAuthMode,
27
+ isSmokeTest,
28
+ authFilePath,
29
+ expectTimeout,
30
+ testTimeout,
31
+ viewport
32
+ }) {
33
+ const browser = browserName.toLowerCase();
34
+ const commonConfig = {
35
+ viewport,
36
+ storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {}
37
+ };
38
+ // Determine dependencies based on the mode and smoke test status
39
+ let dependencies = isAuthMode ? ['setup'] : [];
40
+ dependencies = isSmokeTest ? [...dependencies, 'smokeTest'] : dependencies;
41
+ if (browser === 'chrome') {
42
+ return {
43
+ name: _browserTypes.BROWSER_PROJECT_MAPPING.CHROME,
44
+ use: {
45
+ ..._test.devices['Desktop Chrome'],
46
+ ...commonConfig
47
+ },
48
+ dependencies,
49
+ timeout: testTimeout,
50
+ expect: {
51
+ timeout: expectTimeout
52
+ }
53
+ };
54
+ } else if (browser === 'edge') {
55
+ return {
56
+ name: _browserTypes.BROWSER_PROJECT_MAPPING.EDGE,
57
+ timeout: testTimeout,
58
+ expect: {
59
+ timeout: expectTimeout
60
+ },
61
+ use: {
62
+ ..._test.devices['Desktop Chrome'],
63
+ channel: 'msedge',
64
+ ...commonConfig
65
+ },
66
+ dependencies
67
+ };
68
+ } else if (browser === 'firefox') {
69
+ return {
70
+ name: _browserTypes.BROWSER_PROJECT_MAPPING.FIREFOX,
71
+ timeout: 2 * testTimeout,
72
+ expect: {
73
+ timeout: 2 * expectTimeout
74
+ },
75
+ use: {
76
+ ..._test.devices['Desktop Firefox'],
77
+ ...commonConfig
78
+ },
79
+ dependencies
80
+ };
81
+ } else if (browser === 'safari') {
82
+ return {
83
+ name: _browserTypes.BROWSER_PROJECT_MAPPING.SAFARI,
84
+ timeout: 4 * testTimeout,
85
+ expect: {
86
+ timeout: 4 * expectTimeout
87
+ },
88
+ use: {
89
+ ..._test.devices['Desktop Safari'],
90
+ ...commonConfig
91
+ },
92
+ dependencies
93
+ };
94
+ } else {
95
+ return false;
96
+ }
97
+ }
98
+
99
+ /**
100
+ *
101
+ * @param {*} param0
102
+ * @returns {import('@playwright/test').Project[]}
103
+ */
104
+ function getProjects({
105
+ browsers,
106
+ isAuthMode,
107
+ isSmokeTest,
108
+ authFilePath,
109
+ expectTimeout,
110
+ testTimeout,
111
+ viewport
112
+ }) {
113
+ return browsers.map(browserName => getBrowserConfig({
114
+ browserName,
115
+ isAuthMode,
116
+ isSmokeTest,
117
+ authFilePath,
118
+ expectTimeout,
119
+ testTimeout,
120
+ viewport
121
+ })).filter(Boolean);
122
+ }
123
+ function getBrowsersList(browserFromArgs) {
124
+ if (browserFromArgs) {
125
+ if (typeof browserFromArgs === 'string') {
126
+ let listOfbrowsers = browserFromArgs.split(',').map(browser => browser.trim().toLowerCase());
127
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Using browsers from command line args');
128
+ return listOfbrowsers;
129
+ }
130
+ }
131
+ return [];
132
+ }
133
+ function getPathsForFeatureFiles(cwd) {
134
+ if (process.env.isRerunFailedCases) {
135
+ let {
136
+ reportPath
137
+ } = (0, _readConfigFile.generateConfigFromFile)();
138
+ let filePathFromArgs = process.env.filePath;
139
+ let filePath = filePathFromArgs ? filePathFromArgs : reportPath;
140
+ const testSummary = (0, _fileUtils.readFileContents)(filePath);
141
+ if (testSummary !== null) {
142
+ const {
143
+ failed = []
144
+ } = JSON.parse(testSummary);
145
+ const casesToRun = failed.map(filePath => _path.default.join(cwd, 'uat', filePath.replace(/\.spec\.js$|\.js$/, '')));
146
+ return casesToRun;
147
+ } else {
148
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, `Unable to read test summary from the ${reportPath}. Verify If File Exists in the path`);
149
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Going to run all test cases');
150
+ }
151
+ } else if (process.env.modules !== 'undefined' && process.env.modules.length > 0) {
152
+ let modules = process.env.modules;
153
+ let moduleList = modules.split(',');
154
+ return getModulePathForFeatureFiles(moduleList);
155
+ }
156
+ return [_path.default.join(cwd, 'uat', 'modules', '**', '*.feature')];
157
+ }
158
+ function getModulePathForFeatureFiles(moduleList) {
159
+ let validModuleList = [];
160
+ moduleList.forEach(moduleName => {
161
+ let modulePath = _path.default.join(process.cwd(), 'uat', 'modules', '**', `${moduleName}`);
162
+ if ((0, _fileUtils.checkIfFolderExistsWithPattern)(modulePath)) {
163
+ validModuleList.push(_path.default.join(modulePath, '**', '*.feature'));
164
+ } else {
165
+ validModuleList = [];
166
+ throw new Error(`Module ${moduleName} does not exist. We have not triggered the execution for this module`);
167
+ }
168
+ });
169
+ return validModuleList;
170
+ }
171
+ function getTestDir(bddMode, {
172
+ featureFilesFolder,
173
+ stepDefinitionsFolder,
174
+ outputDir,
175
+ uatPath
176
+ }) {
177
+ return bddMode ? (0, _playwrightBdd.defineBddConfig)({
178
+ features: featureFilesFolder,
179
+ steps: [stepDefinitionsFolder, require.resolve('../fixtures.js')],
180
+ importTestFrom: require.resolve('../fixtures.js'),
181
+ featuresRoot: uatPath,
182
+ outputDir: outputDir,
183
+ disableWarnings: {
184
+ importTestFrom: true
185
+ },
186
+ publish: true
187
+ }) : uatPath;
188
+ }
@@ -0,0 +1,136 @@
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 _readline = _interopRequireDefault(require("readline"));
10
+ var _fileUtils = require("../../../utils/fileUtils");
11
+ var _readConfigFile = require("../readConfigFile");
12
+ var _logger = require("../../../utils/logger");
13
+ var _configFileNameProvider = require("../helpers/configFileNameProvider");
14
+ class JSONSummaryReporter {
15
+ constructor() {
16
+ this.durationInMS = -1;
17
+ this.passed = [];
18
+ this.skipped = [];
19
+ this.failed = [];
20
+ this.warned = [];
21
+ this.errored = [];
22
+ this.interrupted = [];
23
+ this.timedOut = [];
24
+ this.flakey = [];
25
+ this.failedSteps = [];
26
+ this.status = 'unknown';
27
+ this.startedAt = 0;
28
+ this._open = (0, _readConfigFile.generateConfigFromFile)().openReportOn;
29
+ }
30
+ onBegin() {
31
+ this.startedAt = Date.now();
32
+ }
33
+ getTitle(test) {
34
+ const title = [];
35
+ const fileName = [];
36
+ let clean = true;
37
+ for (const s of test.titlePath()) {
38
+ if (s === '' && clean) {
39
+ continue;
40
+ }
41
+ clean = false;
42
+ title.push(s);
43
+ if (s.endsWith('.ts') || s.endsWith('.js')) {
44
+ fileName.push(s);
45
+ }
46
+ }
47
+
48
+ //Using the fullTitle variable in the push will push a full test name + test description
49
+
50
+ return {
51
+ fullTitle: title.join(' > '),
52
+ fileName: fileName[0] || ''
53
+ };
54
+ }
55
+ onTestEnd(test, result) {
56
+ const {
57
+ fullTitle,
58
+ fileName
59
+ } = this.getTitle(test);
60
+
61
+ // Set the status
62
+ const stepTitleList = result.steps.filter(step => step.error).map(step => ({
63
+ title: step.title,
64
+ error: step.error,
65
+ testTitle: fullTitle
66
+ }));
67
+ if (stepTitleList.length > 0) {
68
+ this.failedSteps = [...this.failedSteps, ...stepTitleList];
69
+ }
70
+ const status = !['passed', 'skipped'].includes(result.status) && fullTitle.includes('@warn') ? 'warned' : result.status;
71
+ // Logic to push the results into the correct array
72
+ if (result.status === 'passed' && result.retry >= 1) {
73
+ this.flakey.push(fileName);
74
+ } else {
75
+ this[status].push(fileName);
76
+ }
77
+ this[status].push(fileName);
78
+ }
79
+ onError(error) {
80
+ this.errored.push({
81
+ error: error.message,
82
+ stack: error.stack
83
+ });
84
+ }
85
+ onEnd(result) {
86
+ this.durationInMS = Date.now() - this.startedAt;
87
+ this.status = result.status;
88
+
89
+ // removing duplicate tests from passed array
90
+ this.passed = this.passed.filter((element, index) => {
91
+ return this.passed.indexOf(element) === index;
92
+ });
93
+ // removing duplicate tests from the failed array
94
+ this.failed = this.failed.filter((element, index) => {
95
+ if (!this.passed.includes(element)) {
96
+ return this.failed.indexOf(element) === index;
97
+ }
98
+ });
99
+ // removing duplicate tests from the skipped array
100
+ this.skipped = this.skipped.filter((element, index) => {
101
+ return this.skipped.indexOf(element) === index;
102
+ });
103
+ // removing duplicate tests from the timedOut array
104
+ this.timedOut = this.timedOut.filter((element, index) => {
105
+ return this.timedOut.indexOf(element) === index;
106
+ });
107
+ // removing duplicate tests from the interrupted array
108
+ this.interrupted = this.interrupted.filter((element, index) => {
109
+ return this.interrupted.indexOf(element) === index;
110
+ });
111
+ this.errored = this.errored.filter((element, index) => {
112
+ return this.errored.indexOf(element) === index;
113
+ });
114
+ if (this.errored.length > 0) {
115
+ // Reflect setup failures in the final report status
116
+ this.status = "failed";
117
+ }
118
+
119
+ // fs.writeFileSync('./summary.json', JSON.stringify(this, null, ' '));
120
+ let {
121
+ reportPath
122
+ } = (0, _readConfigFile.generateConfigFromFile)();
123
+ (0, _fileUtils.writeFileContents)(_path.default.join(reportPath, './', (0, _configFileNameProvider.getReportFileName)()), JSON.stringify(this, null, ' '));
124
+ }
125
+ onExit() {
126
+ const shouldClearLastLine = this._open !== 'always' || this._open !== 'on-failure';
127
+ if (shouldClearLastLine) {
128
+ /**Below code is to replace the playwright default report commond with abstraction tool command */
129
+ _readline.default.moveCursor(process.stdout, 0, -2); // up two line
130
+ _readline.default.clearLine(process.stdout, 1); // from cursor to end
131
+ _logger.Logger.log(_logger.Logger.SUCCESS_TYPE, 'npx ZDTestingFramework report or npm run uat-report');
132
+ return;
133
+ }
134
+ }
135
+ }
136
+ var _default = exports.default = JSONSummaryReporter;