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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "artes",
3
- "version": "1.0.24",
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 (elements) => {
8
- const elementCount = await frame.count(elements);
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(elements, i).click();
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
  },
@@ -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({ path: "./trace.zip" });
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.FAILED) {
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
- for (let i = 0; i < count; i++) {
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);