@zohodesk/testinglibrary 0.0.5-exp.9 → 0.0.6

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 (75) hide show
  1. package/.babelrc +3 -0
  2. package/.eslintrc.js +27 -0
  3. package/.prettierrc +6 -0
  4. package/{changelog.md → Changelog.md} +8 -11
  5. package/build/bdd-framework/cli/commands/env.js +9 -10
  6. package/build/bdd-framework/cli/commands/export.js +5 -4
  7. package/build/bdd-framework/cli/commands/test.js +9 -10
  8. package/build/bdd-framework/cli/options.js +0 -1
  9. package/build/bdd-framework/config/index.js +0 -1
  10. package/build/bdd-framework/cucumber/buildStepDefinition.js +0 -2
  11. package/build/bdd-framework/cucumber/gherkin.d.js +5 -0
  12. package/build/bdd-framework/cucumber/loadSources.js +0 -1
  13. package/build/bdd-framework/cucumber/loadSteps.js +2 -8
  14. package/build/bdd-framework/decorators.js +7 -6
  15. package/build/bdd-framework/gen/formatter.js +7 -11
  16. package/build/bdd-framework/gen/i18n.js +2 -11
  17. package/build/bdd-framework/gen/index.js +22 -12
  18. package/build/bdd-framework/gen/poms.js +0 -1
  19. package/build/bdd-framework/gen/testFile.js +55 -55
  20. package/build/bdd-framework/gen/testNode.js +7 -9
  21. package/build/bdd-framework/gen/testPoms.js +123 -0
  22. package/build/bdd-framework/index.js +12 -0
  23. package/build/bdd-framework/playwright/fixtureParameterNames.js +8 -34
  24. package/build/bdd-framework/playwright/getLocationInFile.js +5 -9
  25. package/build/bdd-framework/playwright/testTypeImpl.js +1 -7
  26. package/build/bdd-framework/playwright/transform.js +2 -7
  27. package/build/bdd-framework/playwright/types.js +5 -0
  28. package/build/bdd-framework/playwright/utils.js +15 -5
  29. package/build/bdd-framework/run/bddFixtures.js +3 -4
  30. package/build/bdd-framework/run/bddWorld.js +3 -7
  31. package/build/bdd-framework/snippets/index.js +6 -7
  32. package/build/bdd-framework/snippets/snippetSyntax.js +1 -10
  33. package/build/bdd-framework/snippets/snippetSyntaxDecorators.js +0 -6
  34. package/build/bdd-framework/stepDefinitions/createBdd.js +1 -4
  35. package/build/bdd-framework/stepDefinitions/createDecorators.js +1 -2
  36. package/build/bdd-framework/stepDefinitions/decorators/poms.js +50 -0
  37. package/build/bdd-framework/stepDefinitions/decorators/steps.js +94 -0
  38. package/build/bdd-framework/stepDefinitions/defineStep.js +10 -11
  39. package/build/bdd-framework/stepDefinitions/stepConfig.js +24 -0
  40. package/build/bdd-framework/utils/index.js +1 -3
  41. package/build/bdd-framework/utils/logger.js +17 -9
  42. package/build/core/jest/runner/jest-runner.js +1 -0
  43. package/build/core/playwright/codegen.js +1 -2
  44. package/build/core/playwright/custom-commands.js +1 -1
  45. package/build/core/playwright/index.js +15 -6
  46. package/build/core/playwright/readConfigFile.js +5 -0
  47. package/build/core/playwright/report-generator.js +1 -3
  48. package/build/core/playwright/setup/config-creator.js +23 -12
  49. package/build/core/playwright/test-runner.js +35 -2
  50. package/build/decorators.d.ts +1 -0
  51. package/build/decorators.js +16 -0
  52. package/build/index.d.ts +5 -0
  53. package/build/index.js +23 -1
  54. package/build/lib/cli.js +14 -5
  55. package/build/lint/index.js +3 -6
  56. package/build/parser/parser.js +206 -0
  57. package/build/parser/sample.feature +34 -0
  58. package/build/parser/sample.spec.js +37 -0
  59. package/build/parser/verifier.js +130 -0
  60. package/build/setup-folder-structure/samples/auth-setup-sample.js +72 -0
  61. package/build/setup-folder-structure/samples/authUsers-sample.json +9 -0
  62. package/build/setup-folder-structure/samples/env-config-sample.json +21 -0
  63. package/build/setup-folder-structure/samples/git-ignore.sample.js +33 -0
  64. package/build/setup-folder-structure/samples/uat-config-sample.js +35 -0
  65. package/build/setup-folder-structure/setupProject.js +6 -10
  66. package/build/utils/cliArgsToObject.js +1 -0
  67. package/build/utils/fileUtils.js +53 -0
  68. package/build/utils/logger.js +6 -4
  69. package/build/utils/stepDefinitionsFormatter.js +12 -0
  70. package/npm-shrinkwrap.json +1074 -6
  71. package/package.json +12 -6
  72. package/playwright.config.js +5 -5
  73. package/build/setup-folder-structure/env-config-sample.json +0 -17
  74. package/build/setup-folder-structure/uat-config-sample.js +0 -31
  75. package/build/setup-folder-structure/user-example.json +0 -3
