@zohodesk/testinglibrary 0.1.8-stb-bdd-v26 → 0.1.9-exp-actors

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 (170) hide show
  1. package/.babelrc +21 -18
  2. package/.eslintrc.js +31 -31
  3. package/.prettierrc +5 -5
  4. package/README.md +17 -17
  5. package/bin/cli.js +2 -2
  6. package/build/bdd-framework/cli/commands/env.js +42 -0
  7. package/build/bdd-framework/cli/commands/export.js +47 -0
  8. package/build/bdd-framework/cli/commands/test.js +64 -0
  9. package/build/bdd-framework/cli/index.js +11 -0
  10. package/build/bdd-framework/cli/options.js +19 -0
  11. package/build/bdd-framework/cli/worker.js +13 -0
  12. package/build/bdd-framework/config/configDir.js +35 -0
  13. package/build/bdd-framework/config/enrichReporterData.js +23 -0
  14. package/build/bdd-framework/config/env.js +50 -0
  15. package/build/bdd-framework/config/index.js +94 -0
  16. package/build/bdd-framework/config/lang.js +14 -0
  17. package/build/bdd-framework/cucumber/buildStepDefinition.js +43 -0
  18. package/build/bdd-framework/cucumber/createTestStep.js +43 -0
  19. package/build/bdd-framework/cucumber/formatter/EventDataCollector.js +126 -0
  20. package/build/bdd-framework/cucumber/formatter/GherkinDocumentParser.js +72 -0
  21. package/build/bdd-framework/cucumber/formatter/PickleParser.js +25 -0
  22. package/build/bdd-framework/cucumber/formatter/durationHelpers.js +13 -0
  23. package/build/bdd-framework/cucumber/formatter/getColorFns.js +57 -0
  24. package/build/bdd-framework/cucumber/formatter/index.js +16 -0
  25. package/build/bdd-framework/cucumber/formatter/locationHelpers.js +16 -0
  26. package/build/bdd-framework/cucumber/loadConfig.js +17 -0
  27. package/build/bdd-framework/cucumber/loadFeatures.js +70 -0
  28. package/build/bdd-framework/cucumber/loadSnippetBuilder.js +20 -0
  29. package/build/bdd-framework/cucumber/loadSteps.js +47 -0
  30. package/build/bdd-framework/cucumber/resolveFeaturePaths.js +62 -0
  31. package/build/bdd-framework/cucumber/stepArguments.js +21 -0
  32. package/build/bdd-framework/cucumber/types.js +5 -0
  33. package/build/bdd-framework/cucumber/valueChecker.js +23 -0
  34. package/build/bdd-framework/decorators.js +18 -0
  35. package/build/bdd-framework/gen/fixtures.js +48 -0
  36. package/build/bdd-framework/gen/formatter.js +123 -0
  37. package/build/bdd-framework/gen/i18n.js +39 -0
  38. package/build/bdd-framework/gen/index.js +185 -0
  39. package/build/bdd-framework/gen/testFile.js +465 -0
  40. package/build/bdd-framework/gen/testMeta.js +60 -0
  41. package/build/bdd-framework/gen/testNode.js +60 -0
  42. package/build/bdd-framework/gen/testPoms.js +133 -0
  43. package/build/bdd-framework/hooks/scenario.js +130 -0
  44. package/build/bdd-framework/hooks/worker.js +89 -0
  45. package/build/bdd-framework/index.js +52 -0
  46. package/build/bdd-framework/playwright/fixtureParameterNames.js +93 -0
  47. package/build/bdd-framework/playwright/getLocationInFile.js +79 -0
  48. package/build/bdd-framework/playwright/loadConfig.js +42 -0
  49. package/build/bdd-framework/playwright/loadUtils.js +33 -0
  50. package/build/bdd-framework/playwright/testTypeImpl.js +61 -0
  51. package/build/bdd-framework/playwright/transform.js +88 -0
  52. package/build/bdd-framework/playwright/types.js +5 -0
  53. package/build/bdd-framework/playwright/utils.js +34 -0
  54. package/build/bdd-framework/reporter/cucumber/base.js +57 -0
  55. package/build/bdd-framework/reporter/cucumber/custom.js +73 -0
  56. package/build/bdd-framework/reporter/cucumber/helper.js +12 -0
  57. package/build/bdd-framework/reporter/cucumber/html.js +35 -0
  58. package/build/bdd-framework/reporter/cucumber/index.js +74 -0
  59. package/build/bdd-framework/reporter/cucumber/json.js +312 -0
  60. package/build/bdd-framework/reporter/cucumber/junit.js +205 -0
  61. package/build/bdd-framework/reporter/cucumber/message.js +20 -0
  62. package/build/bdd-framework/reporter/cucumber/messagesBuilder/AttachmentMapper.js +64 -0
  63. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Builder.js +196 -0
  64. package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocument.js +43 -0
  65. package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocumentClone.js +52 -0
  66. package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocuments.js +105 -0
  67. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Hook.js +70 -0
  68. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Meta.js +45 -0
  69. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Pickles.js +27 -0
  70. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Projects.js +38 -0
  71. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCase.js +128 -0
  72. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRun.js +126 -0
  73. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRunHooks.js +102 -0
  74. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepAttachments.js +50 -0
  75. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepRun.js +88 -0
  76. package/build/bdd-framework/reporter/cucumber/messagesBuilder/index.js +30 -0
  77. package/build/bdd-framework/reporter/cucumber/messagesBuilder/pwUtils.js +51 -0
  78. package/build/bdd-framework/reporter/cucumber/messagesBuilder/timing.js +35 -0
  79. package/build/bdd-framework/reporter/cucumber/messagesBuilder/types.js +5 -0
  80. package/build/bdd-framework/run/StepInvoker.js +68 -0
  81. package/build/bdd-framework/run/bddDataAttachment.js +46 -0
  82. package/build/bdd-framework/run/bddFixtures.js +191 -0
  83. package/build/bdd-framework/run/bddWorld.js +79 -0
  84. package/build/bdd-framework/run/bddWorldInternal.js +15 -0
  85. package/build/bdd-framework/snippets/index.js +132 -0
  86. package/build/bdd-framework/snippets/snippetSyntax.js +43 -0
  87. package/build/bdd-framework/snippets/snippetSyntaxDecorators.js +26 -0
  88. package/build/bdd-framework/snippets/snippetSyntaxTs.js +18 -0
  89. package/build/bdd-framework/stepDefinitions/createBdd.js +66 -0
  90. package/build/bdd-framework/stepDefinitions/decorators/class.js +68 -0
  91. package/build/bdd-framework/stepDefinitions/decorators/steps.js +99 -0
  92. package/build/bdd-framework/stepDefinitions/defineStep.js +62 -0
  93. package/build/bdd-framework/stepDefinitions/stepConfig.js +24 -0
  94. package/build/bdd-framework/utils/AutofillMap.js +20 -0
  95. package/build/bdd-framework/utils/exit.js +62 -0
  96. package/build/bdd-framework/utils/index.js +93 -0
  97. package/build/bdd-framework/utils/jsStringWrap.js +44 -0
  98. package/build/bdd-framework/utils/logger.js +30 -0
  99. package/build/bdd-framework/utils/stripAnsiEscapes.js +20 -0
  100. package/build/core/playwright/builtInFixtures/addTags.js +1 -1
  101. package/build/core/playwright/builtInFixtures/context.js +18 -1
  102. package/build/core/playwright/builtInFixtures/i18N.js +33 -0
  103. package/build/core/playwright/builtInFixtures/index.js +19 -7
  104. package/build/core/playwright/builtInFixtures/page.js +87 -39
  105. package/build/core/playwright/builtInFixtures/unauthenticatedPage.js +18 -0
  106. package/build/core/playwright/clear-caches.js +19 -8
  107. package/build/core/playwright/codegen.js +4 -4
  108. package/build/core/playwright/constants/browserTypes.js +12 -0
  109. package/build/core/playwright/custom-commands.js +1 -1
  110. package/build/core/playwright/env-initializer.js +10 -6
  111. package/build/core/playwright/helpers/auth/accountLogin.js +18 -0
  112. package/build/core/playwright/helpers/auth/checkAuthCookies.js +50 -0
  113. package/build/core/playwright/helpers/auth/getUrlOrigin.js +13 -0
  114. package/build/core/playwright/helpers/auth/getUsers.js +111 -0
  115. package/build/core/playwright/helpers/auth/index.js +70 -0
  116. package/build/core/playwright/helpers/auth/loginSteps.js +36 -0
  117. package/build/core/playwright/helpers/configFileNameProvider.js +24 -0
  118. package/build/core/playwright/helpers/getUserFixtures.js +23 -0
  119. package/build/core/playwright/helpers/mergeObjects.js +13 -0
  120. package/build/core/playwright/helpers/parseUserArgs.js +11 -0
  121. package/build/core/playwright/index.js +81 -15
  122. package/build/core/playwright/readConfigFile.js +50 -39
  123. package/build/core/playwright/report-generator.js +7 -7
  124. package/build/core/playwright/setup/config-creator.js +15 -16
  125. package/build/core/playwright/setup/config-utils.js +60 -26
  126. package/build/core/playwright/setup/custom-reporter.js +3 -2
  127. package/build/core/playwright/tag-processor.js +12 -23
  128. package/build/core/playwright/test-runner.js +50 -65
  129. package/build/core/playwright/types.js +43 -0
  130. package/build/decorators.d.ts +1 -1
  131. package/build/decorators.js +16 -2
  132. package/build/index.d.ts +97 -12
  133. package/build/index.js +63 -9
  134. package/build/lib/cli.js +12 -3
  135. package/build/lib/post-install.js +18 -10
  136. package/build/parser/sample.feature +34 -34
  137. package/build/parser/sample.spec.js +18 -18
  138. package/build/setup-folder-structure/helper.js +3 -0
  139. package/build/setup-folder-structure/reportEnhancement/addonScript.html +24 -24
  140. package/build/setup-folder-structure/samples/auth-setup-sample.js +71 -72
  141. package/build/setup-folder-structure/samples/authUsers-sample.json +8 -8
  142. package/build/setup-folder-structure/samples/env-config-sample.json +20 -20
  143. package/build/setup-folder-structure/samples/git-ignore.sample.js +36 -36
  144. package/build/setup-folder-structure/samples/uat-config-sample.js +44 -44
  145. package/build/utils/cliArgsToObject.js +30 -26
  146. package/build/utils/fileUtils.js +4 -19
  147. package/build/utils/getFilePath.js +1 -2
  148. package/build/utils/rootPath.js +16 -9
  149. package/changelog.md +144 -131
  150. package/jest.config.js +63 -63
  151. package/npm-shrinkwrap.json +6475 -5994
  152. package/package.json +57 -56
  153. package/playwright.config.js +112 -112
  154. package/build/bdd-poc/config/pathConfig.js +0 -22
  155. package/build/bdd-poc/core-runner/exportMethods.js +0 -22
  156. package/build/bdd-poc/core-runner/main.js +0 -15
  157. package/build/bdd-poc/core-runner/stepDefinitions.js +0 -157
  158. package/build/bdd-poc/core-runner/stepRunner.js +0 -25
  159. package/build/bdd-poc/errors/throwError.js +0 -23
  160. package/build/bdd-poc/index.js +0 -26
  161. package/build/bdd-poc/test/cucumber/featureFileParer.js +0 -84
  162. package/build/bdd-poc/test/cucumber/parserCucumber.js +0 -15
  163. package/build/bdd-poc/test/stepGenerate/extractTestInputs.js +0 -65
  164. package/build/bdd-poc/test/stepGenerate/parserSteps.js +0 -81
  165. package/build/bdd-poc/test/stepGenerate/stepFileGenerate.js +0 -40
  166. package/build/bdd-poc/test/stepGenerate/stepsnippets.js +0 -61
  167. package/build/bdd-poc/test/tagsHandle.js +0 -70
  168. package/build/bdd-poc/test/testData.js +0 -125
  169. package/build/bdd-poc/test/testStructure.js +0 -92
  170. package/build/bdd-poc/utils/stringManipulation.js +0 -26
