@applitools/eyes-browser 1.4.1 → 1.4.2

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 (3) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/index.js +696 -642
  3. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -13251,6 +13251,438 @@ var init_dist = __esm({
13251
13251
  }
13252
13252
  });
13253
13253
 
13254
+ // ../../node_modules/path-browserify/index.js
13255
+ var require_path_browserify = __commonJS({
13256
+ "../../node_modules/path-browserify/index.js"(exports, module) {
13257
+ "use strict";
13258
+ init_process();
13259
+ init_setImmediate();
13260
+ init_buffer();
13261
+ init_setInterval();
13262
+ function assertPath(path) {
13263
+ if (typeof path !== "string") {
13264
+ throw new TypeError("Path must be a string. Received " + JSON.stringify(path));
13265
+ }
13266
+ }
13267
+ function normalizeStringPosix(path, allowAboveRoot) {
13268
+ var res = "";
13269
+ var lastSegmentLength = 0;
13270
+ var lastSlash = -1;
13271
+ var dots = 0;
13272
+ var code;
13273
+ for (var i = 0; i <= path.length; ++i) {
13274
+ if (i < path.length)
13275
+ code = path.charCodeAt(i);
13276
+ else if (code === 47)
13277
+ break;
13278
+ else
13279
+ code = 47;
13280
+ if (code === 47) {
13281
+ if (lastSlash === i - 1 || dots === 1) {
13282
+ } else if (lastSlash !== i - 1 && dots === 2) {
13283
+ if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {
13284
+ if (res.length > 2) {
13285
+ var lastSlashIndex = res.lastIndexOf("/");
13286
+ if (lastSlashIndex !== res.length - 1) {
13287
+ if (lastSlashIndex === -1) {
13288
+ res = "";
13289
+ lastSegmentLength = 0;
13290
+ } else {
13291
+ res = res.slice(0, lastSlashIndex);
13292
+ lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
13293
+ }
13294
+ lastSlash = i;
13295
+ dots = 0;
13296
+ continue;
13297
+ }
13298
+ } else if (res.length === 2 || res.length === 1) {
13299
+ res = "";
13300
+ lastSegmentLength = 0;
13301
+ lastSlash = i;
13302
+ dots = 0;
13303
+ continue;
13304
+ }
13305
+ }
13306
+ if (allowAboveRoot) {
13307
+ if (res.length > 0)
13308
+ res += "/..";
13309
+ else
13310
+ res = "..";
13311
+ lastSegmentLength = 2;
13312
+ }
13313
+ } else {
13314
+ if (res.length > 0)
13315
+ res += "/" + path.slice(lastSlash + 1, i);
13316
+ else
13317
+ res = path.slice(lastSlash + 1, i);
13318
+ lastSegmentLength = i - lastSlash - 1;
13319
+ }
13320
+ lastSlash = i;
13321
+ dots = 0;
13322
+ } else if (code === 46 && dots !== -1) {
13323
+ ++dots;
13324
+ } else {
13325
+ dots = -1;
13326
+ }
13327
+ }
13328
+ return res;
13329
+ }
13330
+ function _format(sep, pathObject) {
13331
+ var dir = pathObject.dir || pathObject.root;
13332
+ var base = pathObject.base || (pathObject.name || "") + (pathObject.ext || "");
13333
+ if (!dir) {
13334
+ return base;
13335
+ }
13336
+ if (dir === pathObject.root) {
13337
+ return dir + base;
13338
+ }
13339
+ return dir + sep + base;
13340
+ }
13341
+ var posix = {
13342
+ // path.resolve([from ...], to)
13343
+ resolve: function resolve() {
13344
+ var resolvedPath = "";
13345
+ var resolvedAbsolute = false;
13346
+ var cwd;
13347
+ for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
13348
+ var path;
13349
+ if (i >= 0)
13350
+ path = arguments[i];
13351
+ else {
13352
+ if (cwd === void 0)
13353
+ cwd = process.cwd();
13354
+ path = cwd;
13355
+ }
13356
+ assertPath(path);
13357
+ if (path.length === 0) {
13358
+ continue;
13359
+ }
13360
+ resolvedPath = path + "/" + resolvedPath;
13361
+ resolvedAbsolute = path.charCodeAt(0) === 47;
13362
+ }
13363
+ resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);
13364
+ if (resolvedAbsolute) {
13365
+ if (resolvedPath.length > 0)
13366
+ return "/" + resolvedPath;
13367
+ else
13368
+ return "/";
13369
+ } else if (resolvedPath.length > 0) {
13370
+ return resolvedPath;
13371
+ } else {
13372
+ return ".";
13373
+ }
13374
+ },
13375
+ normalize: function normalize(path) {
13376
+ assertPath(path);
13377
+ if (path.length === 0)
13378
+ return ".";
13379
+ var isAbsolute = path.charCodeAt(0) === 47;
13380
+ var trailingSeparator = path.charCodeAt(path.length - 1) === 47;
13381
+ path = normalizeStringPosix(path, !isAbsolute);
13382
+ if (path.length === 0 && !isAbsolute)
13383
+ path = ".";
13384
+ if (path.length > 0 && trailingSeparator)
13385
+ path += "/";
13386
+ if (isAbsolute)
13387
+ return "/" + path;
13388
+ return path;
13389
+ },
13390
+ isAbsolute: function isAbsolute(path) {
13391
+ assertPath(path);
13392
+ return path.length > 0 && path.charCodeAt(0) === 47;
13393
+ },
13394
+ join: function join() {
13395
+ if (arguments.length === 0)
13396
+ return ".";
13397
+ var joined;
13398
+ for (var i = 0; i < arguments.length; ++i) {
13399
+ var arg = arguments[i];
13400
+ assertPath(arg);
13401
+ if (arg.length > 0) {
13402
+ if (joined === void 0)
13403
+ joined = arg;
13404
+ else
13405
+ joined += "/" + arg;
13406
+ }
13407
+ }
13408
+ if (joined === void 0)
13409
+ return ".";
13410
+ return posix.normalize(joined);
13411
+ },
13412
+ relative: function relative(from, to) {
13413
+ assertPath(from);
13414
+ assertPath(to);
13415
+ if (from === to)
13416
+ return "";
13417
+ from = posix.resolve(from);
13418
+ to = posix.resolve(to);
13419
+ if (from === to)
13420
+ return "";
13421
+ var fromStart = 1;
13422
+ for (; fromStart < from.length; ++fromStart) {
13423
+ if (from.charCodeAt(fromStart) !== 47)
13424
+ break;
13425
+ }
13426
+ var fromEnd = from.length;
13427
+ var fromLen = fromEnd - fromStart;
13428
+ var toStart = 1;
13429
+ for (; toStart < to.length; ++toStart) {
13430
+ if (to.charCodeAt(toStart) !== 47)
13431
+ break;
13432
+ }
13433
+ var toEnd = to.length;
13434
+ var toLen = toEnd - toStart;
13435
+ var length = fromLen < toLen ? fromLen : toLen;
13436
+ var lastCommonSep = -1;
13437
+ var i = 0;
13438
+ for (; i <= length; ++i) {
13439
+ if (i === length) {
13440
+ if (toLen > length) {
13441
+ if (to.charCodeAt(toStart + i) === 47) {
13442
+ return to.slice(toStart + i + 1);
13443
+ } else if (i === 0) {
13444
+ return to.slice(toStart + i);
13445
+ }
13446
+ } else if (fromLen > length) {
13447
+ if (from.charCodeAt(fromStart + i) === 47) {
13448
+ lastCommonSep = i;
13449
+ } else if (i === 0) {
13450
+ lastCommonSep = 0;
13451
+ }
13452
+ }
13453
+ break;
13454
+ }
13455
+ var fromCode = from.charCodeAt(fromStart + i);
13456
+ var toCode = to.charCodeAt(toStart + i);
13457
+ if (fromCode !== toCode)
13458
+ break;
13459
+ else if (fromCode === 47)
13460
+ lastCommonSep = i;
13461
+ }
13462
+ var out = "";
13463
+ for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {
13464
+ if (i === fromEnd || from.charCodeAt(i) === 47) {
13465
+ if (out.length === 0)
13466
+ out += "..";
13467
+ else
13468
+ out += "/..";
13469
+ }
13470
+ }
13471
+ if (out.length > 0)
13472
+ return out + to.slice(toStart + lastCommonSep);
13473
+ else {
13474
+ toStart += lastCommonSep;
13475
+ if (to.charCodeAt(toStart) === 47)
13476
+ ++toStart;
13477
+ return to.slice(toStart);
13478
+ }
13479
+ },
13480
+ _makeLong: function _makeLong(path) {
13481
+ return path;
13482
+ },
13483
+ dirname: function dirname(path) {
13484
+ assertPath(path);
13485
+ if (path.length === 0)
13486
+ return ".";
13487
+ var code = path.charCodeAt(0);
13488
+ var hasRoot = code === 47;
13489
+ var end = -1;
13490
+ var matchedSlash = true;
13491
+ for (var i = path.length - 1; i >= 1; --i) {
13492
+ code = path.charCodeAt(i);
13493
+ if (code === 47) {
13494
+ if (!matchedSlash) {
13495
+ end = i;
13496
+ break;
13497
+ }
13498
+ } else {
13499
+ matchedSlash = false;
13500
+ }
13501
+ }
13502
+ if (end === -1)
13503
+ return hasRoot ? "/" : ".";
13504
+ if (hasRoot && end === 1)
13505
+ return "//";
13506
+ return path.slice(0, end);
13507
+ },
13508
+ basename: function basename(path, ext) {
13509
+ if (ext !== void 0 && typeof ext !== "string")
13510
+ throw new TypeError('"ext" argument must be a string');
13511
+ assertPath(path);
13512
+ var start = 0;
13513
+ var end = -1;
13514
+ var matchedSlash = true;
13515
+ var i;
13516
+ if (ext !== void 0 && ext.length > 0 && ext.length <= path.length) {
13517
+ if (ext.length === path.length && ext === path)
13518
+ return "";
13519
+ var extIdx = ext.length - 1;
13520
+ var firstNonSlashEnd = -1;
13521
+ for (i = path.length - 1; i >= 0; --i) {
13522
+ var code = path.charCodeAt(i);
13523
+ if (code === 47) {
13524
+ if (!matchedSlash) {
13525
+ start = i + 1;
13526
+ break;
13527
+ }
13528
+ } else {
13529
+ if (firstNonSlashEnd === -1) {
13530
+ matchedSlash = false;
13531
+ firstNonSlashEnd = i + 1;
13532
+ }
13533
+ if (extIdx >= 0) {
13534
+ if (code === ext.charCodeAt(extIdx)) {
13535
+ if (--extIdx === -1) {
13536
+ end = i;
13537
+ }
13538
+ } else {
13539
+ extIdx = -1;
13540
+ end = firstNonSlashEnd;
13541
+ }
13542
+ }
13543
+ }
13544
+ }
13545
+ if (start === end)
13546
+ end = firstNonSlashEnd;
13547
+ else if (end === -1)
13548
+ end = path.length;
13549
+ return path.slice(start, end);
13550
+ } else {
13551
+ for (i = path.length - 1; i >= 0; --i) {
13552
+ if (path.charCodeAt(i) === 47) {
13553
+ if (!matchedSlash) {
13554
+ start = i + 1;
13555
+ break;
13556
+ }
13557
+ } else if (end === -1) {
13558
+ matchedSlash = false;
13559
+ end = i + 1;
13560
+ }
13561
+ }
13562
+ if (end === -1)
13563
+ return "";
13564
+ return path.slice(start, end);
13565
+ }
13566
+ },
13567
+ extname: function extname(path) {
13568
+ assertPath(path);
13569
+ var startDot = -1;
13570
+ var startPart = 0;
13571
+ var end = -1;
13572
+ var matchedSlash = true;
13573
+ var preDotState = 0;
13574
+ for (var i = path.length - 1; i >= 0; --i) {
13575
+ var code = path.charCodeAt(i);
13576
+ if (code === 47) {
13577
+ if (!matchedSlash) {
13578
+ startPart = i + 1;
13579
+ break;
13580
+ }
13581
+ continue;
13582
+ }
13583
+ if (end === -1) {
13584
+ matchedSlash = false;
13585
+ end = i + 1;
13586
+ }
13587
+ if (code === 46) {
13588
+ if (startDot === -1)
13589
+ startDot = i;
13590
+ else if (preDotState !== 1)
13591
+ preDotState = 1;
13592
+ } else if (startDot !== -1) {
13593
+ preDotState = -1;
13594
+ }
13595
+ }
13596
+ if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot
13597
+ preDotState === 0 || // The (right-most) trimmed path component is exactly '..'
13598
+ preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
13599
+ return "";
13600
+ }
13601
+ return path.slice(startDot, end);
13602
+ },
13603
+ format: function format(pathObject) {
13604
+ if (pathObject === null || typeof pathObject !== "object") {
13605
+ throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject);
13606
+ }
13607
+ return _format("/", pathObject);
13608
+ },
13609
+ parse: function parse(path) {
13610
+ assertPath(path);
13611
+ var ret = { root: "", dir: "", base: "", ext: "", name: "" };
13612
+ if (path.length === 0)
13613
+ return ret;
13614
+ var code = path.charCodeAt(0);
13615
+ var isAbsolute = code === 47;
13616
+ var start;
13617
+ if (isAbsolute) {
13618
+ ret.root = "/";
13619
+ start = 1;
13620
+ } else {
13621
+ start = 0;
13622
+ }
13623
+ var startDot = -1;
13624
+ var startPart = 0;
13625
+ var end = -1;
13626
+ var matchedSlash = true;
13627
+ var i = path.length - 1;
13628
+ var preDotState = 0;
13629
+ for (; i >= start; --i) {
13630
+ code = path.charCodeAt(i);
13631
+ if (code === 47) {
13632
+ if (!matchedSlash) {
13633
+ startPart = i + 1;
13634
+ break;
13635
+ }
13636
+ continue;
13637
+ }
13638
+ if (end === -1) {
13639
+ matchedSlash = false;
13640
+ end = i + 1;
13641
+ }
13642
+ if (code === 46) {
13643
+ if (startDot === -1)
13644
+ startDot = i;
13645
+ else if (preDotState !== 1)
13646
+ preDotState = 1;
13647
+ } else if (startDot !== -1) {
13648
+ preDotState = -1;
13649
+ }
13650
+ }
13651
+ if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot
13652
+ preDotState === 0 || // The (right-most) trimmed path component is exactly '..'
13653
+ preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
13654
+ if (end !== -1) {
13655
+ if (startPart === 0 && isAbsolute)
13656
+ ret.base = ret.name = path.slice(1, end);
13657
+ else
13658
+ ret.base = ret.name = path.slice(startPart, end);
13659
+ }
13660
+ } else {
13661
+ if (startPart === 0 && isAbsolute) {
13662
+ ret.name = path.slice(1, startDot);
13663
+ ret.base = path.slice(1, end);
13664
+ } else {
13665
+ ret.name = path.slice(startPart, startDot);
13666
+ ret.base = path.slice(startPart, end);
13667
+ }
13668
+ ret.ext = path.slice(startDot, end);
13669
+ }
13670
+ if (startPart > 0)
13671
+ ret.dir = path.slice(0, startPart - 1);
13672
+ else if (isAbsolute)
13673
+ ret.dir = "/";
13674
+ return ret;
13675
+ },
13676
+ sep: "/",
13677
+ delimiter: ":",
13678
+ win32: null,
13679
+ posix: null
13680
+ };
13681
+ posix.posix = posix;
13682
+ module.exports = posix;
13683
+ }
13684
+ });
13685
+
13254
13686
  // ../core-base/dist/server/req-eyes.js
