@zohodesk/testinglibrary 0.1.9 → 0.1.12-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 (241) hide show
  1. package/.babelrc +4 -2
  2. package/.claude/settings.local.json +14 -0
  3. package/.gitlab-ci.yml +206 -0
  4. package/README.md +264 -1
  5. package/build/common/data-generator/steps/DataGenerator.spec.js +19 -0
  6. package/build/common/data-generator/steps/DataGeneratorStepsHelper.js +21 -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 +85 -0
  10. package/build/core/dataGenerator/DataGenerator.js +161 -0
  11. package/build/core/dataGenerator/DataGeneratorError.js +60 -0
  12. package/build/core/dataGenerator/DataGeneratorHelper.js +121 -0
  13. package/build/core/dataGenerator/authenticator/Authenticator.js +37 -0
  14. package/build/core/dataGenerator/authenticator/CookieAuthenticator.js +48 -0
  15. package/build/core/dataGenerator/authenticator/JWTauthenticator.js +59 -0
  16. package/build/core/dataGenerator/authenticator/OAuthAuthenticator.js +26 -0
  17. package/build/core/dataGenerator/authenticator/OrgOAuthAuthenticator.js +26 -0
  18. package/build/core/dataGenerator/authenticator/cookieAuthConfig.js +11 -0
  19. package/build/core/jest/preprocessor/jsPreprocessor.js +2 -7
  20. package/build/core/jest/setup/index.js +1 -7
  21. package/build/core/playwright/builtInFixtures/actorContext.js +78 -0
  22. package/build/core/playwright/builtInFixtures/caseTimeout.js +20 -0
  23. package/build/core/playwright/builtInFixtures/context.js +34 -16
  24. package/build/core/playwright/builtInFixtures/executionContext.js +17 -0
  25. package/build/core/playwright/builtInFixtures/i18N.js +8 -0
  26. package/build/core/playwright/builtInFixtures/index.js +7 -1
  27. package/build/core/playwright/builtInFixtures/page.js +22 -66
  28. package/build/core/playwright/clear-caches.js +17 -5
  29. package/build/core/playwright/codegen.js +4 -21
  30. package/build/core/playwright/configuration/Configuration.js +25 -0
  31. package/build/core/playwright/configuration/ConfigurationHelper.js +45 -0
  32. package/build/core/playwright/configuration/UserArgs.js +12 -0
  33. package/build/core/playwright/constants/configConstants.js +17 -0
  34. package/build/core/playwright/constants/failureTagConstants.js +17 -0
  35. package/build/core/playwright/constants/fileMutexConfig.js +9 -0
  36. package/build/core/playwright/constants/reporterConstants.js +20 -0
  37. package/build/core/playwright/constants/retryConstants.js +8 -0
  38. package/build/core/playwright/custom-commands.js +1 -1
  39. package/build/core/playwright/env-initializer.js +28 -9
  40. package/build/core/playwright/fixtures.js +24 -0
  41. package/build/core/playwright/helpers/additionalProfiles.js +25 -0
  42. package/build/core/playwright/helpers/auth/accountLogin.js +4 -1
  43. package/build/core/playwright/helpers/auth/checkAuthCookies.js +27 -23
  44. package/build/core/playwright/helpers/auth/getUsers.js +92 -45
  45. package/build/core/playwright/helpers/auth/index.js +30 -5
  46. package/build/core/playwright/helpers/auth/loginDefaultStepsHelper.js +62 -0
  47. package/build/core/playwright/helpers/auth/loginSteps.js +40 -22
  48. package/build/core/playwright/helpers/browserTimeoutFactor.js +16 -0
  49. package/build/core/playwright/helpers/caseTimeoutResolver.js +37 -0
  50. package/build/core/playwright/helpers/checkAuthDirectory.js +27 -0
  51. package/build/core/playwright/helpers/configFileNameProvider.js +26 -5
  52. package/build/core/playwright/helpers/configPathResolver.js +38 -0
  53. package/build/core/playwright/helpers/contextFailureHandler.js +81 -0
  54. package/build/core/playwright/helpers/customFixturesHelper.js +58 -0
  55. package/build/core/playwright/helpers/failureTagClassifier.js +197 -0
  56. package/build/core/playwright/helpers/fileMutex.js +71 -0
  57. package/build/core/playwright/helpers/logCollector.js +147 -0
  58. package/build/core/playwright/helpers/parseUserArgs.js +2 -3
  59. package/build/core/playwright/helpers/runtimeLogAnnotator.js +140 -0
  60. package/build/core/playwright/helpers/runtimeLogPath.js +61 -0
  61. package/build/core/playwright/helpers/runtimeLogReader.js +54 -0
  62. package/build/core/playwright/helpers/thirdPartyLib.js +13 -0
  63. package/build/core/playwright/index.js +8 -76
  64. package/build/core/playwright/patterns/casePatterns.js +9 -0
  65. package/build/core/playwright/patterns/codePatterns.js +9 -0
  66. package/build/core/playwright/patterns/environmentPatterns.js +15 -0
  67. package/build/core/playwright/patterns/index.js +33 -0
  68. package/build/core/playwright/patterns/logCollectorIgnorePatterns.js +15 -0
  69. package/build/core/playwright/patterns/toolPatterns.js +26 -0
  70. package/build/core/playwright/readConfigFile.js +49 -16
  71. package/build/core/playwright/reporter/PlaywrightReporter.js +58 -0
  72. package/build/core/playwright/reporter/Reporter.js +65 -0
  73. package/build/core/playwright/reporter/ShardReporter.js +58 -0
  74. package/build/core/playwright/reporter/UnitReporter.js +27 -0
  75. package/build/core/playwright/reporter/helpers/mergeAbortedTests.js +78 -0
  76. package/build/core/playwright/runner/Runner.js +22 -0
  77. package/build/core/playwright/runner/RunnerHelper.js +43 -0
  78. package/build/core/playwright/runner/RunnerTypes.js +17 -0
  79. package/build/core/playwright/runner/SpawnRunner.js +93 -0
  80. package/build/core/playwright/setup/Project.js +35 -0
  81. package/build/core/playwright/setup/ProjectConfiguration.js +66 -0
  82. package/build/core/playwright/setup/config-creator.js +58 -40
  83. package/build/core/playwright/setup/config-utils.js +68 -37
  84. package/build/core/playwright/setup/custom-reporter.js +137 -14
  85. package/build/core/playwright/setup/merge-config.js +32 -0
  86. package/build/core/playwright/setup/qc-custom-reporter.js +342 -0
  87. package/build/core/playwright/spawnInheritChild.js +71 -0
  88. package/build/core/playwright/tagProcessor.js +69 -0
  89. package/build/core/playwright/test-runner.js +44 -98
  90. package/build/core/playwright/types.js +4 -1
  91. package/build/core/playwright/validateFeature.js +28 -0
  92. package/build/decorators.d.ts +1 -1
  93. package/build/decorators.js +1 -1
  94. package/build/index.d.ts +17 -19
  95. package/build/index.js +28 -6
  96. package/build/lib/cli.js +42 -7
  97. package/build/setup-folder-structure/helper.js +2 -0
  98. package/build/setup-folder-structure/samples/accountLogin-sample.js +19 -0
  99. package/build/setup-folder-structure/samples/actors-index.js +2 -0
  100. package/build/setup-folder-structure/samples/auth-setup-sample.js +10 -67
  101. package/build/setup-folder-structure/samples/editions-index.js +3 -0
  102. package/build/setup-folder-structure/samples/free-sample.json +25 -0
  103. package/build/setup-folder-structure/samples/settings.json +7 -0
  104. package/build/setup-folder-structure/samples/testSetup-sample.js +14 -0
  105. package/build/setup-folder-structure/samples/uat-config-sample.js +7 -2
  106. package/build/setup-folder-structure/setupProject.js +23 -5
  107. package/build/test/core/dataGenerator/__tests__/DataGenerator.test.js +311 -0
  108. package/build/test/core/dataGenerator/__tests__/DataGeneratorHelper.test.js +204 -0
  109. package/build/test/core/dataGenerator/__tests__/DataGeneratorResolution.test.js +126 -0
  110. package/build/test/core/dataGenerator/authenticator/__tests__/Authenticator.test.js +88 -0
  111. package/build/test/core/dataGenerator/authenticator/__tests__/JWTauthenticator.test.js +136 -0
  112. package/build/test/core/dataGenerator/authenticator/__tests__/OAuthAuthenticator.test.js +39 -0
  113. package/build/test/core/dataGenerator/authenticator/__tests__/OrgOAuthAuthenticator.test.js +39 -0
  114. package/build/test/core/playwright/__tests__/spawnInheritChild.test.js +148 -0
  115. package/build/test/core/playwright/__tests__/tagProcessor.test.js +94 -0
  116. package/build/test/core/playwright/__tests__/validateFeature.test.js +72 -0
  117. package/build/test/core/playwright/buildInFixtures/__tests__/caseTimeout.test.js +96 -0
  118. package/build/test/core/playwright/buildInFixtures/__tests__/executionContext.test.js +27 -0
  119. package/build/test/core/playwright/configuration/__tests__/Configuration.test.js +53 -0
  120. package/build/test/core/playwright/helpers/__tests__/additionalProfiles.test.js +45 -0
  121. package/build/test/core/playwright/helpers/__tests__/configFileNameProvider.test.js +75 -0
  122. package/build/test/core/playwright/helpers/__tests__/configPathResolver.test.js +55 -0
  123. package/build/test/core/playwright/helpers/__tests__/customFixturesHelper.test.js +51 -0
  124. package/build/test/core/playwright/helpers/__tests__/failureTagClassifier.test.js +604 -0
  125. package/build/test/core/playwright/helpers/__tests__/fileMutex.test.js +79 -0
  126. package/build/test/core/playwright/helpers/__tests__/getUsers_ListOfActors.test.js +83 -0
  127. package/build/test/core/playwright/helpers/__tests__/logCollector.test.js +163 -0
  128. package/build/test/core/playwright/helpers/__tests__/runtimeLogReader.test.js +112 -0
  129. package/build/test/core/playwright/helpers/auth/__tests__/checkAuthCookies.test.js +92 -0
  130. package/build/test/core/playwright/runner/__tests__/RunnerHelper.test.js +19 -0
  131. package/build/test/core/playwright/runner/__tests__/SpawnRunner.test.js +30 -0
  132. package/build/utils/cliArgsToObject.js +3 -0
  133. package/build/utils/commonUtils.js +20 -0
  134. package/build/utils/fileUtils.js +43 -1
  135. package/build/utils/logger.js +1 -30
  136. package/changelog.md +23 -0
  137. package/docs/CODE-REVIEW-AGENT.md +399 -0
  138. package/docs/code-review-instructions.md +157 -0
  139. package/jest.config.js +29 -11
  140. package/npm-shrinkwrap.json +14994 -4793
  141. package/package.json +39 -28
  142. package/playwright.config.js +13 -57
  143. package/unit_reports/unit-report.html +277 -0
  144. package/build/bdd-framework/cli/commands/env.js +0 -42
  145. package/build/bdd-framework/cli/commands/export.js +0 -47
  146. package/build/bdd-framework/cli/commands/test.js +0 -64
  147. package/build/bdd-framework/cli/index.js +0 -11
  148. package/build/bdd-framework/cli/options.js +0 -19
  149. package/build/bdd-framework/cli/worker.js +0 -13
  150. package/build/bdd-framework/config/configDir.js +0 -35
  151. package/build/bdd-framework/config/enrichReporterData.js +0 -23
  152. package/build/bdd-framework/config/env.js +0 -50
  153. package/build/bdd-framework/config/index.js +0 -94
  154. package/build/bdd-framework/config/lang.js +0 -14
  155. package/build/bdd-framework/cucumber/buildStepDefinition.js +0 -43
  156. package/build/bdd-framework/cucumber/createTestStep.js +0 -43
  157. package/build/bdd-framework/cucumber/formatter/EventDataCollector.js +0 -126
  158. package/build/bdd-framework/cucumber/formatter/GherkinDocumentParser.js +0 -72
  159. package/build/bdd-framework/cucumber/formatter/PickleParser.js +0 -25
  160. package/build/bdd-framework/cucumber/formatter/durationHelpers.js +0 -13
  161. package/build/bdd-framework/cucumber/formatter/getColorFns.js +0 -57
  162. package/build/bdd-framework/cucumber/formatter/index.js +0 -16
  163. package/build/bdd-framework/cucumber/formatter/locationHelpers.js +0 -16
  164. package/build/bdd-framework/cucumber/loadConfig.js +0 -17
  165. package/build/bdd-framework/cucumber/loadFeatures.js +0 -70
  166. package/build/bdd-framework/cucumber/loadSnippetBuilder.js +0 -20
  167. package/build/bdd-framework/cucumber/loadSteps.js +0 -47
  168. package/build/bdd-framework/cucumber/resolveFeaturePaths.js +0 -62
  169. package/build/bdd-framework/cucumber/stepArguments.js +0 -21
  170. package/build/bdd-framework/cucumber/types.js +0 -5
  171. package/build/bdd-framework/cucumber/valueChecker.js +0 -23
  172. package/build/bdd-framework/decorators.js +0 -18
  173. package/build/bdd-framework/gen/fixtures.js +0 -48
  174. package/build/bdd-framework/gen/formatter.js +0 -123
  175. package/build/bdd-framework/gen/i18n.js +0 -39
  176. package/build/bdd-framework/gen/index.js +0 -185
  177. package/build/bdd-framework/gen/testFile.js +0 -465
  178. package/build/bdd-framework/gen/testMeta.js +0 -60
  179. package/build/bdd-framework/gen/testNode.js +0 -60
  180. package/build/bdd-framework/gen/testPoms.js +0 -133
  181. package/build/bdd-framework/hooks/scenario.js +0 -130
  182. package/build/bdd-framework/hooks/worker.js +0 -89
  183. package/build/bdd-framework/index.js +0 -52
  184. package/build/bdd-framework/playwright/fixtureParameterNames.js +0 -93
  185. package/build/bdd-framework/playwright/getLocationInFile.js +0 -79
  186. package/build/bdd-framework/playwright/loadConfig.js +0 -42
  187. package/build/bdd-framework/playwright/loadUtils.js +0 -33
  188. package/build/bdd-framework/playwright/testTypeImpl.js +0 -61
  189. package/build/bdd-framework/playwright/transform.js +0 -88
  190. package/build/bdd-framework/playwright/types.js +0 -5
  191. package/build/bdd-framework/playwright/utils.js +0 -34
  192. package/build/bdd-framework/reporter/cucumber/base.js +0 -57
  193. package/build/bdd-framework/reporter/cucumber/custom.js +0 -73
  194. package/build/bdd-framework/reporter/cucumber/helper.js +0 -12
  195. package/build/bdd-framework/reporter/cucumber/html.js +0 -35
  196. package/build/bdd-framework/reporter/cucumber/index.js +0 -74
  197. package/build/bdd-framework/reporter/cucumber/json.js +0 -312
  198. package/build/bdd-framework/reporter/cucumber/junit.js +0 -205
  199. package/build/bdd-framework/reporter/cucumber/message.js +0 -20
  200. package/build/bdd-framework/reporter/cucumber/messagesBuilder/AttachmentMapper.js +0 -64
  201. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Builder.js +0 -196
  202. package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocument.js +0 -43
  203. package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocumentClone.js +0 -52
  204. package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocuments.js +0 -105
  205. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Hook.js +0 -70
  206. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Meta.js +0 -45
  207. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Pickles.js +0 -27
  208. package/build/bdd-framework/reporter/cucumber/messagesBuilder/Projects.js +0 -38
  209. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCase.js +0 -128
  210. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRun.js +0 -126
  211. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRunHooks.js +0 -102
  212. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepAttachments.js +0 -50
  213. package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepRun.js +0 -88
  214. package/build/bdd-framework/reporter/cucumber/messagesBuilder/index.js +0 -30
  215. package/build/bdd-framework/reporter/cucumber/messagesBuilder/pwUtils.js +0 -51
  216. package/build/bdd-framework/reporter/cucumber/messagesBuilder/timing.js +0 -35
  217. package/build/bdd-framework/reporter/cucumber/messagesBuilder/types.js +0 -5
  218. package/build/bdd-framework/run/StepInvoker.js +0 -68
  219. package/build/bdd-framework/run/bddDataAttachment.js +0 -46
  220. package/build/bdd-framework/run/bddFixtures.js +0 -191
  221. package/build/bdd-framework/run/bddWorld.js +0 -79
  222. package/build/bdd-framework/run/bddWorldInternal.js +0 -15
  223. package/build/bdd-framework/snippets/index.js +0 -132
  224. package/build/bdd-framework/snippets/snippetSyntax.js +0 -43
  225. package/build/bdd-framework/snippets/snippetSyntaxDecorators.js +0 -26
  226. package/build/bdd-framework/snippets/snippetSyntaxTs.js +0 -18
  227. package/build/bdd-framework/stepDefinitions/createBdd.js +0 -66
  228. package/build/bdd-framework/stepDefinitions/decorators/class.js +0 -68
  229. package/build/bdd-framework/stepDefinitions/decorators/steps.js +0 -99
  230. package/build/bdd-framework/stepDefinitions/defineStep.js +0 -62
  231. package/build/bdd-framework/stepDefinitions/stepConfig.js +0 -24
  232. package/build/bdd-framework/utils/AutofillMap.js +0 -20
  233. package/build/bdd-framework/utils/exit.js +0 -62
  234. package/build/bdd-framework/utils/index.js +0 -93
  235. package/build/bdd-framework/utils/jsStringWrap.js +0 -44
  236. package/build/bdd-framework/utils/logger.js +0 -30
  237. package/build/bdd-framework/utils/stripAnsiEscapes.js +0 -20
  238. package/build/core/playwright/report-generator.js +0 -42
  239. package/build/core/playwright/tag-processor.js +0 -68
  240. package/build/setup-folder-structure/samples/authUsers-sample.json +0 -9
  241. package/build/setup-folder-structure/samples/env-config-sample.json +0 -21
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.loadConfig = loadConfig;
7
- var _api = require("@cucumber/cucumber/api");
8
- const cache = new Map();
9
- async function loadConfig(options, environment) {
10
- const cacheKey = JSON.stringify(options);
11
- let config = cache.get(cacheKey);
12
- if (!config) {
13
- config = (0, _api.loadConfiguration)(options, environment);
14
- cache.set(cacheKey, config);
15
- }
16
- return config;
17
- }
@@ -1,70 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.FeaturesLoader = void 0;
7
- var _gherkinStreams = require("@cucumber/gherkin-streams");
8
- var _gherkinUtils = require("@cucumber/gherkin-utils");
9
- /**
10
- * Load features.
11
- *
12
- * See: https://github.com/cucumber/cucumber-js/blob/main/src/api/load_sources.ts
13
- * See: https://github.com/cucumber/cucumber-js/blob/main/src/api/gherkin.ts
14
- */
15
-
16
- class FeaturesLoader {
17
- gherkinQuery = new _gherkinUtils.Query();
18
- parseErrors = [];
19
- /**
20
- * Loads and parses feature files.
21
- * - featurePaths should be absolute.
22
- * See: https://github.com/cucumber/gherkin-streams/blob/main/src/GherkinStreams.ts#L36
23
- * - if options.relativeTo is provided, uri in gherkin documents will be relative to it.
24
- * See: https://github.com/cucumber/gherkin-streams/blob/main/src/SourceMessageStream.ts#L31
25
- * - options.defaultDialect is 'en' by default.
26
- * See: https://github.com/cucumber/gherkin-streams/blob/main/src/makeGherkinOptions.ts#L5
27
- */
28
- async load(featurePaths, options) {
29
- this.gherkinQuery = new _gherkinUtils.Query();
30
- this.parseErrors = [];
31
- await gherkinFromPaths(featurePaths, options, envelope => {
32
- this.gherkinQuery.update(envelope);
33
- if (envelope.parseError) {
34
- this.parseErrors.push(envelope.parseError);
35
- }
36
- });
37
- }
38
- getDocumentsCount() {
39
- return this.gherkinQuery.getGherkinDocuments().length;
40
- }
41
- getDocumentsWithPickles() {
42
- return this.gherkinQuery.getGherkinDocuments().map(gherkinDocument => {
43
- const pickles = this.getDocumentPickles(gherkinDocument);
44
- return {
45
- ...gherkinDocument,
46
- pickles
47
- };
48
- });
49
- }
50
- getDocumentPickles(gherkinDocument) {
51
- return this.gherkinQuery.getPickles().filter(pickle => gherkinDocument.uri === pickle.uri).map(pickle => this.getPickleWithLocation(pickle));
52
- }
53
- getPickleWithLocation(pickle) {
54
- const lastAstNodeId = pickle.astNodeIds[pickle.astNodeIds.length - 1];
55
- const location = this.gherkinQuery.getLocation(lastAstNodeId);
56
- return {
57
- ...pickle,
58
- location
59
- };
60
- }
61
- }
62
- exports.FeaturesLoader = FeaturesLoader;
63
- async function gherkinFromPaths(paths, options, onEnvelope) {
64
- return new Promise((resolve, reject) => {
65
- const gherkinMessageStream = _gherkinStreams.GherkinStreams.fromPaths(paths, options);
66
- gherkinMessageStream.on('data', onEnvelope);
67
- gherkinMessageStream.on('end', resolve);
68
- gherkinMessageStream.on('error', reject);
69
- });
70
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.loadSnippetBuilder = loadSnippetBuilder;
7
- var _cucumber = require("@cucumber/cucumber");
8
- /**
9
- * Loads snippet builder
10
- * See: https://github.com/cucumber/cucumber-js/blob/main/src/formatter/builder.ts
11
- */
12
-
13
- async function loadSnippetBuilder(supportCodeLibrary, snippetInterface, snippetSyntax) {
14
- return _cucumber.FormatterBuilder.getStepDefinitionSnippetBuilder({
15
- cwd: process.cwd(),
16
- snippetInterface,
17
- snippetSyntax,
18
- supportCodeLibrary
19
- });
20
- }
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.findStepDefinition = findStepDefinition;
7
- exports.hasTsNodeRegister = hasTsNodeRegister;
8
- exports.loadSteps = loadSteps;
9
- var _api = require("@cucumber/cucumber/api");
10
- var _transform = require("../playwright/transform");
11
- var _exit = require("../utils/exit");
12
- const cache = new Map();
13
- async function loadSteps(runConfiguration, environment = {}) {
14
- const cacheKey = JSON.stringify(runConfiguration);
15
- let lib = cache.get(cacheKey);
16
- if (!lib) {
17
- // use Playwright's built-in hook to compile TypeScript steps
18
- const uninstall = !hasTsNodeRegister(runConfiguration) ? (0, _transform.installTransform)() : () => {};
19
- lib = (0, _api.loadSupport)(runConfiguration, environment).finally(() => uninstall());
20
- cache.set(cacheKey, lib);
21
- }
22
- return lib;
23
- }
24
- /**
25
- * Finds step definition by step text.
26
- * See: https://github.com/cucumber/cucumber-js/blob/main/src/runtime/assemble_test_cases.ts#L103
27
- *
28
- * Handling case when several step definitions found:
29
- * https://github.com/cucumber/cucumber-js/blob/main/src/runtime/test_case_runner.ts#L313
30
- */
31
- function findStepDefinition(supportCodeLibrary, stepText, file) {
32
- const matchedSteps = supportCodeLibrary.stepDefinitions.filter(step => {
33
- return step.matchesStepName(stepText);
34
- });
35
- if (matchedSteps.length === 0) {
36
- return;
37
- }
38
- if (matchedSteps.length > 1) {
39
- (0, _exit.exit)([`Multiple step definitions matched for text: "${stepText}" (${file})`,
40
- // todo: print location of every step definition (as in cucumber)
41
- ...matchedSteps.map(s => ` ${s.pattern}`)].join('\n'));
42
- }
43
- return matchedSteps[0];
44
- }
45
- function hasTsNodeRegister(runConfiguration) {
46
- return runConfiguration.support.requireModules.includes('ts-node/register');
47
- }
@@ -1,62 +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.resovleFeaturePaths = resovleFeaturePaths;
8
- var _fs = _interopRequireDefault(require("fs"));
9
- var _path = _interopRequireDefault(require("path"));
10
- var _environment = require("@cucumber/cucumber/lib/api/environment");
11
- var _console_logger = require("@cucumber/cucumber/lib/api/console_logger");
12
- var _utils = require("../utils");
13
- /**
14
- * Representation of https://github.com/cucumber/cucumber-js/blob/main/src/paths/paths.ts
15
- * Since Cucumber 10.1 resolvePaths was moved from lib/api/paths to lib/paths/paths.
16
- * This module makes resolvePaths working with any version of Cucumber.
17
- * See: https://github.com/cucumber/cucumber-js/pull/2361/files
18
- *
19
- * todo: replace with own paths resolution.
20
- */
21
-
22
- /**
23
- * Returns list of absolute feature paths.
24
- */
25
- // eslint-disable-next-line max-statements
26
- async function resovleFeaturePaths(runConfiguration, environment = {}) {
27
- const {
28
- cwd,
29
- stderr,
30
- debug
31
- } = (0, _environment.mergeEnvironment)(environment);
32
- const logger = new _console_logger.ConsoleLogger(stderr, debug);
33
- const cucumberRoot = (0, _utils.resolvePackageRoot)('@cucumber/cucumber');
34
- const pathsModuleBefore10_1 = _path.default.join(cucumberRoot, 'lib/api/paths.js');
35
- const pathsModuleAfter10_1 = _path.default.join(cucumberRoot, 'lib/paths/paths.js');
36
- const isNewResolvePaths = _fs.default.existsSync(pathsModuleAfter10_1);
37
- if (isNewResolvePaths) {
38
- const {
39
- resolvePaths
40
- } = require(pathsModuleAfter10_1);
41
- const {
42
- sourcePaths,
43
- unexpandedSourcePaths
44
- } = await resolvePaths(logger, cwd, runConfiguration.sources);
45
- return {
46
- featurePaths: sourcePaths,
47
- unexpandedFeaturePaths: unexpandedSourcePaths
48
- };
49
- } else {
50
- const {
51
- resolvePaths
52
- } = require(pathsModuleBefore10_1);
53
- const {
54
- featurePaths,
55
- unexpandedFeaturePaths
56
- } = await resolvePaths(logger, cwd, runConfiguration.sources);
57
- return {
58
- featurePaths,
59
- unexpandedFeaturePaths
60
- };
61
- }
62
- }
@@ -1,21 +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.parseStepArgument = parseStepArgument;
8
- var _util = _interopRequireDefault(require("util"));
9
- var _valueChecker = require("./valueChecker");
10
- /**
11
- * Based on: https://github.com/cucumber/cucumber-js/blob/main/src/step_arguments.ts
12
- */
13
-
14
- function parseStepArgument(arg, mapping) {
15
- if ((0, _valueChecker.doesHaveValue)(arg.dataTable)) {
16
- return mapping.dataTable(arg.dataTable);
17
- } else if ((0, _valueChecker.doesHaveValue)(arg.docString)) {
18
- return mapping.docString(arg.docString);
19
- }
20
- throw new Error(`Unknown step argument: ${_util.default.inspect(arg)}`);
21
- }
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.doesHaveValue = doesHaveValue;
7
- exports.doesNotHaveValue = doesNotHaveValue;
8
- exports.valueOrDefault = valueOrDefault;
9
- /**
10
- * Based on: https://github.com/cucumber/cucumber-js/blob/main/src/value_checker.ts
11
- */
12
- function doesHaveValue(value) {
13
- return !doesNotHaveValue(value);
14
- }
15
- function doesNotHaveValue(value) {
16
- return value === null || value === undefined;
17
- }
18
- function valueOrDefault(value, defaultValue) {
19
- if (doesHaveValue(value)) {
20
- return value;
21
- }
22
- return defaultValue;
23
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "Fixture", {
7
- enumerable: true,
8
- get: function () {
9
- return _class.Fixture;
10
- }
11
- });
12
- exports.When = exports.Then = exports.Step = exports.Given = void 0;
13
- var _class = require("./stepDefinitions/decorators/class");
14
- var _steps = require("./stepDefinitions/decorators/steps");
15
- const Given = exports.Given = (0, _steps.createStepDecorator)('Given');
16
- const When = exports.When = (0, _steps.createStepDecorator)('When');
17
- const Then = exports.Then = (0, _steps.createStepDecorator)('Then');
18
- const Step = exports.Step = (0, _steps.createStepDecorator)('Unknown');
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.extractFixtureNames = extractFixtureNames;
7
- exports.extractFixtureNamesFromFnBodyMemo = extractFixtureNamesFromFnBodyMemo;
8
- var _fixtureParameterNames = require("../playwright/fixtureParameterNames");
9
- var _bddFixtures = require("../run/bddFixtures");
10
- var _exit = require("../utils/exit");
11
- const bodyFixturesSymbol = Symbol('bodyFixtures');
12
- /**
13
- * This function is used for playwright-style steps and decorators.
14
- * It extracts fixtures names from first parameter of function
15
- * using Playwright's helper.
16
- */
17
- function extractFixtureNames(fn) {
18
- return (0, _fixtureParameterNames.fixtureParameterNames)(fn).filter(name => !(0, _bddFixtures.isBddAutoInjectFixture)(name));
19
- }
20
- /**
21
- * This function is used for cucumber-style steps.
22
- * It looks for `this.useFixture('xxx')` entries in function body
23
- * and extracts fixtures names from it.
24
- */
25
- function extractFixtureNamesFromFnBodyMemo(fn) {
26
- if (typeof fn !== 'function') {
27
- return [];
28
- }
29
- const fnWithFixtures = fn;
30
- if (!fnWithFixtures[bodyFixturesSymbol]) {
31
- fnWithFixtures[bodyFixturesSymbol] = extractFixtureNamesFromFnBody(fn).filter(name => !(0, _bddFixtures.isBddAutoInjectFixture)(name));
32
- }
33
- return fnWithFixtures[bodyFixturesSymbol];
34
- }
35
- function extractFixtureNamesFromFnBody(fn) {
36
- const matches = fn.toString().matchAll(/this\.useFixture\((.+)\)/gi) || [];
37
- return [...matches].map(match => getFixtureName(match[1]));
38
- }
39
- function getFixtureName(arg) {
40
- if (!/^['"`]/.test(arg)) {
41
- // todo: log file location with incorrect useFixture
42
- (0, _exit.exit)('this.useFixture() can accept only static string as an argument.');
43
- }
44
- if (arg.startsWith('`') && arg.includes('${')) {
45
- (0, _exit.exit)('this.useFixture() can accept only static string as an argument.');
46
- }
47
- return arg.replace(/['"`]/g, '');
48
- }
@@ -1,123 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Formatter = void 0;
7
- var _jsStringWrap = require("../utils/jsStringWrap");
8
- var _utils = require("../utils");
9
- /**
10
- * Helper to format Playwright test file.
11
- */
12
-
13
- class Formatter {
14
- config;
15
- constructor(config) {
16
- this.config = config;
17
- }
18
- fileHeader(featureUri, importTestFrom) {
19
- // always use "/" for imports, see #91
20
- const importTestFromFile = (0, _utils.toPosixPath)((importTestFrom === null || importTestFrom === void 0 ? void 0 : importTestFrom.file) || '@zohodesk/testinglibrary');
21
- let varName = (importTestFrom === null || importTestFrom === void 0 ? void 0 : importTestFrom.varName) || 'test';
22
- if (varName !== 'test') {
23
- varName = `${varName} as test`;
24
- }
25
- return [`/** Generated from: ${featureUri} */`,
26
- // prettier-ignore
27
- // this.quoted() is not possible for 'import from' as backticks not parsed
28
- `import { ${varName} } from ${JSON.stringify(importTestFromFile)};`, ''];
29
- }
30
- suite(node, children) {
31
- const firstLine = `test.describe${this.getSubFn(node)}(${this.quoted(node.title)}, () => {`;
32
- if (!children.length) {
33
- return [`${firstLine}});`, ''];
34
- }
35
- return [firstLine, '', ...children.map(indent), `});`, ''];
36
- }
37
- beforeEach(fixtures, children) {
38
- const fixturesStr = [...fixtures].join(', ');
39
- // prettier-ignore
40
- return [`test.beforeEach(async ({ ${fixturesStr} }) => {`, ...children.map(indent), `});`, ''];
41
- }
42
- test(node, fixtures, children) {
43
- const fixturesStr = [...fixtures].join(', ');
44
- const title = this.quoted(node.title);
45
- const firstLine = `test${this.getSubFn(node)}(${title}, async ({ ${fixturesStr} }) => {`;
46
- if (!children.length) {
47
- return [`${firstLine}});`, ''];
48
- }
49
- return [firstLine, ...children.map(indent), `});`, ''];
50
- }
51
- // eslint-disable-next-line max-params
52
- step(keyword, text, argument, fixtureNames = []) {
53
- const fixtures = fixtureNames.length ? `{ ${fixtureNames.join(', ')} }` : '';
54
- const argumentArg = argument ? JSON.stringify(argument) : fixtures ? 'null' : '';
55
- const textArg = this.quoted(text);
56
- const args = [textArg, argumentArg, fixtures].filter(arg => arg !== '').join(', ');
57
- return `await ${keyword}(${args});`;
58
- }
59
- missingStep(keyword, text) {
60
- return `// missing step: ${keyword}(${this.quoted(text)});`;
61
- }
62
- technicalSection(testMetaBuilder, featureUri, fixtures) {
63
- return ['// == technical section ==',
64
- // prettier-ignore
65
- '', 'test.use({', ...['$test: ({}, use) => use(test),', '$testMetaMap: ({}, use) => use(testMetaMap),', `$uri: ({}, use) => use(${this.quoted(featureUri)}),`, ...fixtures].map(indent), '});', '', 'const testMetaMap = {', ...testMetaBuilder.getObjectLines().map(indent), '};'];
66
- }
67
- bddWorldFixtures() {
68
- const fixturesObj = {
69
- page: null,
70
- context: null,
71
- browser: null,
72
- browserName: null,
73
- request: null
74
- };
75
- const fixtures = Object.keys(fixturesObj).join(', ');
76
- return [`$bddWorldFixtures: ({ ${fixtures} }, use) => use({ ${fixtures} }),`];
77
- }
78
- scenarioHookFixtures(fixtureNames) {
79
- if (!fixtureNames.length) {
80
- return [];
81
- }
82
- const fixtures = fixtureNames.join(', ');
83
- return [`$scenarioHookFixtures: ({ ${fixtures} }, use) => use({ ${fixtures} }),`];
84
- }
85
- workerHookFixtures(fixtureNames) {
86
- if (!fixtureNames.length) {
87
- return [];
88
- }
89
- const fixtures = fixtureNames.join(', ');
90
- const scope = this.quoted('worker');
91
- return [`$workerHookFixtures: [({ ${fixtures} }, use) => use({ ${fixtures} }), { scope: ${scope} }],`];
92
- }
93
- langFixture(lang) {
94
- return [`$lang: ({}, use) => use(${this.quoted(lang)}),`];
95
- }
96
- getSubFn(node) {
97
- if (node.flags.only) {
98
- return '.only';
99
- }
100
- if (node.flags.skip) {
101
- return '.skip';
102
- }
103
- if (node.flags.fixme) {
104
- return '.fixme';
105
- }
106
- return '';
107
- }
108
- /**
109
- * Apply this function only to string literals (mostly titles here).
110
- * Objects and arrays are handled with JSON.strinigfy,
111
- * b/c object keys can't be in backticks.
112
- * See: https://stackoverflow.com/questions/33194138/template-string-as-object-property-name
113
- */
114
- quoted(str) {
115
- return (0, _jsStringWrap.jsStringWrap)(str, {
116
- quotes: this.config.quotes
117
- });
118
- }
119
- }
120
- exports.Formatter = Formatter;
121
- function indent(value) {
122
- return value ? `${' '}${value}` : value;
123
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getKeywordsMap = getKeywordsMap;
7
- var _gherkin = require("@cucumber/gherkin");
8
- /**
9
- * Get i18n keywords.
10
- * See: https://github.com/cucumber/cucumber-js/blob/main/src/cli/i18n.ts
11
- */
12
-
13
- function getKeywordsMap(language) {
14
- const origMap = _gherkin.dialects[language];
15
- if (!origMap) {
16
- throw new Error(`Language not found: ${language}`);
17
- }
18
- const targetMap = new Map();
19
- const enKeywords = Object.keys(origMap);
20
- enKeywords.forEach(enKeyword => handleKeyword(enKeyword, origMap, targetMap));
21
- return targetMap;
22
- }
23
- function handleKeyword(enKeyword, origMap, targetMap) {
24
- const nativeKeywords = origMap[enKeyword];
25
- // Array.isArray converts to any[]
26
- if (typeof nativeKeywords === 'string') {
27
- return;
28
- }
29
- nativeKeywords.forEach(nativeKeyword => {
30
- nativeKeyword = nativeKeyword.trim();
31
- if (!nativeKeyword || nativeKeyword === '*') {
32
- return;
33
- }
34
- targetMap.set(nativeKeyword, capitalizeFirstLetter(enKeyword));
35
- });
36
- }
37
- function capitalizeFirstLetter(s) {
38
- return s.charAt(0).toUpperCase() + s.slice(1);
39
- }