@uuv/playwright 2.17.2 → 3.0.0

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 (109) hide show
  1. package/dist/cucumber/preprocessor/index.d.ts +0 -1
  2. package/dist/cucumber/preprocessor/index.js +0 -1
  3. package/dist/cucumber/step_definitions/playwright/generated/_en-generated-cucumber-steps-definition.js +7 -7
  4. package/dist/cucumber/step_definitions/playwright/generated/_fr-generated-cucumber-steps-definition.js +7 -7
  5. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_button.js +3 -3
  6. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_checkbox.js +3 -3
  7. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_combobox.js +3 -3
  8. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_link.js +3 -3
  9. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_listbox.js +3 -3
  10. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_menuitem.js +3 -3
  11. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_menuitemcheckbox.js +3 -3
  12. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_menuitemradio.js +3 -3
  13. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_radio.js +3 -3
  14. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_search.js +3 -3
  15. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_searchbox.js +3 -3
  16. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_select.js +3 -3
  17. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_slider.js +3 -3
  18. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_spinbutton.js +3 -3
  19. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_switch.js +3 -3
  20. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_tab.js +3 -3
  21. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_textbox.js +3 -3
  22. package/dist/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_widget.js +3 -3
  23. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_button.js +3 -3
  24. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_checkbox.js +3 -3
  25. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_combobox.js +3 -3
  26. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_link.js +3 -3
  27. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_listbox.js +3 -3
  28. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_menuitem.js +3 -3
  29. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_menuitemcheckbox.js +3 -3
  30. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_menuitemradio.js +3 -3
  31. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_radio.js +3 -3
  32. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_search.js +3 -3
  33. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_searchbox.js +3 -3
  34. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_select.js +3 -3
  35. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_slider.js +3 -3
  36. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_spinbutton.js +3 -3
  37. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_switch.js +3 -3
  38. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_tab.js +3 -3
  39. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_textbox.js +3 -3
  40. package/dist/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_widget.js +3 -3
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.js +1 -0
  43. package/dist/lib/config.d.ts +1 -0
  44. package/dist/lib/config.js +16 -0
  45. package/dist/lib/runner-playwright.d.ts +2 -7
  46. package/dist/lib/runner-playwright.js +18 -35
  47. package/dist/lib/watch-test-files.js +6 -6
  48. package/dist/reporter/uuv-playwright-reporter-helper.d.ts +1 -3
  49. package/dist/reporter/uuv-playwright-reporter-helper.js +19 -8
  50. package/package.json +4 -4
  51. package/postinstall.js +0 -1
  52. package/src/cucumber/step_definitions/playwright/generated/_en-generated-cucumber-steps-definition.ts +7 -7
  53. package/src/cucumber/step_definitions/playwright/generated/_fr-generated-cucumber-steps-definition.ts +7 -7
  54. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_button.ts +3 -3
  55. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_checkbox.ts +3 -3
  56. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_combobox.ts +3 -3
  57. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_link.ts +3 -3
  58. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_listbox.ts +3 -3
  59. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_menuitem.ts +3 -3
  60. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_menuitemcheckbox.ts +3 -3
  61. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_menuitemradio.ts +3 -3
  62. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_radio.ts +3 -3
  63. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_search.ts +3 -3
  64. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_searchbox.ts +3 -3
  65. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_select.ts +3 -3
  66. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_slider.ts +3 -3
  67. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_spinbutton.ts +3 -3
  68. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_switch.ts +3 -3
  69. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_tab.ts +3 -3
  70. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_textbox.ts +3 -3
  71. package/src/cucumber/step_definitions/playwright/generated/enriched/en/_en-generated-steps-definition_widget.ts +3 -3
  72. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_button.ts +3 -3
  73. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_checkbox.ts +3 -3
  74. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_combobox.ts +3 -3
  75. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_link.ts +3 -3
  76. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_listbox.ts +3 -3
  77. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_menuitem.ts +3 -3
  78. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_menuitemcheckbox.ts +3 -3
  79. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_menuitemradio.ts +3 -3
  80. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_radio.ts +3 -3
  81. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_search.ts +3 -3
  82. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_searchbox.ts +3 -3
  83. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_select.ts +3 -3
  84. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_slider.ts +3 -3
  85. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_spinbutton.ts +3 -3
  86. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_switch.ts +3 -3
  87. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_tab.ts +3 -3
  88. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_textbox.ts +3 -3
  89. package/src/cucumber/step_definitions/playwright/generated/enriched/fr/_fr-generated-steps-definition_widget.ts +3 -3
  90. package/target-config/playwright.config.ts +4 -1
  91. package/dist/cucumber/preprocessor/gen/formatter.d.ts +0 -9
  92. package/dist/cucumber/preprocessor/gen/formatter.js +0 -59
  93. package/dist/cucumber/preprocessor/gen/generate.d.ts +0 -28
  94. package/dist/cucumber/preprocessor/gen/generate.js +0 -168
  95. package/dist/cucumber/preprocessor/gen/i18n.d.ts +0 -2
  96. package/dist/cucumber/preprocessor/gen/i18n.js +0 -36
  97. package/dist/cucumber/preprocessor/gen/index.d.ts +0 -8
  98. package/dist/cucumber/preprocessor/gen/index.js +0 -60
  99. package/dist/cucumber/preprocessor/gen/load_sources.d.ts +0 -17
  100. package/dist/cucumber/preprocessor/gen/load_sources.js +0 -46
  101. package/dist/cucumber/preprocessor/gen/save.d.ts +0 -2
  102. package/dist/cucumber/preprocessor/gen/save.js +0 -27
  103. package/dist/cucumber/preprocessor/run/fixtures.d.ts +0 -3
  104. package/dist/cucumber/preprocessor/run/fixtures.js +0 -32
  105. package/dist/cucumber/preprocessor/run/invoke.d.ts +0 -2
  106. package/dist/cucumber/preprocessor/run/invoke.js +0 -28
  107. package/dist/cucumber/preprocessor/run/support.d.ts +0 -9
  108. package/dist/cucumber/preprocessor/run/support.js +0 -27
  109. package/target-config/cucumber.cjs +0 -9
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildConfig = void 0;
4
+ const playwright_bdd_1 = require("playwright-bdd");
5
+ function buildConfig(inputsPaths, imports = [
6
+ "cucumber/step_definitions/**/*.{js,ts}",
7
+ "../node_modules/@uuv/playwright/dist/cucumber/step_definitions/playwright/**/*.js"
8
+ ], output = ".uuv-features-gen") {
9
+ return (0, playwright_bdd_1.defineBddConfig)({
10
+ paths: inputsPaths,
11
+ require: imports,
12
+ outputDir: output,
13
+ featuresRoot: "e2e"
14
+ });
15
+ }
16
+ exports.buildConfig = buildConfig;
@@ -12,11 +12,6 @@
12
12
  * understanding English or French.
