artes 1.0.24 → 1.0.26
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/package.json +1 -1
- package/src/helper/stepFunctions/keyboardActions.js +7 -0
- package/src/helper/stepFunctions/mouseActions.js +24 -3
- package/src/hooks/hooks.js +6 -2
- package/src/stepDefinitions/assertions.steps.js +1 -3
- package/src/stepDefinitions/keyboardActions.steps.js +7 -0
- package/src/stepDefinitions/mouseActions.steps.js +16 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "artes",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.26",
|
|
4
4
|
"description": "The package provide step definitions and user writes feature files, and the package handles automation, with optional POM files and custom step definitions.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -13,6 +13,13 @@ const keyboard = {
|
|
|
13
13
|
fill: async (selector, value) => {
|
|
14
14
|
await element(selector).fill(value);
|
|
15
15
|
},
|
|
16
|
+
multipleElementFill: async (selectors, value) => {
|
|
17
|
+
const elementCount = await frame.count(selectors);
|
|
18
|
+
|
|
19
|
+
for (let i = 0; i < elementCount; i++) {
|
|
20
|
+
await frame.nth(selectors, i).fill(value);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
16
23
|
clear: async (selector) => {
|
|
17
24
|
await element(selector).clear();
|
|
18
25
|
},
|
|
@@ -4,11 +4,11 @@ const mouse = {
|
|
|
4
4
|
click: async (selector) => {
|
|
5
5
|
await element(selector).click();
|
|
6
6
|
},
|
|
7
|
-
multipleElementClick: async (
|
|
8
|
-
const elementCount = await frame.count(
|
|
7
|
+
multipleElementClick: async (selectors) => {
|
|
8
|
+
const elementCount = await frame.count(selectors);
|
|
9
9
|
|
|
10
10
|
for (let i = 0; i < elementCount; i++) {
|
|
11
|
-
await frame.nth(
|
|
11
|
+
await frame.nth(selectors, i).click();
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
forceClick: async (selector) => {
|
|
@@ -49,6 +49,13 @@ const mouse = {
|
|
|
49
49
|
doubleClick: async (selector) => {
|
|
50
50
|
await element(selector).dblclick();
|
|
51
51
|
},
|
|
52
|
+
multipleElementDoubleClick: async (elements) => {
|
|
53
|
+
const elementCount = await frame.count(elements);
|
|
54
|
+
|
|
55
|
+
for (let i = 0; i < elementCount; i++) {
|
|
56
|
+
await frame.nth(elements, i).dblclick();
|
|
57
|
+
}
|
|
58
|
+
},
|
|
52
59
|
forceDoubleClick: async (selector) => {
|
|
53
60
|
await element(selector).dblclick({ force: true });
|
|
54
61
|
},
|
|
@@ -97,9 +104,23 @@ const mouse = {
|
|
|
97
104
|
check: async (selector) => {
|
|
98
105
|
await element(selector).check();
|
|
99
106
|
},
|
|
107
|
+
multipleElementCheck: async (selectors) => {
|
|
108
|
+
const elementCount = await frame.count(selectors);
|
|
109
|
+
|
|
110
|
+
for (let i = 0; i < elementCount; i++) {
|
|
111
|
+
await frame.nth(selectors, i).check();
|
|
112
|
+
}
|
|
113
|
+
},
|
|
100
114
|
uncheck: async (selector) => {
|
|
101
115
|
await element(selector).uncheck();
|
|
102
116
|
},
|
|
117
|
+
multipleElementUncheck: async (selectors) => {
|
|
118
|
+
const elementCount = await frame.count(selectors);
|
|
119
|
+
|
|
120
|
+
for (let i = 0; i < elementCount; i++) {
|
|
121
|
+
await frame.nth(selectors, i).uncheck();
|
|
122
|
+
}
|
|
123
|
+
},
|
|
103
124
|
scrollIntoViewIfNeeded: async (selector) => {
|
|
104
125
|
await element(selector).scrollIntoViewIfNeeded();
|
|
105
126
|
},
|
package/src/hooks/hooks.js
CHANGED
|
@@ -12,6 +12,8 @@ const cucumberConfig = require("../../cucumber.config");
|
|
|
12
12
|
const { context } = require("./context");
|
|
13
13
|
const fs = require("fs");
|
|
14
14
|
const { expect } = require("playwright/test");
|
|
15
|
+
const { moduleConfig } = require("artes/src/helper/imports/commons");
|
|
16
|
+
const path = require("path");
|
|
15
17
|
|
|
16
18
|
let browser;
|
|
17
19
|
let request;
|
|
@@ -48,11 +50,13 @@ After(async function ({ pickle, result }) {
|
|
|
48
50
|
await this.attach(img, "image/png");
|
|
49
51
|
}
|
|
50
52
|
|
|
51
|
-
await browser.tracing.stop({
|
|
53
|
+
await browser.tracing.stop({
|
|
54
|
+
path: path.join(moduleConfig.projectPath, "./trace.zip"),
|
|
55
|
+
});
|
|
52
56
|
await context.page.close();
|
|
53
57
|
await browser.close();
|
|
54
58
|
|
|
55
|
-
if (result?.status != Status.
|
|
59
|
+
if (result?.status != Status.PASSED) {
|
|
56
60
|
const videoPath = await context.page.video().path();
|
|
57
61
|
const webmBuffer = await fs.readFileSync(videoPath);
|
|
58
62
|
await this.attach(webmBuffer, "video/webm");
|
|
@@ -65,9 +65,7 @@ Then(
|
|
|
65
65
|
Then(
|
|
66
66
|
"User expects multiple {string} should have {string} text",
|
|
67
67
|
async (elements, expectedText) => {
|
|
68
|
-
|
|
69
|
-
await assert.multipleElementsShouldContainText(elements, expectedText);
|
|
70
|
-
}
|
|
68
|
+
await assert.multipleElementsShouldContainText(elements, expectedText);
|
|
71
69
|
},
|
|
72
70
|
);
|
|
73
71
|
|
|
@@ -27,6 +27,13 @@ When("User types {string} in {string}", async function (value, selector) {
|
|
|
27
27
|
await keyboard.fill(selector, value);
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
+
When(
|
|
31
|
+
"User types {string} in multiple {string}",
|
|
32
|
+
async function (value, selectors) {
|
|
33
|
+
await keyboard.multipleElementFill(selectors, value);
|
|
34
|
+
},
|
|
35
|
+
);
|
|
36
|
+
|
|
30
37
|
// User clears the input of a specific selector
|
|
31
38
|
When("User clears {string}", async function (selector) {
|
|
32
39
|
await keyboard.clear(selector);
|
|
@@ -6,6 +6,10 @@ When("User clicks {string}", async function (selector) {
|
|
|
6
6
|
await mouse.click(selector);
|
|
7
7
|
});
|
|
8
8
|
|
|
9
|
+
When("User clicks multiple {string}", async (elements) => {
|
|
10
|
+
await mouse.multipleElementClick(elements);
|
|
11
|
+
});
|
|
12
|
+
|
|
9
13
|
// User clicks on a selector with force
|
|
10
14
|
When("User clicks {string} with force", async function (selector) {
|
|
11
15
|
await mouse.click(selector, true);
|
|
@@ -69,6 +73,10 @@ When("User double clicks {string}", async function (selector) {
|
|
|
69
73
|
await mouse.doubleClick(selector);
|
|
70
74
|
});
|
|
71
75
|
|
|
76
|
+
When("User double clicks multiple {string}", async (elements) => {
|
|
77
|
+
await mouse.multipleElementDoubleClick(elements);
|
|
78
|
+
});
|
|
79
|
+
|
|
72
80
|
// User double clicks on a selector with force
|
|
73
81
|
When("User double clicks {string} with force", async function (selector) {
|
|
74
82
|
await mouse.doubleClick(selector, true);
|
|
@@ -213,11 +221,19 @@ When("User checks {string}", async function (selector) {
|
|
|
213
221
|
await mouse.check(selector);
|
|
214
222
|
});
|
|
215
223
|
|
|
224
|
+
When("User checks multiple {string}", async function (selectors) {
|
|
225
|
+
await mouse.multipleElementCheck(selectors);
|
|
226
|
+
});
|
|
227
|
+
|
|
216
228
|
// User unchecks a checkbox or radio button
|
|
217
229
|
When("User unchecks {string}", async function (selector) {
|
|
218
230
|
await mouse.uncheck(selector);
|
|
219
231
|
});
|
|
220
232
|
|
|
233
|
+
When("User unchecks multiple {string}", async function (selectors) {
|
|
234
|
+
await mouse.multipleElementUncheck(selectors);
|
|
235
|
+
});
|
|
236
|
+
|
|
221
237
|
// User scrolls into view if needed for a selector
|
|
222
238
|
When("User scrolls {string} into view", async function (selector) {
|
|
223
239
|
await mouse.scrollIntoViewIfNeeded(selector);
|