package/.babelrc CHANGED
@@ -12,5 +12,8 @@
12
12
  ],
13
13
  "plugins": [
14
14
  ["@babel/plugin-transform-runtime"]
15
+ ],
16
+ "ignore": [
17
+ "./src/setup-folder-structure/samples"
15
18
  ]
16
19
  }
package/.eslintrc.js ADDED
@@ -0,0 +1,27 @@
1
+ module.exports = {
2
+ "env": {
3
+ "node": true,
4
+ "es2021": true
5
+ },
6
+ "extends": "eslint:recommended",
7
+ "overrides": [
8
+ {
9
+ "env": {
10
+ "node": true
11
+ },
12
+ "files": [
13
+ ".eslintrc.{js,cjs}"
14
+ ],
15
+ "parserOptions": {
16
+ "sourceType": "script"
17
+ }
18
+ }
19
+ ],
20
+ "parserOptions": {
21
+ "ecmaVersion": "latest",
22
+ "sourceType": "module"
23
+ },
24
+ "rules": {
25
+ "indent": ["error", 2]
26
+ }
27
+ }
package/.prettierrc ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "trailingComma": "none",
3
+ "singleQuote": true,
4
+ "arrowParens": "avoid",
5
+ "jsxSingleQuote": true
6
+ }
@@ -2,21 +2,18 @@
2
2
 
3
3
  ## Framework that abstracts the configuration for playwright and Jest
4
4
 
5
- # 0.0.5-exp.8
5
+ # 0.0.6
6
6
 
7
- - Additional pages support added as config
7
+ ## Provided Initial Support for cucumber feature files
8
8
 
9
- # 0.0.5-exp.5
9
+ - Playwright-bdd and cucumber added as dependencies
10
+ - Added config bddMode which toggles the feature files processing
11
+ - Added expect timeout and test timeout as an option
12
+ - Decorators support for given, when and then. Typescript support needed to use this feature
10
13
 
11
- - Added expect timeout and test timeout as an option
14
+ ## Internal Library change
12
15
 
13
- # 0.0.5-exp.2
14
-
15
- - Provided Initial Support for cucumber feature files
16
- - Playwright-bdd and cucumber
17
- - Added config bddMode which toggles the feature files processing
18
- - Internal Library change
19
- - Provided support for import/export statements
16
+ - Provided support for import/export statements
20
17
 
21
18
  # 0.0.5
22
19
 
@@ -6,17 +6,19 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.envCommand = void 0;
8
8
  exports.getOwnVersion = getOwnVersion;
9
- var _fs = _interopRequireDefault(require("fs"));
10
9
  var _commander = require("commander");
11
10
  var _options = require("../options");
12
11
  var _path = _interopRequireDefault(require("path"));
13
12
  var _logger = require("../../utils/logger");
14
13
  var _utils = require("../../utils");
15
14
  var _loadConfig = require("../../playwright/loadConfig");
