automation_model 1.0.655-dev → 1.0.655-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 +145 -58
- 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 +907 -187
- 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 +18 -3
- package/lib/utils.js +135 -69
- 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,23 @@
|
|
|
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
|
|
7
|
+
declare function _getTestData(world?: null, context?: null, web?: null): {};
|
|
8
|
+
declare function replaceWithLocalTestData(value: string, world: any, _decrypt?: boolean, totpWait?: boolean, context?: any, web?: any, throwError?: boolean): Promise<string>;
|
|
9
|
+
interface TestDataArray {
|
|
10
|
+
[key: string]: {
|
|
11
|
+
DataType: string;
|
|
12
|
+
key: string;
|
|
13
|
+
value: string;
|
|
14
|
+
}[];
|
|
15
|
+
}
|
|
16
|
+
interface TestDataValue {
|
|
17
|
+
[key: string]: string;
|
|
18
|
+
}
|
|
19
|
+
type TestData = TestDataArray | TestDataValue;
|
|
20
|
+
declare function replaceTestDataValue(env: string, key: string, testData: TestData, decryptValue?: boolean): string | null;
|
|
7
21
|
declare function maskValue(value: string): string;
|
|
8
22
|
declare function _copyContext(from: any, to: any): void;
|
|
9
23
|
declare function scrollPageToLoadLazyElements(page: any): Promise<void>;
|
|
@@ -18,4 +32,5 @@ export declare function performAction(action: string, element: any, options: any
|
|
|
18
32
|
declare const KEYBOARD_EVENTS: string[];
|
|
19
33
|
declare function unEscapeString(str: string): string;
|
|
20
34
|
declare function _getServerUrl(): string;
|
|
21
|
-
|
|
35
|
+
declare function tryParseJson(input: any): any;
|
|
36
|
+
export { encrypt, decrypt, replaceWithLocalTestData, maskValue, _copyContext, scrollPageToLoadLazyElements, _fixUsingParams, getWebLogFile, _fixLocatorUsingParams, _isObject, scanAndManipulate, KEYBOARD_EVENTS, unEscapeString, Params, _getServerUrl, _convertToRegexQuery, extractStepExampleParameters, _getDataFile, tryParseJson, getTestDataValue, replaceTestDataValue, _getTestData, };
|
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,95 @@ 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
|
+
// convert \r\n to \n
|
|
201
|
+
const fileContent = fs.readFileSync(dataFile, "utf8").replace(/\r\n/g, "\n");
|
|
202
|
+
data = JSON.parse(fileContent);
|
|
173
203
|
}
|
|
174
204
|
return data;
|
|
175
205
|
}
|
|
176
|
-
async function replaceWithLocalTestData(value, world, _decrypt = true, totpWait = true, context = null, web = null) {
|
|
206
|
+
async function replaceWithLocalTestData(value, world, _decrypt = true, totpWait = true, context = null, web = null, throwError = true) {
|
|
177
207
|
if (!value) {
|
|
178
208
|
return value;
|
|
179
209
|
}
|
|
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
|
-
|
|
210
|
+
let env = context?.environment?.name || "";
|
|
211
|
+
// used for unit tests
|
|
212
|
+
let testData = context?._data_ ? context._data_ : _getTestData(world, context, web);
|
|
213
|
+
const resolveDatePlaceholder = async (key) => {
|
|
214
|
+
const dateQuery = key.substring(5);
|
|
215
|
+
const parts = dateQuery.split(">>");
|
|
216
|
+
const returnTemplate = parts[1] || null;
|
|
217
|
+
const serviceUrl = _getServerUrl();
|
|
218
|
+
const config = {
|
|
219
|
+
method: "post",
|
|
220
|
+
url: `${serviceUrl}/api/runs/find-date/find`,
|
|
221
|
+
headers: {
|
|
222
|
+
"x-source": "true",
|
|
223
|
+
"Content-Type": "application/json",
|
|
224
|
+
Authorization: `Bearer ${process.env.TOKEN}`,
|
|
225
|
+
},
|
|
226
|
+
data: JSON.stringify({ value: parts[0] }),
|
|
227
|
+
};
|
|
228
|
+
const result = await axios.request(config);
|
|
229
|
+
if (result.status !== 200 || !result.data?.status || !result.data.result) {
|
|
230
|
+
console.error("Failed to find date");
|
|
231
|
+
throw new Error("Failed to find date");
|
|
232
|
+
}
|
|
233
|
+
return formatDate(result.data.result, returnTemplate);
|
|
234
|
+
};
|
|
235
|
+
const resolvePlaceholder = async (key) => {
|
|
236
|
+
if (key.startsWith("date:")) {
|
|
237
|
+
return await resolveDatePlaceholder(key);
|
|
238
|
+
}
|
|
239
|
+
let resolved = replaceTestDataValue(env, key, testData, _decrypt);
|
|
240
|
+
if (resolved !== null)
|
|
241
|
+
return resolved;
|
|
242
|
+
resolved = replaceTestDataValue("*", key, testData, _decrypt);
|
|
243
|
+
if (resolved !== null)
|
|
244
|
+
return resolved;
|
|
245
|
+
if (throwError) {
|
|
246
|
+
throw new Error(`Parameter "{{${key}}}" is undefined in the test data`);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
console.warn(`Parameter "{{${key}}}" is undefined in the test data`);
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
const recursiveReplace = async (input) => {
|
|
254
|
+
const regex = /{{([^{}]+)}}/g;
|
|
255
|
+
let result = input;
|
|
256
|
+
let match;
|
|
257
|
+
let anyChange = false;
|
|
258
|
+
while ((match = regex.exec(result)) !== null) {
|
|
259
|
+
const fullMatch = match[0];
|
|
260
|
+
const key = match[1].trim();
|
|
261
|
+
const replacement = await resolvePlaceholder(key);
|
|
262
|
+
if (replacement !== null) {
|
|
263
|
+
result = result.replace(fullMatch, replacement);
|
|
264
|
+
anyChange = true;
|
|
265
|
+
regex.lastIndex = 0; // reset index due to string mutation
|
|
228
266
|
}
|
|
229
267
|
}
|
|
230
|
-
|
|
268
|
+
// If replacements were made, repeat to resolve nested placeholders
|
|
269
|
+
return anyChange ? await recursiveReplace(result) : result;
|
|
270
|
+
};
|
|
271
|
+
value = await recursiveReplace(value);
|
|
272
|
+
// Only evaluate if value contains a JS expression
|
|
231
273
|
if ((value.startsWith("secret:") || value.startsWith("totp:") || value.startsWith("mask:")) && _decrypt) {
|
|
232
|
-
return
|
|
274
|
+
return decrypt(value, null, totpWait);
|
|
233
275
|
}
|
|
234
|
-
// check if the value is ${}
|
|
235
276
|
if (value.startsWith("${") && value.endsWith("}")) {
|
|
236
|
-
value = evaluateString(value, context
|
|
277
|
+
value = evaluateString(value, context?.examplesRow);
|
|
237
278
|
}
|
|
238
279
|
return value;
|
|
239
280
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
281
|
+
function replaceTestDataValue(env, key, testData, decryptValue = true) {
|
|
282
|
+
const path = key.split(".");
|
|
283
|
+
const value = objectPath.get(testData, path);
|
|
284
|
+
if (value && !Array.isArray(value)) {
|
|
285
|
+
return value;
|
|
243
286
|
}
|
|
244
287
|
const dataArray = testData[env];
|
|
245
288
|
if (!dataArray) {
|
|
@@ -250,7 +293,15 @@ async function replaceTestDataValue(env, key, testData) {
|
|
|
250
293
|
continue;
|
|
251
294
|
}
|
|
252
295
|
if (obj.DataType === "secret") {
|
|
253
|
-
|
|
296
|
+
if (decryptValue === true) {
|
|
297
|
+
return decrypt(`secret:${obj.value}`, null);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
return `secret:${obj.value}`;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (obj.DataType === "totp") {
|
|
304
|
+
return `totp:${obj.value}`;
|
|
254
305
|
}
|
|
255
306
|
return obj.value;
|
|
256
307
|
}
|
|
@@ -433,6 +484,9 @@ export async function performAction(action, element, options, web, state, _param
|
|
|
433
484
|
usedOptions.timeout = 1000;
|
|
434
485
|
}
|
|
435
486
|
}
|
|
487
|
+
if (usedOptions && usedOptions.clickCount) {
|
|
488
|
+
state.info.count = usedOptions.clickCount;
|
|
489
|
+
}
|
|
436
490
|
try {
|
|
437
491
|
await element.click(usedOptions);
|
|
438
492
|
}
|
|
@@ -630,7 +684,7 @@ const KEYBOARD_EVENTS = [
|
|
|
630
684
|
"TVAudioDescription",
|
|
631
685
|
];
|
|
632
686
|
function unEscapeString(str) {
|
|
633
|
-
const placeholder = "
|
|
687
|
+
const placeholder = "\\n";
|
|
634
688
|
str = str.replace(new RegExp(placeholder, "g"), "\n");
|
|
635
689
|
return str;
|
|
636
690
|
}
|
|
@@ -653,5 +707,17 @@ function _getServerUrl() {
|
|
|
653
707
|
}
|
|
654
708
|
return serviceUrl;
|
|
655
709
|
}
|
|
656
|
-
|
|
710
|
+
function tryParseJson(input) {
|
|
711
|
+
if (typeof input === "string") {
|
|
712
|
+
try {
|
|
713
|
+
return JSON.parse(input);
|
|
714
|
+
}
|
|
715
|
+
catch {
|
|
716
|
+
// If parsing fails, return the original input (assumed to be plain text or another format)
|
|
717
|
+
return input;
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
return input;
|
|
721
|
+
}
|
|
722
|
+
export { encrypt, decrypt, replaceWithLocalTestData, maskValue, _copyContext, scrollPageToLoadLazyElements, _fixUsingParams, getWebLogFile, _fixLocatorUsingParams, _isObject, scanAndManipulate, KEYBOARD_EVENTS, unEscapeString, _getServerUrl, _convertToRegexQuery, extractStepExampleParameters, _getDataFile, tryParseJson, getTestDataValue, replaceTestDataValue, _getTestData, };
|
|
657
723
|
//# sourceMappingURL=utils.js.map
|