automation_model 1.0.415-dev → 1.0.415

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 (53) hide show
  1. package/lib/api.d.ts +43 -1
  2. package/lib/api.js +228 -41
  3. package/lib/api.js.map +1 -1
  4. package/lib/auto_page.d.ts +5 -2
  5. package/lib/auto_page.js +141 -19
  6. package/lib/auto_page.js.map +1 -1
  7. package/lib/browser_manager.d.ts +7 -3
  8. package/lib/browser_manager.js +117 -40
  9. package/lib/browser_manager.js.map +1 -1
  10. package/lib/command_common.d.ts +6 -0
  11. package/lib/command_common.js +180 -0
  12. package/lib/command_common.js.map +1 -0
  13. package/lib/environment.d.ts +3 -0
  14. package/lib/environment.js +5 -2
  15. package/lib/environment.js.map +1 -1
  16. package/lib/error-messages.d.ts +6 -0
  17. package/lib/error-messages.js +206 -0
  18. package/lib/error-messages.js.map +1 -0
  19. package/lib/generation_scripts.d.ts +4 -0
  20. package/lib/generation_scripts.js +2 -0
  21. package/lib/generation_scripts.js.map +1 -0
  22. package/lib/index.d.ts +1 -0
  23. package/lib/index.js +1 -0
  24. package/lib/index.js.map +1 -1
  25. package/lib/init_browser.d.ts +5 -2
  26. package/lib/init_browser.js +117 -7
  27. package/lib/init_browser.js.map +1 -1
  28. package/lib/locate_element.d.ts +7 -0
  29. package/lib/locate_element.js +215 -0
  30. package/lib/locate_element.js.map +1 -0
  31. package/lib/locator.d.ts +36 -0
  32. package/lib/locator.js +165 -0
  33. package/lib/locator.js.map +1 -1
  34. package/lib/locator_log.d.ts +26 -0
  35. package/lib/locator_log.js +69 -0
  36. package/lib/locator_log.js.map +1 -0
  37. package/lib/network.d.ts +3 -0
  38. package/lib/network.js +183 -0
  39. package/lib/network.js.map +1 -0
  40. package/lib/scripts/axe.mini.js +12 -0
  41. package/lib/stable_browser.d.ts +86 -36
  42. package/lib/stable_browser.js +1423 -1275
  43. package/lib/stable_browser.js.map +1 -1
  44. package/lib/table.d.ts +13 -0
  45. package/lib/table.js +187 -0
  46. package/lib/table.js.map +1 -0
  47. package/lib/test_context.d.ts +6 -0
  48. package/lib/test_context.js +13 -9
  49. package/lib/test_context.js.map +1 -1
  50. package/lib/utils.d.ts +16 -1
  51. package/lib/utils.js +410 -5
  52. package/lib/utils.js.map +1 -1
  53. package/package.json +13 -8
package/lib/utils.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import CryptoJS from "crypto-js";
2
+ import objectPath from "object-path";
2
3
  import path from "path";
3
4
  import { TOTP } from "totp-generator";
5
+ import fs from "fs";
6
+ import axios from "axios";
4
7
  // Function to encrypt a string