13
13
  */
14
14
  import { UUVCliOptions, UUVCliRunner } from "@uuv/runner-commons";
15
- export interface UUVPlaywrightCucumberMapItem {
16
- originalFile: string;
17
- generatedFile: string;
18
- }
19
- export declare const UUVPlaywrightCucumberMapFile = ".uuv-playwright-cucumber-map.json";
20
15
  export declare class UUVCliPlaywrightRunner implements UUVCliRunner {
21
16
  projectDir: any;
22
17
  private tempDir;
@@ -30,7 +25,7 @@ export declare class UUVCliPlaywrightRunner implements UUVCliRunner {
30
25
  executeOpenCommand(options: Partial<UUVCliOptions>): void;
31
26
  private getTargetTestFileForPlaywright;
32
27
  private runPlaywright;
33
- private executeSystemCommand;
34
28
  private buildCommand;
29
+ private executeSystemCommand;
35
30
  }
36
- export declare function executePreprocessor(tempDir: string, tags: string): Promise<void>;
31
+ export declare function executePreprocessor(): void;
@@ -39,15 +39,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.executePreprocessor = exports.UUVCliPlaywrightRunner = exports.UUVPlaywrightCucumberMapFile = void 0;
42
+ exports.executePreprocessor = exports.UUVCliPlaywrightRunner = void 0;
43
43
  const fs_1 = __importDefault(require("fs"));
44
- const gen_1 = require("../cucumber/preprocessor/gen");
45
44
  const chalk_1 = __importDefault(require("chalk"));
46
45
  const uuv_playwright_reporter_helper_1 = require("../reporter/uuv-playwright-reporter-helper");
47
46
  const path_1 = __importDefault(require("path"));
48
47
  const child_process_1 = __importStar(require("child_process"));
49
48
  const lodash_1 = __importDefault(require("lodash"));
50
- exports.UUVPlaywrightCucumberMapFile = ".uuv-playwright-cucumber-map.json";
51
49
  class UUVCliPlaywrightRunner {
52
50
  projectDir;
53
51
  tempDir;
@@ -64,7 +62,9 @@ class UUVCliPlaywrightRunner {
64
62
  return JSON.parse(pJsonStr).version;
65
63
  }
66
64
  async prepare(options) {
67
- await executePreprocessor(this.tempDir, options.extraArgs.TAGS);
65
+ console.log("running preprocessor...");
66
+ this.executeSystemCommand(`npx bddgen -c ${this.projectDir}/playwright.config.ts`);
67
+ console.log("preprocessor executed\n");
68
68
  this.setEnvironmentVariables(options);
69
69
  }
70
70
  setEnvironmentVariables(options) {
@@ -93,7 +93,7 @@ class UUVCliPlaywrightRunner {
93
93
  return "";
94
94
  }
95
95
  return `${targetTestFile
96
- .replaceAll("uuv/e2e/", ".uuv-features-gen/uuv/e2e/")
96
+ .replaceAll("uuv/e2e/", ".uuv-features-gen/")
97
97
  .replaceAll(".feature", ".feature.spec.js")}`;
98
98
  }
99
99
  runPlaywright(options) {
@@ -113,10 +113,6 @@ class UUVCliPlaywrightRunner {
113
113
  process.exit(2);
114
114
  }
115
115
  }
116
- executeSystemCommand(command) {
117
- console.log(chalk_1.default.gray(`Running command: ${command}`));
118
- (0, child_process_1.execSync)(command, { stdio: "inherit" });
119
- }
120
116
  buildCommand(options, configFile, reporter) {
121
117
  return lodash_1.default.trimEnd([
122
118
  "npx",
@@ -129,37 +125,24 @@ class UUVCliPlaywrightRunner {
129
125
  options.command === "open" ? "--ui" : "",
130
126
  reporter
131
127
  ].join(" ")),
132
- this.getTargetTestFileForPlaywright(options.targetTestFile)
128
+ lodash_1.default.trimStart([
129
+ this.getTargetTestFileForPlaywright(options.targetTestFile),
130
+ options.extraArgs.TAGS ? `--grep ${options.extraArgs.TAGS}` : ""
131
+ ].join(" "))
133
132
  ].join(" "));
134
133
  }
134
+ executeSystemCommand(command) {
135
+ executeSystemCommandHelper(command);
136
+ }
135
137
  }
