@uuv/playwright 1.6.1 → 1.7.1

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.
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
 
2
2
  # @uuv/playwright
3
3
  <p align="center">
4
- <a href="https://e2e-test-quest.github.io/uuv/">
4
+ <a href="https://orange-opensource.github.io/uuv/">
5
5
  <picture>
6
- <img alt="UUV Logo" src="https://e2e-test-quest.github.io/uuv/img/uuv.png">
6
+ <img alt="UUV Logo" src="https://orange-opensource.github.io/uuv/img/uuv.png">
7
7
  </picture>
8
8
  </a>
9
9
  </p>
@@ -62,7 +62,7 @@ we see that the sentence proposed by **UUV is the most understandable** of all
62
62
 
63
63
 
64
64
  ## Documentation
65
- <a href="https://e2e-test-quest.github.io/uuv/"><img src="https://img.shields.io/badge/documentation-black?&style=for-the-badge&logo=github&logoColor=white" alt="documentation"/></a>
65
+ <a href="https://orange-opensource.github.io/uuv/"><img src="https://img.shields.io/badge/documentation-black?&style=for-the-badge&logo=github&logoColor=white" alt="documentation"/></a>
66
66
 
67
67
  ## What is @uuv/playwright?
68
68
 
@@ -85,12 +85,12 @@ or
85
85
  yarn add -D @uuv/playwright
