artes 1.0.61 → 1.0.62

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 (38) hide show
  1. package/README.md +356 -340
  2. package/cucumber.config.js +98 -98
  3. package/docs/functionDefinitions.md +2343 -2101
  4. package/docs/stepDefinitions.md +352 -269
  5. package/executer.js +59 -59
  6. package/index.js +44 -44
  7. package/package.json +50 -50
  8. package/src/helper/contextManager/browserManager.js +66 -66
  9. package/src/helper/contextManager/requestManager.js +30 -30
  10. package/src/helper/executers/cleaner.js +23 -23
  11. package/src/helper/executers/exporter.js +15 -15
  12. package/src/helper/executers/helper.js +44 -44
  13. package/src/helper/executers/projectCreator.js +162 -162
  14. package/src/helper/executers/reportGenerator.js +29 -29
  15. package/src/helper/executers/testRunner.js +59 -59
  16. package/src/helper/executers/versionChecker.js +13 -13
  17. package/src/helper/imports/commons.js +51 -51
  18. package/src/helper/pomController/elementController.js +146 -146
  19. package/src/helper/pomController/pomCollector.js +20 -20
  20. package/src/helper/stepFunctions/APIActions.js +271 -271
  21. package/src/helper/stepFunctions/assertions.js +523 -523
  22. package/src/helper/stepFunctions/browserActions.js +21 -19
  23. package/src/helper/stepFunctions/elementInteractions.js +38 -38
  24. package/src/helper/stepFunctions/exporter.js +19 -19
  25. package/src/helper/stepFunctions/frameActions.js +50 -50
  26. package/src/helper/stepFunctions/keyboardActions.js +41 -36
  27. package/src/helper/stepFunctions/mouseActions.js +145 -145
  28. package/src/helper/stepFunctions/pageActions.js +27 -27
  29. package/src/hooks/context.js +15 -15
  30. package/src/hooks/hooks.js +76 -76
  31. package/src/stepDefinitions/API.steps.js +248 -248
  32. package/src/stepDefinitions/assertions.steps.js +826 -826
  33. package/src/stepDefinitions/browser.steps.js +7 -7
  34. package/src/stepDefinitions/frameActions.steps.js +76 -76
  35. package/src/stepDefinitions/keyboardActions.steps.js +87 -87
  36. package/src/stepDefinitions/mouseActions.steps.js +256 -256
  37. package/src/stepDefinitions/page.steps.js +71 -71
  38. package/src/stepDefinitions/random.steps.js +25 -25
