automation_model 1.0.624-dev → 1.0.624-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 +130 -0
- 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 +99 -28
- package/lib/auto_page.js.map +1 -1
- package/lib/browser_manager.js +68 -23
- 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 +4 -4
- package/lib/command_common.js +34 -16
- package/lib/command_common.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/file_checker.d.ts +1 -0
- package/lib/file_checker.js +61 -0
- package/lib/file_checker.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/init_browser.d.ts +2 -2
- package/lib/init_browser.js +33 -27
- package/lib/init_browser.js.map +1 -1
- package/lib/locate_element.js +2 -2
- package/lib/locate_element.js.map +1 -1
- package/lib/network.d.ts +1 -1
- package/lib/network.js +5 -5
- package/lib/network.js.map +1 -1
- package/lib/snapshot_validation.d.ts +37 -0
- package/lib/snapshot_validation.js +246 -0
- package/lib/snapshot_validation.js.map +1 -0
- package/lib/stable_browser.d.ts +21 -1
- package/lib/stable_browser.js +654 -139
- package/lib/stable_browser.js.map +1 -1
- package/lib/table_helper.d.ts +19 -0
- package/lib/table_helper.js +116 -0
- package/lib/table_helper.js.map +1 -0
- package/lib/test_context.d.ts +2 -0
- package/lib/test_context.js +2 -0
- package/lib/test_context.js.map +1 -1
- package/lib/utils.d.ts +8 -4
- package/lib/utils.js +221 -20
- package/lib/utils.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export async function findHighestWithSameInnerText(cssSelector, scope, web) {
|
|
2
|
+
await web._highlightElements(scope, cssSelector);
|
|
3
|
+
const element = await scope.locator(cssSelector).first();
|
|
4
|
+
if (!element) {
|
|
5
|
+
throw new Error("header element not found");
|
|
6
|
+
}
|
|
7
|
+
const innerText = await element.innerText();
|
|
8
|
+
// climb to the parent element until the innerText is changing, get the top element with the same innerText
|
|
9
|
+
let climb = 0;
|
|
10
|
+
let topElement = element;
|
|
11
|
+
let elementCss = cssSelector;
|
|
12
|
+
while (true) {
|
|
13
|
+
climb++;
|
|
14
|
+
// create a climb xpath: 1: .. 2: ../.. etc.
|
|
15
|
+
const climbXpath = "xpath=" + "../".repeat(climb).slice(0, -1);
|
|
16
|
+
const climbCss = elementCss + " >> " + climbXpath;
|
|
17
|
+
const climbElement = await scope.locator(climbCss).first();
|
|
18
|
+
if (!climbElement) {
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
const climbInnerText = await climbElement.innerText();
|
|
22
|
+
if (climbInnerText !== innerText) {
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
topElement = climbElement;
|
|
26
|
+
elementCss = climbCss;
|
|
27
|
+
}
|
|
28
|
+
return { element: topElement, cssSelector: elementCss, climb: climb, innerText: innerText };
|
|
29
|
+
}
|
|
30
|
+
export async function findCellRectangle(headerResult, rowResult, web, info) {
|
|
31
|
+
await web.scrollIfNeeded(rowResult.element, info);
|
|
32
|
+
// find the header cell and the row cell location
|
|
33
|
+
const headerRect = await headerResult.element.boundingBox();
|
|
34
|
+
const rowRect = await rowResult.element.boundingBox();
|
|
35
|
+
if (!headerRect || !rowRect) {
|
|
36
|
+
throw new Error("element not found");
|
|
37
|
+
}
|
|
38
|
+
// found there rectengle of cell that is in the header horizontal and the row vertical
|
|
39
|
+
return {
|
|
40
|
+
x: headerRect.x,
|
|
41
|
+
y: rowRect.y,
|
|
42
|
+
width: headerRect.width,
|
|
43
|
+
height: rowRect.height,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export async function _findCellArea(headerText, rowText, web, state) {
|
|
47
|
+
const headerFoundElements = await web.findTextInAllFrames({}, {}, headerText, state);
|
|
48
|
+
if (headerFoundElements.length === 0) {
|
|
49
|
+
throw new Error("header not found");
|
|
50
|
+
}
|
|
51
|
+
if (headerFoundElements.length > 1) {
|
|
52
|
+
throw new Error("multiple headers found");
|
|
53
|
+
}
|
|
54
|
+
const rowFoundElements = await web.findTextInAllFrames({}, {}, rowText, state);
|
|
55
|
+
if (rowFoundElements.length === 0) {
|
|
56
|
+
throw new Error("row not found");
|
|
57
|
+
}
|
|
58
|
+
if (rowFoundElements.length > 1) {
|
|
59
|
+
throw new Error("multiple rows found");
|
|
60
|
+
}
|
|
61
|
+
const headerScope = headerFoundElements[0].frame;
|
|
62
|
+
const headerResult = await findHighestWithSameInnerText(`[data-blinq-id-${headerFoundElements[0].randomToken}]`, headerScope, web);
|
|
63
|
+
const rowScope = rowFoundElements[0].frame;
|
|
64
|
+
const rowResult = await findHighestWithSameInnerText(`[data-blinq-id-${rowFoundElements[0].randomToken}]`, rowScope, web);
|
|
65
|
+
return await findCellRectangle(headerResult, rowResult, web, state.info);
|
|
66
|
+
}
|
|
67
|
+
export async function findElementsInArea(cssSelector, area, web, options) {
|
|
68
|
+
if (!cssSelector) {
|
|
69
|
+
cssSelector = "*";
|
|
70
|
+
}
|
|
71
|
+
const frames = await web.page.frames();
|
|
72
|
+
const elements = [];
|
|
73
|
+
for (const scope of frames) {
|
|
74
|
+
const count = await scope.locator(cssSelector).count();
|
|
75
|
+
for (let i = 0; i < count; i++) {
|
|
76
|
+
const element = await scope.locator(cssSelector).nth(i);
|
|
77
|
+
elements.push(element);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const foundElements = [];
|
|
81
|
+
let hTollarance = 10;
|
|
82
|
+
let vTollarance = 10;
|
|
83
|
+
if (options && options.hTollarance && options.vTollarance) {
|
|
84
|
+
hTollarance = options.hTollarance;
|
|
85
|
+
vTollarance = options.vTollarance;
|
|
86
|
+
}
|
|
87
|
+
for (const element of elements) {
|
|
88
|
+
const rect = await element.boundingBox();
|
|
89
|
+
if (!rect) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (rect.x >= area.x - hTollarance &&
|
|
93
|
+
rect.x + rect.width <= area.x + area.width + hTollarance &&
|
|
94
|
+
rect.y >= area.y - vTollarance &&
|
|
95
|
+
rect.y + rect.height <= area.y + area.height + vTollarance) {
|
|
96
|
+
foundElements.push(element);
|
|
97
|
+
}
|
|
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
|
+
}
|
|
114
|
+
return foundElements;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=table_helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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
|
@@ -5,11 +5,13 @@ import { Api } from "./api.js";
|
|
|
5
5
|
import { InitScripts } from "./generation_scripts.js";
|
|
6
6
|
declare class TestContext {
|
|
7
7
|
stable: StableBrowser | null;
|
|
8
|
+
web: StableBrowser | null;
|
|
8
9
|
browser: PlaywrightBrowser | null;
|
|
9
10
|
playContext: BrowserContext | null;
|
|
10
11
|
page: Page | null;
|
|
11
12
|
environment: Environment | null;
|
|
12
13
|
reportFolder: string | null;
|
|
14
|
+
snapshotFolder: string | null;
|
|
13
15
|
api: Api | null;
|
|
14
16
|
navigate: boolean;
|
|
15
17
|
headless: boolean;
|
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,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,8 +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;
|
|
4
|
+
export declare function testForRegex(text: string): boolean;
|
|
3
5
|
declare function _convertToRegexQuery(text: string, isRegex: boolean, fullMatch: boolean, ignoreCase: boolean): string;
|
|
4
|
-
declare function _getDataFile(world?: any, context?: any,
|
|
5
|
-
declare function replaceWithLocalTestData(value: string, world: any, _decrypt?: boolean, totpWait?: boolean, context?: any,
|
|
6
|
+
declare function _getDataFile(world?: any, context?: any, web?: any): string;
|
|
7
|
+
declare function replaceWithLocalTestData(value: string, world: any, _decrypt?: boolean, totpWait?: boolean, context?: any, web?: any, throwError?: boolean): Promise<string>;
|
|
6
8
|
declare function maskValue(value: string): string;
|
|
7
9
|
declare function _copyContext(from: any, to: any): void;
|
|
8
10
|
declare function scrollPageToLoadLazyElements(page: any): Promise<void>;
|
|
@@ -13,7 +15,9 @@ declare function _fixLocatorUsingParams(locator: any, _params: Params): any;
|
|
|
13
15
|
declare function _isObject(value: any): any;
|
|
14
16
|
declare function scanAndManipulate(currentObj: any, _params: Params): void;
|
|
15
17
|
declare function extractStepExampleParameters(step: any): any;
|
|
18
|
+
export declare function performAction(action: string, element: any, options: any, web: any, state: any, _params: Params): Promise<void>;
|
|
16
19
|
declare const KEYBOARD_EVENTS: string[];
|
|
17
20
|
declare function unEscapeString(str: string): string;
|
|
18
21
|
declare function _getServerUrl(): string;
|
|
19
|
-
|
|
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
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import CryptoJS from "crypto-js";
|
|
2
|
-
import objectPath from "object-path";
|
|
3
2
|
import path from "path";
|
|
4
3
|
import { TOTP } from "totp-generator";
|
|
5
4
|
import fs from "fs";
|
|
6
5
|
import axios from "axios";
|
|
6
|
+
import objectPath from "object-path";
|
|
7
7
|
// Function to encrypt a string
|
|
8
8
|
function encrypt(text, key = null) {
|
|
9
9
|
if (!key) {
|
|
@@ -11,8 +11,29 @@ function encrypt(text, key = null) {
|
|
|
11
11
|
}
|
|
12
12
|
return CryptoJS.AES.encrypt(text, key).toString();
|
|
13
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
|
+
}
|
|
14
35
|
// Function to decrypt a string
|
|
15
|
-
|
|
36
|
+
function decrypt(encryptedText, key = null, totpWait = true) {
|
|
16
37
|
if (!key) {
|
|
17
38
|
key = _findKey();
|
|
18
39
|
}
|
|
@@ -24,13 +45,13 @@ async function decrypt(encryptedText, key = null, totpWait = true) {
|
|
|
24
45
|
const bytes = CryptoJS.AES.decrypt(encryptedText, key);
|
|
25
46
|
encryptedText = bytes.toString(CryptoJS.enc.Utf8);
|
|
26
47
|
let { otp, expires } = TOTP.generate(encryptedText);
|
|
27
|
-
if (totpWait) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
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
|
+
// }
|
|
34
55
|
return otp;
|
|
35
56
|
}
|
|
36
57
|
if (encryptedText.startsWith("mask:")) {
|
|
@@ -39,6 +60,22 @@ async function decrypt(encryptedText, key = null, totpWait = true) {
|
|
|
39
60
|
const bytes = CryptoJS.AES.decrypt(encryptedText, key);
|
|
40
61
|
return bytes.toString(CryptoJS.enc.Utf8);
|
|
41
62
|
}
|
|
63
|
+
export function testForRegex(text) {
|
|
64
|
+
const regexEndPattern = /\/([gimuy]*)$/;
|
|
65
|
+
if (text.startsWith("/")) {
|
|
66
|
+
const match = regexEndPattern.test(text);
|
|
67
|
+
if (match) {
|
|
68
|
+
try {
|
|
69
|
+
const regex = new RegExp(text.substring(1, text.lastIndexOf("/")), text.match(regexEndPattern)[1]);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// not regex
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
42
79
|
function _convertToRegexQuery(text, isRegex, fullMatch, ignoreCase) {
|
|
43
80
|
let query = "internal:text=/";
|
|
44
81
|
let queryEnd = "/";
|
|
@@ -49,6 +86,7 @@ function _convertToRegexQuery(text, isRegex, fullMatch, ignoreCase) {
|
|
|
49
86
|
if (match) {
|
|
50
87
|
try {
|
|
51
88
|
const regex = new RegExp(text.substring(1, text.lastIndexOf("/")), text.match(regexEndPattern)[1]);
|
|
89
|
+
text = text.replace(/"/g, '\\"');
|
|
52
90
|
return "internal:text=" + text;
|
|
53
91
|
}
|
|
54
92
|
catch {
|
|
@@ -103,6 +141,9 @@ function escapeRegex(str) {
|
|
|
103
141
|
return str.replace(escapedRegex, "\\$&");
|
|
104
142
|
}
|
|
105
143
|
function _findKey() {
|
|
144
|
+
if (process.env.PROJECT_KEY) {
|
|
145
|
+
return process.env.PROJECT_KEY;
|
|
146
|
+
}
|
|
106
147
|
if (process.env.PROJECT_ID) {
|
|
107
148
|
return process.env.PROJECT_ID;
|
|
108
149
|
}
|
|
@@ -114,39 +155,62 @@ function _findKey() {
|
|
|
114
155
|
// extract the base folder name
|
|
115
156
|
return path.basename(folder);
|
|
116
157
|
}
|
|
117
|
-
function _getDataFile(world = null, context = null,
|
|
158
|
+
function _getDataFile(world = null, context = null, web = null) {
|
|
159
|
+
let dataFile = null;
|
|
160
|
+
if (world && world.reportFolder) {
|
|
161
|
+
dataFile = path.join(world.reportFolder, "data.json");
|
|
162
|
+
}
|
|
163
|
+
else if (web && web.reportFolder) {
|
|
164
|
+
dataFile = path.join(web.reportFolder, "data.json");
|
|
165
|
+
}
|
|
166
|
+
else if (context && context.reportFolder) {
|
|
167
|
+
dataFile = path.join(context.reportFolder, "data.json");
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
dataFile = "data.json";
|
|
171
|
+
}
|
|
172
|
+
return dataFile;
|
|
173
|
+
}
|
|
174
|
+
function _getTestDataFile(world = null, context = null, web = null) {
|
|
118
175
|
let dataFile = null;
|
|
119
176
|
if (world && world.reportFolder) {
|
|
120
177
|
dataFile = path.join(world.reportFolder, "data.json");
|
|
121
178
|
}
|
|
122
|
-
else if (
|
|
123
|
-
dataFile = path.join(
|
|
179
|
+
else if (web && web.reportFolder) {
|
|
180
|
+
dataFile = path.join(web.reportFolder, "data.json");
|
|
124
181
|
}
|
|
125
182
|
else if (context && context.reportFolder) {
|
|
126
183
|
dataFile = path.join(context.reportFolder, "data.json");
|
|
127
184
|
}
|
|
185
|
+
else if (fs.existsSync(path.join("data", "data.json"))) {
|
|
186
|
+
dataFile = path.join("data", "data.json");
|
|
187
|
+
}
|
|
128
188
|
else {
|
|
129
189
|
dataFile = "data.json";
|
|
130
190
|
}
|
|
131
191
|
return dataFile;
|
|
132
192
|
}
|
|
133
|
-
function _getTestData(world = null, context = null,
|
|
134
|
-
const dataFile = _getDataFile(world, context,
|
|
193
|
+
function _getTestData(world = null, context = null, web = null) {
|
|
194
|
+
const dataFile = _getDataFile(world, context, web);
|
|
135
195
|
let data = {};
|
|
136
196
|
if (fs.existsSync(dataFile)) {
|
|
137
197
|
data = JSON.parse(fs.readFileSync(dataFile, "utf8"));
|
|
138
198
|
}
|
|
139
199
|
return data;
|
|
140
200
|
}
|
|
141
|
-
async function replaceWithLocalTestData(value, world, _decrypt = true, totpWait = true, context = null,
|
|
201
|
+
async function replaceWithLocalTestData(value, world, _decrypt = true, totpWait = true, context = null, web = null, throwError = true) {
|
|
142
202
|
if (!value) {
|
|
143
203
|
return value;
|
|
144
204
|
}
|
|
205
|
+
let env = "";
|
|
206
|
+
if (context && context.environment) {
|
|
207
|
+
env = context.environment.name;
|
|
208
|
+
}
|
|
145
209
|
// find all the accurance of {{(.*?)}} and replace with the value
|
|
146
210
|
let regex = /{{(.*?)}}/g;
|
|
147
211
|
let matches = value.match(regex);
|
|
148
212
|
if (matches) {
|
|
149
|
-
const testData = _getTestData(world, context,
|
|
213
|
+
const testData = _getTestData(world, context, web);
|
|
150
214
|
for (let i = 0; i < matches.length; i++) {
|
|
151
215
|
let match = matches[i];
|
|
152
216
|
let key = match.substring(2, match.length - 2);
|
|
@@ -176,15 +240,29 @@ async function replaceWithLocalTestData(value, world, _decrypt = true, totpWait
|
|
|
176
240
|
value = formatDate(result.data.result, returnTemplate);
|
|
177
241
|
}
|
|
178
242
|
else {
|
|
179
|
-
let newValue =
|
|
243
|
+
let newValue = replaceTestDataValue(env, key, testData, _decrypt);
|
|
180
244
|
if (newValue !== null) {
|
|
181
245
|
value = value.replace(match, newValue);
|
|
182
246
|
}
|
|
247
|
+
else {
|
|
248
|
+
newValue = replaceTestDataValue("*", key, testData, _decrypt);
|
|
249
|
+
if (newValue !== null) {
|
|
250
|
+
value = value.replace(match, newValue);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
if (throwError) {
|
|
254
|
+
throw new Error(`Parameter "{{${key}}}" is undefined in the test data`);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
console.warn(`Parameter "{{${key}}}" is undefined in the test data`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
183
261
|
}
|
|
184
262
|
}
|
|
185
263
|
}
|
|
186
264
|
if ((value.startsWith("secret:") || value.startsWith("totp:") || value.startsWith("mask:")) && _decrypt) {
|
|
187
|
-
return
|
|
265
|
+
return decrypt(value, null, totpWait);
|
|
188
266
|
}
|
|
189
267
|
// check if the value is ${}
|
|
190
268
|
if (value.startsWith("${") && value.endsWith("}")) {
|
|
@@ -192,6 +270,35 @@ async function replaceWithLocalTestData(value, world, _decrypt = true, totpWait
|
|
|
192
270
|
}
|
|
193
271
|
return value;
|
|
194
272
|
}
|
|
273
|
+
function replaceTestDataValue(env, key, testData, decryptValue = true) {
|
|
274
|
+
const path = key.split(".");
|
|
275
|
+
const value = objectPath.get(testData, path);
|
|
276
|
+
if (value && !Array.isArray(value)) {
|
|
277
|
+
return value;
|
|
278
|
+
}
|
|
279
|
+
const dataArray = testData[env];
|
|
280
|
+
if (!dataArray) {
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
for (const obj of dataArray) {
|
|
284
|
+
if (obj.key !== key) {
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
if (obj.DataType === "secret") {
|
|
288
|
+
if (decryptValue === true) {
|
|
289
|
+
return decrypt(`secret:${obj.value}`, null);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
return `secret:${obj.value}`;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (obj.DataType === "totp") {
|
|
296
|
+
return `totp:${obj.value}`;
|
|
297
|
+
}
|
|
298
|
+
return obj.value;
|
|
299
|
+
}
|
|
300
|
+
return null;
|
|
301
|
+
}
|
|
195
302
|
function evaluateString(template, parameters) {
|
|
196
303
|
if (!parameters) {
|
|
197
304
|
parameters = {};
|
|
@@ -346,6 +453,79 @@ function extractStepExampleParameters(step) {
|
|
|
346
453
|
return {};
|
|
347
454
|
}
|
|
348
455
|
}
|
|
456
|
+
export async function performAction(action, element, options, web, state, _params) {
|
|
457
|
+
let usedOptions;
|
|
458
|
+
if (!options) {
|
|
459
|
+
options = {};
|
|
460
|
+
}
|
|
461
|
+
if (!element) {
|
|
462
|
+
throw new Error("Element not found");
|
|
463
|
+
}
|
|
464
|
+
switch (action) {
|
|
465
|
+
case "click":
|
|
466
|
+
// copy any of the following options to usedOptions: button, clickCount, delay, modifiers, force, position, trial
|
|
467
|
+
usedOptions = ["button", "clickCount", "delay", "modifiers", "force", "position", "trial", "timeout"].reduce((acc, key) => {
|
|
468
|
+
if (options[key]) {
|
|
469
|
+
acc[key] = options[key];
|
|
470
|
+
}
|
|
471
|
+
return acc;
|
|
472
|
+
}, {});
|
|
473
|
+
if (!usedOptions.timeout) {
|
|
474
|
+
usedOptions.timeout = 10000;
|
|
475
|
+
if (usedOptions.position) {
|
|
476
|
+
usedOptions.timeout = 1000;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
try {
|
|
480
|
+
await element.click(usedOptions);
|
|
481
|
+
}
|
|
482
|
+
catch (e) {
|
|
483
|
+
if (usedOptions.position) {
|
|
484
|
+
// find the element bounding box
|
|
485
|
+
const rect = await element.boundingBox();
|
|
486
|
+
// calculate the x and y position
|
|
487
|
+
const x = rect.x + rect.width / 2 + (usedOptions.position.x || 0);
|
|
488
|
+
const y = rect.y + rect.height / 2 + (usedOptions.position.y || 0);
|
|
489
|
+
// click on the x and y position
|
|
490
|
+
await web.page.mouse.click(x, y);
|
|
491
|
+
}
|
|
492
|
+
else {
|
|
493
|
+
if (state && state.selectors) {
|
|
494
|
+
state.element = await web._locate(state.selectors, state.info, _params);
|
|
495
|
+
element = state.element;
|
|
496
|
+
}
|
|
497
|
+
await element.dispatchEvent("click");
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
break;
|
|
501
|
+
case "hover":
|
|
502
|
+
usedOptions = ["position", "trial", "timeout"].reduce((acc, key) => {
|
|
503
|
+
acc[key] = options[key];
|
|
504
|
+
return acc;
|
|
505
|
+
}, {});
|
|
506
|
+
try {
|
|
507
|
+
await element.hover(usedOptions);
|
|
508
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
509
|
+
}
|
|
510
|
+
catch (e) {
|
|
511
|
+
if (state && state.selectors) {
|
|
512
|
+
state.info.log += "hover failed, will try again" + "\n";
|
|
513
|
+
state.element = await web._locate(state.selectors, state.info, _params);
|
|
514
|
+
element = state.element;
|
|
515
|
+
}
|
|
516
|
+
usedOptions.timeout = 10000;
|
|
517
|
+
await element.hover(usedOptions);
|
|
518
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
519
|
+
}
|
|
520
|
+
break;
|
|
521
|
+
case "hover+click":
|
|
522
|
+
await performAction("hover", element, options, web, state, _params);
|
|
523
|
+
await performAction("click", element, options, web, state, _params);
|
|
524
|
+
break;
|
|
525
|
+
default:
|
|
526
|
+
throw new Error(`Action ${action} not supported`);
|
|
527
|
+
}
|
|
528
|
+
}
|
|
349
529
|
const KEYBOARD_EVENTS = [
|
|
350
530
|
"ALT",
|
|
351
531
|
"AltGraph",
|
|
@@ -493,7 +673,7 @@ const KEYBOARD_EVENTS = [
|
|
|
493
673
|
"TVAudioDescription",
|
|
494
674
|
];
|
|
495
675
|
function unEscapeString(str) {
|
|
496
|
-
const placeholder = "
|
|
676
|
+
const placeholder = "\\n";
|
|
497
677
|
str = str.replace(new RegExp(placeholder, "g"), "\n");
|
|
498
678
|
return str;
|
|
499
679
|
}
|
|
@@ -505,7 +685,28 @@ function _getServerUrl() {
|
|
|
505
685
|
else if (process.env.NODE_ENV_BLINQ === "stage") {
|
|
506
686
|
serviceUrl = "https://stage.api.blinq.io";
|
|
507
687
|
}
|
|
688
|
+
else if (process.env.NODE_ENV_BLINQ === "prod") {
|
|
689
|
+
serviceUrl = "https://api.blinq.io";
|
|
690
|
+
}
|
|
691
|
+
else if (!process.env.NODE_ENV_BLINQ) {
|
|
692
|
+
serviceUrl = "https://api.blinq.io";
|
|
693
|
+
}
|
|
694
|
+
else {
|
|
695
|
+
serviceUrl = process.env.NODE_ENV_BLINQ;
|
|
696
|
+
}
|
|
508
697
|
return serviceUrl;
|
|
509
698
|
}
|
|
510
|
-
|
|
699
|
+
function tryParseJson(input) {
|
|
700
|
+
if (typeof input === "string") {
|
|
701
|
+
try {
|
|
702
|
+
return JSON.parse(input);
|
|
703
|
+
}
|
|
704
|
+
catch {
|
|
705
|
+
// If parsing fails, return the original input (assumed to be plain text or another format)
|
|
706
|
+
return input;
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
return input;
|
|
710
|
+
}
|
|
711
|
+
export { encrypt, decrypt, replaceWithLocalTestData, maskValue, _copyContext, scrollPageToLoadLazyElements, _fixUsingParams, getWebLogFile, _fixLocatorUsingParams, _isObject, scanAndManipulate, KEYBOARD_EVENTS, unEscapeString, _getServerUrl, _convertToRegexQuery, extractStepExampleParameters, _getDataFile, tryParseJson, getTestDataValue, };
|
|
511
712
|
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|