13255
13687
  var require_req_eyes = __commonJS({
13256
13688
  "../core-base/dist/server/req-eyes.js"(exports) {
@@ -13292,9 +13724,10 @@ var require_req_eyes = __commonJS({
13292
13724
  return result;
13293
13725
  };
13294
13726
  Object.defineProperty(exports, "__esModule", { value: true });
13295
- exports.makeReqEyes = void 0;
13727
+ exports.updateOriginAndPath = exports.makeReqEyes = void 0;
13296
13728
  var req_1 = __importStar((init_dist(), __toCommonJS(dist_exports)));
13297
13729
  var utils34 = __importStar(require_browser3());
13730
+ var path = __importStar(require_path_browserify());
13298
13731
  function makeReqEyes({ settings, fetch: fetch2, logger }) {
13299
13732
  var _a;
13300
13733
  return (0, req_1.makeReq)({
@@ -13319,7 +13752,7 @@ var require_req_eyes = __commonJS({
13319
13752
  codes: ["ECONNRESET", "ECONNABORTED", "ECONNREFUSED", "ETIMEDOUT", "ENOTFOUND", "EAI_AGAIN", "STUCK_REQUEST"]
13320
13753
  }
13321
13754
  ],
13322
- hooks: [handleLongRequests({ req: req_1.default }), handleLogs({ logger }), handleUnexpectedResponse()],
13755
+ hooks: [handleLongRequests({ req: req_1.default, settings }), handleLogs({ logger }), handleUnexpectedResponse()],
13323
13756
  fetch: fetch2
13324
13757
  });
13325
13758
  }
@@ -13371,7 +13804,7 @@ var require_req_eyes = __commonJS({
13371
13804
  }
13372
13805
  };
13373
13806
  }
13374
- function handleLongRequests({ req: req2 }) {
13807
+ function handleLongRequests({ req: req2, settings }) {
13375
13808
  return {
13376
13809
  beforeRequest({ request }) {
13377
13810
  request.headers.set("Eyes-Expect-Version", "2");
@@ -13383,7 +13816,8 @@ var require_req_eyes = __commonJS({
13383
13816
  if (response.headers.has("Retry-After")) {
13384
13817
  await utils34.general.sleep(Number(response.headers.get("Retry-After")) * 1e3);
13385
13818
  }
13386
- const pollResponse = await req2(response.headers.get("Location"), options !== null && options !== void 0 ? options : {}, {
13819
+ const location2 = updateOriginAndPath(response.headers.get("Location"), settings.eyesServerUrl);
13820
+ const pollResponse = await req2(location2, options !== null && options !== void 0 ? options : {}, {
13387
13821
  method: "GET",
13388
13822
  body: void 0,
13389
13823
  expected: [200, 201],
@@ -13401,14 +13835,16 @@ var require_req_eyes = __commonJS({
13401
13835
  {
13402
13836
  beforeRetry({ request, response: response2 }) {
13403
13837
  if (response2 && response2.status === 200 && response2.headers.has("Location")) {
13404
- return { request, url: response2.headers.get("Location") };
13838
+ const location3 = updateOriginAndPath(response2.headers.get("Location"), settings.eyesServerUrl);
13839
+ return { request, url: location3 };
13405
13840
  }
13406
13841
  }
13407
13842
  },
13408
13843
  handleUnexpectedResponse()
13409
13844
  ]
13410
13845
  });
13411
- return await req2(pollResponse.headers.get("Location"), options !== null && options !== void 0 ? options : {}, {
13846
+ const resultLocation = updateOriginAndPath(pollResponse.headers.get("Location"), settings.eyesServerUrl);
13847
+ return await req2(resultLocation, options !== null && options !== void 0 ? options : {}, {
13412
13848
  method: "DELETE",
13413
13849
  expected: void 0
13414
13850
  });
@@ -13416,6 +13852,17 @@ var require_req_eyes = __commonJS({
13416
13852
  }
13417
13853
  };
13418
13854
  }
13855
+ function updateOriginAndPath(url, originalUrl) {
13856
+ const updatedUrl = new URL(url);
13857
+ const originalURL = new URL(originalUrl);
13858
+ if (updatedUrl.host === originalURL.host)
13859
+ return url;
13860
+ updatedUrl.protocol = originalURL.protocol;
13861
+ updatedUrl.host = originalURL.host;
13862
+ updatedUrl.pathname = path.posix.join(originalURL.pathname, updatedUrl.pathname);
13863
+ return updatedUrl.href;
13864
+ }
13865
+ exports.updateOriginAndPath = updateOriginAndPath;
13419
13866
  }
13420
13867
  });
13421
13868
 
@@ -26528,438 +26975,6 @@ var require_gif = __commonJS({
26528
26975
  }
26529
26976
  });
26530
26977
 
26531
- // ../../node_modules/path-browserify/index.js
26532
- var require_path_browserify = __commonJS({
26533
- "../../node_modules/path-browserify/index.js"(exports, module) {
26534
- "use strict";
26535
- init_process();
26536
- init_setImmediate();
26537
- init_buffer();
26538
- init_setInterval();
26539
- function assertPath(path) {
26540
- if (typeof path !== "string") {
26541
- throw new TypeError("Path must be a string. Received " + JSON.stringify(path));
26542
- }
26543
- }
26544
- function normalizeStringPosix(path, allowAboveRoot) {
26545
- var res = "";
26546
- var lastSegmentLength = 0;
26547
- var lastSlash = -1;
26548
- var dots = 0;
26549
- var code;
26550
- for (var i = 0; i <= path.length; ++i) {
26551
- if (i < path.length)
26552
- code = path.charCodeAt(i);
26553
- else if (code === 47)
26554
- break;
26555
- else
26556
- code = 47;
26557
- if (code === 47) {
26558
- if (lastSlash === i - 1 || dots === 1) {
26559
- } else if (lastSlash !== i - 1 && dots === 2) {
26560
- if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {
26561
- if (res.length > 2) {
26562
- var lastSlashIndex = res.lastIndexOf("/");
26563
- if (lastSlashIndex !== res.length - 1) {
26564
- if (lastSlashIndex === -1) {
26565
- res = "";
26566
- lastSegmentLength = 0;
26567
- } else {
26568
- res = res.slice(0, lastSlashIndex);
26569
- lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
26570
- }
26571
- lastSlash = i;
26572
- dots = 0;
26573
- continue;
26574
- }
26575
- } else if (res.length === 2 || res.length === 1) {
26576
- res = "";
26577
- lastSegmentLength = 0;
26578
- lastSlash = i;
26579
- dots = 0;
26580
- continue;
26581
- }
26582
- }
26583
- if (allowAboveRoot) {
26584
- if (res.length > 0)
26585
- res += "/..";
26586
- else
26587
- res = "..";
26588
- lastSegmentLength = 2;
26589
- }
26590
- } else {
26591
- if (res.length > 0)
26592
- res += "/" + path.slice(lastSlash + 1, i);
26593
- else
26594
- res = path.slice(lastSlash + 1, i);
26595
- lastSegmentLength = i - lastSlash - 1;
26596
- }
26597
- lastSlash = i;
26598
- dots = 0;
26599
- } else if (code === 46 && dots !== -1) {
26600
- ++dots;
26601
- } else {
26602
- dots = -1;
26603
- }
26604
- }
26605
- return res;
26606
- }
26607
- function _format(sep, pathObject) {
26608
- var dir = pathObject.dir || pathObject.root;
26609
- var base = pathObject.base || (pathObject.name || "") + (pathObject.ext || "");
26610
- if (!dir) {
26611
- return base;
26612
- }
26613
- if (dir === pathObject.root) {
26614
- return dir + base;
26615
- }
26616
- return dir + sep + base;
26617
- }
26618
- var posix = {
26619
- // path.resolve([from ...], to)
26620
- resolve: function resolve() {
26621
- var resolvedPath = "";
26622
- var resolvedAbsolute = false;
26623
- var cwd;
26624
- for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
26625
- var path;
26626
- if (i >= 0)
26627
- path = arguments[i];
26628
- else {
26629
- if (cwd === void 0)
26630
- cwd = process.cwd();
26631
- path = cwd;
26632
- }
26633
- assertPath(path);
26634
- if (path.length === 0) {
26635
- continue;
26636
- }
26637
- resolvedPath = path + "/" + resolvedPath;
26638
- resolvedAbsolute = path.charCodeAt(0) === 47;
26639
- }
26640
- resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);
26641
- if (resolvedAbsolute) {
26642
- if (resolvedPath.length > 0)
26643
- return "/" + resolvedPath;
26644
- else
26645
- return "/";
26646
- } else if (resolvedPath.length > 0) {
26647
- return resolvedPath;
26648
- } else {
26649
- return ".";
26650
- }
26651
- },
26652
- normalize: function normalize(path) {
26653
- assertPath(path);
26654
- if (path.length === 0)
26655
- return ".";
26656
- var isAbsolute = path.charCodeAt(0) === 47;
26657
- var trailingSeparator = path.charCodeAt(path.length - 1) === 47;
26658
- path = normalizeStringPosix(path, !isAbsolute);
26659
- if (path.length === 0 && !isAbsolute)
26660
- path = ".";
26661
- if (path.length > 0 && trailingSeparator)
26662
- path += "/";
26663
- if (isAbsolute)
26664
- return "/" + path;
26665
- return path;
26666
- },
26667
- isAbsolute: function isAbsolute(path) {
26668
- assertPath(path);
26669
- return path.length > 0 && path.charCodeAt(0) === 47;
26670
- },
26671
- join: function join() {
26672
- if (arguments.length === 0)
26673
- return ".";
26674
- var joined;
26675
- for (var i = 0; i < arguments.length; ++i) {
26676
- var arg = arguments[i];
26677
- assertPath(arg);
26678
- if (arg.length > 0) {
26679
- if (joined === void 0)
26680
- joined = arg;
26681
- else
26682
- joined += "/" + arg;
26683
- }
26684
- }
26685
- if (joined === void 0)
26686
- return ".";
26687
- return posix.normalize(joined);
26688
- },
26689
- relative: function relative(from, to) {
26690
- assertPath(from);
26691
- assertPath(to);
26692
- if (from === to)
26693
- return "";
26694
- from = posix.resolve(from);
26695
- to = posix.resolve(to);
26696
- if (from === to)
26697
- return "";
26698
- var fromStart = 1;
26699
- for (; fromStart < from.length; ++fromStart) {
26700
- if (from.charCodeAt(fromStart) !== 47)
26701
- break;
26702
- }
26703
- var fromEnd = from.length;
26704
- var fromLen = fromEnd - fromStart;
26705
- var toStart = 1;
26706
- for (; toStart < to.length; ++toStart) {
26707
- if (to.charCodeAt(toStart) !== 47)
26708
- break;
26709
- }
26710
- var toEnd = to.length;
26711
- var toLen = toEnd - toStart;
26712
- var length = fromLen < toLen ? fromLen : toLen;
26713
- var lastCommonSep = -1;
26714
- var i = 0;
26715
- for (; i <= length; ++i) {
26716
- if (i === length) {
26717
- if (toLen > length) {
26718
- if (to.charCodeAt(toStart + i) === 47) {
26719
- return to.slice(toStart + i + 1);
26720
- } else if (i === 0) {
26721
- return to.slice(toStart + i);
26722
- }
26723
- } else if (fromLen > length) {
26724
- if (from.charCodeAt(fromStart + i) === 47) {
26725
- lastCommonSep = i;
26726
- } else if (i === 0) {
26727
- lastCommonSep = 0;
26728
- }
26729
- }
26730
- break;
26731
- }
26732
- var fromCode = from.charCodeAt(fromStart + i);
26733
- var toCode = to.charCodeAt(toStart + i);
26734
- if (fromCode !== toCode)
26735
- break;
26736
- else if (fromCode === 47)
26737
- lastCommonSep = i;
26738
- }
26739
- var out = "";
26740
- for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {
26741
- if (i === fromEnd || from.charCodeAt(i) === 47) {
26742
- if (out.length === 0)
26743
- out += "..";
26744
- else
26745
- out += "/..";
26746
- }
26747
- }
26748
- if (out.length > 0)
26749
- return out + to.slice(toStart + lastCommonSep);
26750
- else {
26751
- toStart += lastCommonSep;
26752
- if (to.charCodeAt(toStart) === 47)
26753
- ++toStart;
26754
- return to.slice(toStart);
26755
- }
26756
- },
26757
- _makeLong: function _makeLong(path) {
26758
- return path;
26759
- },
26760
- dirname: function dirname(path) {
26761
- assertPath(path);
26762
- if (path.length === 0)
26763
- return ".";
26764
- var code = path.charCodeAt(0);
26765
- var hasRoot = code === 47;
26766
- var end = -1;
26767
- var matchedSlash = true;
26768
- for (var i = path.length - 1; i >= 1; --i) {
26769
- code = path.charCodeAt(i);
26770
- if (code === 47) {
26771
- if (!matchedSlash) {
26772
- end = i;
26773
- break;
26774
- }
26775
- } else {
26776
- matchedSlash = false;
26777
- }
26778
- }
26779
- if (end === -1)
26780
- return hasRoot ? "/" : ".";
26781
- if (hasRoot && end === 1)
26782
- return "//";
26783
- return path.slice(0, end);
26784
- },
26785
- basename: function basename(path, ext) {
26786
- if (ext !== void 0 && typeof ext !== "string")
26787
- throw new TypeError('"ext" argument must be a string');
26788
- assertPath(path);
26789
- var start = 0;
26790
- var end = -1;
26791
- var matchedSlash = true;
26792
- var i;
26793
- if (ext !== void 0 && ext.length > 0 && ext.length <= path.length) {
26794
- if (ext.length === path.length && ext === path)
26795
- return "";
26796
- var extIdx = ext.length - 1;
26797
- var firstNonSlashEnd = -1;
26798
- for (i = path.length - 1; i >= 0; --i) {
26799
- var code = path.charCodeAt(i);
26800
- if (code === 47) {
26801
- if (!matchedSlash) {
26802
- start = i + 1;
26803
- break;
26804
- }
26805
- } else {
26806
- if (firstNonSlashEnd === -1) {
26807
- matchedSlash = false;
26808
- firstNonSlashEnd = i + 1;
26809
- }
26810
- if (extIdx >= 0) {
26811
- if (code === ext.charCodeAt(extIdx)) {
26812
- if (--extIdx === -1) {
26813
- end = i;
26814
- }
26815
- } else {
26816
- extIdx = -1;
26817
- end = firstNonSlashEnd;
26818
- }
26819
- }
26820
- }
26821
- }
26822
- if (start === end)
26823
- end = firstNonSlashEnd;
26824
- else if (end === -1)
26825
- end = path.length;
26826
- return path.slice(start, end);
26827
- } else {
26828
- for (i = path.length - 1; i >= 0; --i) {
26829
- if (path.charCodeAt(i) === 47) {
26830
- if (!matchedSlash) {
26831
- start = i + 1;
26832
- break;
26833
- }
26834
- } else if (end === -1) {
26835
- matchedSlash = false;
26836
- end = i + 1;
26837
- }
26838
- }
26839
- if (end === -1)
26840
- return "";
26841
- return path.slice(start, end);
26842
- }
26843
- },
26844
- extname: function extname(path) {
26845
- assertPath(path);
26846
- var startDot = -1;
26847
- var startPart = 0;
26848
- var end = -1;
26849
- var matchedSlash = true;
26850
- var preDotState = 0;
26851
- for (var i = path.length - 1; i >= 0; --i) {
26852
- var code = path.charCodeAt(i);
26853
- if (code === 47) {
26854
- if (!matchedSlash) {
26855
- startPart = i + 1;
26856
- break;
26857
- }
26858
- continue;
26859
- }
26860
- if (end === -1) {
26861
- matchedSlash = false;
26862
- end = i + 1;
26863
- }
26864
- if (code === 46) {
26865
- if (startDot === -1)
26866
- startDot = i;
26867
- else if (preDotState !== 1)
26868
- preDotState = 1;
26869
- } else if (startDot !== -1) {
26870
- preDotState = -1;
26871
- }
26872
- }
26873
- if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot
26874
- preDotState === 0 || // The (right-most) trimmed path component is exactly '..'
26875
- preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
26876
- return "";
26877
- }
26878
- return path.slice(startDot, end);
26879
- },
26880
- format: function format(pathObject) {
26881
- if (pathObject === null || typeof pathObject !== "object") {
26882
- throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject);
26883
- }
26884
- return _format("/", pathObject);
26885
- },
26886
- parse: function parse(path) {
26887
- assertPath(path);
26888
- var ret = { root: "", dir: "", base: "", ext: "", name: "" };
26889
- if (path.length === 0)
26890
- return ret;
26891
- var code = path.charCodeAt(0);
26892
- var isAbsolute = code === 47;
26893
- var start;
26894
- if (isAbsolute) {
26895
- ret.root = "/";
26896
- start = 1;
26897
- } else {
26898
- start = 0;
26899
- }
26900
- var startDot = -1;
26901
- var startPart = 0;
26902
- var end = -1;
26903
- var matchedSlash = true;
26904
- var i = path.length - 1;
26905
- var preDotState = 0;
26906
- for (; i >= start; --i) {
26907
- code = path.charCodeAt(i);
26908
- if (code === 47) {
26909
- if (!matchedSlash) {
26910
- startPart = i + 1;
26911
- break;
26912
- }
26913
- continue;
26914
- }
26915
- if (end === -1) {
26916
- matchedSlash = false;
26917
- end = i + 1;
26918
- }
26919
- if (code === 46) {
26920
- if (startDot === -1)
26921
- startDot = i;
26922
- else if (preDotState !== 1)
26923
- preDotState = 1;
26924
- } else if (startDot !== -1) {
26925
- preDotState = -1;
26926
- }
26927
- }
26928
- if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot
26929
- preDotState === 0 || // The (right-most) trimmed path component is exactly '..'
26930
- preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
26931
- if (end !== -1) {
26932
- if (startPart === 0 && isAbsolute)
26933
- ret.base = ret.name = path.slice(1, end);
26934
- else
26935
- ret.base = ret.name = path.slice(startPart, end);
26936
- }
26937
- } else {
26938
- if (startPart === 0 && isAbsolute) {
26939
- ret.name = path.slice(1, startDot);
26940
- ret.base = path.slice(1, end);
26941
- } else {
26942
- ret.name = path.slice(startPart, startDot);
26943
- ret.base = path.slice(startPart, end);
26944
- }
26945
- ret.ext = path.slice(startDot, end);
26946
- }
26947
- if (startPart > 0)
26948
- ret.dir = path.slice(0, startPart - 1);
26949
- else if (isAbsolute)
26950
- ret.dir = "/";
26951
- return ret;
26952
- },
26953
- sep: "/",
26954
- delimiter: ":",
26955
- win32: null,
26956
- posix: null
26957
- };
26958
- posix.posix = posix;
26959
- module.exports = posix;
26960
- }
26961
- });
26962
-
26963
26978
  // ../image/dist/image.js
26964
26979
  var require_image = __commonJS({
26965
26980
  "../image/dist/image.js"(exports) {
@@ -28220,17 +28235,21 @@ var require_open_eyes = __commonJS({
28220
28235
  function makeOpenEyes({ requests, agentId: defaultAgentId, concurrency, cwd = process.cwd(), heartbeat, logger: mainLogger }) {
28221
28236
  const throttle = concurrency ? (0, throat_1.default)(concurrency) : (fn) => fn();
28222
28237
  return async function openEyes({ settings, logger = mainLogger }) {
28223
- var _a, _b;
28238
+ var _a, _b, _c;
28224
28239
  logger = logger.extend(mainLogger, { tags: [`eyes-base-${utils34.general.shortid()}`] });
28225
- settings.latestCommitInfo = await (0, extract_current_commit_1.extractLatestCommitInfo)({ execOptions: { cwd }, logger });
28226
- (_a = settings.processId) !== null && _a !== void 0 ? _a : settings.processId = heartbeat.processId;
28240
+ (_a = settings.latestCommitInfo) !== null && _a !== void 0 ? _a : settings.latestCommitInfo = await (0, extract_current_commit_1.extractLatestCommitInfo)({ execOptions: { cwd }, logger });
28241
+ if (settings.latestCommitInfo && !isISODate(settings.latestCommitInfo.timestamp)) {
28242
+ logger.warn(`latestCommitInfo.timestamp is an invalid ISO date string: ${settings.latestCommitInfo.timestamp}`);
28243
+ settings.latestCommitInfo = void 0;
28244
+ }
28245
+ (_b = settings.processId) !== null && _b !== void 0 ? _b : settings.processId = heartbeat.processId;
28227
28246
  if (settings.ignoreGitBranching) {
28228
28247
  settings.gitBranchingTimestamp = void 0;
28229
28248
  } else if (!settings.gitBranchingTimestamp) {
28230
28249
  let branchName = settings.branchName;
28231
28250
  let parentBranchName = settings.parentBranchName;
28232
28251
  try {
28233
- if (!branchName && !parentBranchName && ((_b = settings.batch) === null || _b === void 0 ? void 0 : _b.id) && !settings.batch.id.startsWith("generated")) {
28252
+ if (!branchName && !parentBranchName && ((_c = settings.batch) === null || _c === void 0 ? void 0 : _c.id) && !settings.batch.id.startsWith("generated")) {
28234
28253
  const branches = await requests.getBatchBranches({ settings: { ...settings, batchId: settings.batch.id } });
28235
28254
  branchName = branches.branchName;
28236
28255
  parentBranchName = branches.parentBranchName;
@@ -28248,6 +28267,10 @@ var require_open_eyes = __commonJS({
28248
28267
  logger.error("Error during extracting merge timestamp", err);
28249
28268
  }
28250
28269
  }
28270
+ if (settings.gitBranchingTimestamp && !isISODate(settings.gitBranchingTimestamp)) {
28271
+ logger.warn(`gitBranchingTimestamp is an invalid ISO date string: ${settings.gitBranchingTimestamp}`);
28272
+ settings.gitBranchingTimestamp = void 0;
28273
+ }
28251
28274
  settings.agentId = `${defaultAgentId} ${settings.agentId ? `[${settings.agentId}]` : ""}`.trim();
28252
28275
  logger.log('Command "openEyes" is called with settings', settings);
28253
28276
  return new Promise((resolve, reject) => {
@@ -28278,6 +28301,9 @@ var require_open_eyes = __commonJS({
28278
28301
  };
28279
28302
  }
28280
28303
  exports.makeOpenEyes = makeOpenEyes;
28304
+ function isISODate(str) {
28305
+ return /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\+\d{2}:\d{2})?/.test(str);
28306
+ }
28281
28307
  }
28282
28308
  });
28283
28309
 
@@ -34777,319 +34803,321 @@ var require_captureDomPollCjs = __commonJS({
34777
34803
  init_setImmediate();
34778
34804
  init_buffer();
34779
34805
  init_setInterval();
34780
- function t(t2) {
34781
- return t2 && t2.__esModule && Object.prototype.hasOwnProperty.call(t2, "default") ? t2.default : t2;
34806
+ function e(e2) {
34807
+ return e2 && e2.__esModule && Object.prototype.hasOwnProperty.call(e2, "default") ? e2.default : e2;
34782
34808
  }
34783
- var e = function() {
34784
- const t2 = function(t3) {
34809
+ var t = function() {
34810
+ const e2 = function(e3) {
34785
34811
  return function() {
34786
- function e3(t4, e4 = 0) {
34787
- const n3 = t4.charCodeAt(e4);
34788
- return n3 >= 55296 && n3 < 56320 ? 1024 * (n3 - 55296) + (t4.charCodeAt(e4 + 1) - 56320) + 65536 : 56320 <= n3 && n3 <= 57343 ? -1 : n3;
34812
+ function t3(e4, t4 = 0) {
34813
+ const n3 = e4.charCodeAt(t4);
34814
+ return n3 >= 55296 && n3 < 56320 ? 1024 * (n3 - 55296) + (e4.charCodeAt(t4 + 1) - 56320) + 65536 : 56320 <= n3 && n3 <= 57343 ? -1 : n3;
34789
34815
  }
34790
- var n2 = function(t4, n3) {
34816
+ var n2 = function(e4, n3) {
34791
34817
  const o2 = [];
34792
34818
  let r2 = 0;
34793
- for (let s2 = 0; s2 < t4.length; ++s2) {
34794
- const a2 = e3(t4, s2);
34819
+ for (let s2 = 0; s2 < e4.length; ++s2) {
34820
+ const a2 = t3(e4, s2);
34795
34821
  let c2 = 0;
34796
34822
  a2 > 0 && (c2 = a2 < 128 ? 1 : a2 < 2048 ? 2 : a2 < 65536 ? 3 : a2 < 2097152 ? 4 : a2 < 67108864 ? 5 : 6), r2 + c2 > n3 ? (o2.push(s2), r2 = c2) : r2 += c2;
34797
34823
  }
34798
34824
  return o2;
34799
34825
  };
34800
34826
  const o = n2, r = "WIP", s = "SUCCESS", a = "SUCCESS_CHUNKED", c = "ERROR";
34801
- var u = function(t4, e4, n3 = {}) {
34802
- const u2 = function(t5, { chunkByteLength: e5 = 0 } = {}) {
34803
- if (t5) {
34804
- if (t5.value) {
34805
- if (e5) {
34806
- if (!t5.chunks)
34827
+ var u = function(e4, t4, n3 = {}) {
34828
+ const u2 = function(e5, { chunkByteLength: t5 = 0 } = {}) {
34829
+ if (e5) {
34830
+ if (e5.value) {
34831
+ if (t5) {
34832
+ if (!e5.chunks)
34807
34833
  try {
34808
- const n4 = JSON.stringify(t5.value);
34809
- t5.chunks = o(n4, e5), t5.chunks.length > 0 && (t5.from = 0, t5.value = n4);
34810
- } catch (t6) {
34811
- return { status: c, error: t6.message };
34834
+ const n4 = JSON.stringify(e5.value);
34835
+ e5.chunks = o(n4, t5), e5.chunks.length > 0 && (e5.from = 0, e5.value = n4);
34836
+ } catch (e6) {
34837
+ return { status: c, error: e6.message };
34812
34838
  }
34813
- if (t5.from >= 0)
34814
- return { status: a, value: t5.value.substring(t5.from, t5.from = t5.chunks.shift()), done: !t5.from };
34839
+ if (e5.from >= 0)
34840
+ return { status: a, value: e5.value.substring(e5.from, e5.from = e5.chunks.shift()), done: !e5.from };
34815
34841
  }
34816
- return { status: s, value: t5.value };
34842
+ return { status: s, value: e5.value };
34817
34843
  }
34818
- return t5.error ? { status: c, error: t5.error } : { status: r };
34844
+ return e5.error ? { status: c, error: e5.error } : { status: r };
34819
34845
  }
34820
34846
  return { status: c, error: "unexpected poll request received - cannot find state of current operation" };
34821
- }((t4 = t4 || {})[e4], n3);
34822
- return (u2.status === s || u2.status === c || u2.status === a && u2.done) && (t4[e4] = null), u2;
34847
+ }((e4 = e4 || {})[t4], n3);
34848
+ return (u2.status === s || u2.status === c || u2.status === a && u2.done) && (e4[t4] = null), u2;
34823
34849
  };
34824
34850
  const i = u;
34825
- var l = { chunkify: n2, pollify: function(t4, e4, n3) {
34851
+ var l = { chunkify: n2, pollify: function(e4, t4, n3) {
34826
34852
  return (o2) => function() {
34827
- return e4[n3] || (e4[n3] = {}, Promise.resolve().then(() => t4.apply(null, arguments)).then((t5) => e4[n3].value = t5).catch((t5) => e4[n3].error = t5.message)), i(e4, n3, o2);
34853
+ return t4[n3] || (t4[n3] = {}, Promise.resolve().then(() => e4.apply(null, arguments)).then((e5) => t4[n3].value = e5).catch((e5) => t4[n3].error = e5.message)), i(t4, n3, o2);
34828
34854
  };
34829
- }, poll: u, absolutizeUrl: function(t4, e4) {
34830
- if (function(t5) {
34855
+ }, poll: u, absolutizeUrl: function(e4, t4) {
34856
+ if (function(e5) {
34831
34857
  try {
34832
- return new URL(t5), true;
34833
- } catch (t6) {
34858
+ return new URL(e5), true;
34859
+ } catch (e6) {
34834
34860
  return false;
34835
34861
  }
34836
- }(t4))
34837
- return t4;
34862
+ }(e4))
34863
+ return e4;
34838
34864
  let n3 = true;
34839
34865
  try {
34840
- n3 = t4 !== decodeURI(t4);
34841
- } catch (t5) {
34866
+ n3 = e4 !== decodeURI(e4);
34867
+ } catch (e5) {
34842
34868
  n3 = true;
34843
34869
  }
34844
34870
  try {
34845
- const o2 = new URL(t4, e4).href;
34871
+ const o2 = new URL(e4, t4).href;
34846
34872
  return n3 ? o2 : decodeURI(o2);
34847
- } catch (e5) {
34848
- return n3 ? t4 : decodeURI(t4);
34873
+ } catch (t5) {
34874
+ return n3 ? e4 : decodeURI(e4);
34849
34875
  }
34850
- }, isInlineFrame: function(t4) {
34851
- return t4.contentDocument && t4.contentDocument.location && !/^https?:$/.test(t4.contentDocument.location.protocol);
34852
- }, isAccessibleFrame: function(t4) {
34876
+ }, isInlineFrame: function(e4) {
34877
+ return e4.contentDocument && e4.contentDocument.location && !/^https?:$/.test(e4.contentDocument.location.protocol);
34878
+ }, isAccessibleFrame: function(e4) {
34853
34879
  try {
34854
- const e4 = t4.contentDocument;
34855
- return Boolean(e4 && e4.defaultView && e4.defaultView.frameElement);
34856
- } catch (t5) {
34880
+ const t4 = e4.contentDocument;
34881
+ return Boolean(t4 && t4.defaultView && t4.defaultView.frameElement);
34882
+ } catch (e5) {
34857
34883
  return false;
34858
34884
  }
34859
34885
  } }, d = { EYES_NAMESPACE: "__EYES__APPLITOOLS__", DOM_CAPTURE_KEY: "domCaptureResult", NODE_TYPES: { ELEMENT: 1, TEXT: 3, DOCUMENT_FRAGMENT: 11 }, DEFAULT_STYLE_PROPS: ["background-repeat", "background-origin", "background-position", "background-color", "background-image", "background-size", "border-width", "border-color", "border-style", "color", "display", "font-size", "font-weight", "font-family", "line-height", "margin", "opacity", "overflow", "padding", "visibility", "text-align", "position", "border-radius", "z-index"], DEFAULT_RECT_PROPS: ["width", "height", "top", "left"], DEFAULT_IGNORED_TAG_NAMES: ["HEAD", "SCRIPT"] };
34860
34886
  const f = /url\((?!['"]?:)['"]?([^'")]*)['"]?\)/;
34861
34887
  const { NODE_TYPES: m } = d;
34862
- function h(t4) {
34863
- return Array.prototype.filter.call(t4.parentNode.childNodes, (e4) => e4.tagName === t4.tagName).indexOf(t4) + 1;
34864
- }
34865
- var p = function(e4) {
34866
- var n3 = t3.implementation.createHTMLDocument(""), o2 = n3.createElement("style");
34867
- return o2.textContent = e4, n3.body.appendChild(o2), o2.sheet;
34868
- }, g = function(t4) {
34869
- const e4 = Array.from(t4.attributes).find((t5) => "href" === t5.name.toLowerCase());
34870
- return e4 && e4.value;
34871
- }, y = function(t4) {
34872
- if (t4.nodeName && "LINK" === t4.nodeName.toUpperCase() && t4.attributes) {
34873
- const e4 = new Map(Array.from(t4.attributes, (t5) => [t5.name.toLowerCase(), t5.value.toLowerCase()]));
34874
- return "stylesheet" === e4.get("rel") || "style" === e4.get("as") && ["preload", "prefetch"].includes(e4.get("rel"));
34888
+ function h(e4) {
34889
+ return Array.prototype.filter.call(e4.parentNode.childNodes, (t4) => t4.tagName === e4.tagName).indexOf(e4) + 1;
34890
+ }
34891
+ var p = function(t4) {
34892
+ var n3 = e3.implementation.createHTMLDocument(""), o2 = n3.createElement("style");
34893
+ return o2.textContent = t4, n3.body.appendChild(o2), o2.sheet;
34894
+ }, g = function(e4) {
34895
+ const t4 = Array.from(e4.attributes).find((e5) => "href" === e5.name.toLowerCase());
34896
+ return t4 && t4.value;
34897
+ }, y = function(e4) {
34898
+ if (e4.nodeName && "LINK" === e4.nodeName.toUpperCase() && e4.attributes) {
34899
+ const t4 = new Map(Array.from(e4.attributes, (e5) => [e5.name.toLowerCase(), e5.value.toLowerCase()]));
34900
+ return "stylesheet" === t4.get("rel") || "style" === t4.get("as") && ["preload", "prefetch"].includes(t4.get("rel"));
34875
34901
  }
34876
34902
  return false;
34877
34903
  };
34878
34904
  const w = g, E = y;
34879
34905
  const { absolutizeUrl: C, isInlineFrame: T } = l, N = p, b = g, S = y, { NODE_TYPES: A } = d;
34880
- const { absolutizeUrl: $, isInlineFrame: _ } = l, R = function(t4) {
34881
- const e4 = t4 ? t4.match(f) : void 0;
34882
- return e4 ? e4[1] : e4;
34883
- }, P = async function({ bgImages: t4, timeout: e4 = 5e3, Image: n3 = window.Image }) {
34884
- return (await Promise.all(Array.from(t4).map((t5) => {
34885
- return Promise.race([new Promise((e5) => {
34906
+ const { absolutizeUrl: $, isInlineFrame: R } = l, _ = function(e4) {
34907
+ const t4 = e4 ? e4.match(f) : void 0;
34908
+ return t4 ? t4[1] : t4;
34909
+ }, P = async function({ bgImages: e4, timeout: t4 = 5e3, Image: n3 = window.Image }) {
34910
+ return (await Promise.all(Array.from(e4).map((e5) => {
34911
+ return Promise.race([new Promise((t5) => {
34886
34912
  const o3 = new n3();
34887
- o3.onload = () => e5({ url: t5, width: o3.naturalWidth, height: o3.naturalHeight }), o3.onerror = () => e5(), o3.src = t5;
34888
- }), (o2 = e4, new Promise((t6) => {
34889
- setTimeout(t6, o2);
34913
+ o3.onload = () => t5({ url: e5, width: o3.naturalWidth, height: o3.naturalHeight }), o3.onerror = () => t5(), o3.src = e5;
34914
+ }), (o2 = t4, new Promise((e6) => {
34915
+ setTimeout(e6, o2);
34890
34916
  }))]);
34891
34917
  var o2;
34892
- }))).reduce((t5, e5) => (e5 && (t5[e5.url] = { width: e5.width, height: e5.height }), t5), {});
34893
- }, D = function t4(e4) {
34894
- if (!e4.ownerDocument)
34918
+ }))).reduce((e5, t5) => (t5 && (e5[t5.url] = { width: t5.width, height: t5.height }), e5), {});
34919
+ }, U = function e4(t4) {
34920
+ if (!t4.ownerDocument)
34895
34921
  return "";
34896
- let n3 = "", o2 = e4, r2 = e4.ownerDocument, s2 = r2.defaultView.frameElement;
34922
+ let n3 = "", o2 = t4, r2 = t4.ownerDocument, s2 = r2.defaultView.frameElement;
34897
34923
  for (; o2 !== r2 && (!o2 || o2.nodeType !== m.DOCUMENT_FRAGMENT); )
34898
34924
  n3 = `${o2.tagName}[${h(o2)}]/${n3}`, o2 = o2.parentNode;
34899
- return s2 && (n3 = `${t4(s2)},${n3}`), n3.replace(/\/$/, "");
34900
- }, U = function({ parseCss: t4, CSSImportRule: e4, absolutizeUrl: n3, getCssFromCache: o2, unfetchedToken: r2 }) {
34925
+ return s2 && (n3 = `${e4(s2)},${n3}`), n3.replace(/\/$/, "");
34926
+ }, v = function({ parseCss: e4, CSSImportRule: t4, absolutizeUrl: n3, getCssFromCache: o2, unfetchedToken: r2 }) {
34901
34927
  return function s2(a2, c2) {
34902
34928
  let u2, i2 = "";
34903
34929
  try {
34904
- const l3 = t4(a2);
34905
- for (const t5 of Array.from(l3.cssRules))
34906
- if (t5 instanceof e4) {
34907
- const e5 = n3(t5.href, c2), a3 = o2(e5);
34930
+ const l3 = e4(a2);
34931
+ for (const e5 of Array.from(l3.cssRules))
34932
+ if (e5 instanceof t4) {
34933
+ const t5 = n3(e5.href, c2), a3 = o2(t5);
34908
34934
  if (void 0 !== a3) {
34909
- const { bundledCss: t6, unfetchedResources: n4 } = s2(a3, e5);
34910
- n4 && (u2 = new Set(n4)), i2 = `${i2}${t6}`;
34935
+ const { bundledCss: e6, unfetchedResources: n4 } = s2(a3, t5);
34936
+ n4 && (u2 = new Set(n4)), i2 = `${i2}${e6}`;
34911
34937
  } else
34912
- u2 = /* @__PURE__ */ new Set([e5]), i2 = `
34913
- ${r2}${e5}${r2}`;
34938
+ u2 = /* @__PURE__ */ new Set([t5]), i2 = `
34939
+ ${r2}${t5}${r2}`;
34914
34940
  }
34915
- } catch (t5) {
34916
- console.log(`error during getBundledCssFromCssText, styleBaseUrl=${c2}`, t5);
34941
+ } catch (e5) {
34942
+ console.log(`error during getBundledCssFromCssText, styleBaseUrl=${c2}`, e5);
34917
34943
  }
34918
34944
  var l2, d2;
34919
34945
  return i2 = `${i2}${l2 = a2, d2 = c2, `
34920
34946
  /** ${d2} **/
34921
34947
  ${l2}`}`, { bundledCss: i2, unfetchedResources: u2 };
34922
34948
  };
34923
- }, O = p, v = function(t4) {
34924
- const e4 = ["before", "after"];
34949
+ }, D = p, O = function(e4) {
34950
+ const t4 = ["before", "after"];
34925
34951
  try {
34926
34952
  let n3 = [];
34927
- return e4.forEach((e5) => {
34928
- const o2 = t4.ownerDocument.defaultView.getComputedStyle(t4, `:${e5}`);
34929
- o2 && "none" !== o2.getPropertyValue("content") && n3.push(e5);
34953
+ return t4.forEach((t5) => {
34954
+ const o2 = e4.ownerDocument.defaultView.getComputedStyle(e4, `:${t5}`);
34955
+ o2 && "none" !== o2.getPropertyValue("content") && n3.push(t5);
34930
34956
  }), n3.join("_and_");
34931
- } catch (t5) {
34957
+ } catch (e5) {
34932
34958
  return false;
34933
34959
  }
34934
- }, F = function(t4, { fetchTimeLimit: e4 } = {}) {
34960
+ }, F = function(e4, { fetchTimeLimit: t4 } = {}) {
34935
34961
  return async function(n3) {
34936
- const o2 = new AbortController(), r2 = [t4(n3, { cache: "force-cache", signal: o2.signal }).then((t5) => {
34937
- if (t5.ok)
34938
- return t5.text();
34939
- console.log("/failed to fetch (status " + t5.status + ") css from: " + n3 + "/");
34940
- }).catch((t5) => {
34941
- console.log("/failed to fetch (error " + t5.toString() + ") css from: " + n3 + "/");
34962
+ const o2 = new AbortController(), r2 = [e4(n3, { cache: "force-cache", signal: o2.signal }).then((e5) => {
34963
+ if (e5.ok)
34964
+ return e5.text();
34965
+ console.log("/failed to fetch (status " + e5.status + ") css from: " + n3 + "/");
34966
+ }).catch((e5) => {
34967
+ console.log("/failed to fetch (error " + e5.toString() + ") css from: " + n3 + "/");
34942
34968
  })];
34943
- return Number.isNaN(Number(e4)) || r2.push(new Promise((t5) => setTimeout(t5, e4)).then(() => o2.abort())), Promise.race(r2);
34969
+ return Number.isNaN(Number(t4)) || r2.push(new Promise((e5) => setTimeout(e5, t4)).then(() => o2.abort())), Promise.race(r2);
34944
34970
  };
34945
- }, I = function({ getCssFromCache: t4, absolutizeUrl: e4 }) {
34971
+ }, I = function({ getCssFromCache: e4, absolutizeUrl: t4 }) {
34946
34972
  return function(n3, o2) {
34947
34973
  let r2, s2, a2;
34948
- if (n3 && function(t5) {
34949
- return t5.nodeName && "STYLE" === t5.nodeName.toUpperCase();
34974
+ if (n3 && function(e5) {
34975
+ return e5.nodeName && "STYLE" === e5.nodeName.toUpperCase();
34950
34976
  }(n3))
34951
- r2 = Array.from(n3.childNodes).map((t5) => t5.nodeValue).join(""), s2 = o2;
34977
+ r2 = Array.from(n3.childNodes).map((e5) => e5.nodeValue).join(""), s2 = o2;
34952
34978
  else if (n3 && E(n3)) {
34953
34979
  const c2 = w(n3);
34954
- !function(t5) {
34955
- return t5 && t5.startsWith("data:");
34956
- }(c2) ? (s2 = e4(c2, o2), r2 = t4(s2)) : (s2 = o2, r2 = c2.match(/,(.+)/)[1]), a2 = void 0 === r2;
34980
+ !function(e5) {
34981
+ return e5 && e5.startsWith("data:");
34982
+ }(c2) ? (s2 = t4(c2, o2), r2 = e4(s2)) : (s2 = o2, r2 = c2.match(/,(.+)/)[1]), a2 = void 0 === r2;
34957
34983
  }
34958
34984
  return { cssText: r2, styleBaseUrl: s2, isUnfetched: a2 };
34959
34985
  };
34960
- }, k = function({ extractCssFromNode: t4, getBundledCssFromCssText: e4, unfetchedToken: n3 }) {
34986
+ }, k = function({ extractCssFromNode: e4, getBundledCssFromCssText: t4, unfetchedToken: n3 }) {
34961
34987
  return function(o2, r2) {
34962
- const { styleBaseUrl: s2, cssText: a2, isUnfetched: c2 } = t4(o2, r2);
34988
+ const { styleBaseUrl: s2, cssText: a2, isUnfetched: c2 } = e4(o2, r2);
34963
34989
  let u2, i2 = "";
34964
34990
  if (a2) {
34965
- const { bundledCss: t5, unfetchedResources: n4 } = e4(a2, s2);
34966
- i2 += t5, u2 = new Set(n4);
34991
+ const { bundledCss: e5, unfetchedResources: n4 } = t4(a2, s2);
34992
+ i2 += e5, u2 = new Set(n4);
34967
34993
  } else
34968
34994
  c2 && (i2 += `${n3}${s2}${n3}`, u2 = /* @__PURE__ */ new Set([s2]));
34969
34995
  return { bundledCss: i2, unfetchedResources: u2 };
34970
34996
  };
34971
- }, L = function(e4) {
34972
- return async function(n3 = t3) {
34997
+ }, L = function(t4) {
34998
+ return async function(n3 = e3) {
34973
34999
  const o2 = {}, r2 = Date.now(), s2 = [];
34974
- return function t4(n4, o3, r3, s3) {
34975
- function c2(t5) {
34976
- if (s3.push(async function(t6, n5, o4) {
35000
+ return function e4(n4, o3, r3, s3) {
35001
+ function c2(e5) {
35002
+ if (s3.push(async function(e6, n5, o4) {
34977
35003
  let r4, s4;
34978
- t6 && S(t6) && (s4 = C(b(t6), n5), r4 = await e4(s4), void 0 !== r4 && (o4[s4] = r4)), r4 && await a2(r4, s4, o4);
34979
- }(t5, o3, r3)), t5.nodeType === A.ELEMENT)
34980
- return "IFRAME" === t5.tagName.toUpperCase() ? i2(t5) : u2(t5);
35004
+ e6 && S(e6) && (s4 = C(b(e6), n5), r4 = await t4(s4), void 0 !== r4 && (o4[s4] = r4)), r4 && await a2(r4, s4, o4);
35005
+ }(e5, o3, r3)), e5.nodeType === A.ELEMENT)
35006
+ return "IFRAME" === e5.tagName.toUpperCase() ? i2(e5) : u2(e5);
34981
35007
  }
34982
- async function u2(t5) {
34983
- Array.prototype.map.call(t5.childNodes, c2);
35008
+ async function u2(e5) {
35009
+ Array.prototype.map.call(e5.childNodes, c2);
34984
35010
  }
34985
- async function i2(e5) {
34986
- if (u2(e5), e5.contentDocument)
35011
+ async function i2(t5) {
35012
+ if (u2(t5), t5.contentDocument)
34987
35013
  try {
34988
- const n5 = T(e5) ? e5.baseURI : e5.contentDocument.location.href;
34989
- t4(e5.contentDocument, n5, r3, s3);
34990
- } catch (e6) {
34991
- console.log(e6);
35014
+ const n5 = T(t5) ? t5.baseURI : t5.contentDocument.location.href;
35015
+ e4(t5.contentDocument, n5, r3, s3);
35016
+ } catch (t6) {
35017
+ console.log(t6);
34992
35018
  }
34993
35019
  }
34994
35020
  c2(n4.documentElement);
34995
- }(n3, n3.location.href, o2, s2), await Promise.all(s2), console.log("[prefetchAllCss]", Date.now() - r2), function(t4) {
34996
- return o2[t4];
35021
+ }(n3, n3.location.href, o2, s2), await Promise.all(s2), console.log("[prefetchAllCss]", Date.now() - r2), function(e4) {
35022
+ return o2[e4];
34997
35023
  };
34998
- async function a2(t4, n4, o3) {
35024
+ async function a2(e4, n4, o3) {
34999
35025
  try {
35000
- const r3 = N(t4), s3 = [];
35001
- for (const t5 of Array.from(r3.cssRules))
35002
- t5 instanceof CSSImportRule && s3.push((async () => {
35003
- const r4 = C(t5.href, n4), s4 = await e4(r4);
35026
+ const r3 = N(e4), s3 = [];
35027
+ for (const e5 of Array.from(r3.cssRules))
35028
+ e5 instanceof CSSImportRule && s3.push((async () => {
35029
+ const r4 = C(e5.href, n4), s4 = await t4(r4);
35004
35030
  o3[r4] = s4, void 0 !== s4 && await a2(s4, r4, o3);
35005
35031
  })());
35006
35032
  await Promise.all(s3);
35007
- } catch (t5) {
35008
- console.log(`error during fetchBundledCss, resourceUrl=${n4}`, t5);
35033
+ } catch (e5) {
35034
+ console.log(`error during fetchBundledCss, resourceUrl=${n4}`, e5);
35009
35035
  }
35010
35036
  }
35011
35037
  };
35012
35038
  }, { NODE_TYPES: x, DEFAULT_STYLE_PROPS: M, DEFAULT_RECT_PROPS: V, DEFAULT_IGNORED_TAG_NAMES: B } = d;
35013
- const { pollify: Y } = l, { EYES_NAMESPACE: z, DOM_CAPTURE_KEY: G } = d, j = async function({ doc: e4 = t3, styleProps: n3 = M, rectProps: o2 = V, ignoredTagNames: r2 = B, addStats: s2 = false, fetchTimeLimit: a2 = 3e4 } = {}) {
35014
- arguments[1] && (e4 = arguments[1]), arguments[2] && (s2 = arguments[2]), arguments[3] && (a2 = arguments[3]);
35039
+ const { pollify: Y } = l, { EYES_NAMESPACE: z, DOM_CAPTURE_KEY: G } = d, j = async function({ doc: t4 = e3, styleProps: n3 = M, rectProps: o2 = V, ignoredTagNames: r2 = B, addStats: s2 = false, fetchTimeLimit: a2 = 3e4 } = {}) {
35040
+ arguments[1] && (t4 = arguments[1]), arguments[2] && (s2 = arguments[2]), arguments[3] && (a2 = arguments[3]);
35015
35041
  const c2 = { total: {}, prefetchCss: {}, doCaptureDoc: {}, waitForImages: {} };
35016
- function u2(t4) {
35017
- t4.startTime = Date.now();
35042
+ function u2(e4) {
35043
+ e4.startTime = Date.now();
35018
35044
  }
35019
- function i2(t4) {
35020
- t4.endTime = Date.now(), t4.elapsedTime = t4.endTime - t4.startTime;
35045
+ function i2(e4) {
35046
+ e4.endTime = Date.now(), e4.elapsedTime = e4.endTime - e4.startTime;
35021
35047
  }
35022
35048
  const l2 = [];
35023
35049
  u2(c2.total);
35024
35050
  const d2 = /* @__PURE__ */ new Set(), f2 = [], m2 = "@@@@@", h2 = "#####", p2 = "-----";
35025
35051
  u2(c2.prefetchCss);
35026
- const g2 = L(F(fetch, { fetchTimeLimit: a2 })), y2 = await g2(e4);
35052
+ const g2 = L(F(fetch, { fetchTimeLimit: a2 })), y2 = await g2(t4);
35027
35053
  i2(c2.prefetchCss);
35028
- const w2 = U({ parseCss: O, CSSImportRule, getCssFromCache: y2, absolutizeUrl: $, unfetchedToken: h2 }), E2 = I({ getCssFromCache: y2, absolutizeUrl: $ }), C2 = k({ extractCssFromNode: E2, getBundledCssFromCssText: w2, unfetchedToken: h2 });
35054
+ const w2 = v({ parseCss: D, CSSImportRule, getCssFromCache: y2, absolutizeUrl: $, unfetchedToken: h2 }), E2 = I({ getCssFromCache: y2, absolutizeUrl: $ }), C2 = k({ extractCssFromNode: E2, getBundledCssFromCssText: w2, unfetchedToken: h2 });
35029
35055
  u2(c2.doCaptureDoc);
35030
- const T2 = function t4(s3, a3 = s3.location && s3.location.href) {
35056
+ const T2 = function e4(s3, a3 = s3.location && s3.location.href) {
35031
35057
  const c3 = /* @__PURE__ */ new Set();
35032
35058
  let u3 = "";
35033
35059
  const i3 = h3(s3.documentElement || s3);
35034
- return i3.css = u3, l2.push(P({ bgImages: c3 }).then((t5) => i3.images = t5)), i3;
35035
- function h3(e5) {
35036
- if (e5.hasAttribute && e5.hasAttribute("data-applitools-skip"))
35060
+ return i3.css = u3, l2.push(P({ bgImages: c3 }).then((e5) => i3.images = e5)), i3;
35061
+ function h3(t5) {
35062
+ if (t5.hasAttribute && t5.hasAttribute("data-applitools-skip"))
35037
35063
  return null;
35038
- const { bundledCss: n4, unfetchedResources: o3 } = C2(e5, a3);
35064
+ const { bundledCss: n4, unfetchedResources: o3 } = C2(t5, a3);
35039
35065
  if (u3 += n4, o3)
35040
- for (const t5 of o3)
35041
- d2.add(t5);
35042
- switch (e5.nodeType) {
35066
+ for (const e5 of o3)
35067
+ d2.add(e5);
35068
+ switch (t5.nodeType) {
35043
35069
  case x.TEXT:
35044
- return function(t5) {
35045
- return { tagName: "#text", text: t5.textContent };
35046
- }(e5);
35070
+ return function(e5) {
35071
+ return { tagName: "#text", text: e5.textContent };
35072
+ }(t5);
35047
35073
  case x.ELEMENT:
35048
- return "IFRAME" === e5.tagName.toUpperCase() ? function(e6) {
35049
- const n5 = p3(e6);
35074
+ return "IFRAME" === t5.tagName.toUpperCase() ? function(t6) {
35075
+ const n5 = p3(t6);
35050
35076
  let o4;
35051
35077
  try {
35052
- o4 = e6.contentDocument;
35053
- } catch (e7) {
35078
+ o4 = t6.contentDocument;
35079
+ } catch (t7) {
35054
35080
  return r3(), n5;
35055
35081
  }
35056
35082
  try {
35057
- o4 ? n5.childNodes = [t4(o4, _(e6) ? e6.baseURI : o4.location.href)] : r3();
35058
- } catch (e7) {
35059
- console.log("error in iframeToJSON", e7);
35083
+ o4 ? n5.childNodes = [e4(o4, R(t6) ? t6.baseURI : o4.location.href)] : r3();
35084
+ } catch (t7) {
35085
+ console.log("error in iframeToJSON", t7);
35060
35086
  }
35061
35087
  return n5;
35062
35088
  function r3() {
35063
- const t5 = D(e6);
35064
- f2.push(t5), n5.childNodes = [`${m2}${t5}${m2}`];
35089
+ const e5 = U(t6);
35090
+ f2.push(e5), n5.childNodes = [`${m2}${e5}${m2}`];
35065
35091
  }
35066
- }(e5) : p3(e5);
35092
+ }(t5) : p3(t5);
35067
35093
  case x.DOCUMENT_FRAGMENT:
35068
- return { childNodes: Array.prototype.map.call(e5.childNodes, h3).filter(Boolean) };
35094
+ return { childNodes: Array.prototype.map.call(t5.childNodes, h3).filter(Boolean) };
35069
35095
  default:
35070
35096
  return null;
35071
35097
  }
35072
35098
  }
35073
35099
  function p3(s4) {
35074
- const u4 = Array.prototype.map.call(s4.childNodes, h3).filter(Boolean), i4 = s4.shadowRoot && t4(s4.shadowRoot, a3), l3 = s4.tagName.toUpperCase();
35100
+ const u4 = Array.prototype.map.call(s4.childNodes, h3).filter(Boolean), i4 = s4.shadowRoot && e4(s4.shadowRoot, a3), l3 = s4.tagName.toUpperCase();
35075
35101
  if (r2.indexOf(l3) > -1)
35076
35102
  return null;
35077
- const d3 = e4.defaultView.getComputedStyle(s4), f3 = s4.getBoundingClientRect(), m3 = {};
35078
- for (const t5 of n3)
35079
- m3[t5] = d3.getPropertyValue(t5);
35103
+ const d3 = t4.defaultView.getComputedStyle(s4), f3 = s4.getBoundingClientRect(), m3 = {};
35104
+ for (const e5 of n3)
35105
+ m3[e5] = d3.getPropertyValue(e5);
35080
35106
  m3["border-width"] || (m3["border-width"] = `${d3.getPropertyValue("border-top-width")} ${d3.getPropertyValue("border-right-width")} ${d3.getPropertyValue("border-bottom-width")} ${d3.getPropertyValue("border-left-width")}`);
35081
35107
  const p4 = {};
35082
- for (const t5 of o2)
35083
- p4[t5] = f3[t5];
35084
- const g3 = Array.from(s4.attributes).map((t5) => ({ key: t5.name, value: t5.value })).reduce((t5, e5) => (t5[e5.key] = e5.value, t5), {}), y3 = R(d3.getPropertyValue("background-image"));
35108
+ for (const e5 of o2)
35109
+ p4[e5] = f3[e5];
35110
+ const g3 = Array.from(s4.attributes).map((e5) => ({ key: e5.name, value: e5.value })).reduce((e5, t5) => (e5[t5.key] = t5.value, e5), {});
35111
+ "INPUT" !== l3 && "TEXTAREA" !== l3 || !s4.value || (g3.value && console.log(`[captureFrame] Overriding element attributes value from ${g3.value} to ${s4.value}`), g3.value = s4.value);
35112
+ const y3 = _(d3.getPropertyValue("background-image"));
35085
35113
  y3 && c3.add(y3);
35086
- const w3 = v(s4);
35114
+ const w3 = O(s4);
35087
35115
  w3 && (g3["data-applitools-has-pseudo"] = w3);
35088
35116
  const E3 = { tagName: l3, style: Y2(m3), rect: Y2(p4), attributes: Y2(g3), childNodes: u4 };
35089
35117
  return i4 && (E3.shadowRoot = i4), E3;
35090
35118
  }
35091
- }(e4);
35092
- i2(c2.doCaptureDoc), u2(c2.waitForImages), await Promise.all(l2), i2(c2.waitForImages), T2.version = "1.3.0", T2.scriptVersion = "11.2.6";
35119
+ }(t4);
35120
+ i2(c2.doCaptureDoc), u2(c2.waitForImages), await Promise.all(l2), i2(c2.waitForImages), T2.version = "1.3.0", T2.scriptVersion = "11.2.7";
35093
35121
  const N2 = f2.length ? `${f2.join("\n")}
35094
35122
  ` : "", b2 = d2.size ? `${Array.from(d2).join("\n")}
35095
35123
  ` : "", S2 = JSON.stringify({ separator: p2, cssStartToken: h2, cssEndToken: h2, iframeStartToken: `"${m2}`, iframeEndToken: `${m2}"` });
@@ -35101,38 +35129,38 @@ ${JSON.stringify(T2)}${s2 ? `
35101
35129
  ${p2}
35102
35130
  ${JSON.stringify(c2)}` : ""}`;
35103
35131
  return console.log("[captureFrame]", JSON.stringify(c2)), A2;
35104
- function Y2(t4) {
35105
- return Object.keys(t4).length ? t4 : void 0;
35132
+ function Y2(e4) {
35133
+ return Object.keys(e4).length ? e4 : void 0;
35106
35134
  }
35107
35135
  };
35108
35136
  window[z] = window[z] || {};
35109
35137
  const J = Y(j, window[z], G);
35110
- return function(t4) {
35111
- return t4 && t4.__esModule && Object.prototype.hasOwnProperty.call(t4, "default") ? t4.default : t4;
35112
- }(function(t4) {
35113
- return JSON.stringify(J(t4)(t4));
35138
+ return function(e4) {
35139
+ return e4 && e4.__esModule && Object.prototype.hasOwnProperty.call(e4, "default") ? e4.default : e4;
35140
+ }(function(e4) {
35141
+ return JSON.stringify(J(e4)(e4));
35114
35142
  });
35115
35143
  }();
35116
35144
  };
35117
- let e2 = true;
35145
+ let t2 = true;
35118
35146
  try {
35119
35147
  let n2 = document.head.querySelector("[data-applitools-sandbox]");
35120
35148
  n2 || (n2 = document.createElement("iframe"), n2.setAttribute("data-applitools-sandbox", ""), n2.setAttribute("data-applitools-skip", ""), document.head.appendChild(n2));
35121
35149
  const o = window.crypto.getRandomValues(new Uint32Array(1))[0], r = n2.contentDocument.createElement("script");
35122
- r.textContent = `window['ctor-${o}'] = ${t2.toString()};`, n2.contentDocument.head.appendChild(r);
35150
+ r.textContent = `window['ctor-${o}'] = ${e2.toString()};`, n2.contentDocument.head.appendChild(r);
35123
35151
  const s = n2.contentWindow[`ctor-${o}`];
35124
35152
  if ("function" != typeof s)
35125
35153
  throw new Error("Sandbox failed to extract function");
35126
- return e2 = false, s(document).apply(null, arguments);
35154
+ return t2 = false, s(document).apply(null, arguments);
35127
35155
  } catch (n2) {
35128
35156
  try {
35129
- return t2(document).apply(null, arguments);
35130
- } catch (t3) {
35131
- throw e2 ? t3 : n2;
35157
+ return e2(document).apply(null, arguments);
35158
+ } catch (e3) {
35159
+ throw t2 ? e3 : n2;
35132
35160
  }
35133
35161
  }
35134
35162
  };
35135
- var n = t(e);
35163
+ var n = e(t);
35136
35164
  module.exports = n;
35137
35165
  }
35138
35166
  });
@@ -86554,26 +86582,27 @@ var require_open_eyes4 = __commonJS({
86554
86582
  var utils34 = __importStar(require_browser3());
86555
86583
  function makeOpenEyes({ type: defaultType = "classic", clients, batch, core, cores, spec, environment, logger: mainLogger, asyncCache }) {
86556
86584
  return async function openEyes({ type = defaultType, settings, config, target, logger = mainLogger }) {
86557
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
86558
- var _t, _u, _v, _w, _x;
86585
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
86586
+ var _u, _v, _w, _x, _y;
86559
86587
  logger = logger.extend(mainLogger, { tags: [`eyes-${type}-${utils34.general.shortid()}`] });
86560
86588
  settings = { ...config === null || config === void 0 ? void 0 : config.open, ...settings };
86561
86589
  (0, populate_eyes_server_settings_1.populateEyesServerSettings)(settings);
86562
86590
  (_a = settings.userTestId) !== null && _a !== void 0 ? _a : settings.userTestId = `${settings.testName}--${utils34.general.guid()}`;
86563
86591
  settings.batch = { ...batch, ...settings.batch };
86564
- (_b = (_t = settings.batch).id) !== null && _b !== void 0 ? _b : _t.id = (_c = utils34.general.getEnvValue("BATCH_ID")) !== null && _c !== void 0 ? _c : `generated-${utils34.general.guid()}`;
86565
- (_d = (_u = settings.batch).buildId) !== null && _d !== void 0 ? _d : _u.buildId = utils34.general.getEnvValue("BATCH_BUILD_ID");
86566
- (_e = (_v = settings.batch).name) !== null && _e !== void 0 ? _e : _v.name = utils34.general.getEnvValue("BATCH_NAME");
86567
- (_f = (_w = settings.batch).sequenceName) !== null && _f !== void 0 ? _f : _w.sequenceName = utils34.general.getEnvValue("BATCH_SEQUENCE");
86568
- (_g = (_x = settings.batch).notifyOnCompletion) !== null && _g !== void 0 ? _g : _x.notifyOnCompletion = utils34.general.getEnvValue("BATCH_NOTIFY", "boolean");
86592
+ (_b = (_u = settings.batch).id) !== null && _b !== void 0 ? _b : _u.id = (_c = utils34.general.getEnvValue("BATCH_ID")) !== null && _c !== void 0 ? _c : `generated-${utils34.general.guid()}`;
86593
+ (_d = (_v = settings.batch).buildId) !== null && _d !== void 0 ? _d : _v.buildId = utils34.general.getEnvValue("BATCH_BUILD_ID");
86594
+ (_e = (_w = settings.batch).name) !== null && _e !== void 0 ? _e : _w.name = utils34.general.getEnvValue("BATCH_NAME");
86595
+ (_f = (_x = settings.batch).sequenceName) !== null && _f !== void 0 ? _f : _x.sequenceName = utils34.general.getEnvValue("BATCH_SEQUENCE");
86596
+ (_g = (_y = settings.batch).notifyOnCompletion) !== null && _g !== void 0 ? _g : _y.notifyOnCompletion = utils34.general.getEnvValue("BATCH_NOTIFY", "boolean");
86569
86597
  (_h = settings.keepBatchOpen) !== null && _h !== void 0 ? _h : settings.keepBatchOpen = utils34.general.getEnvValue("DONT_CLOSE_BATCHES", "boolean");
86570
86598
  (_j = settings.branchName) !== null && _j !== void 0 ? _j : settings.branchName = utils34.general.getEnvValue("BRANCH");
86571
86599
  (_k = settings.parentBranchName) !== null && _k !== void 0 ? _k : settings.parentBranchName = utils34.general.getEnvValue("PARENT_BRANCH");
86572
86600
  (_l = settings.baselineBranchName) !== null && _l !== void 0 ? _l : settings.baselineBranchName = utils34.general.getEnvValue("BASELINE_BRANCH");
86573
86601
  (_m = settings.gitBranchingTimestamp) !== null && _m !== void 0 ? _m : settings.gitBranchingTimestamp = utils34.general.getEnvValue("GIT_MERGE_BASE_TIMESTAMP");
86574
- (_o = settings.ufgServerUrl) !== null && _o !== void 0 ? _o : settings.ufgServerUrl = utils34.general.getEnvValue("UFG_SERVER_URL");
86575
- (_p = settings.ignoreBaseline) !== null && _p !== void 0 ? _p : settings.ignoreBaseline = false;
86576
- (_q = settings.compareWithParentBranch) !== null && _q !== void 0 ? _q : settings.compareWithParentBranch = false;
86602
+ (_o = settings.latestCommitInfo) !== null && _o !== void 0 ? _o : settings.latestCommitInfo = getLatestCommitInfoFromEnvVars(logger);
86603
+ (_p = settings.ufgServerUrl) !== null && _p !== void 0 ? _p : settings.ufgServerUrl = utils34.general.getEnvValue("UFG_SERVER_URL");
86604
+ (_q = settings.ignoreBaseline) !== null && _q !== void 0 ? _q : settings.ignoreBaseline = false;
86605
+ (_r = settings.compareWithParentBranch) !== null && _r !== void 0 ? _r : settings.compareWithParentBranch = false;
86577
86606
  const driver = target && await (0, driver_1.makeDriver)({ spec, driver: target, logger, customConfig: settings });
86578
86607
  const driverEnvironment = await (driver === null || driver === void 0 ? void 0 : driver.getEnvironment());
86579
86608
  const driverUrl = await (driver === null || driver === void 0 ? void 0 : driver.getDriverUrl());
@@ -86584,7 +86613,7 @@ var require_open_eyes4 = __commonJS({
86584
86613
  event: {
86585
86614
  type: "openEyes",
86586
86615
  userTestId: settings.userTestId,
86587
- concurrency: (_r = cores === null || cores === void 0 ? void 0 : cores[type].concurrency) !== null && _r !== void 0 ? _r : core.concurrency,
86616
+ concurrency: (_s = cores === null || cores === void 0 ? void 0 : cores[type].concurrency) !== null && _s !== void 0 ? _s : core.concurrency,
86588
86617
  environment,
86589
86618
  driver: {
86590
86619
  deviceName: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.deviceName,
@@ -86592,7 +86621,7 @@ var require_open_eyes4 = __commonJS({
86592
86621
  browserVersion: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.browserVersion,
86593
86622
  platformName: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.platformName,
86594
86623
  platformVersion: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.platformVersion,
86595
- isApplitoolsLib: (_s = driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.applitoolsLib) === null || _s === void 0 ? void 0 : _s.instrumented,
86624
+ isApplitoolsLib: (_t = driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.applitoolsLib) === null || _t === void 0 ? void 0 : _t.instrumented,
86596
86625
  isEC: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.isEC
86597
86626
  },
86598
86627
  driverUrl
@@ -86625,6 +86654,18 @@ var require_open_eyes4 = __commonJS({
86625
86654
  };
86626
86655
  }
86627
86656
  exports.makeOpenEyes = makeOpenEyes;
86657
+ function getLatestCommitInfoFromEnvVars(logger) {
86658
+ const timestamp = utils34.general.getEnvValue("GIT_LATEST_COMMIT_TIMESTAMP");
86659
+ const sha = utils34.general.getEnvValue("GIT_LATEST_COMMIT_SHA");
86660
+ if (timestamp && sha) {
86661
+ return { timestamp, sha };
86662
+ } else if (timestamp && !sha) {
86663
+ logger.warn(`APPLITOOLS_GIT_LATEST_COMMIT_TIMESTAMP was provided without APPLITOOLS_GIT_LATEST_COMMIT_SHA. Proceeding provided timestamp ${timestamp} and NO_SHA_PROVIDED`);
86664
+ return { timestamp, sha: "NO_SHA_PROVIDED" };
86665
+ } else if (sha && !timestamp) {
86666
+ logger.warn(`APPLITOOLS_GIT_LATEST_COMMIT_SHA was provided without APPLITOOLS_GIT_LATEST_COMMIT_TIMESTAMP. Not populating latestCommitInfo with the provided sha ${sha}.`);
86667
+ }
86668
+ }
86628
86669
  }
86629
86670
  });
86630
86671
 
@@ -87089,7 +87130,7 @@ var require_package2 = __commonJS({
87089
87130
  "../core/package.json"(exports, module) {
87090
87131
  module.exports = {
87091
87132
  name: "@applitools/core",
87092
- version: "4.14.0",
87133
+ version: "4.15.0",
87093
87134
  homepage: "https://applitools.com",
87094
87135
  bugs: {
87095
87136
  url: "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -88446,6 +88487,19 @@ var require_parse_env = __commonJS({
88446
88487
  ...SAUCE_CREDENTIALS
88447
88488
  }
88448
88489
  },
88490
+ "BrowserStack iPhone 13": {
88491
+ url: "https://hub-cloud.browserstack.com/wd/hub",
88492
+ capabilities: {
88493
+ app: "bs://be7d88efe3e1ff601cf0bd097c31f6b2c1801c15",
88494
+ platformName: "iOS",
88495
+ "appium:platformVersion": "15.0",
88496
+ "appium:deviceName": "iPhone 13",
88497
+ "bstack:options": {
88498
+ userName: process.env.BROWSERSTACK_USERNAME,
88499
+ accessKey: process.env.BROWSERSTACK_ACCESS_KEY
88500
+ }
88501
+ }
88502
+ },
88449
88503
  "iPhone 12": {
88450
88504
  type: "sauce",
88451
88505
  url: SAUCE_SERVER_URL,
@@ -91187,7 +91241,7 @@ var require_package3 = __commonJS({
91187
91241
  "../eyes/package.json"(exports, module) {
91188
91242
  module.exports = {
91189
91243
  name: "@applitools/eyes",
91190
- version: "1.19.0",
91244
+ version: "1.19.1",
91191
91245
  keywords: [
91192
91246
  "applitools",
91193
91247
  "eyes",