@@ -4,35 +4,101 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ exports.When = exports.Then = exports.Given = void 0;
8
+ Object.defineProperty(exports, "accountLogin", {
9
+ enumerable: true,
10
+ get: function () {
11
+ return _index.accountLogin;
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "createBdd", {
15
+ enumerable: true,
16
+ get: function () {
17
+ return _bddFramework.createBdd;
18
+ }
19
+ });
7
20
  Object.defineProperty(exports, "expect", {
8
21
  enumerable: true,
9
22
  get: function () {
10
23
  return _test.expect;
11
24
  }
12
25
  });
26
+ Object.defineProperty(exports, "getDefaultActor", {
27
+ enumerable: true,
28
+ get: function () {
29
+ return _index.getDefaultActor;
30
+ }
31
+ });
32
+ Object.defineProperty(exports, "getListOfActors", {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _index.getListOfActors;
36
+ }
37
+ });
38
+ Object.defineProperty(exports, "getRunMode", {
39
+ enumerable: true,
40
+ get: function () {
41
+ return _index.getRunMode;
42
+ }
43
+ });
44
+ Object.defineProperty(exports, "getUserForSelectedEditionAndProfile", {
45
+ enumerable: true,
46
+ get: function () {
47
+ return _index.getUserForSelectedEditionAndProfile;
48
+ }
49
+ });
50
+ Object.defineProperty(exports, "isCI", {
51
+ enumerable: true,
52
+ get: function () {
53
+ return _index.isCI;
54
+ }
55
+ });
56
+ Object.defineProperty(exports, "isDevelopmentSetup", {
57
+ enumerable: true,
58
+ get: function () {
59
+ return _index.isDevelopmentSetup;
60
+ }
61
+ });
62
+ Object.defineProperty(exports, "loadCookiesIfPresent", {
63
+ enumerable: true,
64
+ get: function () {
65
+ return _index.loadCookiesIfPresent;
66
+ }
67
+ });
68
+ Object.defineProperty(exports, "performLoginSteps", {
69
+ enumerable: true,
70
+ get: function () {
71
+ return _index.performLoginSteps;
72
+ }
73
+ });
13
74
  exports.test = void 0;
75
+ Object.defineProperty(exports, "verifyIfCookieFileExists", {
76
+ enumerable: true,
77
+ get: function () {
78
+ return _index.verifyIfCookieFileExists;
79
+ }
80
+ });
81
+ var _bddFramework = require("../../bdd-framework");
14
82
  var _test = require("@playwright/test");
15
83
  var _readConfigFile = require("./readConfigFile");
16
84
  var _builtInFixtures = _interopRequireDefault(require("./builtInFixtures"));
17
- // import { createBdd, test as bddBase } from '../../bdd-framework';
18
-
85
+ var _index = require("./helpers/auth/index");
86
+ var _getUserFixtures = _interopRequireDefault(require("./helpers/getUserFixtures"));
19
87
  const {
20
- additionalPages: userFixtures,
21
88
  bddMode
22
89
  } = (0, _readConfigFile.generateConfigFromFile)();
23
- // In house BDD testing. so, use playwright test
24
- let base = _test.test;
90
+ let base = bddMode ? _bddFramework.test : _test.test;
25
91
  const buildInFixtures = (0, _builtInFixtures.default)(bddMode);
26
- var $customFixtures = {};
27
- if (!bddMode) {
28
- $customFixtures = {
29
- $tags: ({}, use) => use([])
30
- };
31
- }
92
+ const userFixtures = (0, _getUserFixtures.default)();
32
93
  const test = exports.test = base.extend({
33
94
  ...buildInFixtures,
34
- ...userFixtures,
35
- ...$customFixtures
95
+ ...userFixtures
36
96
  });
37
-
38
- // const { Given, When, Then } = createBdd();
97
+ const {
98
+ Given,
99
+ When,
100
+ Then
101
+ } = (0, _bddFramework.createBdd)();
102
+ exports.Then = Then;
103
+ exports.When = When;
104
+ exports.Given = Given;
@@ -4,16 +4,17 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.fileName = void 0;
8
7
  exports.generateConfigFromFile = generateConfigFromFile;
9
8
  exports.getAuthFilePath = getAuthFilePath;
10
9
  exports.isUserConfigFileAvailable = isUserConfigFileAvailable;
11
10
  var _fs = require("fs");
12
11
  var _path = _interopRequireDefault(require("path"));
13
12
  var _logger = require("../../utils/logger");
14
- const fileName = exports.fileName = 'uat.config.js';
13
+ var _configFileNameProvider = require("./helpers/configFileNameProvider");
14
+ var _mergeObjects = require("./helpers/mergeObjects");
15
15
  function getDefaultConfig() {
16
16
  return {
17
+ uatDirectory: _path.default.join(process.cwd(), 'uat'),
17
18
  headless: false,
18
19
  browsers: ['Chrome'],
19
20
  trace: false,
@@ -35,6 +36,7 @@ function getDefaultConfig() {
35
36
  featureFilesFolder: 'feature-files',
36
37
  stepDefinitionsFolder: 'steps',
37
38
  testIdAttribute: 'data-testid',
39
+ testSetup: {},
38
40
  editionOrder: ['Free', 'Express', 'Standard', 'Professional', 'Enterprise']
39
41
  };
40
42
  }
@@ -51,49 +53,58 @@ function combineDefaultConfigWithUserConfig(userConfiguration) {
51
53
  _logger.Logger.log(_logger.Logger.INFO_TYPE, `key - ${configKey} is not yet supported in uat configuration. This will not be used while creating playwright configuration`);
52
54
  }
53
55
  });
