automation_model 1.0.658-dev → 1.0.658-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/route.d.ts +33 -0
- package/lib/route.js +268 -0
- package/lib/route.js.map +1 -0
- 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 -25
- package/lib/stable_browser.js +883 -221
- 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 +16 -2
- package/lib/utils.js +109 -60
- package/lib/utils.js.map +1 -1
- package/package.json +13 -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
|
@@ -4,7 +4,20 @@ declare function decrypt(encryptedText: string, key?: string | null, totpWait?:
|
|
|
4
4
|
export declare function testForRegex(text: string): boolean;
|
|
5
5
|
declare function _convertToRegexQuery(text: string, isRegex: boolean, fullMatch: boolean, ignoreCase: boolean): string;
|
|
6
6
|
declare function _getDataFile(world?: any, context?: any, web?: any): string;
|
|
7
|
-
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;
|
|
8
21
|
declare function maskValue(value: string): string;
|
|
9
22
|
declare function _copyContext(from: any, to: any): void;
|
|
10
23
|
declare function scrollPageToLoadLazyElements(page: any): Promise<void>;
|
|
@@ -19,4 +32,5 @@ export declare function performAction(action: string, element: any, options: any
|
|
|
19
32
|
declare const KEYBOARD_EVENTS: string[];
|
|
20
33
|
declare function unEscapeString(str: string): string;
|
|
21
34
|
declare function _getServerUrl(): string;
|
|
22
|
-
|
|
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) {
|
|
@@ -16,6 +17,10 @@ function getTestDataValue(key, environment = "*") {
|
|
|
16
17
|
const envJson = JSON.parse(fs.readFileSync(envPath, "utf-8"));
|
|
17
18
|
const dataArray = envJson[environment];
|
|
18
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
|
+
}
|
|
19
24
|
if (!item) {
|
|
20
25
|
throw new Error(`Key ${key} not found in data.json`);
|
|
21
26
|
}
|
|
@@ -136,6 +141,9 @@ function escapeRegex(str) {
|
|
|
136
141
|
return str.replace(escapedRegex, "\\$&");
|
|
137
142
|
}
|
|
138
143
|
function _findKey() {
|
|
144
|
+
if (process.env.PROJECT_KEY) {
|
|
145
|
+
return process.env.PROJECT_KEY;
|
|
146
|
+
}
|
|
139
147
|
if (process.env.PROJECT_ID) {
|
|
140
148
|
return process.env.PROJECT_ID;
|
|
141
149
|
}
|
|
@@ -158,6 +166,9 @@ function _getDataFile(world = null, context = null, web = null) {
|
|
|
158
166
|
else if (context && context.reportFolder) {
|
|
159
167
|
dataFile = path.join(context.reportFolder, "data.json");
|
|
160
168
|
}
|
|
169
|
+
else if (web && web.project_path) {
|
|
170
|
+
dataFile = path.join(web.project_path, "data", "data.json");
|
|
171
|
+
}
|
|
161
172
|
else {
|
|
162
173
|
dataFile = "data.json";
|
|
163
174
|
}
|
|
@@ -183,80 +194,95 @@ function _getTestDataFile(world = null, context = null, web = null) {
|
|
|
183
194
|
return dataFile;
|
|
184
195
|
}
|
|
185
196
|
function _getTestData(world = null, context = null, web = null) {
|
|
186
|
-
const dataFile =
|
|
197
|
+
const dataFile = _getDataFile(world, context, web);
|
|
187
198
|
let data = {};
|
|
188
199
|
if (fs.existsSync(dataFile)) {
|
|
189
|
-
|
|
200
|
+
// convert \r\n to \n
|
|
201
|
+
const fileContent = fs.readFileSync(dataFile, "utf8").replace(/\r\n/g, "\n");
|
|
202
|
+
data = JSON.parse(fileContent);
|
|
190
203
|
}
|
|
191
204
|
return data;
|
|
192
205
|
}
|
|
193
|
-
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) {
|
|
194
207
|
if (!value) {
|
|
195
208
|
return value;
|
|
196
209
|
}
|
|
197
|
-
let env = "";
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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
|
|
245
266
|
}
|
|
246
267
|
}
|
|
247
|
-
|
|
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
|
|
248
273
|
if ((value.startsWith("secret:") || value.startsWith("totp:") || value.startsWith("mask:")) && _decrypt) {
|
|
249
274
|
return decrypt(value, null, totpWait);
|
|
250
275
|
}
|
|
251
|
-
// check if the value is ${}
|
|
252
276
|
if (value.startsWith("${") && value.endsWith("}")) {
|
|
253
|
-
value = evaluateString(value, context
|
|
277
|
+
value = evaluateString(value, context?.examplesRow);
|
|
254
278
|
}
|
|
255
279
|
return value;
|
|
256
280
|
}
|
|
257
|
-
function replaceTestDataValue(env, key, testData) {
|
|
258
|
-
|
|
259
|
-
|
|
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;
|
|
260
286
|
}
|
|
261
287
|
const dataArray = testData[env];
|
|
262
288
|
if (!dataArray) {
|
|
@@ -267,7 +293,15 @@ function replaceTestDataValue(env, key, testData) {
|
|
|
267
293
|
continue;
|
|
268
294
|
}
|
|
269
295
|
if (obj.DataType === "secret") {
|
|
270
|
-
|
|
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}`;
|
|
271
305
|
}
|
|
272
306
|
return obj.value;
|
|
273
307
|
}
|
|
@@ -450,6 +484,9 @@ export async function performAction(action, element, options, web, state, _param
|
|
|
450
484
|
usedOptions.timeout = 1000;
|
|
451
485
|
}
|
|
452
486
|
}
|
|
487
|
+
if (usedOptions && usedOptions.clickCount) {
|
|
488
|
+
state.info.count = usedOptions.clickCount;
|
|
489
|
+
}
|
|
453
490
|
try {
|
|
454
491
|
await element.click(usedOptions);
|
|
455
492
|
}
|
|
@@ -647,7 +684,7 @@ const KEYBOARD_EVENTS = [
|
|
|
647
684
|
"TVAudioDescription",
|
|
648
685
|
];
|
|
649
686
|
function unEscapeString(str) {
|
|
650
|
-
const placeholder = "
|
|
687
|
+
const placeholder = "\\n";
|
|
651
688
|
str = str.replace(new RegExp(placeholder, "g"), "\n");
|
|
652
689
|
return str;
|
|
653
690
|
}
|
|
@@ -670,5 +707,17 @@ function _getServerUrl() {
|
|
|
670
707
|
}
|
|
671
708
|
return serviceUrl;
|
|
672
709
|
}
|
|
673
|
-
|
|
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, };
|
|
674
723
|
//# sourceMappingURL=utils.js.map
|