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

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 +69 -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 +47 -0
  113. package/build/core/playwright/helpers/auth/getUrlOrigin.js +13 -0
  114. package/build/core/playwright/helpers/auth/getUsers.js +72 -0
  115. package/build/core/playwright/helpers/auth/index.js +58 -0
  116. package/build/core/playwright/helpers/auth/loginSteps.js +36 -0
  117. package/build/core/playwright/helpers/configFileNameProvider.js +17 -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 +69 -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 +49 -63
  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 +79 -12
  133. package/build/index.js +51 -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 +72 -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
@@ -1,84 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.parseFeature = parseFeature;
8
- var _parserCucumber = _interopRequireDefault(require("./parserCucumber"));
9
- function parseFeature(featureFileContent) {
10
- var _gherkinDocument$feat;
11
- var gherkinDocument = (0, _parserCucumber.default)(featureFileContent);
12
- var currentFeature = {
13
- feature: "",
14
- featureTags: [],
15
- scenarios: [],
16
- featureBackGround: []
17
- };
18
- var isBackgroundExist;
19
- currentFeature.feature = gherkinDocument.feature.name;
20
- currentFeature.featureTags = (_gherkinDocument$feat = gherkinDocument.feature) === null || _gherkinDocument$feat === void 0 ? void 0 : _gherkinDocument$feat.tags.map(tag => tag.name);
21
- gherkinDocument.feature.children.forEach($scenario => {
22
- var _$scenario$scenario, _$scenario$scenario2, _$scenario$scenario3, _$scenario$scenario4;
23
- var scenarioSteps = {
24
- scenariodescription: "",
25
- steps: [],
26
- tablebody: false,
27
- tableheader: false,
28
- examples: [],
29
- scenarioTags: [],
30
- background: []
31
- };
32
- scenarioSteps.scenariodescription = (_$scenario$scenario = $scenario.scenario) === null || _$scenario$scenario === void 0 ? void 0 : _$scenario$scenario.name;
33
-
34
- /** If Feature Has Background it will Assign to Scenario Background of Feature */
35
- if ($scenario !== null && $scenario !== void 0 && $scenario.background) {
36
- isBackgroundExist = $scenario.background.steps.map(element => {
37
- return {
38
- stepDescription: element.text,
39
- keyword: element.keyword
40
- };
41
- });
42
- return;
43
- }
44
- (_$scenario$scenario2 = $scenario.scenario) === null || _$scenario$scenario2 === void 0 || _$scenario$scenario2.examples.map($example => {
45
- var _$example$tableHeader;
46
- scenarioSteps.tablebody = $example === null || $example === void 0 ? void 0 : $example.tableBody.map(exampleBody => {
47
- return exampleBody === null || exampleBody === void 0 ? void 0 : exampleBody.cells.map(example => example.value);
48
- });
49
- scenarioSteps.tableheader = $example === null || $example === void 0 || (_$example$tableHeader = $example.tableHeader) === null || _$example$tableHeader === void 0 ? void 0 : _$example$tableHeader.cells.map(exampleHead => {
50
- return exampleHead.value;
51
- });
52
- });
53
- if (scenarioSteps.tablebody && scenarioSteps.tableheader) {
54
- scenarioSteps.examples = testDataExtraction(scenarioSteps.tableheader, scenarioSteps.tablebody);
55
- } else {
56
- scenarioSteps.examples = false;
57
- }
58
- scenarioSteps.scenarioTags = (_$scenario$scenario3 = $scenario.scenario) === null || _$scenario$scenario3 === void 0 ? void 0 : _$scenario$scenario3.tags.map(tag => tag.name);
59
- scenarioSteps.steps = $scenario === null || $scenario === void 0 || (_$scenario$scenario4 = $scenario.scenario) === null || _$scenario$scenario4 === void 0 ? void 0 : _$scenario$scenario4.steps.map(step => {
60
- return {
61
- stepDescription: step.text,
62
- keyword: step.keyword
63
- };
64
- });
65
- scenarioSteps.background = isBackgroundExist || [];
66
- currentFeature.scenarios.push(scenarioSteps);
67
- });
68
- /** Background is one of Scenario in Scenario Array. That The First Scenario is Background in Feature*/
69
- currentFeature.featureBackGround = currentFeature.scenarios[0].background;
70
- return currentFeature;
71
- }
72
- function testDataExtraction(tableHeader, tableBody) {
73
- const result = [];
74
- if (tableBody && tableHeader) {
75
- tableBody.forEach(tableCells => {
76
- const InputObject = {};
77
- tableCells.forEach((item, index) => {
78
- InputObject[`<${tableHeader[index]}>`] = item;
79
- });
80
- result.push(InputObject);
81
- });
82
- }
83
- return result;
84
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = CucumberParser;
7
- var _gherkin = require("@cucumber/gherkin");
8
- var _messages = require("@cucumber/messages");
9
- function CucumberParser(content) {
10
- var uuidFn = _messages.IdGenerator.uuid();
11
- var builder = new _gherkin.AstBuilder(uuidFn);
12
- var matcher = new _gherkin.GherkinClassicTokenMatcher();
13
- var parser = new _gherkin.Parser(builder, matcher);
14
- return parser.parse(content);
15
- }
@@ -1,65 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.createStepDataMap = createStepDataMap;
8
- var _fastGlob = _interopRequireDefault(require("fast-glob"));
9
- var _fileUtils = require("../../../utils/fileUtils");
10
- var _path = _interopRequireDefault(require("path"));
11
- var _pathConfig = require("../../config/pathConfig");
12
- var _throwError = require("../../errors/throwError");
13
- // globalThis.testDataMap = new Map();
14
- function createStepDataMap() {
15
- const stepFilePath = (0, _pathConfig.getStepFilePath)();
16
- const processedSpecFile = [];
17
- return new Promise(resolve => {
18
- _fastGlob.default.globSync(stepFilePath, {
19
- dot: true,
20
- cwd: process.cwd()
21
- }).forEach(filePath => {
22
- processedSpecFile.push(extractPageFixtures(filePath));
23
- });
24
- Promise.all(processedSpecFile);
25
- resolve(testDataMap);
26
- });
27
- }
28
- function extractPageFixtures(filePath) {
29
- const code = (0, _fileUtils.readFileContents)(_path.default.resolve(process.cwd(), filePath), 'utf-8');
30
- code.split('\n').forEach(step => {
31
- const trimmedStep = step.trim();
32
- if (trimmedStep.startsWith('Given') || trimmedStep.startsWith('When') || trimmedStep.startsWith('Then') || trimmedStep.startsWith('And') || trimmedStep.startsWith('Step')) {
33
- var sortedSpecInput = extractInputFrmStep(trimmedStep, filePath);
34
- testDataMap.set(extractDescriptionFrmStep(trimmedStep), sortedSpecInput);
35
- }
36
- });
37
- }
38
- function extractInputFrmStep(trimmedStep, filePath) {
39
- var _inputNames$split;
40
- var toRemovePattern = trimmedStep.match(/async\s*\(([^)]*)\)/)[1].match(/{(.*?)}/);
41
- var inputNames = trimmedStep.match(/async\s*\(([^)]*)\)/)[1].replace(toRemovePattern[0], "$null") || [];
42
- var filteredInputs = (_inputNames$split = inputNames.split(',')) === null || _inputNames$split === void 0 ? void 0 : _inputNames$split.slice(1);
43
- if (filteredInputs.length) {
44
- filteredInputs = filteredInputs.map(input => `"${input}"`);
45
- }
46
- try {
47
- return {
48
- stepPageFixtureName: trimmedStep.split(' ').slice(1).join('').match(/\((.*?)\)/)[1].match(/\{(.*?)\}/g).pop() || [false].pop(),
49
- stepInputKey: filteredInputs
50
- };
51
- } catch (error) {
52
- // Logger.log(Logger.FAILURE_TYPE,`${filePath} - Steps Has MisMatched Pattern`)
53
- (0, _throwError.throwProperStepImplementError)(filePath);
54
- process.exit(0);
55
- }
56
- }
57
- function extractDescriptionFrmStep(trimmedStep) {
58
- var refactoredDescription;
59
- if (trimmedStep.match(/\((.*?)\)/g).pop().split('').indexOf(`'`) === 1) {
60
- refactoredDescription = trimmedStep.replace(new RegExp(`'`, 'g'), `;`).match(/;(.*?);/).pop().replace(new RegExp(';', 'g'), ' ').trim();
61
- } else {
62
- refactoredDescription = trimmedStep.replace(new RegExp(`"`, 'g'), `;`).match(/;(.*?);/).pop().replace(new RegExp(';', 'g'), ' ').trim();
63
- }
64
- return refactoredDescription;
65
- }
@@ -1,81 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.traverseASTstep = traverseASTstep;
8
- var _acorn = require("acorn");
9
- var _fileUtils = require("../../../utils/fileUtils");
10
- var _fastGlob = _interopRequireDefault(require("fast-glob"));
11
- var _pathConfig = require("../../config/pathConfig");
12
- globalThis.testDataMap = new Map();
13
- async function extractFixtureFrmNode(node) {
14
- var stepText;
15
- return await new Promise(resolve => {
16
- if ((node === null || node === void 0 ? void 0 : node.type) == 'ExpressionStatement' || (node === null || node === void 0 ? void 0 : node.type) == 'CallExpression' || (node === null || node === void 0 ? void 0 : node.type) == 'ArrowFunctionExpression') {
17
- extractFixtureFrmNode(node.expression);
18
- }
19
- if ((node === null || node === void 0 ? void 0 : node.type) == 'CallExpression') {
20
- if (node.arguments[0].type == 'Literal') {
21
- stepText = node.arguments[0].raw;
22
- }
23
- if (node.arguments[1].type == 'ArrowFunctionExpression') {
24
- let callbackInputs = [];
25
- var fixtures;
26
- node.arguments[1].params.forEach(input => {
27
- if (input.type == 'ObjectPattern') {
28
- fixtures = getPageFixture(input.properties);
29
- if (fixtures.includes('page')) {
30
- fixtures.push('page');
31
- }
32
- }
33
- if (input.type == 'Identifier') {
34
- callbackInputs.push(input.name);
35
- }
36
- });
37
- testDataMap.set(stepText, {
38
- stepPageFixtureName: combineAllFixture(fixtures),
39
- stepInputKey: callbackInputs.map(element => `"${element}"`)
40
- });
41
- resolve();
42
- }
43
- }
44
- });
45
- }
46
- function combineAllFixture(fixturesArray) {
47
- if (!fixturesArray.includes('page')) {
48
- fixturesArray.push('page');
49
- }
50
- if (fixturesArray.length === 1) {
51
- return `{${fixturesArray}}`;
52
- }
53
- const lastFixture = fixturesArray.pop();
54
- const allFixture = fixturesArray.join(',');
55
- return `{${allFixture}${lastFixture}}`;
56
- }
57
- function traverseASTstep() {
58
- var $promise = [];
59
- _fastGlob.default.globSync((0, _pathConfig.getStepFilePath)(), {
60
- dot: true,
61
- cwd: process.cwd()
62
- }).forEach(filePath => {
63
- $promise.push(nodeAST((0, _fileUtils.readFileContents)(filePath)));
64
- });
65
- Promise.all($promise);
66
- }
67
- function nodeAST(stepContent) {
68
- const options = {
69
- ecmaVersion: 2020
70
- };
71
- const $node = (0, _acorn.parse)(stepContent, options).body;
72
- $node.forEach(node => {
73
- extractFixtureFrmNode(node);
74
- });
75
- }
76
- function getPageFixture(fixtureNode) {
77
- return fixtureNode.map($element => {
78
- var _$element$key;
79
- return ($element === null || $element === void 0 || (_$element$key = $element.key) === null || _$element$key === void 0 ? void 0 : _$element$key.name) || 'page';
80
- });
81
- }
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.generateSpecFiles = generateSpecFiles;
8
- var _fastGlob = _interopRequireDefault(require("fast-glob"));
9
- var _path = _interopRequireDefault(require("path"));
10
- var _featureFileParer = require("../cucumber/featureFileParer");
11
- var _testStructure = require("../testStructure");
12
- var _fileUtils = require("../../../utils/fileUtils");
13
- var _pathConfig = require("../../config/pathConfig");
14
- var _parserSteps = require("./parserSteps");
15
- // import { createStepDataMap } from './extractTestInputs';
16
-
17
- function stepFileCreation(parsedFeatureContent, stepFilename, featureFilePath) {
18
- const stepsFilePath = _path.default.resolve(process.cwd(), 'uat', '.feature-gen', stepFilename);
19
- const stepsSnippets = (0, _testStructure.testSnippet)(parsedFeatureContent, featureFilePath);
20
- (0, _fileUtils.writeFileContents)(stepsFilePath, stepsSnippets);
21
- }
22
- async function generateSpecFiles() {
23
- await (0, _parserSteps.traverseASTstep)();
24
- const featureFilePattern = (0, _pathConfig.getFeatureFilePath)();
25
- const featureFileFolderPath = _path.default.resolve(process.cwd(), 'uat', '.feature-gen');
26
- if (!(0, _fileUtils.checkIfFileExists)(featureFileFolderPath)) {
27
- (0, _fileUtils.createFolderSync)(featureFileFolderPath, {
28
- recursive: true
29
- });
30
- }
31
- _fastGlob.default.globSync(featureFilePattern, {
32
- dot: true,
33
- cwd: process.cwd()
34
- }).forEach(filePath => {
35
- const featurefilePath = _path.default.resolve(process.cwd(), filePath);
36
- const parsedFeatureContent = (0, _featureFileParer.parseFeature)((0, _fileUtils.readFileContents)(featurefilePath, 'utf-8'));
37
- const fileName = _path.default.basename(filePath).replace('.feature', '.spec.js');
38
- stepFileCreation(parsedFeatureContent, fileName, filePath);
39
- });
40
- }
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.testCase = testCase;
7
- exports.testFile = testFile;
8
- exports.testStep = testStep;
9
- exports.testSuite = testSuite;
10
- const TESTING_LIBRARY = '@zohodesk/testinglibrary';
11
- function stepReportHandle(Steps, Example) {
12
- var _steps = [...Steps];
13
- var resultSteps;
14
- const medium = Math.random();
15
- resultSteps = _steps.join(medium);
16
- Object.keys(Example).forEach(keys => {
17
- const newRegex = new RegExp(keys, 'g');
18
- resultSteps = resultSteps.replace(newRegex, Example[keys]);
19
- });
20
- return [...resultSteps.split(medium)];
21
- }
22
- function testStep(keyword, description, pageFixtureUsed_Step, testData, stepDescription, options) {
23
- return `await test.step('${keyword.trim()}:${stepDescription.replace(new RegExp(`'`, 'g'), " ")}',async() => {
24
- await $${keyword}("${description}")(${pageFixtureUsed_Step},${testData})
25
- })`;
26
- }
27
- function testSuite(description, scenariotestBlock, tags, options = null) {
28
- return `\ntest.describe("${description.replace(new RegExp('"', 'g'), '')}${tags.join(" ")}", () => {
29
- ${scenariotestBlock}
30
- })`;
31
- }
32
- function testCase(steps, examples, description, pageFixtures, tags, option) {
33
- if (examples.length >= 1) {
34
- const exmapleScenario = examples.map(($ele, index) => {
35
- var exampleDescription = Object.values($ele).map(val => {
36
- return val.concat(" ");
37
- });
38
- let avoidRepetitionDescription = `Example : ${index + 1} - `.concat(exampleDescription.join(''));
39
- return testBlock(avoidRepetitionDescription, stepReportHandle(steps, examples[index]), pageFixtures);
40
- });
41
- return testSuite(description, exmapleScenario.join('\n'), tags);
42
- }
43
- return testSuite(`Title: ${description}`, testBlock(description, steps, pageFixtures), tags);
44
- }
45
- function testBlock(description, steps, pageFixtures) {
46
- return `\ntest("${description}", async({${pageFixtures.join(',')}}) => {
47
- ${steps.join(`\n\t`)}
48
- })`;
49
- }
50
- function testFile(testCase, relativeFilePath, $tags = " ", options = null) {
51
- return ` // ${relativeFilePath}
52
- import { test, createNativeBDD } from "${TESTING_LIBRARY}";
53
- const {$Given,$When,$Then,$And} = createNativeBDD()
54
- test.use({
55
- $test: ({}, use) => use(test),
56
- $tags: ({}, use, testInfo) => use(${JSON.stringify($tags)}
57
- [testInfo.titlePath.slice(2).join("|")] || [])
58
- })
59
- ${testCase.join('')}
60
- `;
61
- }
@@ -1,70 +0,0 @@
1
- // const editionOrder = ['Free','Express','Standard','Professional','Enterprise']
2
- // import { buildEditionTags} from '../../core/playwright/tag-processor'
3
- // function allowedTags(userArgs){
4
- // let tags = userArgs?.tags || null
5
- // if(tags){
6
- // if(Array.isArray(tags)){
7
- // return buildGrepTags(tags,'|')
8
- // }
9
- // return tags;
10
- // }
11
- // let edition = userArgs?.edition || null
12
- // if(edition){
13
- // const editionFrmCli = edition.split(',')
14
- // if(editionFrmCli.length === 1){
15
- // // const sortedEdition = editionPreprocessing(editionOrder,editionFrmCli)
16
- // return buildEditionTags(expressionHandle(editionFrmCli,editionOrder),'|')
17
- // }
18
- // }
19
- // return;
20
- // }
21
-
22
- // function buildGrepTags(tags,operator){
23
- // return tags.join(`${operator}`)
24
- // }
25
-
26
- // function expressionHandle(editionFrmCli,editionOrder){
27
- // var expression;
28
- // var $edition;
29
- // if(editionFrmCli.split('=').length !== 1){
30
- // expression = editionFrmCli.split('').slice(0,2).join('');
31
- // $edition = editionFrmCli.split('=').pop()
32
- // }else if(editionFrmCli.split('>').length !== 1){
33
- // expression = editionFrmCli.split('').slice(0,1).join('');
34
- // $edition = editionFrmCli.split('>').pop()
35
- // }else {
36
- // expression = editionFrmCli.split('').slice(0,1).join('');
37
- // $edition = editionFrmCli.split('<').pop()
38
- // }
39
- // const index_Edition = editionOrder.indexOf($edition)
40
- // switch(expression){
41
- // case '>=':
42
- // if($edition == editionOrder[editionOrder.length-1]){
43
- // return editionOrder[editionOrder.length-1]
44
- // }
45
- // return editionOrder.slice(0,index_Edition);
46
- // case '<=':
47
- // if($edition == editionOrder[0]){
48
- // return editionOrder.slice(1,editionOrder.length + 1)
49
- // }
50
- // return editionOrder.slice(index_Edition+1,editionOrder.length+1);
51
- // case '<':
52
- // if($edition == editionOrder[0]){
53
- // return editionOrder;
54
- // }
55
- // return editionOrder.slice(index_Edition, editionOrder.length + 1);
56
- // case '>':
57
- // if($edition == editionOrder[editionOrder.length-1]){
58
- // return editionOrder;
59
- // }
60
- // return editionOrder.slice(0,index_Edition+1);
61
- // default:
62
- // break;
63
- // }
64
- // }
65
-
66
- // export {
67
- // allowedTags,
68
- // expressionHandle
69
- // }
70
- "use strict";
@@ -1,125 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.testDataCreation = testDataCreation;
8
- var _fastGlob = _interopRequireDefault(require("fast-glob"));
9
- var _testStructure = require("./testStructure");
10
- var _fileUtils = require("../../utils/fileUtils");
11
- var _path = _interopRequireDefault(require("path"));
12
- var _parserCucumber = _interopRequireDefault(require("./cucumber/parserCucumber"));
13
- var _pathConfig = require("../config/pathConfig");
14
- function testDataCreation() {
15
- var exampleSteps = [];
16
- const globalTestdata = new Map();
17
- const testDataFeatureFilePath = (0, _pathConfig.getFeatureFilePath)();
18
- return new Promise(resolve => {
19
- _fastGlob.default.globSync(testDataFeatureFilePath, {
20
- dot: true,
21
- cwd: process.cwd()
22
- }).forEach(filePath => {
23
- var body, header;
24
- var gherkinDocument = (0, _parserCucumber.default)((0, _fileUtils.readFileContents)(_path.default.resolve(process.cwd(), filePath), 'utf-8'));
25
- gherkinDocument.feature.children.forEach($scenario => {
26
- var _$scenario$scenario, _$scenario$scenario3, _$scenario$scenario4;
27
- if ($scenario !== null && $scenario !== void 0 && $scenario.background) {
28
- $scenario.scenario = {
29
- ...$scenario.background,
30
- examples: []
31
- };
32
- }
33
- if ($scenario !== null && $scenario !== void 0 && (_$scenario$scenario = $scenario.scenario) !== null && _$scenario$scenario !== void 0 && _$scenario$scenario.steps) {
34
- var _$scenario$scenario2;
35
- (_$scenario$scenario2 = $scenario.scenario) === null || _$scenario$scenario2 === void 0 || _$scenario$scenario2.steps.forEach(step => {
36
- var _step$dataTable;
37
- var $currentStep = {
38
- currentArgument: '',
39
- dataTableStep: '',
40
- inputParameter: '',
41
- input: false,
42
- steptable: false,
43
- scenarioTable: false
44
- };
45
- const {
46
- convertedStep,
47
- currentArgument
48
- } = (0, _testStructure.extractStepArgument)(step.text);
49
- if (Object.values(currentArgument).length && !$scenario.scenario.examples.length) {
50
- $currentStep.currentArgument = currentArgument;
51
- $currentStep.input = true;
52
- } else {
53
- $currentStep.currentArgument = [];
54
- $currentStep.input = false;
55
- }
56
- var dataTableStep;
57
- step === null || step === void 0 || (_step$dataTable = step.dataTable) === null || _step$dataTable === void 0 || _step$dataTable.rows.forEach(cell => {
58
- const Table = cell.cells.map(element => element.value);
59
- dataTableStep = Table;
60
- });
61
- if (step !== null && step !== void 0 && step.dataTable) {
62
- $currentStep.dataTableStep = dataTableStep;
63
- $currentStep.steptable = true;
64
- }
65
- globalTestdata.set(convertedStep, Object.assign({}, $currentStep));
66
- });
67
- }
68
- if ($scenario.background && typeof $scenario.background === Object) {
69
- return;
70
- }
71
- if (!((_$scenario$scenario3 = $scenario.scenario) !== null && _$scenario$scenario3 !== void 0 && (_$scenario$scenario3 = _$scenario$scenario3.examples) !== null && _$scenario$scenario3 !== void 0 && _$scenario$scenario3.length)) {
72
- return;
73
- }
74
- if ((_$scenario$scenario4 = $scenario.scenario) !== null && _$scenario$scenario4 !== void 0 && (_$scenario$scenario4 = _$scenario$scenario4.examples) !== null && _$scenario$scenario4 !== void 0 && _$scenario$scenario4.length) {
75
- var _$scenario$scenario5;
76
- var $currentExampleSteps = {
77
- currentArgument: '',
78
- dataTableStep: '',
79
- inputParameter: '',
80
- input: false,
81
- steptable: false,
82
- scenarioTable: false
83
- };
84
- exampleSteps = $scenario.scenario.steps.map(element => (0, _testStructure.extractStepArgument)(element.text).convertedStep);
85
- (_$scenario$scenario5 = $scenario.scenario) === null || _$scenario$scenario5 === void 0 || _$scenario$scenario5.examples.map(example => {
86
- var _example$tableHeader;
87
- body = example === null || example === void 0 ? void 0 : example.tableBody.map(cell => {
88
- return cell === null || cell === void 0 ? void 0 : cell.cells.map(example => example.value);
89
- });
90
- header = example === null || example === void 0 || (_example$tableHeader = example.tableHeader) === null || _example$tableHeader === void 0 ? void 0 : _example$tableHeader.cells.map(exampleHead => {
91
- return exampleHead.value;
92
- });
93
- });
94
- const inputParameter = testDataExtraction(header, body);
95
- exampleSteps.forEach(step => {
96
- $currentExampleSteps.inputParameter = Object.assign([], inputParameter);
97
- $currentExampleSteps.scenarioTable = true;
98
- globalTestdata.set(step, Object.assign({}, $currentExampleSteps));
99
- });
100
- }
101
- });
102
- });
103
- resolve(globalTestdata);
104
- });
105
- }
106
- function testDataExtraction(tableHeader, tableBody) {
107
- const result = [];
108
- if (tableBody && tableHeader) {
109
- tableBody.forEach(array => {
110
- const obj = {};
111
- array.forEach((item, index) => {
112
- obj[`${tableHeader[index].replace(/\s/g, '')}`] = item;
113
- });
114
- result.push(obj);
115
- });
116
- } else {
117
- return;
118
- }
119
- return [...result];
120
- }
121
-
122
- // handle length of example
123
- // if($scenario?.background){
124
- // $scenario.scenario = $scenario.background
125
- // }
@@ -1,92 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.extractStepArgument = extractStepArgument;
7
- exports.testSnippet = testSnippet;
8
- var _logger = require("../../utils/logger");
9
- var _throwError = require("../errors/throwError");
10
- var _stringManipulation = require("../utils/stringManipulation");
11
- var _stepsnippets = require("./stepGenerate/stepsnippets");
12
- function testSnippet(parsedFeature, featureFilePath) {
13
- var currentScenarios = [];
14
- var $tags = {};
15
- parsedFeature.scenarios.forEach(scenario => {
16
- scenario.scenarioTags = [...scenario.scenarioTags, ...parsedFeature.featureTags];
17
- $tags = Object.assign($tags, tagHandleFixture(scenario));
18
- const resultedStep = scenarioSnippet(scenario);
19
- currentScenarios.push(resultedStep);
20
- });
21
- return (0, _stepsnippets.testFile)(currentScenarios, featureFilePath, $tags);
22
- }
23
- function extractStepArgument(step) {
24
- var testInputs = [];
25
- var currentArgument = {};
26
- var convertedStep = step.replace(/"([^"]+)"/g, (match, word) => {
27
- if (!isNaN(Number(word))) {
28
- testInputs.push(word.toString());
29
- return '{int}';
30
- } else {
31
- testInputs.push(word.toString());
32
- return '{string}';
33
- }
34
- });
35
- currentArgument = testInputs.map(inputs => `"${(0, _stringManipulation.removeAll)(inputs, ['<', '>'], /\s/g)}"`);
36
- return {
37
- convertedStep,
38
- currentArgument
39
- };
40
- }
41
- function scenarioSnippet(scenario) {
42
- var _scenario$background;
43
- var currentStep = [];
44
- var currentInputs = [];
45
- /** To Add BackGround As Steps */
46
- if ((scenario === null || scenario === void 0 || (_scenario$background = scenario.background) === null || _scenario$background === void 0 ? void 0 : _scenario$background.length) >= 1) {
47
- /** Destructed Should be Background will first remaining Step behind */
48
- scenario.steps = [...scenario.background, ...scenario.steps];
49
- }
50
- scenario.steps.forEach(step => {
51
- var {
52
- convertedStep,
53
- currentArgument
54
- } = extractStepArgument(step.stepDescription);
55
- var pageFixtureUsed_Step = testDataMap.get(convertedStep) || null;
56
- /** Step Implementation Check (Walk Through Approach)*/
57
- if (!pageFixtureUsed_Step.stepPageFixtureName) {
58
- (0, _throwError.throwNotImplementError)(step.stepDescription, convertedStep, step.keyword);
59
- process.exit(0);
60
- }
61
- currentInputs.push(pageFixtureUsed_Step.stepPageFixtureName);
62
- currentStep.push((0, _stepsnippets.testStep)(step.keyword, convertedStep, pageFixtureUsed_Step.stepPageFixtureName, pageFixtureUsed_Step.stepInputKey.join(','), step.stepDescription));
63
- return;
64
- });
65
- const pageFixtures = pageFixtureFilter(currentInputs);
66
- return (0, _stepsnippets.testCase)(currentStep, scenario === null || scenario === void 0 ? void 0 : scenario.examples, scenario === null || scenario === void 0 ? void 0 : scenario.scenariodescription, pageFixtures, scenario.scenarioTags);
67
- }
68
- function pageFixtureFilter(pageFixturesArray) {
69
- var pageInputs = [];
70
- pageFixturesArray.forEach(pages => {
71
- pageInputs = [...pageInputs, ...(0, _stringManipulation.removeAll)(pages, ['{', '}']).split(',')];
72
- });
73
- return (0, _stringManipulation.avoidDuplicate)(pageInputs);
74
- }
75
- function tagHandleFixture(scenario) {
76
- var _scenario$examples;
77
- if (((_scenario$examples = scenario.examples) === null || _scenario$examples === void 0 ? void 0 : _scenario$examples.length) >= 1) {
78
- var tagsObjects = {};
79
- scenario.examples.forEach(($ele, index) => {
80
- var exampleDescription = Object.values($ele).map(val => {
81
- return val.concat('-');
82
- });
83
- Object.assign(tagsObjects, {
84
- [exampleDescription.join('').concat(`Example-${index + 1}`)]: scenario.scenarioTags
85
- });
86
- });
87
- return tagsObjects;
88
- }
89
- return {
90
- [scenario.scenariodescription]: scenario.scenarioTags
91
- };
92
- }
@@ -1,26 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.avoidDuplicate = avoidDuplicate;
7
- exports.filePathPattern = filePathPattern;
8
- exports.removeAll = removeAll;
9
- function removeAll(InputString, toRemove, regex = undefined, options = null) {
10
- if (regex) {
11
- InputString = InputString.replace(regex, '').trim();
12
- }
13
- toRemove.forEach(ele => {
14
- InputString = InputString.replace(ele, '').trim();
15
- });
16
- return InputString;
17
- }
18
- function avoidDuplicate(arrayOfInputs) {
19
- return [...new Set(arrayOfInputs)];
20
- }
21
- function filePathPattern(filePath, isWindows = true) {
22
- if (isWindows) {
23
- return filePath.split('\\').join('/');
24
- }
25
- return filePath;
26
- }