54
- return {
55
- ...defaultConfig,
56
- ...configurationObj
57
- };
56
+ return (0, _mergeObjects.mergeObjects)(defaultConfig, configurationObj);
58
57
  }
58
+ /**
59
+ * @typedef {Object|null} viewportConfig
60
+ * @property {number} width - width of the viewport
61
+ * @property {number} height - height of the viewport
62
+ */
63
+ /**
64
+ * @typedef {Object|null} viewportConfig
65
+ * @property {number} width - width of the viewport
66
+ * @property {number} height - height of the viewport
67
+ */
59
68
 
60
- /**
61
- * @typedef {Object|null} viewportConfig
62
- * @property {number} width - width of the viewport
63
- * @property {number} height - height of the viewport
69
+ /**
70
+ * @typedef {Object|null} testSetupConfig
71
+ * @property {any} page - Function that will be called while setting up page fixtures
72
+ * @property {any} context - Function that will be called while setting up context fixtures
64
73
  */
65
74
 
66
- /**
67
- * Represents the user configuration object.
68
- * @typedef {Object} UserConfig
69
- * @property {string} headless - Headless Browsers mode.
70
- * @property {number} trace - trace for test cases.
71
- * @property {boolean} video - video for test cases,
72
- * @property {boolean} debug - debug mode
73
- * @property {string} mode: mode in which the test cases needs to run
74
- * @property {boolean} isAuthMode - Auth Mode. config whether authentication step needed before running test cases
75
- * @property {string} authFilePath - File Path where the cookies stored
76
- * @property {any} browsers: List of browsers
77
- * @property {string} openReportOn: default Option value (never, on-failure and always)
78
- * @property {any} reportPath : directory where report is generate
79
- * @property {boolean} bddMode: Feature files needs to be processed
80
- * @property {number} expectTimeout: time in milliseconds which the expect condition should fail
81
- * @property {number} testTimeout: time in milliseconds which the test should fail
82
- * @property {Object} additionalPages: custom pages configuration
83
- * @property {string} featureFilesFolder: folder name under which feature-files will be placed. Default is feature-files
84
- * @property {string} stepDefinitionsFolder: folder name under which step implementations will be placed. Default is steps
85
- * @property {viewportConfig} viewport: viewport configuration for the browser. Default is { width: 1280, height: 720 }
86
- * @property {string} testIdAttribute: Change the default data-testid attribute. configure what attribute to search while calling getByTestId
87
- * @property {Array} editionOrder: Order in the form of larger editions in the back. Edition with the most privelages should be last
75
+ /**
76
+ * Represents the user configuration object.
77
+ * @typedef {Object} UserConfig
78
+ * @property {string} uatDirectory - Directory in which uat configuration is places.
79
+ * @property {string} headless - Headless Browsers mode.
80
+ * @property {number} trace - trace for test cases.
81
+ * @property {boolean} video - video for test cases,
82
+ * @property {boolean} debug - debug mode
83
+ * @property {string} mode: mode in which the test cases needs to run
84
+ * @property {boolean} isAuthMode - Auth Mode. config whether authentication step needed before running test cases
85
+ * @property {string} authFilePath - File Path where the cookies stored
86
+ * @property {any} browsers: List of browsers
87
+ * @property {string} openReportOn: default Option value (never, on-failure and always)
88
+ * @property {any} reportPath : directory where report is generate
89
+ * @property {boolean} bddMode: Feature files needs to be processed
90
+ * @property {number} expectTimeout: time in milliseconds which the expect condition should fail
91
+ * @property {number} testTimeout: time in milliseconds which the test should fail
92
+ * @property {Object} additionalPages: custom pages configuration
93
+ * @property {string} featureFilesFolder: folder name under which feature-files will be placed. Default is feature-files
94
+ * @property {string} stepDefinitionsFolder: folder name under which step implementations will be placed. Default is steps
95
+ * @property {viewportConfig} viewport: viewport configuration for the browser. Default is { width: 1280, height: 720 }
96
+ * @property {string} testIdAttribute: Change the default data-testid attribute. configure what attribute to search while calling getByTestId
97
+ * @property {Array} editionOrder: Order in the form of larger editions in the back. Edition with the most privelages should be last
98
+ * @property {testSetupConfig} testSetup: Specify page and context functions that will be called while intilaizing fixtures.
88
99
  */
