automation_model 1.0.626-dev → 1.0.626-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.
Files changed (47) hide show
  1. package/README.md +130 -0
  2. package/lib/api.js +35 -21
  3. package/lib/api.js.map +1 -1
  4. package/lib/auto_page.d.ts +1 -1
  5. package/lib/auto_page.js +99 -28
  6. package/lib/auto_page.js.map +1 -1
  7. package/lib/browser_manager.js +68 -23
  8. package/lib/browser_manager.js.map +1 -1
  9. package/lib/bruno.d.ts +2 -0
  10. package/lib/bruno.js +381 -0
  11. package/lib/bruno.js.map +1 -0
  12. package/lib/command_common.d.ts +4 -4
  13. package/lib/command_common.js +33 -16
  14. package/lib/command_common.js.map +1 -1
  15. package/lib/environment.d.ts +1 -0
  16. package/lib/environment.js +1 -0
  17. package/lib/environment.js.map +1 -1
  18. package/lib/file_checker.d.ts +1 -0
  19. package/lib/file_checker.js +61 -0
  20. package/lib/file_checker.js.map +1 -0
  21. package/lib/index.d.ts +2 -0
  22. package/lib/index.js +2 -0
  23. package/lib/index.js.map +1 -1
  24. package/lib/init_browser.d.ts +2 -2
  25. package/lib/init_browser.js +33 -27
  26. package/lib/init_browser.js.map +1 -1
  27. package/lib/locate_element.js +2 -2
  28. package/lib/locate_element.js.map +1 -1
  29. package/lib/network.d.ts +1 -1
  30. package/lib/network.js +5 -5
  31. package/lib/network.js.map +1 -1
  32. package/lib/snapshot_validation.d.ts +37 -0
  33. package/lib/snapshot_validation.js +280 -0
  34. package/lib/snapshot_validation.js.map +1 -0
  35. package/lib/stable_browser.d.ts +20 -1
  36. package/lib/stable_browser.js +587 -108
  37. package/lib/stable_browser.js.map +1 -1
  38. package/lib/table_helper.d.ts +19 -0
  39. package/lib/table_helper.js +116 -0
  40. package/lib/table_helper.js.map +1 -0
  41. package/lib/test_context.d.ts +2 -0
  42. package/lib/test_context.js +2 -0
  43. package/lib/test_context.js.map +1 -1
  44. package/lib/utils.d.ts +8 -4
  45. package/lib/utils.js +221 -20
  46. package/lib/utils.js.map +1 -1
  47. package/package.json +9 -8
@@ -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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"}
@@ -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;
@@ -1,10 +1,12 @@
1
1
  class TestContext {
2
2
  stable = null;
3
+ web = null;
3
4
  browser = null;
4
5
  playContext = null;
5
6
  page = null;
6
7
  environment = null;
7
8
  reportFolder = null;
9
+ snapshotFolder = null;
8
10
  api = null;
9
11
  navigate = false;
10
12
  headless = false;
@@ -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 decrypt(encryptedText: string, key?: string | null, totpWait?: boolean): Promise<string>;
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, stable?: any): string;
5
- declare function replaceWithLocalTestData(value: string, world: any, _decrypt?: boolean, totpWait?: boolean, context?: any, stable?: any): Promise<string>;
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
- export { encrypt, decrypt, replaceWithLocalTestData, maskValue, _copyContext, scrollPageToLoadLazyElements, _fixUsingParams, getWebLogFile, _fixLocatorUsingParams, _isObject, scanAndManipulate, KEYBOARD_EVENTS, unEscapeString, Params, _getServerUrl, _convertToRegexQuery, extractStepExampleParameters, _getDataFile, };
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
- async function decrypt(encryptedText, key = null, totpWait = true) {
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
- // expires is in unix time, check if we have at least 10 seconds left, if it's less than wait for the expires time
29
- if (expires - Date.now() < 10000) {
30
- await new Promise((resolve) => setTimeout(resolve, (expires - Date.now() + 1000) % 30000));
31
- ({ otp, expires } = TOTP.generate(encryptedText));
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, stable = 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 (stable && stable.reportFolder) {
123
- dataFile = path.join(stable.reportFolder, "data.json");
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, stable = null) {
134
- const dataFile = _getDataFile(world, context, stable);
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, stable = 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, stable);
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 = objectPath.get(testData, key, null);
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 await decrypt(value, null, totpWait);
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 = "__NEWLINE__";
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
- export { encrypt, decrypt, replaceWithLocalTestData, maskValue, _copyContext, scrollPageToLoadLazyElements, _fixUsingParams, getWebLogFile, _fixLocatorUsingParams, _isObject, scanAndManipulate, KEYBOARD_EVENTS, unEscapeString, _getServerUrl, _convertToRegexQuery, extractStepExampleParameters, _getDataFile, };
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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"}