@@ -1,146 +1,146 @@
1
- const { context } = require("../../hooks/context");
2
-
3
- class Elements {
4
- static elements = {};
5
-
6
- static addElements(elements) {
7
- this.elements = { ...this.elements, ...elements };
8
- }
9
-
10
- // static async locatorExistenceChecker(locator){
11
- // const locatorCount = await locator.count();
12
- // console.log(locator, locatorCount)
13
- // return locatorCount ==0 ? false : true;
14
- // }
15
-
16
- static getElement(element) {
17
- if (!context.page) {
18
- throw new Error("Page context is not initialized.");
19
- }
20
-
21
- function selectorSeperator(element) {
22
- const selector = element?.split("=");
23
- return [
24
- selector[0]?.trim(),
25
- selector[1] !== undefined ? selector[1].trim() : "",
26
- ];
27
- }
28
-
29
- function getSelector(elements, element) {
30
- if (elements?.[element]?.selector) {
31
- return selectorSeperator(elements[element].selector);
32
- } else if (elements?.[element]) {
33
- return selectorSeperator(elements[element]);
34
- } else if (typeof element === "string") {
35
- return selectorSeperator(element);
36
- }
37
- return null;
38
- }
39
-
40
- const selector = getSelector(this.elements, element);
41
- const waitTime = this.elements[element]?.waitTime * 1000 || 0;
42
-
43
- let locator;
44
- switch (selector[0]) {
45
- case "xpath":
46
- locator = context.page.locator(`xpath=${selector[1]}`, { exact: true });
47
- break;
48
- case "name":
49
- locator = context.page.locator(`[name=${selector[1]}]`, {
50
- exact: true,
51
- });
52
- break;
53
- case "placeholder":
54
- locator = context.page.getByPlaceholder(selector[1], { exact: true });
55
- break;
56
- case "text":
57
- locator = context.page.getByText(selector[1], { exact: true });
58
- break;
59
- case "label":
60
- locator = context.page.getByLabel(selector[1], { exact: true });
61
- break;
62
- case "role":
63
- locator = context.page.getByRole(selector[1], { exact: true });
64
- break;
65
- case "alt":
66
- locator = context.page.getByAltText(selector[1], { exact: true });
67
- break;
68
- case "title":
69
- locator = context.page.getByTitle(selector[1], { exact: true });
70
- break;
71
- case "testid":
72
- locator = context.page.getByTestId(selector[1], { exact: true });
73
- break;
74
- default:
75
- locator = context.page.locator(selector[0], { exact: true });
76
- break;
77
- }
78
-
79
- return locator;
80
- }
81
-
82
- static getSelector(element) {
83
- const selector =
84
- this.elements?.[element]?.selector || this.elements?.[element] || element;
85
- return selector;
86
- }
87
-
88
- static extractVarsFromResponse(vars, customVarName) {
89
- const responseBody = context.response.responseBody;
90
-
91
- function getValueByPath(obj, path) {
92
- const keys = path.split(".");
93
- let current = obj;
94
-
95
- for (const key of keys) {
96
- if (current && typeof current === "object" && key in current) {
97
- current = current[key];
98
- } else {
99
- return undefined;
100
- }
101
- }
102
-
103
- return current;
104
- }
105
-
106
- vars.split(",").forEach((v) => {
107
- const path = v.trim();
108
- const value = getValueByPath(responseBody, path);
109
- if (value !== undefined) {
110
- this.saveVar(value, customVarName, path);
111
- }
112
- });
113
- }
114
-
115
- static saveVar(value, customName, path) {
116
- if (!customName) {
117
- const flatKey = path
118
- .split(".")
119
- .map((part, i) =>
120
- i === 0 ? part : part[0].toUpperCase() + part.slice(1),
121
- )
122
- .join("");
123
-
124
- context.vars[flatKey] = value;
125
- } else {
126
- context.vars[customName] = value;
127
- }
128
- }
129
-
130
- static resolveVariable(template) {
131
- if (typeof template !== "string") return template;
132
- return template.replace(/{{\s*(\w+)\s*}}/g, (_, varName) => {
133
- const value = context.vars[varName];
134
- return value !== undefined ? value : `{{${varName}}}`;
135
- });
136
- }
137
- }
138
-
139
- module.exports = {
140
- getElement: Elements.getElement.bind(Elements),
141
- addElements: Elements.addElements.bind(Elements),
142
- getSelector: Elements.getSelector.bind(Elements),
143
- extractVarsFromResponse: Elements.extractVarsFromResponse.bind(Elements),
144
- saveVar: Elements.saveVar.bind(Elements),
145
- resolveVariable: Elements.resolveVariable.bind(Elements),
146
- };
1
+ const { context } = require("../../hooks/context");
2
+
3
+ class Elements {
4
+ static elements = {};
5
+
6
+ static addElements(elements) {
7
+ this.elements = { ...this.elements, ...elements };
8
+ }
9
+
10
+ // static async locatorExistenceChecker(locator){
11
+ // const locatorCount = await locator.count();
12
+ // console.log(locator, locatorCount)
13
+ // return locatorCount ==0 ? false : true;
14
+ // }
15
+
16
+ static getElement(element) {
17
+ if (!context.page) {
18
+ throw new Error("Page context is not initialized.");
19
+ }
20
+
21
+ function selectorSeperator(element) {
22
+ const selector = element?.split("=");
23
+ return [
24
+ selector[0]?.trim(),
25
+ selector[1] !== undefined ? selector[1].trim() : "",
26
+ ];
27
+ }
28
+
29
+ function getSelector(elements, element) {
30
+ if (elements?.[element]?.selector) {
31
+ return selectorSeperator(elements[element].selector);
32
+ } else if (elements?.[element]) {
33
+ return selectorSeperator(elements[element]);
34
+ } else if (typeof element === "string") {
35
+ return selectorSeperator(element);
36
+ }
37
+ return null;
38
+ }
39
+
40
+ const selector = getSelector(this.elements, element);
41
+ const waitTime = this.elements[element]?.waitTime * 1000 || 0;
42
+
43
+ let locator;
44
+ switch (selector[0]) {
45
+ case "xpath":
46
+ locator = context.page.locator(`xpath=${selector[1]}`, { exact: true });
47
+ break;
48
+ case "name":
49
+ locator = context.page.locator(`[name=${selector[1]}]`, {
50
+ exact: true,
51
+ });
52
+ break;
53
+ case "placeholder":
54
+ locator = context.page.getByPlaceholder(selector[1], { exact: true });
55
+ break;
56
+ case "text":
57
+ locator = context.page.getByText(selector[1], { exact: true });
58
+ break;
59
+ case "label":
60
+ locator = context.page.getByLabel(selector[1], { exact: true });
61
+ break;
62
+ case "role":
63
+ locator = context.page.getByRole(selector[1], { exact: true });
64
+ break;
65
+ case "alt":
66
+ locator = context.page.getByAltText(selector[1], { exact: true });
67
+ break;
68
+ case "title":
69
+ locator = context.page.getByTitle(selector[1], { exact: true });
70
+ break;
71
+ case "testid":
72
+ locator = context.page.getByTestId(selector[1], { exact: true });
73
+ break;
74
+ default:
75
+ locator = context.page.locator(selector[0], { exact: true });
76
+ break;
77
+ }
78
+
79
+ return locator;
80
+ }
81
+
82
+ static getSelector(element) {
83
+ const selector =
84
+ this.elements?.[element]?.selector || this.elements?.[element] || element;
85
+ return selector;
86
+ }
87
+
88
+ static extractVarsFromResponse(vars, customVarName) {
89
+ const responseBody = context.response.responseBody;
90
+
91
+ function getValueByPath(obj, path) {
92
+ const keys = path.split(".");
93
+ let current = obj;
94
+
95
+ for (const key of keys) {
96
+ if (current && typeof current === "object" && key in current) {
97
+ current = current[key];
98
+ } else {
99
+ return undefined;
100
+ }
101
+ }
102
+
103
+ return current;
104
+ }
105
+
106
+ vars.split(",").forEach((v) => {
107
+ const path = v.trim();
108
+ const value = getValueByPath(responseBody, path);
109
+ if (value !== undefined) {
110
+ this.saveVar(value, customVarName, path);
111
+ }
112
+ });
113
+ }
114
+
115
+ static saveVar(value, customName, path) {
116
+ if (!customName) {
117
+ const flatKey = path
118
+ .split(".")
119
+ .map((part, i) =>
120
+ i === 0 ? part : part[0].toUpperCase() + part.slice(1),
121
+ )
122
+ .join("");
123
+
124
+ context.vars[flatKey] = value;
125
+ } else {
126
+ context.vars[customName] = value;
127
+ }
128
+ }
129
+
130
+ static resolveVariable(template) {
131
+ if (typeof template !== "string") return template;
132
+ return template.replace(/{{\s*(\w+)\s*}}/g, (_, varName) => {
133
+ const value = context.vars[varName];
134
+ return value !== undefined ? value : `{{${varName}}}`;
135
+ });
136
+ }
137
+ }
138
+
139
+ module.exports = {
140
+ getElement: Elements.getElement.bind(Elements),
141
+ addElements: Elements.addElements.bind(Elements),
142
+ getSelector: Elements.getSelector.bind(Elements),
143
+ extractVarsFromResponse: Elements.extractVarsFromResponse.bind(Elements),
144
+ saveVar: Elements.saveVar.bind(Elements),
145
+ resolveVariable: Elements.resolveVariable.bind(Elements),
146
+ };
@@ -1,20 +1,20 @@
1
- const { addElements } = require("./elementController");
2
- const cucumberConfig = require("../../../cucumber.config");
3
- const fs = require("fs");
4
- function pomCollector() {
5
- if (fs.existsSync(cucumberConfig.default.pomPath)) {
6
- fs.readdir(`${cucumberConfig.default.pomPath}`, (err, files) => {
7
- files.forEach((file) => {
8
- fs.readFile(
9
- `${cucumberConfig.default.pomPath}/${file}`,
10
- "utf-8",
11
- (err, content) => {
12
- addElements(JSON.parse(content));
13
- },
14
- );
15
- });
16
- });
17
- }
18
- }
19
-
20
- module.exports = { pomCollector };
1
+ const { addElements } = require("./elementController");
2
+ const cucumberConfig = require("../../../cucumber.config");
3
+ const fs = require("fs");
4
+ function pomCollector() {
5
+ if (fs.existsSync(cucumberConfig.default.pomPath)) {
6
+ fs.readdir(`${cucumberConfig.default.pomPath}`, (err, files) => {
7
+ files.forEach((file) => {
8
+ fs.readFile(
9
+ `${cucumberConfig.default.pomPath}/${file}`,
10
+ "utf-8",
11
+ (err, content) => {
12
+ addElements(JSON.parse(content));
13
+ },
14
+ );
15
+ });
16
+ });
17
+ }
18
+ }
19
+
20
+ module.exports = { pomCollector };