automation_model 1.0.653-dev → 1.0.653-stage
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 +3 -1
- package/lib/analyze_helper.js.map +1 -1
- package/lib/api.d.ts +0 -1
- package/lib/api.js +35 -21
- package/lib/api.js.map +1 -1
- package/lib/auto_page.d.ts +1 -1
- package/lib/auto_page.js +143 -57
- package/lib/auto_page.js.map +1 -1
- package/lib/browser_manager.js +28 -8
- package/lib/browser_manager.js.map +1 -1
- package/lib/bruno.d.ts +2 -0
- package/lib/bruno.js +381 -0
- package/lib/bruno.js.map +1 -0
- package/lib/command_common.d.ts +1 -1
- package/lib/command_common.js +24 -4
- package/lib/command_common.js.map +1 -1
- package/lib/date_time.js.map +1 -1
- package/lib/drawRect.js.map +1 -1
- package/lib/environment.d.ts +1 -0
- package/lib/environment.js +1 -0
- package/lib/environment.js.map +1 -1
- package/lib/error-messages.js.map +1 -1
- package/lib/file_checker.d.ts +1 -0
- package/lib/file_checker.js +61 -0
- package/lib/file_checker.js.map +1 -0
- package/lib/find_function.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/init_browser.js +4 -4
- package/lib/init_browser.js.map +1 -1
- package/lib/locate_element.js.map +1 -1
- package/lib/locator.d.ts +1 -0
- package/lib/locator.js +10 -3
- package/lib/locator.js.map +1 -1
- package/lib/locator_log.js.map +1 -1
- package/lib/network.js.map +1 -1
- package/lib/scripts/axe.mini.js +3 -3
- package/lib/snapshot_validation.d.ts +37 -0
- package/lib/snapshot_validation.js +357 -0
- package/lib/snapshot_validation.js.map +1 -0
- package/lib/stable_browser.d.ts +58 -24
- package/lib/stable_browser.js +916 -185
- package/lib/stable_browser.js.map +1 -1
- package/lib/table.d.ts +9 -7
- package/lib/table.js +82 -12
- package/lib/table.js.map +1 -1
- package/lib/table_analyze.js.map +1 -1
- package/lib/table_helper.js +15 -0
- package/lib/table_helper.js.map +1 -1
- package/lib/test_context.d.ts +1 -0
- package/lib/test_context.js +1 -0
- package/lib/test_context.js.map +1 -1
- package/lib/utils.d.ts +5 -3
- package/lib/utils.js +132 -68
- package/lib/utils.js.map +1 -1
- package/package.json +12 -6
package/lib/table.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { ElementHandle, Page } from "playwright";
|
|
2
|
+
interface AnalyzeResult {
|
|
3
|
+
status: boolean;
|
|
4
|
+
cells: any[];
|
|
5
|
+
error: string;
|
|
6
|
+
cellIndex: number;
|
|
7
|
+
rowIndex: number;
|
|
8
|
+
}
|
|
2
9
|
export declare class Table {
|
|
3
10
|
private tableData;
|
|
4
11
|
constructor();
|
|
5
12
|
initFromElement(page: Page, tableElement: ElementHandle): Promise<void>;
|
|
6
|
-
analyze(analyzeObject: any):
|
|
7
|
-
status: boolean;
|
|
8
|
-
cells: null;
|
|
9
|
-
error: string;
|
|
10
|
-
cellIndex: number;
|
|
11
|
-
rowIndex: number;
|
|
12
|
-
};
|
|
13
|
+
analyze(analyzeObject: any): AnalyzeResult;
|
|
13
14
|
}
|
|
15
|
+
export {};
|
package/lib/table.js
CHANGED
|
@@ -71,8 +71,15 @@ export class Table {
|
|
|
71
71
|
expected_value
|
|
72
72
|
}
|
|
73
73
|
*/
|
|
74
|
+
// define the reault object structure
|
|
74
75
|
analyze(analyzeObject) {
|
|
75
|
-
let result = {
|
|
76
|
+
let result = {
|
|
77
|
+
status: false,
|
|
78
|
+
cells: [],
|
|
79
|
+
error: "",
|
|
80
|
+
cellIndex: -1,
|
|
81
|
+
rowIndex: -1,
|
|
82
|
+
};
|
|
76
83
|
switch (analyzeObject.type) {
|
|
77
84
|
case "VALIDATE_HEADER":
|
|
78
85
|
result.cellIndex = _searchStringArrayInCellsArray(analyzeObject.cells, this.tableData.columnHeaders);
|
|
@@ -129,17 +136,80 @@ export class Table {
|
|
|
129
136
|
result.error = "Cell not found";
|
|
130
137
|
return result;
|
|
131
138
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
case "GET_COLUMN_DATA": {
|
|
140
|
+
let columnIndex = -1;
|
|
141
|
+
if (!analyzeObject.column_name && analyzeObject.column_index === undefined) {
|
|
142
|
+
result.error = "Missing parameters, expected: column_name or column_index";
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
if (analyzeObject.column_index !== undefined) {
|
|
146
|
+
columnIndex = analyzeObject.column_index;
|
|
147
|
+
}
|
|
148
|
+
else if (analyzeObject.column_name) {
|
|
149
|
+
columnIndex = _searchStringArrayInCellsArray([analyzeObject.column_name], this.tableData.columnHeaders);
|
|
150
|
+
}
|
|
151
|
+
if (columnIndex === -1) {
|
|
152
|
+
result.error = "Column not found";
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
for (let i = this.tableData.headerRowsCount; i < this.tableData.rows.length; i++) {
|
|
156
|
+
if (this.tableData.rows[i].children[columnIndex]) {
|
|
157
|
+
result.cells.push(this.tableData.rows[i].children[columnIndex].text);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
result.status = true;
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
163
|
+
case "VALIDATE_COLUMN_DATA": {
|
|
164
|
+
analyzeObject.type = "GET_COLUMN_DATA"; // reuse the logic of GET_COLUMN_DATA
|
|
165
|
+
const columnDataResult = this.analyze(analyzeObject);
|
|
166
|
+
if (!columnDataResult.status) {
|
|
167
|
+
return columnDataResult; // return the error if column data is not found
|
|
168
|
+
}
|
|
169
|
+
if (analyzeObject.validation === "ascending") {
|
|
170
|
+
for (let i = 0; i < columnDataResult.cells.length - 1; i++) {
|
|
171
|
+
if (columnDataResult.cells[i] > columnDataResult.cells[i + 1]) {
|
|
172
|
+
result.status = false;
|
|
173
|
+
result.error = `rows ${i} and ${i + 1} are not in ascending order: ${columnDataResult.cells[i]} >= ${columnDataResult.cells[i + 1]}`;
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
result.status = true;
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
else if (analyzeObject.validation === "descending") {
|
|
181
|
+
for (let i = 0; i < columnDataResult.cells.length - 1; i++) {
|
|
182
|
+
if (columnDataResult.cells[i] < columnDataResult.cells[i + 1]) {
|
|
183
|
+
result.status = false;
|
|
184
|
+
result.error = `rows ${i} and ${i + 1} are not in descending order: ${columnDataResult.cells[i]} <= ${columnDataResult.cells[i + 1]}`;
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
result.status = true;
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
else if (analyzeObject.validation === "check_filter") {
|
|
192
|
+
const filter = analyzeObject.filter_text;
|
|
193
|
+
if (!filter) {
|
|
194
|
+
result.error = "Missing filter parameter";
|
|
195
|
+
return result;
|
|
196
|
+
}
|
|
197
|
+
// if one of the cells does not contain the filter text, return false
|
|
198
|
+
for (let i = 0; i < columnDataResult.cells.length; i++) {
|
|
199
|
+
if (!columnDataResult.cells[i].includes(filter)) {
|
|
200
|
+
result.status = false;
|
|
201
|
+
result.error = `Cell ${i} does not contain the filter text: ${filter}`;
|
|
202
|
+
return result;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
result.status = true;
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
result.error = "Unknown validation type: " + analyzeObject.validation;
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
143
213
|
default:
|
|
144
214
|
throw new Error("Unknown analyzeObject type: " + analyzeObject.type);
|
|
145
215
|
}
|
package/lib/table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/table.ts"],"names":[],"mappings":"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"}
|
package/lib/table_analyze.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table_analyze.js","sourceRoot":"","sources":["../../src/table_analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,uDAAuD;AACvD,qDAAqD;AACrD,6HAA6H;AAC7H,SAAS,eAAe,CAAC,GAAY,EAAE,WAAW,GAAG,CAAC;IACpD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"table_analyze.js","sourceRoot":"","sources":["../../src/table_analyze.ts"],"names":[],"mappings":"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"}
|
package/lib/table_helper.js
CHANGED
|
@@ -96,6 +96,21 @@ export async function findElementsInArea(cssSelector, area, web, options) {
|
|
|
96
96
|
foundElements.push(element);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
+
if (foundElements.length === 0) {
|
|
100
|
+
// find elements that intersect with the area
|
|
101
|
+
for (const element of elements) {
|
|
102
|
+
const rect = await element.boundingBox();
|
|
103
|
+
if (!rect) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (rect.x + rect.width >= area.x &&
|
|
107
|
+
rect.x <= area.x + area.width &&
|
|
108
|
+
rect.y + rect.height >= area.y &&
|
|
109
|
+
rect.y <= area.y + area.height) {
|
|
110
|
+
foundElements.push(element);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
99
114
|
return foundElements;
|
|
100
115
|
}
|
|
101
116
|
//# sourceMappingURL=table_helper.js.map
|
package/lib/table_helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table_helper.js","sourceRoot":"","sources":["../../src/table_helper.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,WAAmB,EAAE,KAAU,EAAE,GAAQ;IAC1F,MAAM,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,IAAI,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"table_helper.js","sourceRoot":"","sources":["../../src/table_helper.ts"],"names":[],"mappings":"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"}
|
package/lib/test_context.d.ts
CHANGED
package/lib/test_context.js
CHANGED
package/lib/test_context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_context.js","sourceRoot":"","sources":["../../src/test_context.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW;IACf,MAAM,GAAyB,IAAI,CAAC;IACpC,GAAG,GAAyB,IAAI,CAAC;IACjC,OAAO,GAA6B,IAAI,CAAC;IACzC,WAAW,GAA0B,IAAI,CAAC;IAC1C,IAAI,GAAgB,IAAI,CAAC;IACzB,WAAW,GAAuB,IAAI,CAAC;IACvC,YAAY,GAAkB,IAAI,CAAC;IACnC,GAAG,GAAe,IAAI,CAAC;IACvB,QAAQ,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,KAAK,CAAC;IACjB,WAAW,GAAkB,IAAI,CAAC;IAClC,aAAa,GAAQ,IAAI,CAAC;IAC1B,WAAW,GAAuB,IAAI,CAAC;IACvC,gBAAe,CAAC;CACjB;AACD,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"test_context.js","sourceRoot":"","sources":["../../src/test_context.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW;IACf,MAAM,GAAyB,IAAI,CAAC;IACpC,GAAG,GAAyB,IAAI,CAAC;IACjC,OAAO,GAA6B,IAAI,CAAC;IACzC,WAAW,GAA0B,IAAI,CAAC;IAC1C,IAAI,GAAgB,IAAI,CAAC;IACzB,WAAW,GAAuB,IAAI,CAAC;IACvC,YAAY,GAAkB,IAAI,CAAC;IACnC,cAAc,GAAkB,IAAI,CAAC;IACrC,GAAG,GAAe,IAAI,CAAC;IACvB,QAAQ,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,KAAK,CAAC;IACjB,WAAW,GAAkB,IAAI,CAAC;IAClC,aAAa,GAAQ,IAAI,CAAC;IAC1B,WAAW,GAAuB,IAAI,CAAC;IACvC,gBAAe,CAAC;CACjB;AACD,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
package/lib/utils.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
declare function encrypt(text: string, key?: string | null): string;
|
|
2
|
-
declare function
|
|
2
|
+
declare function getTestDataValue(key: string, environment?: string): any;
|
|
3
|
+
declare function decrypt(encryptedText: string, key?: string | null, totpWait?: boolean): string;
|
|
3
4
|
export declare function testForRegex(text: string): boolean;
|
|
4
5
|
declare function _convertToRegexQuery(text: string, isRegex: boolean, fullMatch: boolean, ignoreCase: boolean): string;
|
|
5
6
|
declare function _getDataFile(world?: any, context?: any, web?: any): string;
|
|
6
|
-
declare function replaceWithLocalTestData(value: string, world: any, _decrypt?: boolean, totpWait?: boolean, context?: any, web?: any): Promise<string>;
|
|
7
|
+
declare function replaceWithLocalTestData(value: string, world: any, _decrypt?: boolean, totpWait?: boolean, context?: any, web?: any, throwError?: boolean): Promise<string>;
|
|
7
8
|
declare function maskValue(value: string): string;
|
|
8
9
|
declare function _copyContext(from: any, to: any): void;
|
|
9
10
|
declare function scrollPageToLoadLazyElements(page: any): Promise<void>;
|
|
@@ -18,4 +19,5 @@ export declare function performAction(action: string, element: any, options: any
|
|
|
18
19
|
declare const KEYBOARD_EVENTS: string[];
|
|
19
20
|
declare function unEscapeString(str: string): string;
|
|
20
21
|
declare function _getServerUrl(): string;
|
|
21
|
-
|
|
22
|
+
declare function tryParseJson(input: any): any;
|
|
23
|
+
export { encrypt, decrypt, replaceWithLocalTestData, maskValue, _copyContext, scrollPageToLoadLazyElements, _fixUsingParams, getWebLogFile, _fixLocatorUsingParams, _isObject, scanAndManipulate, KEYBOARD_EVENTS, unEscapeString, Params, _getServerUrl, _convertToRegexQuery, extractStepExampleParameters, _getDataFile, tryParseJson, getTestDataValue, };
|
package/lib/utils.js
CHANGED
|
@@ -3,6 +3,7 @@ import path from "path";
|
|
|
3
3
|
import { TOTP } from "totp-generator";
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
import axios from "axios";
|
|
6
|
+
import objectPath from "object-path";
|
|
6
7
|
// Function to encrypt a string
|
|
7
8
|
function encrypt(text, key = null) {
|
|
8
9
|
if (!key) {
|
|
@@ -10,8 +11,29 @@ function encrypt(text, key = null) {
|
|
|
10
11
|
}
|
|
11
12
|
return CryptoJS.AES.encrypt(text, key).toString();
|
|
12
13
|
}
|
|
14
|
+
function getTestDataValue(key, environment = "*") {
|
|
15
|
+
const blinqEnvPath = "data/data.json";
|
|
16
|
+
const envPath = path.resolve(process.cwd(), blinqEnvPath);
|
|
17
|
+
const envJson = JSON.parse(fs.readFileSync(envPath, "utf-8"));
|
|
18
|
+
const dataArray = envJson[environment];
|
|
19
|
+
const item = dataArray.find((item) => item.key === key);
|
|
20
|
+
// if the item is not found in the specific env, check if it exists in the default environment
|
|
21
|
+
if (!item && environment !== "*") {
|
|
22
|
+
return getTestDataValue(key, "*");
|
|
23
|
+
}
|
|
24
|
+
if (!item) {
|
|
25
|
+
throw new Error(`Key ${key} not found in data.json`);
|
|
26
|
+
}
|
|
27
|
+
if (item.DataType === "string") {
|
|
28
|
+
return item.value;
|
|
29
|
+
}
|
|
30
|
+
else if (item.DataType === "secret" || item.DataType === "totp") {
|
|
31
|
+
return decrypt(item.value, null, false);
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`Unsupported data type for key ${key}`);
|
|
34
|
+
}
|
|
13
35
|
// Function to decrypt a string
|
|
14
|
-
|
|
36
|
+
function decrypt(encryptedText, key = null, totpWait = true) {
|
|
15
37
|
if (!key) {
|
|
16
38
|
key = _findKey();
|
|
17
39
|
}
|
|
@@ -23,13 +45,13 @@ async function decrypt(encryptedText, key = null, totpWait = true) {
|
|
|
23
45
|
const bytes = CryptoJS.AES.decrypt(encryptedText, key);
|
|
24
46
|
encryptedText = bytes.toString(CryptoJS.enc.Utf8);
|
|
25
47
|
let { otp, expires } = TOTP.generate(encryptedText);
|
|
26
|
-
if (totpWait) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
48
|
+
// if (totpWait) {
|
|
49
|
+
// // expires is in unix time, check if we have at least 10 seconds left, if it's less than wait for the expires time
|
|
50
|
+
// if (expires - Date.now() < 10000) {
|
|
51
|
+
// await new Promise((resolve) => setTimeout(resolve, (expires - Date.now() + 1000) % 30000));
|
|
52
|
+
// ({ otp, expires } = TOTP.generate(encryptedText));
|
|
53
|
+
// }
|
|
54
|
+
// }
|
|
33
55
|
return otp;
|
|
34
56
|
}
|
|
35
57
|
if (encryptedText.startsWith("mask:")) {
|
|
@@ -119,6 +141,9 @@ function escapeRegex(str) {
|
|
|
119
141
|
return str.replace(escapedRegex, "\\$&");
|
|
120
142
|
}
|
|
121
143
|
function _findKey() {
|
|
144
|
+
if (process.env.PROJECT_KEY) {
|
|
145
|
+
return process.env.PROJECT_KEY;
|
|
146
|
+
}
|
|
122
147
|
if (process.env.PROJECT_ID) {
|
|
123
148
|
return process.env.PROJECT_ID;
|
|
124
149
|
}
|
|
@@ -141,6 +166,9 @@ function _getDataFile(world = null, context = null, web = null) {
|
|
|
141
166
|
else if (context && context.reportFolder) {
|
|
142
167
|
dataFile = path.join(context.reportFolder, "data.json");
|
|
143
168
|
}
|
|
169
|
+
else if (web && web.project_path) {
|
|
170
|
+
dataFile = path.join(web.project_path, "data", "data.json");
|
|
171
|
+
}
|
|
144
172
|
else {
|
|
145
173
|
dataFile = "data.json";
|
|
146
174
|
}
|
|
@@ -166,80 +194,93 @@ function _getTestDataFile(world = null, context = null, web = null) {
|
|
|
166
194
|
return dataFile;
|
|
167
195
|
}
|
|
168
196
|
function _getTestData(world = null, context = null, web = null) {
|
|
169
|
-
const dataFile =
|
|
197
|
+
const dataFile = _getDataFile(world, context, web);
|
|
170
198
|
let data = {};
|
|
171
199
|
if (fs.existsSync(dataFile)) {
|
|
172
200
|
data = JSON.parse(fs.readFileSync(dataFile, "utf8"));
|
|
173
201
|
}
|
|
174
202
|
return data;
|
|
175
203
|
}
|
|
176
|
-
async function replaceWithLocalTestData(value, world, _decrypt = true, totpWait = true, context = null, web = null) {
|
|
204
|
+
async function replaceWithLocalTestData(value, world, _decrypt = true, totpWait = true, context = null, web = null, throwError = true) {
|
|
177
205
|
if (!value) {
|
|
178
206
|
return value;
|
|
179
207
|
}
|
|
180
|
-
let env = "";
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
208
|
+
let env = context?.environment?.name || "";
|
|
209
|
+
// used for unit tests
|
|
210
|
+
let testData = context?._data_ ? context._data_ : _getTestData(world, context, web);
|
|
211
|
+
const resolveDatePlaceholder = async (key) => {
|
|
212
|
+
const dateQuery = key.substring(5);
|
|
213
|
+
const parts = dateQuery.split(">>");
|
|
214
|
+
const returnTemplate = parts[1] || null;
|
|
215
|
+
const serviceUrl = _getServerUrl();
|
|
216
|
+
const config = {
|
|
217
|
+
method: "post",
|
|
218
|
+
url: `${serviceUrl}/api/runs/find-date/find`,
|
|
219
|
+
headers: {
|
|
220
|
+
"x-source": "true",
|
|
221
|
+
"Content-Type": "application/json",
|
|
222
|
+
Authorization: `Bearer ${process.env.TOKEN}`,
|
|
223
|
+
},
|
|
224
|
+
data: JSON.stringify({ value: parts[0] }),
|
|
225
|
+
};
|
|
226
|
+
const result = await axios.request(config);
|
|
227
|
+
if (result.status !== 200 || !result.data?.status || !result.data.result) {
|
|
228
|
+
console.error("Failed to find date");
|
|
229
|
+
throw new Error("Failed to find date");
|
|
230
|
+
}
|
|
231
|
+
return formatDate(result.data.result, returnTemplate);
|
|
232
|
+
};
|
|
233
|
+
const resolvePlaceholder = async (key) => {
|
|
234
|
+
if (key.startsWith("date:")) {
|
|
235
|
+
return await resolveDatePlaceholder(key);
|
|
236
|
+
}
|
|
237
|
+
let resolved = replaceTestDataValue(env, key, testData, _decrypt);
|
|
238
|
+
if (resolved !== null)
|
|
239
|
+
return resolved;
|
|
240
|
+
resolved = replaceTestDataValue("*", key, testData, _decrypt);
|
|
241
|
+
if (resolved !== null)
|
|
242
|
+
return resolved;
|
|
243
|
+
if (throwError) {
|
|
244
|
+
throw new Error(`Parameter "{{${key}}}" is undefined in the test data`);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
console.warn(`Parameter "{{${key}}}" is undefined in the test data`);
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
const recursiveReplace = async (input) => {
|
|
252
|
+
const regex = /{{([^{}]+)}}/g;
|
|
253
|
+
let result = input;
|
|
254
|
+
let match;
|
|
255
|
+
let anyChange = false;
|
|
256
|
+
while ((match = regex.exec(result)) !== null) {
|
|
257
|
+
const fullMatch = match[0];
|
|
258
|
+
const key = match[1].trim();
|
|
259
|
+
const replacement = await resolvePlaceholder(key);
|
|
260
|
+
if (replacement !== null) {
|
|
261
|
+
result = result.replace(fullMatch, replacement);
|
|
262
|
+
anyChange = true;
|
|
263
|
+
regex.lastIndex = 0; // reset index due to string mutation
|
|
228
264
|
}
|
|
229
265
|
}
|
|
230
|
-
|
|
266
|
+
// If replacements were made, repeat to resolve nested placeholders
|
|
267
|
+
return anyChange ? await recursiveReplace(result) : result;
|
|
268
|
+
};
|
|
269
|
+
value = await recursiveReplace(value);
|
|
270
|
+
// Only evaluate if value contains a JS expression
|
|
231
271
|
if ((value.startsWith("secret:") || value.startsWith("totp:") || value.startsWith("mask:")) && _decrypt) {
|
|
232
|
-
return
|
|
272
|
+
return decrypt(value, null, totpWait);
|
|
233
273
|
}
|
|
234
|
-
// check if the value is ${}
|
|
235
274
|
if (value.startsWith("${") && value.endsWith("}")) {
|
|
236
|
-
value = evaluateString(value, context
|
|
275
|
+
value = evaluateString(value, context?.examplesRow);
|
|
237
276
|
}
|
|
238
277
|
return value;
|
|
239
278
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
279
|
+
function replaceTestDataValue(env, key, testData, decryptValue = true) {
|
|
280
|
+
const path = key.split(".");
|
|
281
|
+
const value = objectPath.get(testData, path);
|
|
282
|
+
if (value && !Array.isArray(value)) {
|
|
283
|
+
return value;
|
|
243
284
|
}
|
|
244
285
|
const dataArray = testData[env];
|
|
245
286
|
if (!dataArray) {
|
|
@@ -250,7 +291,15 @@ async function replaceTestDataValue(env, key, testData) {
|
|
|
250
291
|
continue;
|
|
251
292
|
}
|
|
252
293
|
if (obj.DataType === "secret") {
|
|
253
|
-
|
|
294
|
+
if (decryptValue === true) {
|
|
295
|
+
return decrypt(`secret:${obj.value}`, null);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
return `secret:${obj.value}`;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
if (obj.DataType === "totp") {
|
|
302
|
+
return `totp:${obj.value}`;
|
|
254
303
|
}
|
|
255
304
|
return obj.value;
|
|
256
305
|
}
|
|
@@ -433,6 +482,9 @@ export async function performAction(action, element, options, web, state, _param
|
|
|
433
482
|
usedOptions.timeout = 1000;
|
|
434
483
|
}
|
|
435
484
|
}
|
|
485
|
+
if (usedOptions && usedOptions.clickCount) {
|
|
486
|
+
state.info.count = usedOptions.clickCount;
|
|
487
|
+
}
|
|
436
488
|
try {
|
|
437
489
|
await element.click(usedOptions);
|
|
438
490
|
}
|
|
@@ -630,7 +682,7 @@ const KEYBOARD_EVENTS = [
|
|
|
630
682
|
"TVAudioDescription",
|
|
631
683
|
];
|
|
632
684
|
function unEscapeString(str) {
|
|
633
|
-
const placeholder = "
|
|
685
|
+
const placeholder = "\\n";
|
|
634
686
|
str = str.replace(new RegExp(placeholder, "g"), "\n");
|
|
635
687
|
return str;
|
|
636
688
|
}
|
|
@@ -653,5 +705,17 @@ function _getServerUrl() {
|
|
|
653
705
|
}
|
|
654
706
|
return serviceUrl;
|
|
655
707
|
}
|
|
656
|
-
|
|
708
|
+
function tryParseJson(input) {
|
|
709
|
+
if (typeof input === "string") {
|
|
710
|
+
try {
|
|
711
|
+
return JSON.parse(input);
|
|
712
|
+
}
|
|
713
|
+
catch {
|
|
714
|
+
// If parsing fails, return the original input (assumed to be plain text or another format)
|
|
715
|
+
return input;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
return input;
|
|
719
|
+
}
|
|
720
|
+
export { encrypt, decrypt, replaceWithLocalTestData, maskValue, _copyContext, scrollPageToLoadLazyElements, _fixUsingParams, getWebLogFile, _fixLocatorUsingParams, _isObject, scanAndManipulate, KEYBOARD_EVENTS, unEscapeString, _getServerUrl, _convertToRegexQuery, extractStepExampleParameters, _getDataFile, tryParseJson, getTestDataValue, };
|
|
657
721
|
//# sourceMappingURL=utils.js.map
|