86
86
  ```
87
87
  ## Configuration (optional)
88
- <a href="https://e2e-test-quest.github.io/uuv/docs/getting-started/configuration"><img src="https://img.shields.io/badge/Configure%20Playwright%20doc-red?&style=for-the-badge&logo=github&logoColor=white" alt="documentation for configure uuv playwright"/></a>
88
+ <a href="https://orange-opensource.github.io/uuv/docs/getting-started/configuration"><img src="https://img.shields.io/badge/Configure%20Playwright%20doc-red?&style=for-the-badge&logo=github&logoColor=white" alt="documentation for configure uuv playwright"/></a>
89
89
 
90
90
  ## Usage
91
91
 
92
92
  ### Scenarios example
93
- You can find test examples here : [weather-app.feature](https://github.com/e2e-test-quest/uuv/blob/main/example/weather-app.feature)
93
+ You can find test examples here : [weather-app.feature](https://github.com/Orange-OpenSource/uuv/blob/main/example/weather-app.feature)
94
94
 
95
95
  ### Write test
96
96
  To write your first test, create the file `uuv/e2e/first-test.feature` in the project root with the following content :
@@ -104,7 +104,7 @@ To write your first test, create the file `uuv/e2e/first-test.feature` in the pr
104
104
 
105
105
  For more details, please go to the documentation:
106
106
 
107
- <a href="https://e2e-test-quest.github.io/uuv/docs/test/first-test"><img src="https://img.shields.io/badge/Write%20test%20doc-red?&style=for-the-badge&logo=github&logoColor=white" alt="documentation for write test"/></a>
107
+ <a href="https://orange-opensource.github.io/uuv/docs/test/first-test"><img src="https://img.shields.io/badge/Write%20test%20doc-red?&style=for-the-badge&logo=github&logoColor=white" alt="documentation for write test"/></a>
108
108
 
109
109
  ### Run test
110
110
 
@@ -137,15 +137,15 @@ yarn uuv e2e --browser=edge --env="{'TAGS':'@mobile'}" --generateHtmlReport
137
137
 
138
138
  For more details, please go to the documentation:
139
139
 
140
- <a href="https://e2e-test-quest.github.io/uuv/docs/test/running-test"><img src="https://img.shields.io/badge/Run%20test%20doc-red?&style=for-the-badge&logo=github&logoColor=white" alt="documentation for run test"/></a>
140
+ <a href="https://orange-opensource.github.io/uuv/docs/test/running-test"><img src="https://img.shields.io/badge/Run%20test%20doc-red?&style=for-the-badge&logo=github&logoColor=white" alt="documentation for run test"/></a>
141
141
 
142
142
  ## License
143
143
 
144
- [<a href="https://github.com/e2e-test-quest/uuv/blob/main/LICENSE">
144
+ [<a href="https://github.com/Orange-OpenSource/uuv/blob/main/LICENSE">
145
145
  <img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT license"/>
146
146
  </a>](https://spdx.org/licenses/MIT.html)
147
147
 
148
- This project is licensed under the terms of the [MIT license](https://github.com/e2e-test-quest/uuv/blob/main/LICENSE).
148
+ This project is licensed under the terms of the [MIT license](https://github.com/Orange-OpenSource/uuv/blob/main/LICENSE).
149
149
 
150
150
  ## Authors
151
151
 
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Software Name : UUV
3
- *
4
- * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
5
- * SPDX-License-Identifier: MIT
6
- *
7
- * This software is distributed under the MIT License,
8
- * the text of which is available at https://spdx.org/licenses/MIT.html
9
- * or see the "LICENSE" file for more details.
10
- *
11
- * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
12
- * Software description: Make test writing fast, understandable by any human
13
- * understanding English or French.
14
- */
2
+ * Software Name : UUV
3
+ *
4
+ * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
5
+ * SPDX-License-Identifier: MIT
6
+ *
7
+ * This software is distributed under the MIT License,
8
+ * the text of which is available at https://spdx.org/licenses/MIT.html
9
+ * or see the "LICENSE" file for more details.
10
+ *
11
+ * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
12
+ * Software description: Make test writing fast, understandable by any human
13
+ * understanding English or French.
14
+ */
@@ -1,119 +1,15 @@
1
1
  "use strict";
2
2
  /**
3
- * Software Name : UUV
4
- *
5
- * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
6
- * SPDX-License-Identifier: MIT
7
- *
8
- * This software is distributed under the MIT License,
9
- * the text of which is available at https://spdx.org/licenses/MIT.html
10
- * or see the "LICENSE" file for more details.
11
- *
12
- * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
13
- * Software description: Make test writing fast, understandable by any human
14
- * understanding English or French.
15
- */
16
- // import { ByRoleOptions } from "@testing-library/cypress";
17
- // import {Context} from "./_context";
18
- // import Chainable = Cypress.Chainable;
19
- // export const uuvGetContext = (): Chainable<Context> => {
20
- // return cy.get<Context>('@context');
21
- // }
22
- //
23
- // export function uuvCheckContextFocusedElement(): Cypress.Chainable<Context> {
24
- // return cy.get<Context>('@context')
25
- // .then(context => {
26
- // console.log('focusedElement: ', context);
27
- // if (!context.focusedElement) {
28
- // throw new Error("No element currently selected");
29
- // }
30
- // return context;
31
- // });
32
- // }
33
- //
34
- // export function uuvPatchContext(partOfContext: any): Cypress.Chainable<Context>{
35
- // return cy.get<Context>('@context').then(context => {
36
- // cy.wrap({
37
- // ...context,
38
- // ...partOfContext
39
- // }).as('context');
40
- // });
41
- // }
42
- //
43
- // function addContextOptions(context: Context, roleOptions: any): any {
44
- // let retour = {
45
- // timeout: context.timeout
46
- // };
47
- //
48
- // return Object.assign(roleOptions, retour);
49
- // }
50
- //
51
- // function abstractFindBy(callBackFunction: Function, inputToSearch: any, inputOptions: any) : Cypress.Chainable<JQuery<HTMLElement>> {
52
- // return cy.uuvGetContext().then(context => {
53
- // console.log('context');
54
- // console.log(context);
55
- // const parentElement = context.focusedElement;
56
- // const options = addContextOptions(context, inputOptions);
57
- //
58
- // if (parentElement) {
59
- // console.log('parentElement: ', parentElement);
60
- // return parentElement.should('exist').within(() => {
61
- // callBackFunction(inputToSearch, options).as('foundedChildElement');
62
- // });
63
- // }
64
- //
65
- // cy.wrap(null).as("foundedChildElement");
66
- // return callBackFunction(inputToSearch, options);
67
- // })
68
- // }
69
- //
70
- // export function uuvFindAllByRole(role: string, roleOptions: ByRoleOptions) : Cypress.Chainable<JQuery<HTMLElement>> {
71
- // return abstractFindBy(
72
- // cy.findAllByRole,
73
- // role,
74
- // roleOptions
75
- // );
76
- // }
77
- //
78
- // export function uuvFindByRole(role: string, roleOptions: ByRoleOptions) : Cypress.Chainable<JQuery<HTMLElement>> {
79
- // return abstractFindBy(
80
- // cy.findByRole,
81
- // role,
82
- // roleOptions
83
- // );
84
- // }
85
- //
86
- // export function uuvFindByLabelText(labelTextToSearch: string, roleOptions: ByRoleOptions) : Cypress.Chainable<JQuery<HTMLElement>> {
87
- // return abstractFindBy(
88
- // cy.findByLabelText,
89
- // labelTextToSearch,
90
- // roleOptions
91
- // );
92
- // }
93
- //
94
- // export function uuvFindByText(textToSearch: string, roleOptions: ByRoleOptions) : Cypress.Chainable<JQuery<HTMLElement>> {
95
- // return abstractFindBy(
96
- // cy.findByText,
97
- // (content: any, element: any) => {
98
- // const hasText = (elem: any) => elem.textContent === textToSearch
99
- // const elementHasText = hasText(element)
100
- // const childrenDontHaveText = Array.from(element?.children || []).every(child => !hasText(child))
101
- // return elementHasText && childrenDontHaveText
102
- // },
103
- // roleOptions
104
- // );
105
- // }
106
- // export function uuvFindByTestId(testId: string) : Cypress.Chainable<JQuery<HTMLElement>> {
107
- // return abstractFindBy(
108
- // cy.findByTestId,
109
- // testId,
110
- // {}
111
- // );
112
- // }
113
- //
114
- // export function uuvFoundedElement(subject) : Cypress.Chainable<JQuery<HTMLElement>> {
115
- // return cy.get('@foundedChildElement')
116
- // .then((response: any) => {
117
- // return response !== 'empty' && response !== null ? response.foundedChildElement : subject;
118
- // });
119
- // }
3
+ * Software Name : UUV
4
+ *
5
+ * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * This software is distributed under the MIT License,
9
+ * the text of which is available at https://spdx.org/licenses/MIT.html
10
+ * or see the "LICENSE" file for more details.
11
+ *
12
+ * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
13
+ * Software description: Make test writing fast, understandable by any human
14
+ * understanding English or French.
15
+ */
@@ -1,15 +1,15 @@
1
1
  /**
2
- * Software Name : UUV
3
- *
4
- * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
5
- * SPDX-License-Identifier: MIT
6
- *
7
- * This software is distributed under the MIT License,
8
- * the text of which is available at https://spdx.org/licenses/MIT.html
9
- * or see the "LICENSE" file for more details.
10
- *
11
- * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
12
- * Software description: Make test writing fast, understandable by any human
13
- * understanding English or French.
14
- */
2
+ * Software Name : UUV
3
+ *
4
+ * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
5
+ * SPDX-License-Identifier: MIT
6
+ *
7
+ * This software is distributed under the MIT License,
8
+ * the text of which is available at https://spdx.org/licenses/MIT.html
9
+ * or see the "LICENSE" file for more details.
10
+ *
11
+ * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
12
+ * Software description: Make test writing fast, understandable by any human
13
+ * understanding English or French.
14
+ */
15
15
  export {};
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  /**
3
- * Software Name : UUV
4
- *
5
- * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
6
- * SPDX-License-Identifier: MIT
7
- *
8
- * This software is distributed under the MIT License,
9
- * the text of which is available at https://spdx.org/licenses/MIT.html
10
- * or see the "LICENSE" file for more details.
11
- *
12
- * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
13
- * Software description: Make test writing fast, understandable by any human
14
- * understanding English or French.
15
- */
3
+ * Software Name : UUV
4
+ *
5
+ * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
6
+ * SPDX-License-Identifier: MIT
7
+ *
8
+ * This software is distributed under the MIT License,
9
+ * the text of which is available at https://spdx.org/licenses/MIT.html
10
+ * or see the "LICENSE" file for more details.
11
+ *
12
+ * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
13
+ * Software description: Make test writing fast, understandable by any human
14
+ * understanding English or French.
15
+ */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  const runner_commons_1 = require("@uuv/runner-commons");
18
18
  const axe_playwright_1 = require("axe-playwright");
@@ -48,10 +48,24 @@ const cucumber_1 = require("@cucumber/cucumber");
48
48
  (0, cucumber_1.When)(`${runner_commons_1.key.when.type}`, async function (textToType) {
49
49
  await (0, core_engine_1.getPageOrElement)(this).then(async (element) => {
50
50
  await element.focus({ timeout: 10000 });
51
- await element.fill(textToType);
51
+ await element.type(textToType);
52
52
  // console.debug(await showAttributesInLocator(element));
53
53
  });
54
54
  });
55
+ (0, cucumber_1.When)(`${runner_commons_1.key.when.keyboard.multiplePress}`, async function (nbTimes, key) {
56
+ for (let i = 1; i <= nbTimes; i++) {
57
+ await (0, core_engine_1.getPageOrElement)(this).then(async (element) => {
58
+ await element.focus({ timeout: 10000 });
59
+ await pressKey(this, element, key);
60
+ });
61
+ }
62
+ });
63
+ (0, cucumber_1.When)(`${runner_commons_1.key.when.keyboard.press}`, async function (key) {
64
+ await (0, core_engine_1.getPageOrElement)(this).then(async (element) => {
65
+ await element.focus({ timeout: 10000 });
66
+ await pressKey(this, element, key);
67
+ });
68
+ });
55
69
  (0, cucumber_1.When)(`${runner_commons_1.key.when.timeout}`, async function (newTimeout) {
56
70
  await this.testInfo.setTimeout(newTimeout);
57
71
  });
@@ -116,10 +130,50 @@ const cucumber_1 = require("@cucumber/cucumber");
116
130
  testId = encodeURIComponent(testId);
117
131
  await (0, core_engine_1.getPageOrElement)(this).then((element) => (0, test_1.expect)(element.getByTestId(testId, { exact: true })).toHaveCount(0));
118
132
  });
119
- (0, cucumber_1.Then)(`${runner_commons_1.key.then.a11y.check}`, async function () {
133
+ (0, cucumber_1.Then)(`${runner_commons_1.key.then.a11y.check.default}`, async function () {
120
134
  await (0, axe_playwright_1.injectAxe)(this.page);
121
135
  await (0, axe_playwright_1.checkA11y)(this.page);
122
136
  });
137
+ (0, cucumber_1.Then)(`${runner_commons_1.key.then.a11y.check.withFixtureOption}`, async function (option) {
138
+ await (0, axe_playwright_1.injectAxe)(this.page);
139
+ const optionFile = await runner_commons_1.fs.readFileSync(`playwright/fixtures/${option}`);
140
+ const optionJson = JSON.parse(optionFile.toString());
141
+ await (0, axe_playwright_1.checkA11y)(this.page, undefined, {
142
+ axeOptions: optionJson
143
+ });
144
+ });
145
+ (0, cucumber_1.Then)(`${runner_commons_1.key.then.a11y.check.withFixtureContextAndFixtureOption}`, async function (context, option) {
146
+ await (0, axe_playwright_1.injectAxe)(this.page);
147
+ const contextFile = await runner_commons_1.fs.readFileSync(`playwright/fixtures/${context}`);
148
+ const optionFile = await runner_commons_1.fs.readFileSync(`playwright/fixtures/${option}`);
149
+ const optionJson = JSON.parse(optionFile.toString());
150
+ await (0, axe_playwright_1.checkA11y)(this.page, JSON.parse(contextFile.toString()), {
151
+ axeOptions: optionJson
152
+ });
153
+ });
154
+ (0, cucumber_1.Then)(`${runner_commons_1.key.then.a11y.check.onlyCritical}`, async function () {
155
+ await (0, axe_playwright_1.injectAxe)(this.page);
156
+ await (0, axe_playwright_1.checkA11y)(this.page, undefined, {
157
+ includedImpacts: ["critical"]
158
+ });
159
+ });
160
+ (0, cucumber_1.Then)(`${runner_commons_1.key.then.a11y.check.withImpacts}`, async function (impacts) {
161
+ await (0, axe_playwright_1.injectAxe)(this.page);
162
+ await (0, axe_playwright_1.checkA11y)(this.page, undefined, {
163
+ includedImpacts: [impacts]
164
+ });
165
+ });
166
+ (0, cucumber_1.Then)(`${runner_commons_1.key.then.a11y.check.withTags}`, async function (tags) {
167
+ await (0, axe_playwright_1.injectAxe)(this.page);
168
+ await (0, axe_playwright_1.checkA11y)(this.page, undefined, {
169
+ axeOptions: {
170
+ runOnly: {
171
+ type: "tag",
172
+ values: [tags]
173
+ }
174
+ }
175
+ });
176
+ });
123
177
  (0, cucumber_1.Then)(`${runner_commons_1.key.then.element.not.withRoleAndName}`, async function (role, name) {
124
178
  await (0, core_engine_1.notFoundWithRoleAndName)(this, role, name);
125
179
  });
@@ -188,3 +242,30 @@ const cucumber_1 = require("@cucumber/cucumber");
188
242
  await (0, test_1.expect)(foundedElement).toEqual(expectedElementsOfList.raw());
189
243
  });
190
244
  });
245
+ async function pressKey(world, element, key) {
246
+ switch (key) {
247
+ case runner_commons_1.KEY_PRESS.TAB:
248
+ await element.press("Tab");
249
+ break;
250
+ case runner_commons_1.KEY_PRESS.REVERSE_TAB:
251
+ await element.press("ShiftLeft+Tab");
252
+ break;
253
+ case runner_commons_1.KEY_PRESS.UP:
254
+ await element.press("ArrowUp");
255
+ break;
256
+ case runner_commons_1.KEY_PRESS.DOWN:
257
+ await element.press("ArrowDown");
258
+ break;
259
+ case runner_commons_1.KEY_PRESS.LEFT:
260
+ await element.press("ArrowLeft");
261
+ break;
262
+ case runner_commons_1.KEY_PRESS.RIGHT:
263
+ await element.press("ArrowRight");
264
+ break;
265
+ default:
266
+ console.error("the command" + key + " is unrecognized.");
267
+ break;
268
+ }
269
+ await (0, core_engine_1.deleteCookieByName)(world, core_engine_1.COOKIE_NAME.SELECTED_ELEMENT);
270
+ await (0, core_engine_1.addCookieWhenValueIsList)(world, core_engine_1.COOKIE_NAME.SELECTED_ELEMENT, { name: core_engine_1.FILTER_TYPE.SELECTOR_PARENT, value: "*:focus" });
271
+ }
@@ -26,7 +26,8 @@ export declare enum FILTER_TYPE {
26
26
  ROLE = "byRole",
27
27
  TEXT = "byText",
28
28
  ARIA_LABEL = "byAriaLabel",
29
- TEST_ID = "byTestId"
29
+ TEST_ID = "byTestId",
30
+ SELECTOR_PARENT = "bySelectorParent"
30
31
  }
31
32
  export type MockType = {
32
33
  name: any;
@@ -32,6 +32,7 @@ var FILTER_TYPE;
32
32
  FILTER_TYPE["TEXT"] = "byText";
33
33
  FILTER_TYPE["ARIA_LABEL"] = "byAriaLabel";
34
34
  FILTER_TYPE["TEST_ID"] = "byTestId";
35
+ FILTER_TYPE["SELECTOR_PARENT"] = "bySelectorParent";
35
36
  })(FILTER_TYPE = exports.FILTER_TYPE || (exports.FILTER_TYPE = {}));
36
37
  async function getPageOrElement(world) {
37
38
  let pointer = world.page;
@@ -57,6 +58,9 @@ async function getPageOrElement(world) {
57
58
  case FILTER_TYPE.TEXT:
58
59
  pointer = pointer.getByText(filter.value);
59
60
  break;
61
+ case FILTER_TYPE.SELECTOR_PARENT:
62
+ pointer = pointer.locator(filter.value);
63
+ break;
60
64
  default:
61
65
  break;
62
66
  }
@@ -4,19 +4,19 @@ NE PAS MODIFIER, FICHIER GENERE
4
4
  *******************************/
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  /**
7
- * Software Name : UUV
8
- *
9
- * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
10
- * SPDX-License-Identifier: MIT
11
- *
12
- * This software is distributed under the MIT License,
13
- * the text of which is available at https://spdx.org/licenses/MIT.html
14
- * or see the "LICENSE" file for more details.
15
- *
16
- * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
17
- * Software description: Make test writing fast, understandable by any human
18
- * understanding English or French.
19
- */
7
+ * Software Name : UUV
8
+ *
9
+ * SPDX-FileCopyrightText: Copyright (c) 2022-2023 Orange
10
+ * SPDX-License-Identifier: MIT
11
+ *
12
+ * This software is distributed under the MIT License,
13
+ * the text of which is available at https://spdx.org/licenses/MIT.html
14
+ * or see the "LICENSE" file for more details.
15
+ *
16
+ * Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
17
+ * Software description: Make test writing fast, understandable by any human
18
+ * understanding English or French.
19
+ */
20
20
  const runner_commons_1 = require("@uuv/runner-commons");
21
21
  const axe_playwright_1 = require("axe-playwright");
22
22
  const test_1 = require("@playwright/test");
@@ -51,10 +51,24 @@ const cucumber_1 = require("@cucumber/cucumber");
51
51
  (0, cucumber_1.When)(`I type the sentence {string}`, async function (textToType) {
52
52
  await (0, core_engine_1.getPageOrElement)(this).then(async (element) => {
53
53
  await element.focus({ timeout: 10000 });
54
- await element.fill(textToType);
54
+ await element.type(textToType);
55
55
  // console.debug(await showAttributesInLocator(element));
56
56
  });
57
57
  });
58
+ (0, cucumber_1.When)(`I press {int} times on {string}`, async function (nbTimes, key) {
59
+ for (let i = 1; i <= nbTimes; i++) {
60
+ await (0, core_engine_1.getPageOrElement)(this).then(async (element) => {
61
+ await element.focus({ timeout: 10000 });
62
+ await pressKey(this, element, key);
63
+ });
64
+ }
65
+ });
66
+ (0, cucumber_1.When)(`I press {string}`, async function (key) {
67
+ await (0, core_engine_1.getPageOrElement)(this).then(async (element) => {
68
+ await element.focus({ timeout: 10000 });
69
+ await pressKey(this, element, key);
70
+ });
71
+ });
58
72
  (0, cucumber_1.When)(`I set timeout with value {int}`, async function (newTimeout) {
59
73
  await this.testInfo.setTimeout(newTimeout);
60
74
  });
@@ -123,6 +137,46 @@ const cucumber_1 = require("@cucumber/cucumber");
123
137
  await (0, axe_playwright_1.injectAxe)(this.page);
124
138
  await (0, axe_playwright_1.checkA11y)(this.page);
125
139
  });
140
+ (0, cucumber_1.Then)(`I should not have any accessibility issue with option json fixture {}`, async function (option) {
141
+ await (0, axe_playwright_1.injectAxe)(this.page);
142
+ const optionFile = await runner_commons_1.fs.readFileSync(`playwright/fixtures/${option}`);
143
+ const optionJson = JSON.parse(optionFile.toString());
144
+ await (0, axe_playwright_1.checkA11y)(this.page, undefined, {
145
+ axeOptions: optionJson
146
+ });
147
+ });
148
+ (0, cucumber_1.Then)(`I should not have any accessibility issue with context json fixture {} and option json fixture {}`, async function (context, option) {
149
+ await (0, axe_playwright_1.injectAxe)(this.page);
150
+ const contextFile = await runner_commons_1.fs.readFileSync(`playwright/fixtures/${context}`);
151
+ const optionFile = await runner_commons_1.fs.readFileSync(`playwright/fixtures/${option}`);
152
+ const optionJson = JSON.parse(optionFile.toString());
153
+ await (0, axe_playwright_1.checkA11y)(this.page, JSON.parse(contextFile.toString()), {
154
+ axeOptions: optionJson
155
+ });
156
+ });
157
+ (0, cucumber_1.Then)(`I should not have any critical accessibility issue`, async function () {
158
+ await (0, axe_playwright_1.injectAxe)(this.page);
159
+ await (0, axe_playwright_1.checkA11y)(this.page, undefined, {
160
+ includedImpacts: ["critical"]
161
+ });
162
+ });
163
+ (0, cucumber_1.Then)(`I should not have any accessibility issue with {} impact(s)`, async function (impacts) {
164
+ await (0, axe_playwright_1.injectAxe)(this.page);
165
+ await (0, axe_playwright_1.checkA11y)(this.page, undefined, {
166
+ includedImpacts: [impacts]
167
+ });
168
+ });
169
+ (0, cucumber_1.Then)(`I should not have any accessibility issue with accessibility standard(s) {}`, async function (tags) {
170
+ await (0, axe_playwright_1.injectAxe)(this.page);
171
+ await (0, axe_playwright_1.checkA11y)(this.page, undefined, {
172
+ axeOptions: {
173
+ runOnly: {
174
+ type: "tag",
175
+ values: [tags]
176
+ }
177
+ }
178
+ });
179
+ });
126
180
  (0, cucumber_1.Then)(`I should not see an element with role {string} and name {string}`, async function (role, name) {
127
181
  await (0, core_engine_1.notFoundWithRoleAndName)(this, role, name);
128
182
  });
@@ -191,3 +245,30 @@ const cucumber_1 = require("@cucumber/cucumber");
191
245
  await (0, test_1.expect)(foundedElement).toEqual(expectedElementsOfList.raw());
192
246
  });
193
247
  });
248
+ async function pressKey(world, element, key) {
249
+ switch (key) {
250
+ case runner_commons_1.KEY_PRESS.TAB:
251
+ await element.press("Tab");
252
+ break;
253
+ case runner_commons_1.KEY_PRESS.REVERSE_TAB:
254
+ await element.press("ShiftLeft+Tab");
255
+ break;
256
+ case runner_commons_1.KEY_PRESS.UP:
257
+ await element.press("ArrowUp");
258
+ break;
259
+ case runner_commons_1.KEY_PRESS.DOWN:
260
+ await element.press("ArrowDown");
261
+ break;
262
+ case runner_commons_1.KEY_PRESS.LEFT:
263
+ await element.press("ArrowLeft");
264
+ break;
265
+ case runner_commons_1.KEY_PRESS.RIGHT:
266
+ await element.press("ArrowRight");
267
+ break;
268
+ default:
269
+ console.error("the command" + key + " is unrecognized.");
270
+ break;
271
+ }
272
+ await (0, core_engine_1.deleteCookieByName)(world, core_engine_1.COOKIE_NAME.SELECTED_ELEMENT);
273
+ await (0, core_engine_1.addCookieWhenValueIsList)(world, core_engine_1.COOKIE_NAME.SELECTED_ELEMENT, { name: core_engine_1.FILTER_TYPE.SELECTOR_PARENT, value: "*:focus" });
274
+ }