136
138
  exports.UUVCliPlaywrightRunner = UUVCliPlaywrightRunner;
137
- async function executePreprocessor(tempDir, tags) {
139
+ function executeSystemCommandHelper(command) {
140
+ console.log(chalk_1.default.gray(`Running command: ${command}`));
141
+ (0, child_process_1.execSync)(command, { stdio: "inherit" });
142
+ }
143
+ function executePreprocessor() {
138
144
  console.log("running preprocessor...");
139
- await bddGen(tempDir, tags);
145
+ executeSystemCommandHelper("npx bddgen");
140
146
  console.log("preprocessor executed\n");
141
147
  }
142
148
  exports.executePreprocessor = executePreprocessor;
143
- async function bddGen(tempDir, tags) {
144
- try {
145
- const mapOfFile = await (0, gen_1.generateTestFiles)({
146
- outputDir: tempDir,
147
- tags
148
- });
149
- const content = [];
150
- mapOfFile.forEach((value, key) => {
151
- if (value.uri) {
152
- content.push({
153
- originalFile: value.uri,
154
- generatedFile: key
155
- });
156
- }
157
- });
158
- fs_1.default.writeFileSync(`${tempDir}/${exports.UUVPlaywrightCucumberMapFile}`, JSON.stringify(content, null, 4), { encoding: "utf8" });
159
- }
160
- catch (err) {
161
- console.error(chalk_1.default.red("Something went wrong..."));
162
- console.dir(err);
163
- process.exit(2);
164
- }
165
- }
@@ -29,18 +29,18 @@ if (!tempDir || !projectDir) {
29
29
  chokidar_1.default.watch(`${projectDir}/e2e/**/*.feature`, {
30
30
  ignoreInitial: true
31
31
  })
32
- .on("change", async (event, path) => {
32
+ .on("change", () => {
33
33
  console.log(chalk_1.default.yellowBright("\nRefreshing test files..."));
34
- await (0, runner_playwright_1.executePreprocessor)(tempDir, tags);
34
+ (0, runner_playwright_1.executePreprocessor)();
35
35
  console.log(chalk_1.default.yellowBright("Test files refreshed\n"));
36
36
  })
37
- .on("add", async (path) => {
37
+ .on("add", path => {
38
38
  console.log(chalk_1.default.yellowBright(`\nFile ${path} has been added`));
39
- await (0, runner_playwright_1.executePreprocessor)(tempDir, tags);
39
+ (0, runner_playwright_1.executePreprocessor)();
40
40
  console.log(chalk_1.default.yellowBright("Test files refreshed\n"));
41
41
  })
42
- .on("unlink", async (path) => {
42
+ .on("unlink", path => {
43
43
  console.log(chalk_1.default.yellowBright(`\nFile ${path} has been removed`));
44
- await (0, runner_playwright_1.executePreprocessor)(tempDir, tags);
44
+ (0, runner_playwright_1.executePreprocessor)();
45
45
  console.log(chalk_1.default.yellowBright("Test files refreshed\n"));
46
46
  });
@@ -5,7 +5,6 @@ export declare enum GeneratedReportType {
5
5
  HTML = "html"
6
6
  }
7
7
  declare class UuvPlaywrightReporterHelper {
8
- private UUVPlaywrightCucumberMap;
9
8
  testDir: string;
10
9
  private queries;
11
10
  envelopes: Envelope[];
@@ -48,13 +47,12 @@ declare class UuvPlaywrightReporterHelper {
48
47
  seconds: number;
49
48
  nanos: number;
50
49
  };
51
- getOriginalFeatureFile(generateFile: string): string | undefined;
50
+ getOriginalFeatureFile(generatedFile: string): string | undefined;
52
51
  getCurrentRunningScenario(test: TestCase, featureFile: string): string;
53
52
  private addError;
54
53
  private getStatus;
55
54
  private createEnvelope;
56
55
  private createCucumberNdJsonFile;
57
- private loadUUVPlaywrightCucumberMap;
58
56
  private initializeCucumberReportNdJson;
59
57
  private populateTestCasesAndPickleIdMap;
60
58
  private updateTestcaseStatus;
@@ -8,13 +8,13 @@ const gherkin_1 = require("@cucumber/gherkin");
8
8
  const gherkin_utils_1 = require("@cucumber/gherkin-utils");
9
9
  const messages_1 = require("@cucumber/messages");
10
10
  const fs_1 = __importDefault(require("fs"));
11
- const runner_playwright_1 = require("../lib/runner-playwright");
12
11
  const multiple_cucumber_html_reporter_1 = __importDefault(require("multiple-cucumber-html-reporter"));
13
12
  const nanoid_1 = require("nanoid");
14
13
  const chalk_1 = __importDefault(require("chalk"));
15
14
  const chalk_table_1 = __importDefault(require("chalk-table"));
16
15
  const uuv_custom_formatter_1 = require("./uuv-custom-formatter");
17
16
  const tag_expressions_1 = __importDefault(require("@cucumber/tag-expressions"));
17
+ const path_1 = __importDefault(require("path"));
18
18
  const NANOS_IN_SECOND = 1000000000;
19
19
  const NANOS_IN_MILLISSECOND = 1000000;
20
20
  var GeneratedReportType;
@@ -39,7 +39,6 @@ class ReportOfFeature {
39
39
  }
40
40
  }
41
41
  class UuvPlaywrightReporterHelper {
42
- UUVPlaywrightCucumberMap = [];
43
42
  testDir;
44
43
  queries = new Map();
45
44
  envelopes = [];
@@ -53,7 +52,6 @@ class UuvPlaywrightReporterHelper {
53
52
  currentFeatureFile;
54
53
  createTestRunStartedEnvelope(config, suite, startTimestamp) {
55
54
  this.testDir = config.projects[0].testDir;
56
- this.loadUUVPlaywrightCucumberMap();
57
55
  const featureFiles = this.getFeatureFiles(suite);
58
56
  this.initializeCucumberReportNdJson(suite, featureFiles);
59
57
  this.envelopes.push(this.createEnvelope({
@@ -292,8 +290,24 @@ class UuvPlaywrightReporterHelper {
292
290
  nanos: Math.floor(durationInSecond * NANOS_IN_SECOND + durationInSecond)
293
291
  };
294
292
  }
295
- getOriginalFeatureFile(generateFile) {
296
- return this.UUVPlaywrightCucumberMap.find(item => item.generatedFile === generateFile)?.originalFile;
293
+ getOriginalFeatureFile(generatedFile) {
294
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
295
+ // @ts-ignore
296
+ const bddgenConfAsString = process.env.PLAYWRIGHT_BDD_CONFIGS;
297
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
298
+ // @ts-ignore
299
+ const projectDir = process.env.CONFIG_DIR;
300
+ if (bddgenConfAsString && projectDir) {
301
+ const bddgenConf = JSON.parse(bddgenConfAsString);
302
+ const foundPath = Object.keys(bddgenConf).find(key => generatedFile.startsWith(key));
303
+ if (foundPath) {
304
+ const foundConf = bddgenConf[foundPath];
305
+ return path_1.default.relative(process.cwd(), generatedFile
306
+ .replaceAll(foundConf.outputDir, foundConf.featuresRoot)
307
+ .replaceAll(".feature.spec.js", ".feature"));
308
+ }
309
+ }
310
+ return;
297
311
  }
298
312
  getCurrentRunningScenario(test, featureFile) {
299
313
  const counter = `[${test.parent.allTests().filter(test => test.results.length > 0).length}/${test.parent.allTests().length}]`;
@@ -326,9 +340,6 @@ class UuvPlaywrightReporterHelper {
326
340
  console.log(err);
327
341
  }
328
342
  }
329
- loadUUVPlaywrightCucumberMap() {
330
- this.UUVPlaywrightCucumberMap = JSON.parse(fs_1.default.readFileSync(`${this.testDir}/${runner_playwright_1.UUVPlaywrightCucumberMapFile}`, { encoding: "utf8" }));
331
- }
332
343
  initializeCucumberReportNdJson(suite, featureFiles) {
333
344
  featureFiles.forEach(featureFile => {
334
345
  const originalFile = this.getOriginalFeatureFile(featureFile);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uuv/playwright",
3
- "version": "2.17.2",
3
+ "version": "3.0.0",
4
4
  "type": "commonjs",
5
5
  "author": "Louis Fredice NJAKO MOLOM (https://github.com/luifr10) & Stanley SERVICAL (https://github.com/stanlee974)",
6
6
  "description": "A solution to facilitate the writing and execution of E2E tests understandable by any human being using cucumber(BDD) and playwright",
@@ -42,10 +42,9 @@
42
42
  "test": "npm run unit-test && npm run e2e-test:run"
43
43
  },
44
44
  "dependencies": {
45
- "@cucumber/cucumber": "9.6.0",
46
45
  "@cucumber/tag-expressions": "^6.0.0",
47
- "@playwright/test": "1.44.1",
48
- "@uuv/runner-commons": "2.16.1",
46
+ "@playwright/test": "^1.44.1",
47
+ "@uuv/runner-commons": "2.16.2",
49
48
  "axe-core": "4.9.1",
50
49
  "axe-playwright": "2.0.1",
51
50
  "chalk-table": "^1.0.2",
@@ -54,6 +53,7 @@
54
53
  "lodash": "^4.17.21",
55
54
  "multiple-cucumber-html-reporter": "3.6.2",
56
55
  "nanoid": "^3.3.7",
56
+ "playwright-bdd": "^6.5.0",
57
57
  "ts-node": "10.9.2",
58
58
  "typescript": "5.4.5"
59
59
  },
package/postinstall.js CHANGED
@@ -41,7 +41,6 @@ function copyFileIfMissing(fileToCopy, originFolder, destFolder) {
41
41
  function main () {
42
42
  if (fs.existsSync(`${PROJECT_DIR}/package.json`) && !fs.existsSync(`${PROJECT_DIR}/.no-postinstall`)) {
43
43
  copyFileIfMissing("playwright.config.ts", `${TARGET_CONFIG_DIR}`, `${PROJECT_DIR}/uuv`);
44
- copyFileIfMissing("cucumber.cjs", `${TARGET_CONFIG_DIR}`, `${PROJECT_DIR}`);
45
44
  execSync("npx playwright install", { stdio: "inherit" });
46
45
  } else {
47
46
  console.log("postinstall - Nothing to copy");
@@ -62,7 +62,7 @@ Given(
62
62
  );
63
63
 
64
64
  /**
65
- * Start a keyboard navigation session from the top of the page
65
+ * Start a keyboard navigation session from the top of the page<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
66
66
  * */
67
67
  Given(
68
68
  `I start a keyboard navigation from the top of the page`,
@@ -163,14 +163,14 @@ When(`I press {string}`, async function(this: World, key: string) {
163
163
  });
164
164
 
165
165
  /**
166
- * Move to the previous html element that can be reached with back Tab
166
+ * Move to the previous html element that can be reached with back Tab<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
167
167
  * */
168
168
  When(`I go to previous keyboard element`, async function(this: World) {
169
169
  await this.page.keyboard.press("ShiftLeft+Tab");
170
170
  });
171
171
 
172
172
  /**
173
- * Move to the next html element that can be reached with Tab
173
+ * Move to the next html element that can be reached with Tab<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
174
174
  * */
175
175
  When(`I go to next keyboard element`, async function(this: World) {
176
176
  await this.page.keyboard.press("Tab");
@@ -417,7 +417,7 @@ Then(
417
417
  );
418
418
 
419
419
  /**
420
- * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
420
+ * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
421
421
  * */
422
422
  Then(
423
423
  `the element with role {string} and name {string} should be keyboard focused`,
@@ -427,7 +427,7 @@ Then(
427
427
  );
428
428
 
429
429
  /**
430
- * Checks that the Html element with the specified selector is focused
430
+ * Checks that the Html element with the specified selector is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
431
431
  * */
432
432
  Then(
433
433
  `the element with selector {string} should be keyboard focused`,
@@ -489,7 +489,7 @@ Then(`I should see an element with aria-label {string} and content {string}`, as
489
489
  });
490
490
 
491
491
  /**
492
- * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
492
+ * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
493
493
  * */
494
494
  When(`the previous keyboard element focused should have name {string} and role {string}`, async function(this: World, expectedRole: string, name: string) {
495
495
  await this.page.keyboard.press("ShiftLeft+Tab");
@@ -497,7 +497,7 @@ When(`the previous keyboard element focused should have name {string} and role {
497
497
  });
498
498
 
499
499
  /**
500
- * "Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
500
+ * "Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
501
501
  * */
502
502
  When(`the next keyboard element focused should have name {string} and role {string}`, async function(this: World, expectedRole: string, name: string) {
503
503
  await this.page.keyboard.press("Tab");
@@ -62,7 +62,7 @@ Given(
62
62
  );
63
63
 
64
64
  /**
65
- * Démarre une session de navigation au clavier à partir du haut de la page
65
+ * Démarre une session de navigation au clavier à partir du haut de la page<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/fr-keyboard.feature'>Exemples</a>
66
66
  * */
67
67
  Given(
68
68
  `je commence une navigation au clavier depuis le haut de la page`,
@@ -163,14 +163,14 @@ When(`j'appuie sur {string}`, async function(this: World, key: string) {
163
163
  });
164
164
 
165
165
  /**
166
- * se déplace au précédent élément HTML atteignable avec la tabulation retour
166
+ * se déplace au précédent élément HTML atteignable avec la tabulation retour<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/fr-keyboard.feature'>Exemples</a>
167
167
  * */
168
168
  When(`je vais au précédent élément au clavier`, async function(this: World) {
169
169
  await this.page.keyboard.press("ShiftLeft+Tab");
170
170
  });
171
171
 
172
172
  /**
173
- * se déplace au prochain élément HTML atteignable avec la tabulation
173
+ * se déplace au prochain élément HTML atteignable avec la tabulation<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/fr-keyboard.feature'>Exemples</a>
174
174
  * */
175
175
  When(`je vais au prochain élément au clavier`, async function(this: World) {
176
176
  await this.page.keyboard.press("Tab");
@@ -417,7 +417,7 @@ Then(
417
417
  );
418
418
 
419
419
  /**
420
- * Vérifie que l'élément Html avec le [rôle accessible](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) et le [nom accessible](https://russmaxdesign.github.io/html-elements-names/) est focus
420
+ * Vérifie que l'élément Html avec le [rôle accessible](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) et le [nom accessible](https://russmaxdesign.github.io/html-elements-names/) est focus<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/fr-keyboard.feature'>Exemples</a>
421
421
  * */
422
422
  Then(
423
423
  `l'élément avec le rôle {string} et le nom {string} doit avoir le focus clavier`,
@@ -427,7 +427,7 @@ Then(
427
427
  );
428
428
 
429
429
  /**
430
- * Vérifie que l'élément Html avec le sélecteur est focus
430
+ * Vérifie que l'élément Html avec le sélecteur est focus<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/fr-keyboard.feature'>Exemples</a>
431
431
  * */
432
432
  Then(
433
433
  `l'élément avec le sélecteur {string} doit avoir le focus clavier`,
@@ -489,7 +489,7 @@ Then(`je dois voir un élément ayant pour aria-label {string} et pour contenu {
489
489
  });
490
490
 
491
491
  /**
492
- * Se déplace au précédent élément HTML atteignable avec la tabulation et vérifie que l'élément Html avec le [rôle accessible](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) et le [nom accessible](https://russmaxdesign.github.io/html-elements-names/) a le focus clavier
492
+ * Se déplace au précédent élément HTML atteignable avec la tabulation et vérifie que l'élément Html avec le [rôle accessible](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) et le [nom accessible](https://russmaxdesign.github.io/html-elements-names/) a le focus clavier<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/fr-keyboard.feature'>Exemples</a>
493
493
  * */
494
494
  When(`le précédent élément avec le focus clavier doit avoir le role {string} et le nom {string}`, async function(this: World, expectedRole: string, name: string) {
495
495
  await this.page.keyboard.press("ShiftLeft+Tab");
@@ -497,7 +497,7 @@ When(`le précédent élément avec le focus clavier doit avoir le role {string}
497
497
  });
498
498
 
499
499
  /**
500
- * "Se déplace au prochain élément HTML atteignable avec la tabulation et vérifie que l'élément Html avec le [rôle accessible](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) et le [nom accessible](https://russmaxdesign.github.io/html-elements-names/) a le focus clavier
500
+ * "Se déplace au prochain élément HTML atteignable avec la tabulation et vérifie que l'élément Html avec le [rôle accessible](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) et le [nom accessible](https://russmaxdesign.github.io/html-elements-names/) a le focus clavier<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/fr-keyboard.feature'>Exemples</a>
501
501
  * */
502
502
  When(`le prochain élément avec le focus clavier doit avoir le role {string} et le nom {string}`, async function(this: World, expectedRole: string, name: string) {
503
503
  await this.page.keyboard.press("Tab");
@@ -109,7 +109,7 @@ Then(
109
109
  // Begin of Keyboard Section
110
110
 
111
111
  /**
112
- * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
112
+ * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
113
113
  * */
114
114
  Then(
115
115
  `I should see a button named {string} keyboard focused`,
@@ -119,7 +119,7 @@ Then(
119
119
  );
120
120
 
121
121
  /**
122
- * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
122
+ * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
123
123
  * */
124
124
  Then(
125
125
  `the previous keyboard element focused should be a button named {string}`,
@@ -130,7 +130,7 @@ Then(
130
130
  );
131
131
 
132
132
  /**
133
- * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
133
+ * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
134
134
  * */
135
135
  Then(
136
136
  `the next keyboard element focused should be a button named {string}`,
@@ -109,7 +109,7 @@ Then(
109
109
  // Begin of Keyboard Section
110
110
 
111
111
  /**
112
- * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
112
+ * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
113
113
  * */
114
114
  Then(
115
115
  `I should see a checkbox named {string} keyboard focused`,
@@ -119,7 +119,7 @@ Then(
119
119
  );
120
120
 
121
121
  /**
122
- * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
122
+ * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
123
123
  * */
124
124
  Then(
125
125
  `the previous keyboard element focused should be a checkbox named {string}`,
@@ -130,7 +130,7 @@ Then(
130
130
  );
131
131
 
132
132
  /**
133
- * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
133
+ * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
134
134
  * */
135
135
  Then(
136
136
  `the next keyboard element focused should be a checkbox named {string}`,
@@ -109,7 +109,7 @@ Then(
109
109
  // Begin of Keyboard Section
110
110
 
111
111
  /**
112
- * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
112
+ * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
113
113
  * */
114
114
  Then(
115
115
  `I should see a combo box named {string} keyboard focused`,
@@ -119,7 +119,7 @@ Then(
119
119
  );
120
120
 
121
121
  /**
122
- * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
122
+ * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
123
123
  * */
124
124
  Then(
125
125
  `the previous keyboard element focused should be a combo box named {string}`,
@@ -130,7 +130,7 @@ Then(
130
130
  );
131
131
 
132
132
  /**
133
- * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
133
+ * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
134
134
  * */
135
135
  Then(
136
136
  `the next keyboard element focused should be a combo box named {string}`,
@@ -109,7 +109,7 @@ Then(
109
109
  // Begin of Keyboard Section
110
110
 
111
111
  /**
112
- * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
112
+ * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
113
113
  * */
114
114
  Then(
115
115
  `I should see a link named {string} keyboard focused`,
@@ -119,7 +119,7 @@ Then(
119
119
  );
120
120
 
121
121
  /**
122
- * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
122
+ * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
123
123
  * */
124
124
  Then(
125
125
  `the previous keyboard element focused should be a link named {string}`,
@@ -130,7 +130,7 @@ Then(
130
130
  );
131
131
 
132
132
  /**
133
- * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
133
+ * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
134
134
  * */
135
135
  Then(
136
136
  `the next keyboard element focused should be a link named {string}`,
@@ -109,7 +109,7 @@ Then(
109
109
  // Begin of Keyboard Section
110
110
 
111
111
  /**
112
- * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
112
+ * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
113
113
  * */
114
114
  Then(
115
115
  `I should see a list box named {string} keyboard focused`,
@@ -119,7 +119,7 @@ Then(
119
119
  );
120
120
 
121
121
  /**
122
- * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
122
+ * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
123
123
  * */
124
124
  Then(
125
125
  `the previous keyboard element focused should be a list box named {string}`,
@@ -130,7 +130,7 @@ Then(
130
130
  );
131
131
 
132
132
  /**
133
- * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
133
+ * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
134
134
  * */
135
135
  Then(
136
136
  `the next keyboard element focused should be a list box named {string}`,
@@ -109,7 +109,7 @@ Then(
109
109
  // Begin of Keyboard Section
110
110
 
111
111
  /**
112
- * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
112
+ * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
113
113
  * */
114
114
  Then(
115
115
  `I should see a menuitem named {string} keyboard focused`,
@@ -119,7 +119,7 @@ Then(
119
119
  );
120
120
 
121
121
  /**
122
- * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
122
+ * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
123
123
  * */
124
124
  Then(
125
125
  `the previous keyboard element focused should be a menuitem named {string}`,
@@ -130,7 +130,7 @@ Then(
130
130
  );
131
131
 
132
132
  /**
133
- * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
133
+ * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
134
134
  * */
135
135
  Then(
136
136
  `the next keyboard element focused should be a menuitem named {string}`,
@@ -109,7 +109,7 @@ Then(
109
109
  // Begin of Keyboard Section
110
110
 
111
111
  /**
112
- * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
112
+ * Checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
113
113
  * */
114
114
  Then(
115
115
  `I should see a menuitemcheckbox named {string} keyboard focused`,
@@ -119,7 +119,7 @@ Then(
119
119
  );
120
120
 
121
121
  /**
122
- * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
122
+ * Move to the previous html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
123
123
  * */
124
124
  Then(
125
125
  `the previous keyboard element focused should be a menuitemcheckbox named {string}`,
@@ -130,7 +130,7 @@ Then(
130
130
  );
131
131
 
132
132
  /**
133
- * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused
133
+ * Move to the next html element that can be reached with Tab and checks that the Html element with the specified [accessible role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles#aria_role_types) and [name](https://russmaxdesign.github.io/html-elements-names/) is focused<br/><a target='_blank' href='https://github.com/Orange-OpenSource/uuv/blob/main/example/en-keyboard.feature'>Examples</a>
134
134
  * */
135
135
  Then(
136
136
  `the next keyboard element focused should be a menuitemcheckbox named {string}`,