15
+ const logger = new _logger.Logger({
16
+ verbose: true
17
+ });
16
18
  const envCommand = new _commander.Command('env').description('Prints environment info').addOption(_options.configOption).action(opts => {
17
- _logger.logger.log(`Playwright-bdd environment info:\n`);
18
- _logger.logger.log(`platform: ${process.platform}`);
19
- _logger.logger.log(`node: ${process.version}`);
19
+ logger.log(`Playwright-bdd environment info:\n`);
20
+ logger.log(`platform: ${process.platform}`);
21
+ logger.log(`node: ${process.version}`);
20
22
  showPackageVersion('playwright-bdd');
21
23
  showPackageVersion('@playwright/test');
22
24
  showPackageVersion('@cucumber/cucumber');
@@ -25,20 +27,17 @@ const envCommand = new _commander.Command('env').description('Prints environment
25
27
  exports.envCommand = envCommand;
26
28
  function showPackageVersion(packageName) {
27
29
  const version = packageName === 'playwright-bdd' ? getOwnVersion() : (0, _utils.getPackageVersion)(packageName);
28
- _logger.logger.log(`${packageName}: v${version}`);
30
+ logger.log(`${packageName}: v${version}`);
29
31
  }
30
-
31
32
  /**
32
33
  * Getting own version by relative path instead of using getPackageVersion(),
33
34
  * to aneble using directly from /dist in tests.
34
35
  */
35
36
  function getOwnVersion() {
36
- // const packageJsonPath = path.resolve(__dirname, '..', '..', '..', `package.json`);
37
- // const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
38
- return '5.2.0';
37
+ return '5.3.0';
39
38
  }
40
39
  function showPlaywrightConfigPath(cliConfigPath) {
41
40
  const resolvedConfigFile = (0, _loadConfig.resolveConfigFile)(cliConfigPath);
42
41
  const relPath = _path.default.relative(process.cwd(), resolvedConfigFile);
43
- _logger.logger.log(`Playwright config file: ${relPath}`);
42
+ logger.log(`Playwright config file: ${relPath}`);
44
43
  }
@@ -13,13 +13,14 @@ var _logger = require("../../utils/logger");
13
13
  var _env = require("../../config/env");
14
14
  var _test = require("./test");
15
15
  var _gen = require("../../gen");
16
- // filter by project?
17
-
16
+ const logger = new _logger.Logger({
17
+ verbose: true
18
+ });
18
19
  const exportCommand = new _commander.Command('export').description('Prints all step definitions').addOption(_options.configOption).action(async opts => {
19
20
  const {
20
21
  resolvedConfigFile
21
22
  } = await (0, _loadConfig.loadConfig)(opts.config);
22
- _logger.logger.log(`List of all steps found by config: ${_path.default.relative(process.cwd(), resolvedConfigFile)}\n`);
23
+ logger.log(`List of all steps found by config: ${_path.default.relative(process.cwd(), resolvedConfigFile)}\n`);
23
24
  const configs = Object.values((0, _env.getEnvConfigs)());
24
25
  (0, _test.assertConfigsCount)(configs);
25
26
  await showStepsForConfigs(configs);
@@ -34,7 +35,7 @@ async function showStepsForConfigs(configs) {
34
35
  stepDefinitions.forEach(s => steps.add(`* ${getStepText(s)}`));
35
36
  });
36
37
  await Promise.all(tasks);
37
- steps.forEach(stepText => _logger.logger.log(stepText));
38
+ steps.forEach(stepText => logger.log(stepText));
38
39
  }
39
40
  function getStepText({
40
41
  pattern,
@@ -36,16 +36,6 @@ function assertConfigsCount(configs) {
36
36
  (0, _utils.exitWithMessage)(`No BDD configs found. Did you use defineBddConfig() in playwright.config.ts?`);
37
37
  }
38
38
  }
39
- async function runInWorker(config) {
40
- const worker = new _worker_threads.Worker(GEN_WORKER_PATH, {
41
- workerData: {
42
- config
43
- }
44
- });
45
-
46
- // todo: check if worker exited with error?
47
- await (0, _events.once)(worker, 'exit');
48
- }
49
39
  async function generateFilesForConfigs(configs, cliConfig) {
50
40
  // run first config in main thread and other in workers (to have fresh require cache)
51
41
  // See: https://github.com/vitalets/playwright-bdd/issues/32
@@ -57,4 +47,13 @@ async function generateFilesForConfigs(configs, cliConfig) {
57
47
  return index === 0 ? new _gen.TestFilesGenerator(finalConfig).generate() : runInWorker(finalConfig);
58
48
  });
59
49
  return Promise.all(tasks);
50
+ }
51
+ async function runInWorker(config) {
52
+ const worker = new _worker_threads.Worker(GEN_WORKER_PATH, {
53
+ workerData: {
54
+ config
55
+ }
56
+ });
57
+ // todo: check if worker exited with error?
58
+ await (0, _events.once)(worker, 'exit');
60
59
  }
@@ -11,7 +11,6 @@ var _commander = require("commander");
11
11
  */
12
12
 
13
13
  const configOption = new _commander.Option(`-c, --config <file>`, `Path to Playwright configuration file (default: playwright.config.(js|ts))`);
14
-
15
14
  /**
16
15
  * Helper used in test run to detect config location.
17
16
  */
@@ -25,7 +25,6 @@ const defaults = {
25
25
  exports.defaults = defaults;
26
26
  function defineBddConfig(inputConfig) {
27
27
  const config = getConfig(inputConfig);
28
-
29
28
  // In main process store config in env to be accessible by workers
30
29
  if (!process.env.TEST_WORKER_INDEX) {
31
30
  (0, _env.saveConfigToEnv)(config);
@@ -24,13 +24,11 @@ function buildStepDefinition({
24
24
  }, supportCodeLibrary) {
25
25
  // todo: handle error.undefinedParameterTypeName as it's done in cucumber?
26
26
  const expression = typeof pattern === 'string' ? new _cucumberExpressions.CucumberExpression(pattern, supportCodeLibrary.parameterTypeRegistry) : new _cucumberExpressions.RegularExpression(pattern, supportCodeLibrary.parameterTypeRegistry);
27
-
28
27
  // skip wrapping code as it is not needed for decorator steps
29
28
  // const wrappedCode = this.wrapCode({
30
29
  // code,
31
30
  // wrapperOptions: options.wrapperOptions,
32
31
  // })
33
-
34
32
  return new _step_definition.default({
35
33
  code,
36
34
  expression,
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -13,7 +13,6 @@ var _console_logger = require("@cucumber/cucumber/lib/api/console_logger");
13
13
  * Copied from original load_sources, but returns full Pickles.
14
14
  * See: https://github.com/cucumber/cucumber-js/blob/main/src/api/load_sources.ts
15
15
  */
16
- /// <reference path="./gherkin.d.ts" />
17
16
 
18
17
  /**
19
18
  * Load and parse features, produce a filtered and ordered test plan and/or parse errors.
@@ -15,7 +15,6 @@ async function loadSteps(runConfiguration, environment = {}) {
15
15
  let lib = cache.get(cacheKey);
16
16
  if (!lib) {
17
17
  // use Playwright's built-in hook to compile TypeScript steps
18
- // eslint-disable-next-line @typescript-eslint/no-empty-function
19
18
  const uninstall = !hasTsNodeRegister(runConfiguration) ? (0, _transform.installTransform)() : () => {};
20
19
  lib = (0, _api.loadSupport)(runConfiguration, environment).finally(() => uninstall());
21
20
  cache.set(cacheKey, lib);
@@ -26,13 +25,8 @@ function findStepDefinition(supportCodeLibrary, stepText, file) {
26
25
  const matchedSteps = supportCodeLibrary.stepDefinitions.filter(step => {
27
26
  return step.matchesStepName(stepText);
28
27
  });
29
- if (matchedSteps.length === 0) {
30
- return;
31
- }
32
- ;
33
- if (matchedSteps.length > 1) {
34
- (0, _utils.exitWithMessage)([`Several step definitions found for text: ${stepText} (${file})`, ...matchedSteps.map(s => `- ${s.pattern}`)].join('\n'));
35
- }
28
+ if (matchedSteps.length === 0) return;
29
+ if (matchedSteps.length > 1) (0, _utils.exitWithMessage)([`Several step definitions found for text: ${stepText} (${file})`, ...matchedSteps.map(s => `- ${s.pattern}`)].join('\n'));
36
30
  // todo: check stepDefinition.keyword with PickleStepType
37
31
  return matchedSteps[0];
38
32
  }
@@ -6,16 +6,17 @@ Object.defineProperty(exports, "__esModule", {
6
6
  Object.defineProperty(exports, "Fixture", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _createDecorators.Fixture;
9
+ return _poms.Fixture;
10
10
  }
11
11
  });
12
12
  exports.When = exports.Then = exports.Step = exports.Given = void 0;
13
- var _createDecorators = require("./stepDefinitions/createDecorators");
14
- const Given = (0, _createDecorators.createStepDecorator)('Given');
13
+ var _poms = require("./stepDefinitions/decorators/poms");
14
+ var _steps = require("./stepDefinitions/decorators/steps");
15
+ const Given = (0, _steps.createStepDecorator)('Given');
15
16
  exports.Given = Given;
16
- const When = (0, _createDecorators.createStepDecorator)('When');
17
+ const When = (0, _steps.createStepDecorator)('When');
17
18
  exports.When = When;
18
- const Then = (0, _createDecorators.createStepDecorator)('Then');
19
+ const Then = (0, _steps.createStepDecorator)('Then');
19
20
  exports.Then = Then;
20
- const Step = (0, _createDecorators.createStepDecorator)('Unknown');
21
+ const Step = (0, _steps.createStepDecorator)('Unknown');
21
22
  exports.Step = Step;
@@ -11,6 +11,7 @@ var _jsStringWrap = require("../utils/jsStringWrap");
11
11
 
12
12
  const TAGS_FIXTURE_TEST_KEY_SEPARATOR = '|';
13
13
  class Formatter {
14
+ config;
14
15
  constructor(config) {
15
16
  this.config = config;
16
17
  }
@@ -19,7 +20,6 @@ class Formatter {
19
20
  let varName = (importTestFrom === null || importTestFrom === void 0 ? void 0 : importTestFrom.varName) || 'test';
20
21
  if (varName !== 'test') varName = `${varName} as test`;
21
22
  return [`/** Generated from: ${uri} */`,
22
- // prettier-ignore
23
23
  // this.quoted() is not possible for 'import from' as backticks not parsed
24
24
  `import { ${varName} } from ${JSON.stringify(file)};`, ''];
25
25
  }
@@ -37,7 +37,6 @@ class Formatter {
37
37
  // prettier-ignore
38
38
  return [`test${this.getSubFn(node)}(${this.quoted(node.title)}, async ({ ${fixturesStr} }) => {`, ...children.map(indent), `});`, ''];
39
39
  }
40
-
41
40
  // eslint-disable-next-line max-params
42
41
  step(keyword, text, argument, fixtureNames = []) {
43
42
  const fixtures = fixtureNames.length ? `{ ${fixtureNames.join(', ')} }` : '';
@@ -50,9 +49,7 @@ class Formatter {
50
49
  return `// missing step: ${keyword}(${this.quoted(text)});`;
51
50
  }
52
51
  useFixtures(fixtures) {
53
- return fixtures.length > 0 ? ['// == technical section ==',
54
- // prettier-ignore
55
- '', 'test.use({', ...fixtures.map(indent), '});'] : [];
52
+ return fixtures.length > 0 ? ['// == technical section ==', '', 'test.use({', ...fixtures.map(indent), '});'] : [];
56
53
  }
57
54
  testFixture() {
58
55
  return ['$test: ({}, use) => use(test),'];
@@ -73,13 +70,12 @@ class Formatter {
73
70
  if (node.flags.fixme) return '.fixme';
74
71
  return '';
75
72
  }
76
-
77
73
  /**
78
- * Apply this function only to string literals (mostly titles here).
79
- * Objects and arrays are handled with JSON.strinigfy,
80
- * b/c object keys can't be in backtiks.
81
- * See: https://stackoverflow.com/questions/33194138/template-string-as-object-property-name
82
- */
74
+ * Apply this function only to string literals (mostly titles here).
75
+ * Objects and arrays are handled with JSON.strinigfy,
76
+ * b/c object keys can't be in backtiks.
77
+ * See: https://stackoverflow.com/questions/33194138/template-string-as-object-property-name
78
+ */
83
79
  quoted(str) {
84
80
  return (0, _jsStringWrap.jsStringWrap)(str, {
85
81
  quotes: this.config.quotes
@@ -10,14 +10,11 @@ var _gherkin = require("@cucumber/gherkin");
10
10
  * See: https://github.com/cucumber/cucumber-js/blob/main/src/cli/i18n.ts
11
11
  */
12
12
 
13
- // todo: cache targetMap
14
-
15
13
  function getKeywordsMap(language) {
16
14
  const origMap = _gherkin.dialects[language];
17
15
  if (!origMap) {
18
16
  throw new Error(`Language not found: ${language}`);
19
17
  }
20
- ;
21
18
  const targetMap = new Map();
22
19
  const enKeywords = Object.keys(origMap);
23
20
  enKeywords.forEach(enKeyword => handleKeyword(enKeyword, origMap, targetMap));
@@ -26,16 +23,10 @@ function getKeywordsMap(language) {
26
23
  function handleKeyword(enKeyword, origMap, targetMap) {
27
24
  const nativeKeywords = origMap[enKeyword];
28
25
  // Array.isArray converts to any[]
29
- if (typeof nativeKeywords === 'string') {
30
- return;
31
- }
32
- ;
26
+ if (typeof nativeKeywords === 'string') return;
33
27
  nativeKeywords.forEach(nativeKeyword => {
34
28
  nativeKeyword = nativeKeyword.trim();
35
- if (!nativeKeyword || nativeKeyword === '*') {
36
- return;
37
- }
38
- ;
29
+ if (!nativeKeyword || nativeKeyword === '*') return;
39
30
  targetMap.set(nativeKeyword, capitalizeFirstLetter(enKeyword));
40
31
  });
41
32
  }
@@ -15,7 +15,7 @@ var _loadSteps = require("../cucumber/loadSteps");
15
15
  var _config = require("../config");
16
16
  var _utils = require("../utils");
17
17
  var _snippets = require("../snippets");
18
- var _createDecorators = require("../stepDefinitions/createDecorators");
18
+ var _steps = require("../stepDefinitions/decorators/steps");
19
19
  var _transform = require("../playwright/transform");
20
20
  var _dir = require("../config/dir");
21
21
  var _logger = require("../utils/logger");
@@ -24,17 +24,20 @@ var _tagExpressions = _interopRequireDefault(require("@cucumber/tag-expressions"
24
24
  * Generate playwright test files from Gherkin documents.
25
25
  */
26
26
 
27
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
28
-
29
27
  class TestFilesGenerator {
28
+ config;
30
29
  // all these props are exist
31
30
  runConfiguration;
32
31
  features;
33
32
  supportCodeLibrary;
34
33
  files = [];
35
34
  tagsExpression;
35
+ logger;
36
36
  constructor(config) {
37
37
  this.config = config;
38
+ this.logger = new _logger.Logger({
39
+ verbose: config.verbose
40
+ });
38
41
  if (config.tags) this.tagsExpression = (0, _tagExpressions.default)(config.tags);
39
42
  }
40
43
  async generate() {
@@ -67,14 +70,22 @@ class TestFilesGenerator {
67
70
  const environment = {
68
71
  cwd: (0, _dir.getPlaywrightConfigDir)()
69
72
  };
73
+ this.logger.log(`Loading features from: ${this.runConfiguration.sources.paths.join(', ')}`);
70
74
  this.features = await (0, _loadFeatures.loadFeatures)(this.runConfiguration, environment);
75
+ this.logger.log(`Loaded features: ${this.features.size}`);
71
76
  }
72
77
  async loadSteps() {
78
+ const {
79
+ requirePaths,
80
+ importPaths
81
+ } = this.runConfiguration.support;
82
+ this.logger.log(`Loading steps from: ${requirePaths.concat(importPaths).join(', ')}`);
73
83
  const environment = {
74
84
  cwd: (0, _dir.getPlaywrightConfigDir)()
75
85
  };
76
86
  this.supportCodeLibrary = await (0, _loadSteps.loadSteps)(this.runConfiguration, environment);
77
87
  await this.loadDecoratorSteps();
88
+ this.logger.log(`Loaded steps: ${this.supportCodeLibrary.stepDefinitions.length}`);
78
89
  }
79
90
  async loadDecoratorSteps() {
80
91
  const {
@@ -84,7 +95,7 @@ class TestFilesGenerator {
84
95
  // require importTestFrom for case when it is not required by step definitions
85
96
  // possible re-require but it's not a problem as it is cached by Node.js
86
97
  await (0, _transform.requireTransform)().requireOrImport(importTestFrom.file);
87
- (0, _createDecorators.appendDecoratorSteps)(this.supportCodeLibrary);
98
+ (0, _steps.appendDecoratorSteps)(this.supportCodeLibrary);
88
99
  }
89
100
  }
90
101
  buildFiles() {
@@ -103,8 +114,7 @@ class TestFilesGenerator {
103
114
  const configDir = (0, _dir.getPlaywrightConfigDir)();
104
115
  // doc.uri is always relative to cwd (coming after cucumber handling)
105
116
  // see: https://github.com/cucumber/cucumber-js/blob/main/src/api/gherkin.ts#L51
106
- // Check here if anything is not working
107
- const relFeaturePath = doc.uri !== null ? doc.uri : null;
117
+ const relFeaturePath = doc.uri;
108
118
  const absFeaturePath = _path.default.resolve(configDir, relFeaturePath);
109
119
  const relOutputPath = _path.default.relative(this.config.featuresRoot, absFeaturePath);
110
120
  if (relOutputPath.startsWith('..')) {
@@ -130,20 +140,20 @@ class TestFilesGenerator {
130
140
  async saveFiles() {
131
141
  this.files.forEach(file => {
132
142
  file.save();
133
- if (this.config.verbose) {
134
- _logger.logger.log(`Generated: ${_path.default.relative(process.cwd(), file.outputPath)}`);
135
- }
143
+ this.logger.log(`Generated: ${_path.default.relative(process.cwd(), file.outputPath)}`);
136
144
  });
137
- if (this.config.verbose) _logger.logger.log(`Generated files: ${this.files.length}`);
145
+ this.logger.log(`Generated files: ${this.files.length}`);
138
146
  }
139
147
  async clearOutputDir() {
140
- const testFiles = await (0, _fastGlob.default)(_path.default.join(this.config.outputDir, '**', '*.spec.js'));
148
+ const pattern = `${_fastGlob.default.convertPathToPattern(this.config.outputDir)}/**/*.spec.js`;
149
+ const testFiles = await (0, _fastGlob.default)(pattern);
150
+ this.logger.log(`Clearing output dir: ${testFiles.length} file(s)`);
141
151
  const tasks = testFiles.map(testFile => _promises.default.rm(testFile));
142
152
  await Promise.all(tasks);
143
153
  }
144
154
  warnForTsNodeRegister() {
145
155
  if ((0, _loadSteps.hasTsNodeRegister)(this.runConfiguration)) {
146
- _logger.logger.log(`WARNING: usage of requireModule: ['ts-node/register'] is not recommended for playwright-bdd.`, `Remove this option from defineBddConfig() and`, `Playwright's built-in loader will be used to compile TypeScript step definitions.`);
156
+ this.logger.warn(`WARNING: usage of requireModule: ['ts-node/register'] is not recommended for playwright-bdd.`, `Remove this option from defineBddConfig() and`, `Playwright's built-in loader will be used to compile TypeScript step definitions.`);
147
157
  }
148
158
  }
149
159
  }
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.POMS = void 0;
7
7
  exports.buildFixtureTag = buildFixtureTag;
8
8
  var _createDecorators = require("../stepDefinitions/createDecorators");
9
- var _defineStep = require("../stepDefinitions/defineStep");
10
9
  /**
11
10
  * Handle POMs graph for decorator steps.
12
11
  */