89
100
 
90
- /**
91
- * Generates a configuration object from a file, if it exists.
92
- *
93
- * @returns {UserConfig}
94
- */
101
+ /**
102
+ * Generates a configuration object from a file, if it exists.
103
+ *
104
+ * @returns {UserConfig}
105
+ */
95
106
  function generateConfigFromFile() {
96
- const filePath = _path.default.resolve(process.cwd(), fileName);
107
+ const filePath = _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)());
97
108
  if ((0, _fs.existsSync)(filePath)) {
98
109
  /** @type {UserConfig} */
99
110
  const config = require(filePath);
@@ -103,7 +114,7 @@ function generateConfigFromFile() {
103
114
  return {};
104
115
  }
105
116
  function isUserConfigFileAvailable() {
106
- const filePath = _path.default.resolve(process.cwd(), fileName);
117
+ const filePath = _path.default.resolve(process.cwd(), (0, _configFileNameProvider.getUATFileName)());
107
118
  if ((0, _fs.existsSync)(filePath)) {
108
119
  return true;
109
120
  }
@@ -10,15 +10,15 @@ var _path = _interopRequireDefault(require("path"));
10
10
  var _logger = require("../../utils/logger");
11
11
  var _rootPath = require("../../utils/rootPath");
12
12
  var _readConfigFile = require("./readConfigFile");
13
- const userArgs = process.argv.slice(3);
14
- const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
15
- const command = playwrightPath;
16
- const {
17
- reportPath: htmlPath
18
- } = (0, _readConfigFile.generateConfigFromFile)();
19
- const args = ['show-report', htmlPath].concat(userArgs);
20
13
  async function generateReport() {
21
14
  // await preProcessReport()
15
+ const userArgs = process.argv.slice(3);
16
+ const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
17
+ const command = playwrightPath;
18
+ const {
19
+ reportPath: htmlPath
20
+ } = (0, _readConfigFile.generateConfigFromFile)();
21
+ const args = ['show-report', htmlPath].concat(userArgs);
22
22
  const childProcess = (0, _child_process.spawn)(command, args, {
23
23
  stdio: 'inherit'
24
24
  });
@@ -9,8 +9,8 @@ var _test = require("@playwright/test");
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
  var _readConfigFile = require("../readConfigFile");
11
11
  var _configUtils = require("./config-utils");
12
- var _testData = require("../../../bdd-poc/test/testData");
13
- var _stepRunner = require("../../../bdd-poc/core-runner/stepRunner");
12
+ var _bddFramework = require("../../../bdd-framework");
13
+ const defaultCIBrowsers = ['Chrome', 'Firefox', 'Edge', 'Safari'];
14
14
  const {
15
15
  browsers,
16
16
  trace,
@@ -23,21 +23,23 @@ const {
23
23
  testTimeout,
24
24
  authFilePath,
25
25
  viewport,
26
+ featureFilesFolder,
27
+ stepDefinitionsFolder,
26
28
  testIdAttribute
27
29
  } = (0, _readConfigFile.generateConfigFromFile)();
30
+ const browserList = process.env.mode === 'ci' ? defaultCIBrowsers : browsers;
28
31
  const projects = (0, _configUtils.getProjects)({
29
- browsers,
32
+ browsers: browserList,
30
33
  isAuthMode,
31
34
  authFilePath,
32
35
  expectTimeout,
33
36
  testTimeout,
34
37
  viewport
35
38
  });
36
- // const testDir = getTestDir(bddMode, process.cwd(), { featureFilesFolder, stepDefinitionsFolder });
37
- var testDir = _path.default.resolve(process.cwd(), 'uat', '.feature-gen');
38
- if (!bddMode) {
39
- testDir = _path.default.resolve(process.cwd(), 'uat', 'playwright-TestCase');
40
- }
39
+ const testDir = (0, _configUtils.getTestDir)(bddMode, process.cwd(), {
40
+ featureFilesFolder,
41
+ stepDefinitionsFolder
42
+ });
41
43
  const testOptions = (0, _configUtils.getTestUseOptions)({
42
44
  trace,
43
45
  video,
@@ -45,15 +47,12 @@ const testOptions = (0, _configUtils.getTestUseOptions)({
45
47
  testIdAttribute
46
48
  });
47
49
 
48
- /**
49
- * Playwright configuration object
50
- *
51
- * @returns {import('@playwright/test').PlaywrightTestConfig}
50
+ /**
51
+ * Playwright configuration object
52
+ *
53
+ * @returns {import('@playwright/test').PlaywrightTestConfig}
52
54
  */
53
- async function getPlaywrightConfig() {
54
- globalThis.globalStepMap = new Map();
55
- (0, _stepRunner.createStepCallBack)();
56
- globalThis.globalTestdata = await (0, _testData.testDataCreation)();
55
+ function getPlaywrightConfig() {
57
56
  return {
58
57
  testDir,
59
58
  outputDir: _path.default.join(process.cwd(), 'uat', 'test-results'),
@@ -4,16 +4,21 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ exports.getBrowsersList = getBrowsersList;
7
8
  exports.getProjects = getProjects;
9
+ exports.getTestDir = getTestDir;
8
10
  exports.getTestUseOptions = getTestUseOptions;
9
11
  var _test = require("@playwright/test");
10
12
  var _path = _interopRequireDefault(require("path"));
11
13
  var _readConfigFile = require("../readConfigFile");
12
- // import { defineBddConfig } from '../../../bdd-framework';
13
-
14
- /**
15
- ** Playwright project configuration
16
- * @returns {import('@playwright/test').Project}
14
+ var _bddFramework = require("../../../bdd-framework");
15
+ var _logger = require("../../../utils/logger");
16
+ var _browserTypes = require("../constants/browserTypes");
17
+ var _configFileNameProvider = require("../helpers/configFileNameProvider");
18
+ var _fileUtils = require("../../../utils/fileUtils");
19
+ /**
20
+ ** Playwright project configuration
21
+ * @returns {import('@playwright/test').Project}
17
22
  */
18
23
  function getBrowserConfig({
19
24
  browserName,
@@ -31,7 +36,7 @@ function getBrowserConfig({
31
36
  const dependencies = isAuthMode ? ['setup'] : [];
32
37
  if (browser === 'chrome') {
33
38
  return {
34
- name: 'chromium',
39
+ name: _browserTypes.BROWSER_PROJECT_MAPPING.CHROME,
35
40
  use: {
36
41
  ..._test.devices['Desktop Chrome'],
37
42
  ...commonConfig
@@ -44,7 +49,7 @@ function getBrowserConfig({
44
49
  };
45
50
  } else if (browser === 'edge') {
46
51
  return {
47
- name: 'Microsoft Edge',
52
+ name: _browserTypes.BROWSER_PROJECT_MAPPING.EDGE,
48
53
  timeout: testTimeout,
49
54
  expect: {
50
55
  timeout: expectTimeout
@@ -58,7 +63,7 @@ function getBrowserConfig({
58
63
  };
59
64
  } else if (browser === 'firefox') {
60
65
  return {
61
- name: 'firefox',
66
+ name: _browserTypes.BROWSER_PROJECT_MAPPING.FIREFOX,
62
67
  timeout: 2 * testTimeout,
63
68
  expect: {
64
69
  timeout: 2 * expectTimeout
@@ -71,7 +76,7 @@ function getBrowserConfig({
71
76
  };
72
77
  } else if (browser === 'safari') {
73
78
  return {
74
- name: 'webkit',
79
+ name: _browserTypes.BROWSER_PROJECT_MAPPING.SAFARI,
75
80
  timeout: 4 * testTimeout,
76
81
  expect: {
77
82
  timeout: 4 * expectTimeout
@@ -87,10 +92,10 @@ function getBrowserConfig({
87
92
  }
88
93
  }
89
94
 
90
- /**
91
- *
92
- * @param {*} param0
93
- * @returns {import('@playwright/test').Project[]}
95
+ /**
96
+ *
97
+ * @param {*} param0
98
+ * @returns {import('@playwright/test').Project[]}
94
99
  */
95
100
  function getProjects({
96
101
  browsers,
@@ -109,19 +114,48 @@ function getProjects({
109
114
  viewport
110
115
  })).filter(Boolean);
111
116
  }
112
-
113
- // function getTestDir(bddMode, cwd, { stepDefinitionsFolder }) {
114
- // return bddMode
115
- // ? defineBddConfig({
116
- // paths: [path.join(cwd, 'uat', '**', '*.feature')],
117
- // import: [path.join(cwd, 'uat', '**', stepDefinitionsFolder, '*.spec.js')],
118
- // featuresRoot: path.join(cwd, 'uat'),
119
- // outputDir: path.join(cwd, 'uat', '.features-gen'),
120
- // publish: true,
121
- // })
122
- // : path.join(cwd, 'uat');
123
- // }
124
-
117
+ function getBrowsersList(browserFromArgs) {
118
+ if (browserFromArgs) {
119
+ if (typeof browserFromArgs === 'string') {
120
+ let listOfbrowsers = browserFromArgs.split(',').map(browser => browser.trim().toLowerCase());
121
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Using browsers from command line args');
122
+ return listOfbrowsers;
123
+ }
124
+ }
125
+ return [];
126
+ }
127
+ function getPathsForFeatureFiles(cwd) {
128
+ if (process.env.isRerunFailedCases) {
129
+ let {
130
+ reportPath
131
+ } = (0, _readConfigFile.generateConfigFromFile)();
132
+ let filePathFromArgs = process.env.filePath;
133
+ let filePath = filePathFromArgs ? filePathFromArgs : reportPath;
134
+ const testSummary = (0, _fileUtils.readFileContents)(filePath);
135
+ if (testSummary !== null) {
136
+ const {
137
+ failed = []
138
+ } = JSON.parse(testSummary);
139
+ const casesToRun = failed.map(filePath => _path.default.join(cwd, 'uat', filePath.replace(/\.spec\.js$|\.js$/, '')));
140
+ return casesToRun;
141
+ } else {
142
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, `Unable to read test summary from the ${reportPath}. Verify If File Exists in the path`);
143
+ _logger.Logger.log(_logger.Logger.INFO_TYPE, 'Going to run all test cases');
144
+ }
145
+ }
146
+ return [_path.default.join(cwd, 'uat', '**', '*.feature')];
147
+ }
148
+ function getTestDir(bddMode, cwd, {
149
+ stepDefinitionsFolder
150
+ }) {
151
+ return bddMode ? (0, _bddFramework.defineBddConfig)({
152
+ paths: getPathsForFeatureFiles(cwd),
153
+ import: [_path.default.join(cwd, 'uat', '**', stepDefinitionsFolder, '*.spec.js')],
154
+ featuresRoot: _path.default.join(cwd, 'uat'),
155
+ outputDir: _path.default.join(cwd, 'uat', '.features-gen'),
156
+ publish: true
157
+ }) : _path.default.join(cwd, 'uat');
158
+ }
125
159
  function getTestUseOptions({
126
160
  viewport,
127
161
  trace,
@@ -10,6 +10,7 @@ var _readline = _interopRequireDefault(require("readline"));
10
10
  var _fileUtils = require("../../../utils/fileUtils");
11
11
  var _readConfigFile = require("../readConfigFile");
12
12
  var _logger = require("../../../utils/logger");
13
+ var _configFileNameProvider = require("../helpers/configFileNameProvider");
13
14
  class JSONSummaryReporter {
14
15
  constructor() {
15
16
  this.durationInMS = -1;
@@ -43,7 +44,7 @@ class JSONSummaryReporter {
43
44
  }
44
45
  }
45
46
  // This will publish the file name + line number test begins on
46
- const z = `${fileName[0]}:${test.location.line}:${test.location.column}`;
47
+ const z = `${fileName[0]}`;
47
48
  // Using the t variable in the push will push a full test name + test description
48
49
  const t = title.join(' > ');
49
50
  // Set the status
@@ -93,7 +94,7 @@ class JSONSummaryReporter {
93
94
  let {
94
95
  reportPath
95
96
  } = (0, _readConfigFile.generateConfigFromFile)();
96
- (0, _fileUtils.writeFileContents)(_path.default.join(reportPath, './', 'test-summary.json'), JSON.stringify(this, null, ' '));
97
+ (0, _fileUtils.writeFileContents)(_path.default.join(reportPath, './', (0, _configFileNameProvider.getReportFileName)()), JSON.stringify(this, null, ' '));
97
98
  }
98
99
  onExit() {
99
100
  const shouldClearLastLine = this._open !== 'always' || this._open !== 'on-failure';
@@ -3,16 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.buildEditionTags = buildEditionTags;
7
- exports.editionPreprocessing = editionPreprocessing;
8
6
  exports.tagProcessor = tagProcessor;
9
7
  var _logger = require("../../utils/logger");
10
8
  /* eslint-disable dot-notation */
11
9
 
12
- // function getTagsString(tags, editionTags) {
13
- // return tags && tags !== '' ? `${tags} and not (${editionTags})` : `not (${editionTags})`;
14
- // }
15
-
10
+ function getTagsString(tags, editionTags) {
11
+ return tags && tags !== '' ? `${tags} and not (${editionTags})` : `not (${editionTags})`;
12
+ }
16
13
  function getEdition(edition) {
17
14
  if (edition.startsWith('<=')) {
18
15
  return ['<=', edition.slice(2)];
@@ -31,11 +28,11 @@ function editionPreprocessing(editionOrder, selectedEdition) {
31
28
  if (index !== -1) {
32
29
  let resultArray;
33
30
  if (operator === '<=') {
34
- resultArray = editionOrder.slice(0, index + 1);
31
+ resultArray = editionOrder.slice(index + 1);
35
32
  } else if (operator === '>=') {
36
33
  resultArray = editionOrder.slice(0, index);
37
34
  } else if (operator === '<') {
38
- resultArray = editionOrder.slice(0, index);
35
+ resultArray = editionOrder.slice(index);
39
36
  } else if (operator === '>') {
40
37
  resultArray = editionOrder.slice(0, index + 1);
41
38
  } else {
@@ -46,34 +43,26 @@ function editionPreprocessing(editionOrder, selectedEdition) {
46
43
  _logger.Logger.log(_logger.Logger.INFO_TYPE, `No matching editions ${selectedEdition} found. Running with default edition`);
47
44
  return [];
48
45
  }
49
- function buildEditionTags(editionArgs, operator, prefix = "") {
50
- return editionArgs.map(edition => `${prefix}${edition}`).join(` ${operator} `);
46
+ function buildEditionTags(editionArgs, operator) {
47
+ return editionArgs.map(edition => `@edition_${edition}`).join(` ${operator} `);
51
48
  }
52
49
  function tagProcessor(userArgsObject, editionOrder) {
53
- let filteredTags;
54
50
  let tagArgs = userArgsObject['tags'];
55
- let multiTags = userArgsObject['tags'] || " ";
56
- if (multiTags.split(',').length >= 2) {
57
- tagArgs = buildEditionTags(multiTags.split(','), '|');
58
- }
59
51
  const edition = userArgsObject['edition'] || null;
60
52
  if (edition !== null) {
61
53
  let editionsArray = edition.split(',');
62
54
  if (editionsArray.length === 1) {
63
55
  const editionArgs = editionPreprocessing(editionOrder, edition);
64
56
  if (editionArgs && editionArgs.length > 0) {
65
- const editionTags = buildEditionTags(editionArgs, '|', "@edition_");
66
- filteredTags = editionTags;
57
+ const editionTags = buildEditionTags(editionArgs, 'or');
58
+ tagArgs = `${getTagsString(tagArgs, editionTags)}`;
67
59
  }
68
60
  } else {
69
61
  // More than one edition given
70
62
  const filteredEditions = editionOrder.filter(edition => !editionsArray.includes(edition));
71
- const editionTags = buildEditionTags(filteredEditions, '|', "@edition_");
72
- filteredTags = editionTags;
63
+ const editionTags = buildEditionTags(filteredEditions, 'or');
64
+ tagArgs = `${getTagsString(tagArgs, editionTags)}`;
73
65
  }
74
66
  }
75
- return {
76
- tags: tagArgs,
77
- editionTags: filteredTags
78
- };
67
+ return tagArgs;
79
68
  }