5
8
  function encrypt(text, key = null) {
6
9
  if (!key) {
@@ -22,17 +25,83 @@ async function decrypt(encryptedText, key = null, totpWait = true) {
22
25
  encryptedText = bytes.toString(CryptoJS.enc.Utf8);
23
26
  let { otp, expires } = TOTP.generate(encryptedText);
24
27
  if (totpWait) {
25
- // expires is in unix time, check if we have at least 25 seconds left, if it's less than wait for the expires time
26
- if (expires - Date.now() < 25000) {
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) {
27
30
  await new Promise((resolve) => setTimeout(resolve, (expires - Date.now() + 1000) % 30000));
28
31
  ({ otp, expires } = TOTP.generate(encryptedText));
29
32
  }
30
33
  }
31
34
  return otp;
32
35
  }
36
+ if (encryptedText.startsWith("mask:")) {
37
+ return encryptedText.substring(5);
38
+ }
33
39
  const bytes = CryptoJS.AES.decrypt(encryptedText, key);
34
40
  return bytes.toString(CryptoJS.enc.Utf8);
35
41
  }
42
+ function _convertToRegexQuery(text, isRegex, fullMatch, ignoreCase) {
43
+ let query = "internal:text=/";
44
+ let queryEnd = "/";
45
+ let pattern = "";
46
+ const regexEndPattern = /\/([gimuy]*)$/;
47
+ if (text.startsWith("/")) {
48
+ const match = regexEndPattern.test(text);
49
+ if (match) {
50
+ try {
51
+ const regex = new RegExp(text.substring(1, text.lastIndexOf("/")), text.match(regexEndPattern)[1]);
52
+ return "internal:text=" + text;
53
+ }
54
+ catch {
55
+ // not regex
56
+ }
57
+ }
58
+ }
59
+ if (isRegex) {
60
+ pattern = text;
61
+ }
62
+ else {
63
+ // first remove \n then split the text by any white space,
64
+ let parts = text.replace(/\\n/g, "").split(/\s+/);
65
+ // escape regex split part
66
+ parts = parts.map((part) => escapeRegex(part));
67
+ pattern = parts.join("\\s*");
68
+ }
69
+ if (fullMatch) {
70
+ pattern = "^\\s*" + pattern + "\\s*$";
71
+ }
72
+ if (ignoreCase) {
73
+ queryEnd += "i";
74
+ }
75
+ return query + pattern + queryEnd;
76
+ }
77
+ function escapeRegex(str) {
78
+ // Special regex characters that need to be escaped
79
+ const specialChars = [
80
+ "/",
81
+ ".",
82
+ "*",
83
+ "+",
84
+ "?",
85
+ "^",
86
+ "$",
87
+ "(",
88
+ ")",
89
+ "[",
90
+ "]",
91
+ "{",
92
+ "}",
93
+ "|",
94
+ "\\",
95
+ "-",
96
+ "'",
97
+ '"',
98
+ ">", // added to avoid confusion with pw selectorsxw
99
+ ];
100
+ // Create a regex that will match all special characters
101
+ const escapedRegex = new RegExp(specialChars.map((char) => `\\${char}`).join("|"), "g");
102
+ // Escape special characters by prefixing them with a backslash
103
+ return str.replace(escapedRegex, "\\$&");
104
+ }
36
105
  function _findKey() {
37
106
  if (process.env.PROJECT_ID) {
38
107
  return process.env.PROJECT_ID;
@@ -45,7 +114,343 @@ function _findKey() {
45
114
  // extract the base folder name
46
115
  return path.basename(folder);
47
116
  }
48
- // console.log(encrypt("Hello, World!", null));
49
- // console.log(decrypt("U2FsdGVkX1+6mavadgkMgJPIhR3IO1pDkx36TjTyoyE=", null));
50
- export { encrypt, decrypt };
117
+ function _getDataFile(world = null, context = null, stable = null) {
118
+ let dataFile = null;
119
+ if (world && world.reportFolder) {
120
+ dataFile = path.join(world.reportFolder, "data.json");
121
+ }
122
+ else if (stable && stable.reportFolder) {
123
+ dataFile = path.join(stable.reportFolder, "data.json");
124
+ }
125
+ else if (context && context.reportFolder) {
126
+ dataFile = path.join(context.reportFolder, "data.json");
127
+ }
128
+ else {
129
+ dataFile = "data.json";
130
+ }
131
+ return dataFile;
132
+ }
133
+ function _getTestData(world = null, context = null, stable = null) {
134
+ const dataFile = _getDataFile(world, context, stable);
135
+ let data = {};
136
+ if (fs.existsSync(dataFile)) {
137
+ data = JSON.parse(fs.readFileSync(dataFile, "utf8"));
138
+ }
139
+ return data;
140
+ }
141
+ async function replaceWithLocalTestData(value, world, _decrypt = true, totpWait = true, context = null, stable = null) {
142
+ if (!value) {
143
+ return value;
144
+ }
145
+ // find all the accurance of {{(.*?)}} and replace with the value
146
+ let regex = /{{(.*?)}}/g;
147
+ let matches = value.match(regex);
148
+ if (matches) {
149
+ const testData = _getTestData(world, context, stable);
150
+ for (let i = 0; i < matches.length; i++) {
151
+ let match = matches[i];
152
+ let key = match.substring(2, match.length - 2);
153
+ if (key && key.trim().startsWith("date:")) {
154
+ const dateQuery = key.substring(5);
155
+ const parts = dateQuery.split(">>");
156
+ const returnTemplate = parts[1] || null;
157
+ let serviceUrl = _getServerUrl();
158
+ const config = {
159
+ method: "post",
160
+ url: `${serviceUrl}/api/runs/find-date/find`,
161
+ headers: {
162
+ "x-source": "true",
163
+ "Content-Type": "application/json",
164
+ Authorization: `Bearer ${process.env.TOKEN}`,
165
+ },
166
+ data: JSON.stringify({
167
+ value: parts[0],
168
+ }),
169
+ };
170
+ let result = await axios.request(config);
171
+ //console.log(JSON.stringify(frameDump[0]));
172
+ if (result.status !== 200 || !result.data || result.data.status !== true || !result.data.result) {
173
+ console.error("Failed to find date");
174
+ throw new Error("Failed to find date");
175
+ }
176
+ value = formatDate(result.data.result, returnTemplate);
177
+ }
178
+ else {
179
+ let newValue = objectPath.get(testData, key, null);
180
+ if (newValue !== null) {
181
+ value = value.replace(match, newValue);
182
+ }
183
+ }
184
+ }
185
+ }
186
+ if ((value.startsWith("secret:") || value.startsWith("totp:") || value.startsWith("mask:")) && _decrypt) {
187
+ return await decrypt(value, null, totpWait);
188
+ }
189
+ return value;
190
+ }
191
+ function formatDate(dateStr, format) {
192
+ if (!format) {
193
+ return dateStr;
194
+ }
195
+ // Split the input date string
196
+ const [dd, mm, yyyy] = dateStr.split("-");
197
+ // Define replacements
198
+ const replacements = {
199
+ dd: dd,
200
+ mm: mm,
201
+ yyyy: yyyy,
202
+ };
203
+ // Replace format placeholders with actual values
204
+ return format.replace(/dd|mm|yyyy/g, (match) => replacements[match]);
205
+ }
206
+ function maskValue(value) {
207
+ if (!value) {
208
+ return value;
209
+ }
210
+ if (value.startsWith("secret:")) {
211
+ return "secret:****";
212
+ }
213
+ if (value.startsWith("totp:")) {
214
+ return "totp:****";
215
+ }
216
+ if (value.startsWith("mask:")) {
217
+ return "mask:****";
218
+ }
219
+ return value;
220
+ }
221
+ function _copyContext(from, to) {
222
+ to.browser = from.browser;
223
+ to.page = from.page;
224
+ to.context = from.context;
225
+ }
226
+ async function scrollPageToLoadLazyElements(page) {
227
+ let lastHeight = await page.evaluate(() => document.body.scrollHeight);
228
+ let retry = 0;
229
+ while (true) {
230
+ await page.evaluate(() => window.scrollBy(0, window.innerHeight));
231
+ await new Promise((resolve) => setTimeout(resolve, 1000));
232
+ let newHeight = await page.evaluate(() => document.body.scrollHeight);
233
+ if (newHeight === lastHeight) {
234
+ break;
235
+ }
236
+ lastHeight = newHeight;
237
+ retry++;
238
+ if (retry > 10) {
239
+ break;
240
+ }
241
+ }
242
+ await page.evaluate(() => window.scrollTo(0, 0));
243
+ }
244
+ function _fixUsingParams(text, _params) {
245
+ if (!_params || typeof text !== "string") {
246
+ return text;
247
+ }
248
+ for (let key in _params) {
249
+ let regValue = key;
250
+ if (key.startsWith("_")) {
251
+ // remove the _ prefix
252
+ regValue = key.substring(1);
253
+ }
254
+ text = text.replaceAll(new RegExp("{" + regValue + "}", "g"), _params[key]);
255
+ }
256
+ return text;
257
+ }
258
+ function getWebLogFile(logFolder) {
259
+ if (!fs.existsSync(logFolder)) {
260
+ fs.mkdirSync(logFolder, { recursive: true });
261
+ }
262
+ let nextIndex = 1;
263
+ while (fs.existsSync(path.join(logFolder, nextIndex.toString() + ".json"))) {
264
+ nextIndex++;
265
+ }
266
+ const fileName = nextIndex + ".json";
267
+ return path.join(logFolder, fileName);
268
+ }
269
+ function _fixLocatorUsingParams(locator, _params) {
270
+ // check if not null
271
+ if (!locator) {
272
+ return locator;
273
+ }
274
+ // clone the locator
275
+ locator = JSON.parse(JSON.stringify(locator));
276
+ scanAndManipulate(locator, _params);
277
+ return locator;
278
+ }
279
+ function _isObject(value) {
280
+ return value && typeof value === "object" && value.constructor === Object;
281
+ }
282
+ function scanAndManipulate(currentObj, _params) {
283
+ for (const key in currentObj) {
284
+ if (typeof currentObj[key] === "string") {
285
+ // Perform string manipulation
286
+ currentObj[key] = _fixUsingParams(currentObj[key], _params);
287
+ }
288
+ else if (_isObject(currentObj[key])) {
289
+ // Recursively scan nested objects
290
+ scanAndManipulate(currentObj[key], _params);
291
+ }
292
+ }
293
+ }
294
+ const KEYBOARD_EVENTS = [
295
+ "ALT",
296
+ "AltGraph",
297
+ "CapsLock",
298
+ "Control",
299
+ "Fn",
300
+ "FnLock",
301
+ "Hyper",
302
+ "Meta",
303
+ "NumLock",
304
+ "ScrollLock",
305
+ "Shift",
306
+ "Super",
307
+ "Symbol",
308
+ "SymbolLock",
309
+ "Enter",
310
+ "Tab",
311
+ "ArrowDown",
312
+ "ArrowLeft",
313
+ "ArrowRight",
314
+ "ArrowUp",
315
+ "End",
316
+ "Home",
317
+ "PageDown",
318
+ "PageUp",
319
+ "Backspace",
320
+ "Clear",
321
+ "Copy",
322
+ "CrSel",
323
+ "Cut",
324
+ "Delete",
325
+ "EraseEof",
326
+ "ExSel",
327
+ "Insert",
328
+ "Paste",
329
+ "Redo",
330
+ "Undo",
331
+ "Accept",
332
+ "Again",
333
+ "Attn",
334
+ "Cancel",
335
+ "ContextMenu",
336
+ "Escape",
337
+ "Execute",
338
+ "Find",
339
+ "Finish",
340
+ "Help",
341
+ "Pause",
342
+ "Play",
343
+ "Props",
344
+ "Select",
345
+ "ZoomIn",
346
+ "ZoomOut",
347
+ "BrightnessDown",
348
+ "BrightnessUp",
349
+ "Eject",
350
+ "LogOff",
351
+ "Power",
352
+ "PowerOff",
353
+ "PrintScreen",
354
+ "Hibernate",
355
+ "Standby",
356
+ "WakeUp",
357
+ "AllCandidates",
358
+ "Alphanumeric",
359
+ "CodeInput",
360
+ "Compose",
361
+ "Convert",
362
+ "Dead",
363
+ "FinalMode",
364
+ "GroupFirst",
365
+ "GroupLast",
366
+ "GroupNext",
367
+ "GroupPrevious",
368
+ "ModeChange",
369
+ "NextCandidate",
370
+ "NonConvert",
371
+ "PreviousCandidate",
372
+ "Process",
373
+ "SingleCandidate",
374
+ "HangulMode",
375
+ "HanjaMode",
376
+ "JunjaMode",
377
+ "Eisu",
378
+ "Hankaku",
379
+ "Hiragana",
380
+ "HiraganaKatakana",
381
+ "KanaMode",
382
+ "KanjiMode",
383
+ "Katakana",
384
+ "Romaji",
385
+ "Zenkaku",
386
+ "ZenkakuHanaku",
387
+ "F1",
388
+ "F2",
389
+ "F3",
390
+ "F4",
391
+ "F5",
392
+ "F6",
393
+ "F7",
394
+ "F8",
395
+ "F9",
396
+ "F10",
397
+ "F11",
398
+ "F12",
399
+ "Soft1",
400
+ "Soft2",
401
+ "Soft3",
402
+ "Soft4",
403
+ "ChannelDown",
404
+ "ChannelUp",
405
+ "Close",
406
+ "MailForward",
407
+ "MailReply",
408
+ "MailSend",
409
+ "MediaFastForward",
410
+ "MediaPause",
411
+ "MediaPlay",
412
+ "MediaPlayPause",
413
+ "MediaRecord",
414
+ "MediaRewind",
415
+ "MediaStop",
416
+ "MediaTrackNext",
417
+ "MediaTrackPrevious",
418
+ "AudioBalanceLeft",
419
+ "AudioBalanceRight",
420
+ "AudioBassBoostDown",
421
+ "AudioBassBoostToggle",
422
+ "AudioBassBoostUp",
423
+ "AudioFaderFront",
424
+ "AudioFaderRear",
425
+ "AudioSurroundModeNext",
426
+ "AudioTrebleDown",
427
+ "AudioTrebleUp",
428
+ "AudioVolumeDown",
429
+ "AudioVolumeMute",
430
+ "AudioVolumeUp",
431
+ "MicrophoneToggle",
432
+ "MicrophoneVolumeDown",
433
+ "MicrophoneVolumeMute",
434
+ "MicrophoneVolumeUp",
435
+ "TV",
436
+ "TV3DMode",
437
+ "TVAntennaCable",
438
+ "TVAudioDescription",
439
+ ];
440
+ function unEscapeString(str) {
441
+ const placeholder = "__NEWLINE__";
442
+ str = str.replace(new RegExp(placeholder, "g"), "\n");
443
+ return str;
444
+ }
445
+ function _getServerUrl() {
446
+ let serviceUrl = "https://api.blinq.io";
447
+ if (process.env.NODE_ENV_BLINQ === "dev") {
448
+ serviceUrl = "https://dev.api.blinq.io";
449
+ }
450
+ else if (process.env.NODE_ENV_BLINQ === "stage") {
451
+ serviceUrl = "https://stage.api.blinq.io";
452
+ }
453
+ return serviceUrl;
454
+ }
455
+ export { encrypt, decrypt, replaceWithLocalTestData, maskValue, _copyContext, scrollPageToLoadLazyElements, _fixUsingParams, getWebLogFile, _fixLocatorUsingParams, _isObject, scanAndManipulate, KEYBOARD_EVENTS, unEscapeString, _getServerUrl, _convertToRegexQuery, _getDataFile, };
51
456
  //# 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":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,+BAA+B;AAC/B,SAAS,OAAO,CAAC,IAAY,EAAE,MAAqB,IAAI;IACtD,IAAI,CAAC,GAAG,EAAE;QACR,GAAG,GAAG,QAAQ,EAAE,CAAC;KAClB;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,CAAC;AAED,+BAA+B;AAC/B,KAAK,UAAU,OAAO,CAAC,aAAqB,EAAE,MAAqB,IAAI,EAAE,WAAoB,IAAI;IAC/F,IAAI,CAAC,GAAG,EAAE;QACR,GAAG,GAAG,QAAQ,EAAE,CAAC;KAClB;IACD,IAAI,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QACvC,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAC5C;IACD,IAAI,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACrC,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACvD,aAAa,GAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACpD,IAAG,QAAQ,EAAE;YACX,kHAAkH;YAClH,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE;gBAChC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC3F,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;aACnD;SACF;QACD,OAAO,GAAG,CAAC;KACZ;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AACD,SAAS,QAAQ;IACf,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;KAC/B;IACD,IAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KAClD;IACC,+BAA+B;IAC/B,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,+BAA+B;IAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AACD,+CAA+C;AAC/C,8EAA8E;AAC9E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "automation_model",
3
- "version": "1.0.415-dev",
3
+ "version": "1.0.415",
4
4
  "description": "An automation infrastructure module to be use for generative AI automation projects.",
5
5
  "main": "lib/index.js",
6
6
  "type": "module",
@@ -12,25 +12,28 @@
12
12
  "compile": "tsc",
13
13
  "pack": "mkdir build && mkdir build/bin && cp ./src/auto_page.js ./build/bin/auto_page.js && cp ./src/environment.js ./build/bin/environment.js && cp ./src/browser_manager.js ./build/bin/browser_manager.js && cp ./src/test_context.js ./build/bin/test_context.js && cp ./src/init_browser.js ./build/bin/init_browser.js && cp ./src/stable_browser.js ./build/bin/stable_browser.js && cp ./package.json ./build/package.json",
14
14
  "clean": "rimraf -g build && rimraf -g types",
15
- "build": "npm run clean && npm run compile && ncp package.json build/package.json",
16
- "test": "cross-env HEADLESS=true npx mocha --parallel --jobs=8 ./regression/ --timeout 120000",
15
+ "build": "npm run clean && npm run compile && ncp package.json build/package.json && mkdir build/lib/scripts && ncp scripts/axe.mini.js build/lib/scripts/axe.mini.js",
16
+ "test": "cross-env HEADLESS=true npx mocha --parallel --jobs=8 ./regression/ --timeout 180000",
17
17
  "debug": "node tests/debug.test.js",
18
18
  "types": "tsc --declaration --allowJs --emitDeclarationOnly --outDir types",
19
- "regression": "cross-env HEADLESS=true npx mocha --parallel --jobs=8 ./regression/ --timeout 120000"
19
+ "regression": "cross-env HEADLESS=true npx mocha --bail --parallel --jobs=8 ./regression/ --timeout 120000",
20
+ "reg": "npm run build && npm run compile && npm run regression"
20
21
  },
21
22
  "author": "",
22
23
  "license": "ISC",
23
24
  "dependencies": {
24
- "@playwright/test": "^1.40.0",
25
- "axios": "^1.6.8",
25
+ "@playwright/test": "1.50.1",
26
+ "@types/jimp": "^0.2.28",
27
+ "axios": "^1.7.4",
26
28
  "crypto-js": "^4.2.0",
27
29
  "csv-parser": "^3.0.0",
28
30
  "dayjs": "^1.11.10",
31
+ "jimp": "^1.6.0",
29
32
  "object-path": "^0.11.8",
30
- "playwright": "^1.39.0",
33
+ "playwright": "1.50.1",
31
34
  "pureimage": "^0.4.13",
35
+ "readline": "^1.3.0",
32
36
  "regex-parser": "^2.2.11",
33
- "sharp": "^0.32.6",
34
37
  "totp-generator": "^1.0.0",
35
38
  "tunnel": "^0.0.6"
36
39
  },
@@ -39,10 +42,12 @@
39
42
  "@types/node": "^20.9.3",
40
43
  "@types/object-path": "^0.11.4",
41
44
  "@types/tunnel": "^0.0.7",
45
+ "chai": "^5.1.2",
42
46
  "cross-env": "^7.0.3",
43
47
  "husky": "^8.0.0",
44
48
  "lint-staged": "^15.2.7",
45
49
  "mocha": "^10.6.0",
50
+ "msw": "^2.6.8",
46
51
  "ncp": "^2.0.0",
47
52
  "prettier": "^3.3.2",
48
53
  "rimraf": "^5.0.5",