@applitools/eyes-browser 1.0.0 → 1.0.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 +87 -0
  2. package/dist/index.js +375 -261
  3. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,92 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.2](https://github.com/applitools/eyes.sdk.javascript1/compare/js/eyes-browser@1.0.1...js/eyes-browser@1.0.2) (2023-12-18)
4
+
5
+
6
+ ### Dependencies
7
+
8
+ * @applitools/core bumped to 4.5.0
9
+ #### Features
10
+
11
+ * add set of env variables to skip/ignore some optional automations ([#2097](https://github.com/applitools/eyes.sdk.javascript1/issues/2097)) ([bd3b08c](https://github.com/applitools/eyes.sdk.javascript1/commit/bd3b08c3d2997eb98d545b308a1f15501192178e))
12
+
13
+
14
+ #### Bug Fixes
15
+
16
+ * fixed issue when page wasn't reloaded for one of the breakpoints if the initial viewport size matches it ([9038723](https://github.com/applitools/eyes.sdk.javascript1/commit/9038723ee68515f7d4fe20ed31ec501df9a381dc))
17
+
18
+
19
+
20
+ * @applitools/spec-driver-webdriver bumped to 1.0.53
21
+
22
+ * @applitools/spec-driver-selenium bumped to 1.5.67
23
+
24
+ * @applitools/spec-driver-puppeteer bumped to 1.3.3
25
+
26
+ * @applitools/driver bumped to 1.16.0
27
+ #### Features
28
+
29
+ * add set of env variables to skip/ignore some optional automations ([#2097](https://github.com/applitools/eyes.sdk.javascript1/issues/2097)) ([bd3b08c](https://github.com/applitools/eyes.sdk.javascript1/commit/bd3b08c3d2997eb98d545b308a1f15501192178e))
30
+ * @applitools/screenshoter bumped to 3.8.19
31
+
32
+ * @applitools/nml-client bumped to 1.6.1
33
+
34
+ * @applitools/ec-client bumped to 1.7.19
35
+
36
+ * @applitools/eyes bumped to 1.13.2
37
+
38
+
39
+ ## [1.0.1](https://github.com/applitools/eyes.sdk.javascript1/compare/js/eyes-browser@1.0.0...js/eyes-browser@1.0.1) (2023-12-12)
40
+
41
+
42
+ ### Dependencies
43
+
44
+ * @applitools/core bumped to 4.4.0
45
+ #### Features
46
+
47
+ * sign windows binaries ([87fd29c](https://github.com/applitools/eyes.sdk.javascript1/commit/87fd29c8953fc512489c3bb00841ca91c5b2f030))
48
+ * support updated applitools lib protocol ([#2086](https://github.com/applitools/eyes.sdk.javascript1/issues/2086)) ([31b49fc](https://github.com/applitools/eyes.sdk.javascript1/commit/31b49fc411c452d0b3da341fd701309714484485))
49
+
50
+
51
+ #### Bug Fixes
52
+
53
+ * layout breakpoints reload and lazy load ([#2073](https://github.com/applitools/eyes.sdk.javascript1/issues/2073)) ([ab2c49e](https://github.com/applitools/eyes.sdk.javascript1/commit/ab2c49ea1ecff3fef337637a83aa5bef755a7b01))
54
+
55
+
56
+ #### Code Refactoring
57
+
58
+ * fix safe selector generation ([#2072](https://github.com/applitools/eyes.sdk.javascript1/issues/2072)) ([373f11b](https://github.com/applitools/eyes.sdk.javascript1/commit/373f11b0dfea6eab417eb7077e0cfec79877dc1b))
59
+
60
+
61
+
62
+ * @applitools/spec-driver-webdriver bumped to 1.0.52
63
+
64
+ * @applitools/spec-driver-selenium bumped to 1.5.66
65
+
66
+ * @applitools/spec-driver-puppeteer bumped to 1.3.2
67
+
68
+ * @applitools/driver bumped to 1.15.3
69
+ #### Bug Fixes
70
+
71
+ * layout breakpoints reload and lazy load ([#2073](https://github.com/applitools/eyes.sdk.javascript1/issues/2073)) ([ab2c49e](https://github.com/applitools/eyes.sdk.javascript1/commit/ab2c49ea1ecff3fef337637a83aa5bef755a7b01))
72
+ * @applitools/screenshoter bumped to 3.8.18
73
+
74
+ * @applitools/nml-client bumped to 1.6.0
75
+ #### Features
76
+
77
+ * support updated applitools lib protocol ([#2086](https://github.com/applitools/eyes.sdk.javascript1/issues/2086)) ([31b49fc](https://github.com/applitools/eyes.sdk.javascript1/commit/31b49fc411c452d0b3da341fd701309714484485))
78
+
79
+
80
+
81
+ * @applitools/tunnel-client bumped to 1.4.0
82
+ #### Features
83
+
84
+ * sign windows binaries ([87fd29c](https://github.com/applitools/eyes.sdk.javascript1/commit/87fd29c8953fc512489c3bb00841ca91c5b2f030))
85
+ * @applitools/ec-client bumped to 1.7.18
86
+
87
+ * @applitools/eyes bumped to 1.13.1
88
+
89
+
3
90
  ## 1.0.0 (2023-12-05)
4
91
 
5
92
 
package/dist/index.js CHANGED
@@ -30444,21 +30444,23 @@ var require_context = __commonJS({
30444
30444
  async getScrollingElement() {
30445
30445
  if (!(0, element_1.isElementInstance)(this._scrollingElement)) {
30446
30446
  await this.focus();
30447
- const environment = await this.driver.getEnvironment();
30448
30447
  if (this._scrollingElement) {
30449
30448
  this._scrollingElement = await this.element(this._scrollingElement);
30450
- } else if (environment.isWeb) {
30451
- let selector;
30452
- if (environment.isIOS && !environment.isEmulation) {
30453
- selector = "html";
30454
- this.logger.log(`Using hardcoded default scrolling element for Safari on iOS - "${selector}"`);
30449
+ } else {
30450
+ const environment = await this.driver.getEnvironment();
30451
+ if (environment.isWeb) {
30452
+ let selector;
30453
+ if (environment.isIOS && !environment.isEmulation) {
30454
+ selector = "html";
30455
+ this.logger.log(`Using hardcoded default scrolling element for Safari on iOS - "${selector}"`);
30456
+ } else {
30457
+ selector = await this.execute(snippets.getDocumentScrollingElement);
30458
+ this.logger.log(`Using dynamic default scrolling element - "${selector}"`);
30459
+ }
30460
+ this._scrollingElement = await this.element({ type: "css", selector });
30455
30461
  } else {
30456
- selector = await this.execute(snippets.getDocumentScrollingElement);
30457
- this.logger.log(`Using dynamic default scrolling element - "${selector}"`);
30462
+ this._scrollingElement = await this.element({ type: "xpath", selector: '//*[@scrollable="true"]' });
30458
30463
  }
30459
- this._scrollingElement = await this.element({ type: "css", selector });
30460
- } else {
30461
- this._scrollingElement = await this.element({ type: "xpath", selector: '//*[@scrollable="true"]' });
30462
30464
  }
30463
30465
  }
30464
30466
  return this._scrollingElement;
@@ -31691,16 +31693,23 @@ var require_driver = __commonJS({
31691
31693
  }
31692
31694
  async reloadPage() {
31693
31695
  await this.mainContext.execute(snippets.reloadPage).catch(() => null);
31694
- return this.refresh({ reset: false });
31696
+ const refreshThis = await this.refresh({ reset: false });
31697
+ const scrollingElement = await this.mainContext.getScrollingElement();
31698
+ await (scrollingElement === null || scrollingElement === void 0 ? void 0 : scrollingElement.refresh());
31699
+ return refreshThis;
31695
31700
  }
31696
31701
  async refresh({ reset } = {}) {
31697
31702
  if (reset) {
31698
- this._driverInfo = void 0;
31699
- this._environment = void 0;
31700
- this._viewport = void 0;
31701
- this._features = void 0;
31702
- this._helper = void 0;
31703
- this._state = {};
31703
+ if (utils34.general.getEnvValue("AVOID_DRIVER_STATE_REST", "boolean")) {
31704
+ this._logger.log(`Skipping reset of the driver state`);
31705
+ } else {
31706
+ this._driverInfo = void 0;
31707
+ this._environment = void 0;
31708
+ this._viewport = void 0;
31709
+ this._features = void 0;
31710
+ this._helper = void 0;
31711
+ this._state = {};
31712
+ }
31704
31713
  }
31705
31714
  const spec = this._spec;
31706
31715
  let currentContext = this.currentContext.target;
@@ -32004,10 +32013,15 @@ var require_driver = __commonJS({
32004
32013
  async getHelper() {
32005
32014
  var _a, _b, _c;
32006
32015
  if (this._helper === void 0) {
32007
- const environment = await this.getEnvironment();
32008
- this._logger.log(`Extracting helper for ${environment.isIOS ? "ios" : "android"}`);
32009
- this._helper = environment.isIOS ? await helper_ios_1.HelperIOS.make({ spec: this._spec, driver: this }) : await helper_android_1.HelperAndroid.make({ spec: this._spec, driver: this });
32010
- this._logger.log(`Extracted helper of type ${(_a = this._helper) === null || _a === void 0 ? void 0 : _a.name}`);
32016
+ if (utils34.general.getEnvValue("IGNORE_HELPER_LIB", "boolean")) {
32017
+ this._logger.log(`Skipping helper lib extraction`);
32018
+ this._helper = null;
32019
+ } else {
32020
+ const environment = await this.getEnvironment();
32021
+ this._logger.log(`Extracting helper for ${environment.isIOS ? "ios" : "android"}`);
32022
+ this._helper = environment.isIOS ? await helper_ios_1.HelperIOS.make({ spec: this._spec, driver: this }) : await helper_android_1.HelperAndroid.make({ spec: this._spec, driver: this });
32023
+ this._logger.log(`Extracted helper of type ${(_a = this._helper) === null || _a === void 0 ? void 0 : _a.name}`);
32024
+ }
32011
32025
  }
32012
32026
  this._logger.log(`Returning helper for of type ${(_c = (_b = this._helper) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : null}`);
32013
32027
  return this._helper;
@@ -32304,25 +32318,29 @@ var require_driver = __commonJS({
32304
32318
  if (environment.isWeb)
32305
32319
  return (_a = this._viewport) === null || _a === void 0 ? void 0 : _a.orientation;
32306
32320
  if (environment.isAndroid) {
32307
- this._logger.log("Extracting device orientation using adb command on android");
32308
- const rotation = await this.execute("mobile:shell", {
32309
- command: "dumpsys window | grep 'mCurrentRotation' | cut -d = -f2"
32310
- }).then((rotation2) => {
32311
- var _a2;
32312
- return (_a2 = rotation2 === null || rotation2 === void 0 ? void 0 : rotation2.trim) === null || _a2 === void 0 ? void 0 : _a2.call(rotation2);
32313
- }).catch(() => null);
32314
- if (rotation) {
32315
- let orientation2 = void 0;
32316
- if (rotation === "ROTATION_0" || rotation === "0")
32317
- orientation2 = "portrait";
32318
- else if (rotation === "ROTATION_90" || rotation === "3")
32319
- orientation2 = "landscape-secondary";
32320
- else if (rotation === "ROTATION_180" || rotation === "2")
32321
- orientation2 = "portrait-secondary";
32322
- else if (rotation === "ROTATION_270" || rotation === "1")
32323
- orientation2 = "landscape";
32324
- this._logger.log("Extracted device orientation:", orientation2);
32325
- return orientation2;
32321
+ if (utils34.general.getEnvValue("AVOID_ADB_USAGE", "boolean")) {
32322
+ this._logger.log(`Skipping device orientation extraction using adb command on android`);
32323
+ } else {
32324
+ this._logger.log("Extracting device orientation using adb command on android");
32325
+ const rotation = await this.execute("mobile:shell", {
32326
+ command: "dumpsys window | grep 'mCurrentRotation' | cut -d = -f2"
32327
+ }).then((rotation2) => {
32328
+ var _a2;
32329
+ return (_a2 = rotation2 === null || rotation2 === void 0 ? void 0 : rotation2.trim) === null || _a2 === void 0 ? void 0 : _a2.call(rotation2);
32330
+ }).catch(() => null);
32331
+ if (rotation) {
32332
+ let orientation2 = void 0;
32333
+ if (rotation === "ROTATION_0" || rotation === "0")
32334
+ orientation2 = "portrait";
32335
+ else if (rotation === "ROTATION_90" || rotation === "3")
32336
+ orientation2 = "landscape-secondary";
32337
+ else if (rotation === "ROTATION_180" || rotation === "2")
32338
+ orientation2 = "portrait-secondary";
32339
+ else if (rotation === "ROTATION_270" || rotation === "1")
32340
+ orientation2 = "landscape";
32341
+ this._logger.log("Extracted device orientation:", orientation2);
32342
+ return orientation2;
32343
+ }
32326
32344
  }
32327
32345
  }
32328
32346
  this._logger.log("Extracting device orientation");
@@ -32791,9 +32809,20 @@ var require_requests2 = __commonJS({
32791
32809
  });
32792
32810
  const result = await response.json();
32793
32811
  brokerUrl = result.nextPath;
32794
- const screenshots = localEnvironment ? [{ image: result.payload.result.screenshotUrl, environment: localEnvironment }] : renderEnvironments.map((environment, index) => {
32795
- return { image: result.payload[index].result.screenshotUrl, environment };
32796
- });
32812
+ let screenshots;
32813
+ if (Number(result.protocolVersion) >= 2) {
32814
+ logger.log(`Request "takeScreenshots" was performed on applitools lib v${result.nmlVersion} through protocol v${result.protocolVersion} on device`, result.payload.debugInfo);
32815
+ screenshots = localEnvironment ? [{ image: result.payload.result[0].result.screenshotUrl, environment: localEnvironment }] : renderEnvironments.map((environment, index) => {
32816
+ if (result.payload.result[index].error) {
32817
+ throw new Error(`There was a problem in taking screenshot for environment ${JSON.stringify(environment)}. The provided error message was "${result.payload.result[index].error.message}" and had a stack trace of "${result.payload.result[index].error.stack}"`);
32818
+ }
32819
+ return { image: result.payload.result[index].result.screenshotUrl, environment };
32820
+ });
32821
+ } else {
32822
+ screenshots = localEnvironment ? [{ image: result.payload.result.screenshotUrl, environment: localEnvironment }] : renderEnvironments.map((environment, index) => {
32823
+ return { image: result.payload[index].result.screenshotUrl, environment };
32824
+ });
32825
+ }
32797
32826
  logger.log('Request "takeScreenshots" finished successfully with body', screenshots);
32798
32827
  return screenshots;
32799
32828
  } catch (error) {
@@ -35555,21 +35584,22 @@ var require_to_base_check_settings = __commonJS({
35555
35584
  var utils34 = __importStar(require_browser3());
35556
35585
  function toBaseCheckSettings({ settings }) {
35557
35586
  const regionTypes = ["ignore", "layout", "strict", "content", "floating", "accessibility"];
35558
- const elementReferencesToCalculate = regionTypes.flatMap((regionType) => {
35587
+ const calculate = regionTypes.flatMap((regionType) => {
35559
35588
  var _a;
35560
35589
  return ((_a = settings[`${regionType}Regions`]) !== null && _a !== void 0 ? _a : []).reduce((regions, reference) => {
35561
35590
  const { region } = utils34.types.has(reference, "region") ? reference : { region: reference };
35562
35591
  return !isRegion(region) ? regions.concat(region) : regions;
35563
35592
  }, []);
35564
35593
  });
35565
- const elementReferenceToTarget = !isRegion(settings.region) ? settings.region : void 0;
35566
- return { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings };
35594
+ const target = !isRegion(settings.region) ? settings.region : void 0;
35595
+ const scrolling = settings.scrollRootElement;
35596
+ return { elementReferences: { target, scrolling, calculate }, getBaseCheckSettings };
35567
35597
  function getBaseCheckSettings({ calculatedRegions, preserveTransformation }) {
35568
35598
  const transformedSettings = { ...settings };
35569
35599
  if (!preserveTransformation) {
35570
35600
  delete transformedSettings.region;
35571
35601
  delete transformedSettings.normalization;
35572
- } else if (elementReferenceToTarget) {
35602
+ } else if (target) {
35573
35603
  delete transformedSettings.region;
35574
35604
  }
35575
35605
  regionTypes.forEach((regionType) => {
@@ -35608,10 +35638,10 @@ var require_wait_for_lazy_load = __commonJS({
35608
35638
  Object.defineProperty(exports, "__esModule", { value: true });
35609
35639
  exports.waitForLazyLoad = void 0;
35610
35640
  var { lazyLoad } = require_dist3();
35611
- async function waitForLazyLoad({ context, settings, logger }) {
35612
- var _a, _b;
35613
- logger.log("lazy loading the page before capturing a screenshot");
35614
- const { scrollLength = 300, waitingTime = 2e3, maxAmountToScroll = 15e3 } = typeof settings === "boolean" ? {} : settings;
35641
+ async function waitForLazyLoad({ context, settings = {}, logger }) {
35642
+ var _a;
35643
+ logger.log("Running scrolling sequence to lazy load a view content");
35644
+ const { scrollLength = 300, waitingTime = 2e3, maxAmountToScroll = 15e3 } = settings;
35615
35645
  await context.executePoll(lazyLoad, {
35616
35646
  main: [
35617
35647
  await context.getScrollingElement(),
@@ -35622,8 +35652,8 @@ var require_wait_for_lazy_load = __commonJS({
35622
35652
  }
35623
35653
  ],
35624
35654
  poll: [],
35625
- executionTimeout: 5 * 60 * 1e3,
35626
- pollTimeout: (_b = (_a = settings.pollTimeout) !== null && _a !== void 0 ? _a : settings.waitingTime) !== null && _b !== void 0 ? _b : 2e3
35655
+ executionTimeout: 3e5,
35656
+ pollTimeout: (_a = settings.pollTimeout) !== null && _a !== void 0 ? _a : waitingTime
35627
35657
  });
35628
35658
  }
35629
35659
  exports.waitForLazyLoad = waitForLazyLoad;
@@ -35812,14 +35842,14 @@ var require_check2 = __commonJS({
35812
35842
  logger
35813
35843
  });
35814
35844
  }
35815
- const { elementReferencesToCalculate, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
35845
+ const { elementReferences, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
35816
35846
  if (driverEnvironment.isWeb || !((_c = driverEnvironment.applitoolsLib) === null || _c === void 0 ? void 0 : _c.instrumented) || settings.screenshotMode === "default") {
35817
35847
  const screenshots = await (0, take_screenshots_1.takeScreenshots)({
35818
35848
  driver,
35819
35849
  settings: {
35820
35850
  ...settings,
35821
35851
  environments: uniqueEnvironments,
35822
- regionsToCalculate: elementReferencesToCalculate,
35852
+ regionsToCalculate: elementReferences.calculate,
35823
35853
  calculateView: !!settings.pageId,
35824
35854
  domSettings: settings.sendDom ? { proxy: eyes.test.eyesServer.proxy } : void 0
35825
35855
  },
@@ -36007,14 +36037,14 @@ var require_check_and_close2 = __commonJS({
36007
36037
  logger
36008
36038
  });
36009
36039
  }
36010
- const { elementReferencesToCalculate, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
36040
+ const { elementReferences, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
36011
36041
  if (driverEnvironment.isWeb || !((_c = driverEnvironment.applitoolsLib) === null || _c === void 0 ? void 0 : _c.instrumented) || settings.screenshotMode === "default") {
36012
36042
  const screenshots = await (0, take_screenshots_1.takeScreenshots)({
36013
36043
  driver,
36014
36044
  settings: {
36015
36045
  ...settings,
36016
36046
  environments: uniqueEnvironments,
36017
- regionsToCalculate: elementReferencesToCalculate,
36047
+ regionsToCalculate: elementReferences.calculate,
36018
36048
  calculateView: !!settings.pageId,
36019
36049
  domSettings: settings.sendDom ? { proxy: eyes.test.eyesServer.proxy } : void 0
36020
36050
  },
@@ -82351,46 +82381,6 @@ var require_generate_safe_selectors = __commonJS({
82351
82381
  }
82352
82382
  });
82353
82383
 
82354
- // ../core/dist/ufg/utils/calculate-regions.js
82355
- var require_calculate_regions = __commonJS({
82356
- "../core/dist/ufg/utils/calculate-regions.js"(exports) {
82357
- "use strict";
82358
- init_process();
82359
- init_setImmediate();
82360
- init_buffer();
82361
- Object.defineProperty(exports, "__esModule", { value: true });
82362
- exports.calculateRegions = void 0;
82363
- var generate_safe_selectors_1 = require_generate_safe_selectors();
82364
- async function calculateRegions({ driver, elementReferencesToCalculate, elementReferenceToTarget, scrollRootElement }) {
82365
- var _a, _b;
82366
- const elementReferences = [
82367
- ...elementReferenceToTarget ? [elementReferenceToTarget] : [],
82368
- ...scrollRootElement ? [scrollRootElement] : [],
82369
- ...elementReferencesToCalculate
82370
- ];
82371
- const { cleanupGeneratedSelectors, selectors } = await (0, generate_safe_selectors_1.generateSafeSelectors)({
82372
- context: driver.currentContext,
82373
- elementReferences
82374
- });
82375
- let selectorsToCalculate = selectors;
82376
- let regionToTarget;
82377
- let scrollRootSelector;
82378
- if (elementReferenceToTarget) {
82379
- if (!((_a = selectorsToCalculate[0]) === null || _a === void 0 ? void 0 : _a.safeSelector))
82380
- throw new Error("Target element not found");
82381
- regionToTarget = selectorsToCalculate[0].safeSelector;
82382
- selectorsToCalculate = selectorsToCalculate.slice(1);
82383
- }
82384
- if (scrollRootElement) {
82385
- scrollRootSelector = (_b = selectorsToCalculate[0].safeSelector) !== null && _b !== void 0 ? _b : void 0;
82386
- selectorsToCalculate = selectorsToCalculate.slice(1);
82387
- }
82388
- return { cleanupGeneratedSelectors, selectorsToCalculate, regionToTarget, scrollRootSelector };
82389
- }
82390
- exports.calculateRegions = calculateRegions;
82391
- }
82392
- });
82393
-
82394
82384
  // ../core/dist/ufg/utils/take-dom-snapshots.js
82395
82385
  var require_take_dom_snapshots = __commonJS({
82396
82386
  "../core/dist/ufg/utils/take-dom-snapshots.js"(exports) {
@@ -82441,47 +82431,36 @@ var require_take_dom_snapshots = __commonJS({
82441
82431
  Object.defineProperty(exports, "__esModule", { value: true });
82442
82432
  exports.takeDomSnapshots = void 0;
82443
82433
  var take_dom_snapshot_1 = require_take_dom_snapshot();
82444
- var calculate_regions_1 = require_calculate_regions();
82434
+ var generate_safe_selectors_1 = require_generate_safe_selectors();
82445
82435
  var wait_for_lazy_load_1 = require_wait_for_lazy_load();
82446
82436
  var chalk_1 = __importDefault(require_source());
82447
82437
  var utils34 = __importStar(require_browser3());
82448
82438
  var lang = __importStar(require_lang());
82449
82439
  __exportStar(require_take_dom_snapshot(), exports);
82450
82440
  async function takeDomSnapshots({ driver, settings, hooks, provides, logger }) {
82451
- var _a, _b, _c, _d, _e, _f, _g;
82441
+ var _a, _b, _c;
82452
82442
  const features = await driver.getFeatures();
82453
82443
  settings.cookies = features.allCookies ? await driver.getCookies().catch(() => []) : [];
82444
+ settings.lazyLoad = settings.lazyLoad !== true ? settings.lazyLoad : {};
82454
82445
  const currentContext = driver.currentContext;
82455
- let calculateRegionsResults = {};
82456
- const waitBeforeCapture = async () => {
82457
- if (utils34.types.isFunction(settings.waitBeforeCapture)) {
82458
- await settings.waitBeforeCapture();
82459
- } else if (settings.waitBeforeCapture) {
82460
- await utils34.general.sleep(settings.waitBeforeCapture);
82461
- }
82462
- };
82463
- if (settings.lazyLoad) {
82464
- await (0, wait_for_lazy_load_1.waitForLazyLoad)({
82465
- context: driver.currentContext,
82466
- settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
82467
- logger
82468
- });
82469
- }
82470
82446
  if (!((_a = settings.layoutBreakpoints) === null || _a === void 0 ? void 0 : _a.breakpoints)) {
82447
+ if (settings.lazyLoad) {
82448
+ await (0, wait_for_lazy_load_1.waitForLazyLoad)({ context: currentContext, settings: settings.lazyLoad, logger });
82449
+ }
82471
82450
  logger.log(`taking single dom snapshot`);
82472
- await ((_b = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _b === void 0 ? void 0 : _b.call(hooks));
82473
- await waitBeforeCapture();
82474
- if (settings.calculateRegionsOptions) {
82475
- calculateRegionsResults = await (0, calculate_regions_1.calculateRegions)({
82476
- ...settings.calculateRegionsOptions,
82477
- driver
82451
+ await beforeEachSnapshot();
82452
+ let safeSelectorResult2;
82453
+ if (settings.elementReferences) {
82454
+ safeSelectorResult2 = await (0, generate_safe_selectors_1.generateSafeSelectors)({
82455
+ context: currentContext,
82456
+ elementReferences: settings.elementReferences
82478
82457
  });
82479
82458
  }
82480
82459
  const snapshot = await (0, take_dom_snapshot_1.takeDomSnapshot)({ context: currentContext, settings, logger });
82481
- await ((_c = calculateRegionsResults === null || calculateRegionsResults === void 0 ? void 0 : calculateRegionsResults.cleanupGeneratedSelectors) === null || _c === void 0 ? void 0 : _c.call(calculateRegionsResults));
82482
- return Array(settings.environments.length).fill({ snapshot, ...calculateRegionsResults });
82460
+ await ((_b = safeSelectorResult2 === null || safeSelectorResult2 === void 0 ? void 0 : safeSelectorResult2.cleanupGeneratedSelectors) === null || _b === void 0 ? void 0 : _b.call(safeSelectorResult2));
82461
+ return Array(settings.environments.length).fill({ ...snapshot, generatedSelectors: safeSelectorResult2 === null || safeSelectorResult2 === void 0 ? void 0 : safeSelectorResult2.selectors });
82483
82462
  }
82484
- const isStrictBreakpoints = utils34.types.isArray((_d = settings.layoutBreakpoints) === null || _d === void 0 ? void 0 : _d.breakpoints);
82463
+ const isStrictBreakpoints = utils34.types.isArray((_c = settings.layoutBreakpoints) === null || _c === void 0 ? void 0 : _c.breakpoints);
82485
82464
  const requiredWidths = await settings.environments.reduce(async (prev, environment, index) => {
82486
82465
  const { name, width } = await extractEnvironmentInfo(environment);
82487
82466
  const requiredWidths2 = await prev;
@@ -82500,76 +82479,78 @@ var require_take_dom_snapshots = __commonJS({
82500
82479
  });
82501
82480
  logger.console.log(chalk_1.default.yellow(message));
82502
82481
  }
82503
- logger.log(`taking multiple dom snapshots for breakpoints:`, settings.layoutBreakpoints.breakpoints);
82504
- logger.log(`required widths: ${[...requiredWidths.keys()].join(", ")}`);
82505
- const viewportSize = await driver.getViewportSize();
82506
- const snapshotsResults = Array(settings.environments.length);
82507
- if (requiredWidths.has(viewportSize.width)) {
82508
- logger.log(`taking dom snapshot for existing width ${viewportSize.width}`);
82509
- await ((_e = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _e === void 0 ? void 0 : _e.call(hooks));
82510
- await waitBeforeCapture();
82511
- if (settings.calculateRegionsOptions) {
82512
- calculateRegionsResults = await (0, calculate_regions_1.calculateRegions)({
82513
- ...settings.calculateRegionsOptions,
82514
- driver
82515
- });
82516
- }
82517
- const snapshot = await (0, take_dom_snapshot_1.takeDomSnapshot)({ context: currentContext, settings, logger });
82518
- requiredWidths.get(viewportSize.width).forEach(({ index }) => {
82519
- snapshotsResults[index] = { snapshot, ...calculateRegionsResults };
82520
- });
82521
- }
82522
- for (const [requiredWidth, browsersInfo] of requiredWidths.entries()) {
82523
- logger.log(`taking dom snapshot for width ${requiredWidth}`);
82524
- try {
82525
- await driver.setViewportSize({ width: requiredWidth, height: viewportSize.height });
82526
- } catch (error) {
82527
- logger.error(`Failed to set viewport size to ${requiredWidth} du to error: `, error);
82528
- const actualViewportSize = await driver.getViewportSize();
82529
- if (isStrictBreakpoints) {
82530
- const message = lang.breakpointOutOfDriverBoundsWarning({
82531
- requiredWidth,
82532
- actualWidth: actualViewportSize.width,
82533
- browsers: browsersInfo
82534
- });
82535
- logger.console.log(chalk_1.default.yellow(message));
82536
- logger.log(message);
82537
- } else {
82538
- const message = lang.requestedEnvironmentOutOfDriverBoundsWarning({
82539
- requiredWidth,
82540
- actualWidth: actualViewportSize.width,
82541
- browsers: browsersInfo
82542
- });
82543
- logger.console.log(chalk_1.default.yellow(message));
82544
- logger.log(message);
82482
+ logger.log(`Taking multiple dom snapshots for the breakpoints`, settings.layoutBreakpoints);
82483
+ const initialViewportSize = await driver.getViewportSize();
82484
+ const entries = [];
82485
+ const initialsBrowsers = requiredWidths.get(initialViewportSize.width);
82486
+ if (initialsBrowsers) {
82487
+ logger.log(`The first dom snapshot is going to be taking for initial viewport size`, initialViewportSize);
82488
+ requiredWidths.delete(initialViewportSize.width);
82489
+ entries.push({ browsers: initialsBrowsers });
82490
+ }
82491
+ requiredWidths.forEach((browsers, requiredWidth) => entries.push({ viewportSize: { width: requiredWidth, height: initialViewportSize.height }, browsers }));
82492
+ logger.log(`All entries to take dom snapshots for`, entries);
82493
+ let safeSelectorResult;
82494
+ const snapshots = Array(settings.environments.length);
82495
+ for (const [index, { viewportSize, browsers }] of entries.entries()) {
82496
+ logger.log(`Taking dom snapshot for viewport size ${viewportSize}`);
82497
+ if (viewportSize) {
82498
+ try {
82499
+ await driver.setViewportSize(viewportSize);
82500
+ } catch (error) {
82501
+ logger.error(`Failed to set viewport size to ${viewportSize} due to the error`, error);
82502
+ const actualViewportSize = await driver.getViewportSize();
82503
+ if (isStrictBreakpoints) {
82504
+ const message = lang.breakpointOutOfDriverBoundsWarning({
82505
+ requiredWidth: viewportSize.width,
82506
+ actualWidth: actualViewportSize.width,
82507
+ browsers
82508
+ });
82509
+ logger.console.log(chalk_1.default.yellow(message));
82510
+ logger.log(message);
82511
+ } else {
82512
+ const message = lang.requestedEnvironmentOutOfDriverBoundsWarning({
82513
+ requiredWidth: viewportSize.width,
82514
+ actualWidth: actualViewportSize.width,
82515
+ browsers
82516
+ });
82517
+ logger.console.log(chalk_1.default.yellow(message));
82518
+ logger.log(message);
82519
+ }
82545
82520
  }
82546
82521
  }
82547
- if (settings.layoutBreakpoints.reload) {
82522
+ if (settings.layoutBreakpoints.reload)
82548
82523
  await driver.reloadPage();
82549
- }
82550
- await ((_f = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _f === void 0 ? void 0 : _f.call(hooks));
82551
- await waitBeforeCapture();
82552
- if (settings.layoutBreakpoints.reload) {
82553
- if (settings.calculateRegionsOptions) {
82554
- calculateRegionsResults = await (0, calculate_regions_1.calculateRegions)({
82555
- ...settings.calculateRegionsOptions,
82556
- driver
82557
- });
82558
- }
82524
+ if (settings.lazyLoad && (index === 0 || settings.layoutBreakpoints.reload)) {
82525
+ await (0, wait_for_lazy_load_1.waitForLazyLoad)({ context: currentContext, settings: settings.lazyLoad, logger });
82526
+ }
82527
+ await beforeEachSnapshot();
82528
+ if (settings.elementReferences && (index === 0 || settings.layoutBreakpoints.reload)) {
82529
+ safeSelectorResult = await (0, generate_safe_selectors_1.generateSafeSelectors)({
82530
+ context: currentContext,
82531
+ elementReferences: settings.elementReferences
82532
+ });
82559
82533
  }
82560
82534
  const snapshot = await (0, take_dom_snapshot_1.takeDomSnapshot)({ context: currentContext, settings, logger });
82561
- browsersInfo.forEach(({ index }) => {
82562
- snapshotsResults[index] = { snapshot, ...calculateRegionsResults };
82563
- });
82535
+ browsers.forEach(({ index: index2 }) => snapshots[index2] = { ...snapshot, generatedSelectors: safeSelectorResult === null || safeSelectorResult === void 0 ? void 0 : safeSelectorResult.selectors });
82564
82536
  }
82565
- await driver.setViewportSize(viewportSize);
82537
+ await driver.setViewportSize(initialViewportSize);
82566
82538
  if (settings.layoutBreakpoints.reload) {
82567
82539
  await driver.reloadPage();
82568
- await waitBeforeCapture();
82540
+ await beforeEachSnapshot();
82569
82541
  } else {
82570
- (_g = calculateRegionsResults === null || calculateRegionsResults === void 0 ? void 0 : calculateRegionsResults.cleanupGeneratedSelectors) === null || _g === void 0 ? void 0 : _g.call(calculateRegionsResults);
82542
+ await (safeSelectorResult === null || safeSelectorResult === void 0 ? void 0 : safeSelectorResult.cleanupGeneratedSelectors());
82543
+ }
82544
+ return snapshots;
82545
+ async function beforeEachSnapshot() {
82546
+ var _a2, _b2;
82547
+ await ((_a2 = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _a2 === void 0 ? void 0 : _a2.call(hooks));
82548
+ if (utils34.types.isNumber(settings.waitBeforeCapture)) {
82549
+ await utils34.general.sleep(settings.waitBeforeCapture);
82550
+ } else {
82551
+ await ((_b2 = settings.waitBeforeCapture) === null || _b2 === void 0 ? void 0 : _b2.call(settings));
82552
+ }
82571
82553
  }
82572
- return snapshotsResults;
82573
82554
  function calculateBreakpoint({ breakpoints, value }) {
82574
82555
  const nextBreakpointIndex = breakpoints.sort((item1, item2) => item1 > item2 ? 1 : -1).findIndex((breakpoint) => breakpoint > value);
82575
82556
  if (nextBreakpointIndex === -1)
@@ -82598,6 +82579,55 @@ var require_take_dom_snapshots = __commonJS({
82598
82579
  }
82599
82580
  });
82600
82581
 
82582
+ // ../core/dist/ufg/utils/to-generated-selectors.js
82583
+ var require_to_generated_selectors = __commonJS({
82584
+ "../core/dist/ufg/utils/to-generated-selectors.js"(exports) {
82585
+ "use strict";
82586
+ init_process();
82587
+ init_setImmediate();
82588
+ init_buffer();
82589
+ Object.defineProperty(exports, "__esModule", { value: true });
82590
+ exports.toGeneratedSelectors = void 0;
82591
+ function toGeneratedSelectors({ elementReferences, transformElementReference }) {
82592
+ var _a, _b, _c;
82593
+ const elementReferencesToMark = [
82594
+ (_a = elementReferences.target) !== null && _a !== void 0 ? _a : [],
82595
+ (_b = elementReferences.scrolling) !== null && _b !== void 0 ? _b : [],
82596
+ (_c = elementReferences.calculate) !== null && _c !== void 0 ? _c : []
82597
+ ].flat();
82598
+ return { elementReferencesToMark, getGeneratedSelectors };
82599
+ function getGeneratedSelectors(generatedSelectors) {
82600
+ var _a2, _b2, _c2;
82601
+ let target = void 0;
82602
+ let scrolling = void 0;
82603
+ let calculate = [];
82604
+ if (generatedSelectors) {
82605
+ let offset = 0;
82606
+ if (elementReferences.target) {
82607
+ target = (_a2 = generatedSelectors[offset++].safeSelector) !== null && _a2 !== void 0 ? _a2 : void 0;
82608
+ if (!target)
82609
+ throw new Error("Target element not found");
82610
+ }
82611
+ if (elementReferences.scrolling) {
82612
+ scrolling = (_b2 = generatedSelectors[offset++].safeSelector) !== null && _b2 !== void 0 ? _b2 : void 0;
82613
+ }
82614
+ calculate = generatedSelectors.slice(offset);
82615
+ } else {
82616
+ target = elementReferences.target && transformElementReference(elementReferences.target);
82617
+ scrolling = elementReferences.scrolling && transformElementReference(elementReferences.scrolling);
82618
+ calculate = ((_c2 = elementReferences.calculate) !== null && _c2 !== void 0 ? _c2 : []).map((elementReference) => {
82619
+ var _a3;
82620
+ const selector = (_a3 = transformElementReference(elementReference)) !== null && _a3 !== void 0 ? _a3 : null;
82621
+ return { originalSelector: selector, safeSelector: selector };
82622
+ });
82623
+ }
82624
+ return { target, scrolling, calculate };
82625
+ }
82626
+ }
82627
+ exports.toGeneratedSelectors = toGeneratedSelectors;
82628
+ }
82629
+ });
82630
+
82601
82631
  // ../core/dist/ufg/check.js
82602
82632
  var require_check3 = __commonJS({
82603
82633
  "../core/dist/ufg/check.js"(exports) {
@@ -82645,6 +82675,7 @@ var require_check3 = __commonJS({
82645
82675
  var driver_1 = require_dist4();
82646
82676
  var take_dom_snapshots_1 = require_take_dom_snapshots();
82647
82677
  var to_base_check_settings_1 = require_to_base_check_settings();
82678
+ var to_generated_selectors_1 = require_to_generated_selectors();
82648
82679
  var uniquify_environments_1 = require_uniquify_environments();
82649
82680
  var to_environment_key_1 = require_to_environment_key();
82650
82681
  var abort_error_1 = require_abort_error();
@@ -82653,15 +82684,20 @@ var require_check3 = __commonJS({
82653
82684
  var chalk_1 = __importDefault(require_source());
82654
82685
  function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironments = [], spec, signal, logger: mainLogger }) {
82655
82686
  return async function check({ target = defaultTarget, settings = {}, logger = mainLogger } = {}) {
82656
- var _a, _b, _c;
82687
+ var _a, _b;
82657
82688
  logger = logger.extend(mainLogger);
82658
82689
  logger.log('Command "check" is called with settings', settings);
82659
82690
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
82660
82691
  logger.warn('Command "check" was called after test was already aborted');
82661
82692
  throw new abort_error_1.AbortError('Command "check" was called after test was already aborted');
82662
82693
  }
82663
- const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
82664
- settings
82694
+ const { elementReferences, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
82695
+ const { elementReferencesToMark, getGeneratedSelectors } = (0, to_generated_selectors_1.toGeneratedSelectors)({
82696
+ elementReferences,
82697
+ transformElementReference: (elementReference) => {
82698
+ var _a2;
82699
+ return (0, driver_1.isSelector)(elementReference) && ((_a2 = spec === null || spec === void 0 ? void 0 : spec.toSimpleCommonSelector) === null || _a2 === void 0 ? void 0 : _a2.call(spec, elementReference)) || void 0;
82700
+ }
82665
82701
  });
82666
82702
  const uniqueEnvironments = (0, uniquify_environments_1.uniquifyEnvironments)((_a = settings.environments) !== null && _a !== void 0 ? _a : defaultEnvironments);
82667
82703
  const ufgClient = await eyes.core.getUFGClient({
@@ -82672,7 +82708,7 @@ var require_check3 = __commonJS({
82672
82708
  },
82673
82709
  logger
82674
82710
  });
82675
- let snapshotResults;
82711
+ let snapshots;
82676
82712
  let snapshotUrl;
82677
82713
  let snapshotTitle;
82678
82714
  let userAgent;
@@ -82683,7 +82719,7 @@ var require_check3 = __commonJS({
82683
82719
  await currentContext.setScrollingElement((_b = settings.scrollRootElement) !== null && _b !== void 0 ? _b : null);
82684
82720
  if (environment.isWeb) {
82685
82721
  userAgent = await driver.getUserAgentLegacy();
82686
- snapshotResults = await (0, take_dom_snapshots_1.takeDomSnapshots)({
82722
+ snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)({
82687
82723
  driver,
82688
82724
  settings: {
82689
82725
  ...eyes.test.eyesServer,
@@ -82693,11 +82729,7 @@ var require_check3 = __commonJS({
82693
82729
  environments: uniqueEnvironments,
82694
82730
  skipResources: ufgClient.getCachedResourceUrls(),
82695
82731
  lazyLoad: settings.lazyLoad,
82696
- calculateRegionsOptions: {
82697
- elementReferencesToCalculate,
82698
- elementReferenceToTarget,
82699
- scrollRootElement: settings.scrollRootElement
82700
- }
82732
+ elementReferences: elementReferencesToMark
82701
82733
  },
82702
82734
  provides: {
82703
82735
  getChromeEmulationDevices: ufgClient.getChromeEmulationDevices,
@@ -82711,7 +82743,7 @@ var require_check3 = __commonJS({
82711
82743
  settings: { ...eyes.test.eyesServer, supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl },
82712
82744
  logger
82713
82745
  });
82714
- const snapshots = await nmlClient.takeSnapshots({
82746
+ snapshots = await nmlClient.takeSnapshots({
82715
82747
  settings: {
82716
82748
  ...eyes.test.eyesServer,
82717
82749
  waitBeforeCapture: settings.waitBeforeCapture,
@@ -82719,24 +82751,17 @@ var require_check3 = __commonJS({
82719
82751
  },
82720
82752
  logger
82721
82753
  });
82722
- snapshotResults = snapshots.map((snapshot) => {
82723
- var _a2, _b2, _c2, _d;
82724
- return {
82725
- snapshot,
82726
- regionToTarget: (0, driver_1.isSelector)(elementReferenceToTarget) ? (_b2 = (_a2 = spec === null || spec === void 0 ? void 0 : spec.toSimpleCommonSelector) === null || _a2 === void 0 ? void 0 : _a2.call(spec, settings.scrollRootElement)) !== null && _b2 !== void 0 ? _b2 : void 0 : void 0,
82727
- scrollRootSelector: (0, driver_1.isSelector)(settings.scrollRootElement) ? (_d = (_c2 = spec === null || spec === void 0 ? void 0 : spec.toSimpleCommonSelector) === null || _c2 === void 0 ? void 0 : _c2.call(spec, settings.scrollRootElement)) !== null && _d !== void 0 ? _d : void 0 : void 0
82728
- };
82729
- });
82730
82754
  }
82731
82755
  await currentContext.focus();
82732
82756
  snapshotUrl = await driver.getUrl();
82733
82757
  snapshotTitle = await driver.getTitle();
82734
82758
  } else {
82735
- snapshotResults = !utils34.types.isArray(target) ? Array(uniqueEnvironments.length).fill(target) : target;
82736
- snapshotUrl = utils34.types.has((_c = snapshotResults[0]) === null || _c === void 0 ? void 0 : _c.snapshot, "url") ? snapshotResults[0].snapshot.url : void 0;
82759
+ snapshots = !utils34.types.isArray(target) ? Array(uniqueEnvironments.length).fill(target) : target;
82760
+ snapshotUrl = utils34.types.has(snapshots[0], "url") ? snapshots[0].url : void 0;
82737
82761
  }
82762
+ const generatedSelectors = snapshots.map((snapshot) => getGeneratedSelectors(utils34.types.has(snapshot, "generatedSelectors") ? snapshot.generatedSelectors : void 0));
82738
82763
  const promises = uniqueEnvironments.map(async (environment, index) => {
82739
- var _a2, _b2, _c2, _d, _e, _f, _g, _h;
82764
+ var _a2, _b2, _c, _d, _e, _f, _g, _h;
82740
82765
  const environmentLogger = logger.extend({ tags: [`environment-${utils34.general.shortid()}`] });
82741
82766
  const ufgEnvironment = environment;
82742
82767
  if (utils34.types.has(ufgEnvironment, "name") && ufgEnvironment.name === "edge") {
@@ -82747,13 +82772,8 @@ var require_check3 = __commonJS({
82747
82772
  environmentLogger.warn('Command "check" was aborted before rendering');
82748
82773
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
82749
82774
  }
82750
- const { snapshot: snapshotFromResult, selectorsToCalculate: selectorsToCalculateFromSnapshot, regionToTarget, scrollRootSelector } = snapshotResults[index];
82751
- const { cookies, ...snapshot } = snapshotFromResult;
82752
- const region = (_a2 = regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : elementReferenceToTarget) !== null && _a2 !== void 0 ? _a2 : settings.region;
82753
- const selectorsToCalculate = selectorsToCalculateFromSnapshot !== null && selectorsToCalculateFromSnapshot !== void 0 ? selectorsToCalculateFromSnapshot : elementReferencesToCalculate.map((selector) => ({
82754
- originalSelector: selector,
82755
- safeSelector: selector
82756
- }));
82775
+ const { cookies, ...snapshot } = snapshots[index];
82776
+ const selectors = generatedSelectors[index];
82757
82777
  if (utils34.types.has(ufgEnvironment, "iosDeviceInfo") || utils34.types.has(ufgEnvironment, "androidDeviceInfo")) {
82758
82778
  ufgEnvironment.type = utils34.types.has(snapshot, "cdt") ? "web" : "native";
82759
82779
  }
@@ -82778,24 +82798,24 @@ var require_check3 = __commonJS({
82778
82798
  environmentLogger.warn('Command "check" was aborted before rendering');
82779
82799
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
82780
82800
  } else if (!baseEyes.running) {
82781
- environmentLogger.warn(`Render on environment with id "${(_b2 = baseEyes.test.environment) === null || _b2 === void 0 ? void 0 : _b2.environmentId}" was aborted during one of the previous steps`);
82782
- throw new abort_error_1.AbortError(`Render on environment with id "${(_c2 = baseEyes.test.environment) === null || _c2 === void 0 ? void 0 : _c2.environmentId}" was aborted during one of the previous steps`);
82801
+ environmentLogger.warn(`Render on environment with id "${(_a2 = baseEyes.test.environment) === null || _a2 === void 0 ? void 0 : _a2.environmentId}" was aborted during one of the previous steps`);
82802
+ throw new abort_error_1.AbortError(`Render on environment with id "${(_b2 = baseEyes.test.environment) === null || _b2 === void 0 ? void 0 : _b2.environmentId}" was aborted during one of the previous steps`);
82783
82803
  }
82784
82804
  const renderTarget = await renderTargetPromise;
82785
82805
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
82786
82806
  environmentLogger.warn('Command "check" was aborted before rendering');
82787
82807
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
82788
82808
  } else if (!baseEyes.running) {
82789
- environmentLogger.warn(`Render on environment with id "${(_d = baseEyes.test.environment) === null || _d === void 0 ? void 0 : _d.environmentId}" was aborted during one of the previous steps`);
82790
- throw new abort_error_1.AbortError(`Render on environment with id "${(_e = baseEyes.test.environment) === null || _e === void 0 ? void 0 : _e.environmentId}" was aborted during one of the previous steps`);
82809
+ environmentLogger.warn(`Render on environment with id "${(_c = baseEyes.test.environment) === null || _c === void 0 ? void 0 : _c.environmentId}" was aborted during one of the previous steps`);
82810
+ throw new abort_error_1.AbortError(`Render on environment with id "${(_d = baseEyes.test.environment) === null || _d === void 0 ? void 0 : _d.environmentId}" was aborted during one of the previous steps`);
82791
82811
  }
82792
82812
  const { renderId, selectorRegions, ...baseTarget } = await ufgClient.render({
82793
82813
  target: renderTarget,
82794
82814
  settings: {
82795
82815
  ...settings,
82796
- region,
82797
- scrollRootElement: scrollRootSelector,
82798
- selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
82816
+ region: (_e = selectors.target) !== null && _e !== void 0 ? _e : settings.region,
82817
+ scrollRootElement: selectors.scrolling,
82818
+ selectorsToCalculate: selectors.calculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
82799
82819
  includeFullPageSize: Boolean(settings.pageId),
82800
82820
  environment: ufgEnvironment,
82801
82821
  environmentId: baseEyes.test.environment.environmentId,
@@ -82807,7 +82827,7 @@ var require_check3 = __commonJS({
82807
82827
  });
82808
82828
  let offset = 0;
82809
82829
  const baseSettings = getBaseCheckSettings({
82810
- calculatedRegions: selectorsToCalculate.map(({ originalSelector, safeSelector }) => ({
82830
+ calculatedRegions: selectors.calculate.map(({ originalSelector, safeSelector }) => ({
82811
82831
  selector: originalSelector !== null && originalSelector !== void 0 ? originalSelector : void 0,
82812
82832
  regions: safeSelector ? selectorRegions[offset++] : []
82813
82833
  }))
@@ -82900,6 +82920,7 @@ var require_check_and_close3 = __commonJS({
82900
82920
  var driver_1 = require_dist4();
82901
82921
  var take_dom_snapshots_1 = require_take_dom_snapshots();
82902
82922
  var to_base_check_settings_1 = require_to_base_check_settings();
82923
+ var to_generated_selectors_1 = require_to_generated_selectors();
82903
82924
  var uniquify_environments_1 = require_uniquify_environments();
82904
82925
  var to_environment_key_1 = require_to_environment_key();
82905
82926
  var abort_error_1 = require_abort_error();
@@ -82908,15 +82929,20 @@ var require_check_and_close3 = __commonJS({
82908
82929
  var chalk_1 = __importDefault(require_source());
82909
82930
  function makeCheckAndClose({ eyes, target: defaultTarget, environments: defaultEnvironments = [], spec, signal, logger: mainLogger }) {
82910
82931
  return async function checkAndClose({ target = defaultTarget, settings = {}, logger = mainLogger } = {}) {
82911
- var _a, _b, _c;
82932
+ var _a, _b;
82912
82933
  logger = logger.extend(mainLogger);
82913
82934
  logger.log('Command "checkAndClose" is called with settings', settings);
82914
82935
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
82915
82936
  logger.warn('Command "checkAndClose" was called after test was already aborted');
82916
82937
  throw new abort_error_1.AbortError('Command "checkAndClose" was called after test was already aborted');
82917
82938
  }
82918
- const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
82919
- settings
82939
+ const { elementReferences, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
82940
+ const { elementReferencesToMark, getGeneratedSelectors } = (0, to_generated_selectors_1.toGeneratedSelectors)({
82941
+ elementReferences,
82942
+ transformElementReference: (elementReference) => {
82943
+ var _a2;
82944
+ return (0, driver_1.isSelector)(elementReference) && ((_a2 = spec === null || spec === void 0 ? void 0 : spec.toSimpleCommonSelector) === null || _a2 === void 0 ? void 0 : _a2.call(spec, elementReference)) || void 0;
82945
+ }
82920
82946
  });
82921
82947
  const uniqueEnvironments = (0, uniquify_environments_1.uniquifyEnvironments)((_a = settings.environments) !== null && _a !== void 0 ? _a : defaultEnvironments);
82922
82948
  const ufgClient = await eyes.core.getUFGClient({
@@ -82927,7 +82953,7 @@ var require_check_and_close3 = __commonJS({
82927
82953
  },
82928
82954
  logger
82929
82955
  });
82930
- let snapshotResults;
82956
+ let snapshots;
82931
82957
  let snapshotUrl;
82932
82958
  let snapshotTitle;
82933
82959
  let userAgent;
@@ -82938,7 +82964,7 @@ var require_check_and_close3 = __commonJS({
82938
82964
  await currentContext.setScrollingElement((_b = settings.scrollRootElement) !== null && _b !== void 0 ? _b : null);
82939
82965
  if (environment.isWeb) {
82940
82966
  userAgent = await driver.getUserAgentLegacy();
82941
- snapshotResults = await (0, take_dom_snapshots_1.takeDomSnapshots)({
82967
+ snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)({
82942
82968
  driver,
82943
82969
  settings: {
82944
82970
  ...eyes.test.eyesServer,
@@ -82948,11 +82974,7 @@ var require_check_and_close3 = __commonJS({
82948
82974
  environments: uniqueEnvironments,
82949
82975
  skipResources: ufgClient.getCachedResourceUrls(),
82950
82976
  lazyLoad: settings.lazyLoad,
82951
- calculateRegionsOptions: {
82952
- elementReferencesToCalculate,
82953
- elementReferenceToTarget,
82954
- scrollRootElement: settings.scrollRootElement
82955
- }
82977
+ elementReferences: elementReferencesToMark
82956
82978
  },
82957
82979
  provides: {
82958
82980
  getChromeEmulationDevices: ufgClient.getChromeEmulationDevices,
@@ -82966,7 +82988,7 @@ var require_check_and_close3 = __commonJS({
82966
82988
  settings: { ...eyes.test.eyesServer, supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl },
82967
82989
  logger
82968
82990
  });
82969
- const snapshots = await nmlClient.takeSnapshots({
82991
+ snapshots = await nmlClient.takeSnapshots({
82970
82992
  settings: {
82971
82993
  ...eyes.test.eyesServer,
82972
82994
  waitBeforeCapture: settings.waitBeforeCapture,
@@ -82974,24 +82996,17 @@ var require_check_and_close3 = __commonJS({
82974
82996
  },
82975
82997
  logger
82976
82998
  });
82977
- snapshotResults = snapshots.map((snapshot) => {
82978
- var _a2, _b2, _c2, _d;
82979
- return {
82980
- snapshot,
82981
- regionToTarget: (0, driver_1.isSelector)(elementReferenceToTarget) ? (_b2 = (_a2 = spec === null || spec === void 0 ? void 0 : spec.toSimpleCommonSelector) === null || _a2 === void 0 ? void 0 : _a2.call(spec, settings.scrollRootElement)) !== null && _b2 !== void 0 ? _b2 : void 0 : void 0,
82982
- scrollRootSelector: (0, driver_1.isSelector)(settings.scrollRootElement) ? (_d = (_c2 = spec === null || spec === void 0 ? void 0 : spec.toSimpleCommonSelector) === null || _c2 === void 0 ? void 0 : _c2.call(spec, settings.scrollRootElement)) !== null && _d !== void 0 ? _d : void 0 : void 0
82983
- };
82984
- });
82985
82999
  }
82986
83000
  await currentContext.focus();
82987
83001
  snapshotUrl = await driver.getUrl();
82988
83002
  snapshotTitle = await driver.getTitle();
82989
83003
  } else {
82990
- snapshotResults = !utils34.types.isArray(target) ? Array(uniqueEnvironments.length).fill(target) : target;
82991
- snapshotUrl = utils34.types.has((_c = snapshotResults[0]) === null || _c === void 0 ? void 0 : _c.snapshot, "url") ? snapshotResults[0].snapshot.url : void 0;
83004
+ snapshots = !utils34.types.isArray(target) ? Array(uniqueEnvironments.length).fill(target) : target;
83005
+ snapshotUrl = utils34.types.has(snapshots[0], "url") ? snapshots[0].url : void 0;
82992
83006
  }
83007
+ const generatedSelectors = snapshots.map((snapshot) => getGeneratedSelectors(utils34.types.has(snapshot, "generatedSelectors") ? snapshot.generatedSelectors : void 0));
82993
83008
  const promises = uniqueEnvironments.map(async (environment, index) => {
82994
- var _a2, _b2, _c2, _d, _e, _f, _g, _h;
83009
+ var _a2, _b2, _c, _d, _e, _f, _g, _h;
82995
83010
  const environmentLogger = logger.extend({ tags: [`environment-${utils34.general.shortid()}`] });
82996
83011
  const ufgEnvironment = environment;
82997
83012
  if (utils34.types.has(ufgEnvironment, "name") && ufgEnvironment.name === "edge") {
@@ -83002,13 +83017,8 @@ var require_check_and_close3 = __commonJS({
83002
83017
  environmentLogger.warn('Command "check" was aborted before rendering');
83003
83018
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
83004
83019
  }
83005
- const { snapshot: snapshotFromResult, selectorsToCalculate: selectorsToCalculateFromSnapshot, regionToTarget, scrollRootSelector } = snapshotResults[index];
83006
- const { cookies, ...snapshot } = snapshotFromResult;
83007
- const region = (_a2 = regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : elementReferenceToTarget) !== null && _a2 !== void 0 ? _a2 : settings.region;
83008
- const selectorsToCalculate = selectorsToCalculateFromSnapshot !== null && selectorsToCalculateFromSnapshot !== void 0 ? selectorsToCalculateFromSnapshot : elementReferencesToCalculate.map((selector) => ({
83009
- originalSelector: selector,
83010
- safeSelector: selector
83011
- }));
83020
+ const { cookies, ...snapshot } = snapshots[index];
83021
+ const selectors = generatedSelectors[index];
83012
83022
  if (utils34.types.has(ufgEnvironment, "iosDeviceInfo") || utils34.types.has(ufgEnvironment, "androidDeviceInfo")) {
83013
83023
  ufgEnvironment.type = utils34.types.has(snapshot, "cdt") ? "web" : "native";
83014
83024
  }
@@ -83033,24 +83043,24 @@ var require_check_and_close3 = __commonJS({
83033
83043
  environmentLogger.warn('Command "check" was aborted before rendering');
83034
83044
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
83035
83045
  } else if (!baseEyes.running) {
83036
- environmentLogger.warn(`Render on environment with id "${(_b2 = baseEyes.test.environment) === null || _b2 === void 0 ? void 0 : _b2.environmentId}" was aborted during one of the previous steps`);
83037
- throw new abort_error_1.AbortError(`Render on environment with id "${(_c2 = baseEyes.test.environment) === null || _c2 === void 0 ? void 0 : _c2.environmentId}" was aborted during one of the previous steps`);
83046
+ environmentLogger.warn(`Render on environment with id "${(_a2 = baseEyes.test.environment) === null || _a2 === void 0 ? void 0 : _a2.environmentId}" was aborted during one of the previous steps`);
83047
+ throw new abort_error_1.AbortError(`Render on environment with id "${(_b2 = baseEyes.test.environment) === null || _b2 === void 0 ? void 0 : _b2.environmentId}" was aborted during one of the previous steps`);
83038
83048
  }
83039
83049
  const renderTarget = await renderTargetPromise;
83040
83050
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
83041
83051
  environmentLogger.warn('Command "check" was aborted before rendering');
83042
83052
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
83043
83053
  } else if (!baseEyes.running) {
83044
- environmentLogger.warn(`Render on environment with id "${(_d = baseEyes.test.environment) === null || _d === void 0 ? void 0 : _d.environmentId}" was aborted during one of the previous steps`);
83045
- throw new abort_error_1.AbortError(`Render on environment with id "${(_e = baseEyes.test.environment) === null || _e === void 0 ? void 0 : _e.environmentId}" was aborted during one of the previous steps`);
83054
+ environmentLogger.warn(`Render on environment with id "${(_c = baseEyes.test.environment) === null || _c === void 0 ? void 0 : _c.environmentId}" was aborted during one of the previous steps`);
83055
+ throw new abort_error_1.AbortError(`Render on environment with id "${(_d = baseEyes.test.environment) === null || _d === void 0 ? void 0 : _d.environmentId}" was aborted during one of the previous steps`);
83046
83056
  }
83047
83057
  const { renderId, selectorRegions, ...baseTarget } = await ufgClient.render({
83048
83058
  target: renderTarget,
83049
83059
  settings: {
83050
83060
  ...settings,
83051
- region,
83052
- scrollRootElement: scrollRootSelector,
83053
- selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
83061
+ region: (_e = selectors.target) !== null && _e !== void 0 ? _e : settings.region,
83062
+ scrollRootElement: selectors.scrolling,
83063
+ selectorsToCalculate: selectors.calculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
83054
83064
  includeFullPageSize: !!settings.pageId,
83055
83065
  environment: ufgEnvironment,
83056
83066
  environmentId: baseEyes.test.environment.environmentId,
@@ -83062,7 +83072,7 @@ var require_check_and_close3 = __commonJS({
83062
83072
  });
83063
83073
  let offset = 0;
83064
83074
  const baseSettings = getBaseCheckSettings({
83065
- calculatedRegions: selectorsToCalculate.map(({ originalSelector, safeSelector }) => ({
83075
+ calculatedRegions: selectors.calculate.map(({ originalSelector, safeSelector }) => ({
83066
83076
  selector: originalSelector !== null && originalSelector !== void 0 ? originalSelector : void 0,
83067
83077
  regions: safeSelector ? selectorRegions[offset++] : []
83068
83078
  }))
@@ -84281,7 +84291,7 @@ var require_package2 = __commonJS({
84281
84291
  "../core/package.json"(exports, module) {
84282
84292
  module.exports = {
84283
84293
  name: "@applitools/core",
84284
- version: "4.3.0",
84294
+ version: "4.5.0",
84285
84295
  homepage: "https://applitools.com",
84286
84296
  bugs: {
84287
84297
  url: "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -84340,6 +84350,12 @@ var require_package2 = __commonJS({
84340
84350
  },
84341
84351
  sea: {
84342
84352
  bin: "eyes",
84353
+ certs: {
84354
+ win: {
84355
+ cert: "env.CODE_SIGNING_CERT_WIN",
84356
+ pass: "env.CODE_SIGNING_PASS_WIN"
84357
+ }
84358
+ },
84343
84359
  targets: {
84344
84360
  "node20-linux-x64-glibc-217": "./bin/core-linux",
84345
84361
  "node20-linux-x64-musl": "./bin/core-alpine",
@@ -84605,6 +84621,68 @@ var require_validate_sdk_version = __commonJS({
84605
84621
  }
84606
84622
  });
84607
84623
 
84624
+ // ../core/dist/utils/memory-usage-logging.js
84625
+ var require_memory_usage_logging = __commonJS({
84626
+ "../core/dist/utils/memory-usage-logging.js"(exports) {
84627
+ "use strict";
84628
+ init_process();
84629
+ init_setImmediate();
84630
+ init_buffer();
84631
+ var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
84632
+ if (k2 === void 0)
84633
+ k2 = k;
84634
+ var desc = Object.getOwnPropertyDescriptor(m, k);
84635
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
84636
+ desc = { enumerable: true, get: function() {
84637
+ return m[k];
84638
+ } };
84639
+ }
84640
+ Object.defineProperty(o, k2, desc);
84641
+ } : function(o, m, k, k2) {
84642
+ if (k2 === void 0)
84643
+ k2 = k;
84644
+ o[k2] = m[k];
84645
+ });
84646
+ var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
84647
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
84648
+ } : function(o, v) {
84649
+ o["default"] = v;
84650
+ });
84651
+ var __importStar = exports && exports.__importStar || function(mod) {
84652
+ if (mod && mod.__esModule)
84653
+ return mod;
84654
+ var result = {};
84655
+ if (mod != null) {
84656
+ for (var k in mod)
84657
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
84658
+ __createBinding(result, mod, k);
84659
+ }
84660
+ __setModuleDefault(result, mod);
84661
+ return result;
84662
+ };
84663
+ Object.defineProperty(exports, "__esModule", { value: true });
84664
+ exports.startMemoryUsageLogging = void 0;
84665
+ var utils34 = __importStar(require_browser3());
84666
+ function startMemoryUsageLogging({ timeout = 3e4, logger }) {
84667
+ var _a;
84668
+ logger = logger.extend({ tags: [`mem-usage-${utils34.general.shortid()}`] });
84669
+ const interval = setInterval(() => logger.log(formatMemoryUsage(process.memoryUsage())), (_a = utils34.general.getEnvValue("MEMORY_LOG_TIMEOUT", "number")) !== null && _a !== void 0 ? _a : timeout);
84670
+ interval.unref();
84671
+ return { stop: stop2 };
84672
+ function stop2() {
84673
+ clearInterval(interval);
84674
+ }
84675
+ }
84676
+ exports.startMemoryUsageLogging = startMemoryUsageLogging;
84677
+ function formatMemoryUsage(usage) {
84678
+ return `Memory usage: ${Object.entries(usage).map(([key, value]) => `${key}: ${toMB(value)}MB`).join(", ")}`;
84679
+ }
84680
+ function toMB(size) {
84681
+ return Math.round(size / 1024 / 1024 * 100) / 100;
84682
+ }
84683
+ }
84684
+ });
84685
+
84608
84686
  // ../core/dist/core.js
84609
84687
  var require_core4 = __commonJS({
84610
84688
  "../core/dist/core.js"(exports) {
@@ -84662,9 +84740,11 @@ var require_core4 = __commonJS({
84662
84740
  var delete_test_1 = require_delete_test2();
84663
84741
  var extract_test_environment_1 = require_extract_test_environment();
84664
84742
  var validate_sdk_version_1 = require_validate_sdk_version();
84743
+ var memory_usage_logging_1 = require_memory_usage_logging();
84665
84744
  var utils34 = __importStar(require_browser3());
84666
84745
  function makeCore({ spec, clients, concurrency, base: defaultBase, environment: defaultEnvironment, agentId = "core", cwd = process.cwd(), logger: defaultLogger, asyncCache } = {}) {
84667
84746
  const logger = (0, logger_1.makeLogger)({ logger: defaultLogger, format: { label: "core" } });
84747
+ (0, memory_usage_logging_1.startMemoryUsageLogging)({ logger });
84668
84748
  const environment = (0, extract_test_environment_1.extractTestEnvironment)(defaultEnvironment);
84669
84749
  logger.log(`Core is initialized ${defaultBase ? "with" : "without"} custom base core and environment`, environment);
84670
84750
  if (environment.sdk)
@@ -87820,7 +87900,7 @@ var require_logs = __commonJS({
87820
87900
  init_setImmediate();
87821
87901
  init_buffer();
87822
87902
  Object.defineProperty(exports, "__esModule", { value: true });
87823
- exports.structureLogs = exports.parseLogs = void 0;
87903
+ exports.analyzeLogs = exports.structureLogs = exports.stringifyLog = exports.parseLogs = void 0;
87824
87904
  function parseLogs(logs) {
87825
87905
  const regexp = /^(?<label>[^\s]+) (?:\((?<tags>[^\)]+)\) )?\| (?<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z)? (?:\[(?<level>[A-Z]+)\s*\])? (?<message>.+)$/;
87826
87906
  const lines = logs.split("\n");
@@ -87839,8 +87919,14 @@ var require_logs = __commonJS({
87839
87919
  }, []);
87840
87920
  }
87841
87921
  exports.parseLogs = parseLogs;
87922
+ function stringifyLog(log) {
87923
+ var _a;
87924
+ return `${log.label} (${(_a = log.tags) === null || _a === void 0 ? void 0 : _a.map((tags) => tags.join("/")).join(" & ")}) ${log.timestamp} [${log.level}] ${log.message}`;
87925
+ }
87926
+ exports.stringifyLog = stringifyLog;
87842
87927
  function structureLogs(logs) {
87843
87928
  const groups = {};
87929
+ groups.logs;
87844
87930
  logs.forEach((log) => {
87845
87931
  var _a;
87846
87932
  const tags = (_a = log.tags) !== null && _a !== void 0 ? _a : [[]];
@@ -87858,6 +87944,34 @@ var require_logs = __commonJS({
87858
87944
  return groups;
87859
87945
  }
87860
87946
  exports.structureLogs = structureLogs;
87947
+ function analyzeLogs({ logs, ...groups }) {
87948
+ var _a, _b;
87949
+ const analysis = {};
87950
+ analysis.logs = logs === null || logs === void 0 ? void 0 : logs.map(stringifyLog);
87951
+ const groupAnalyses = Object.fromEntries(Object.entries(groups).map(([name, group]) => [name, analyzeLogs(group)]));
87952
+ analysis.startedAt = Math.min(Date.parse((_a = logs === null || logs === void 0 ? void 0 : logs[0]) === null || _a === void 0 ? void 0 : _a.timestamp) || Infinity, ...Object.values(groupAnalyses).map((group) => group.startedAt));
87953
+ analysis.finishedAt = Math.max(Date.parse((_b = logs === null || logs === void 0 ? void 0 : logs[logs.length - 1]) === null || _b === void 0 ? void 0 : _b.timestamp) || 0, ...Object.values(groupAnalyses).map((group) => group.finishedAt));
87954
+ analysis.time = analysis.finishedAt - analysis.startedAt;
87955
+ analysis.conclusion = "";
87956
+ analysis.conclusion += `Time taken: ${formatTime(analysis.time)};`;
87957
+ if (Object.keys(groupAnalyses).length > 0) {
87958
+ analysis.conclusion += `Longest group: ${Object.keys(groupAnalyses).reduce((prev, cur) => groupAnalyses[cur].time > groupAnalyses[prev].time ? cur : prev)}`;
87959
+ }
87960
+ return { ...analysis, ...groupAnalyses };
87961
+ }
87962
+ exports.analyzeLogs = analyzeLogs;
87963
+ function formatTime(ms) {
87964
+ const h = Math.floor(ms / 36e5);
87965
+ if (h)
87966
+ ms -= h * 36e5;
87967
+ const m = Math.floor(ms / 6e4);
87968
+ if (m)
87969
+ ms -= m * 6e4;
87970
+ const s = Math.floor(ms / 1e3);
87971
+ if (s)
87972
+ ms -= s * 1e3;
87973
+ return [h && `${h}h`, m && `${m}m`, s && `${s}s`, ms && `${ms}ms`].filter(Boolean).join(" ");
87974
+ }
87861
87975
  }
87862
87976
  });
87863
87977
 
@@ -87926,7 +88040,7 @@ var require_package3 = __commonJS({
87926
88040
  "../eyes/package.json"(exports, module) {
87927
88041
  module.exports = {
87928
88042
  name: "@applitools/eyes",
87929
- version: "1.13.0",
88043
+ version: "1.13.2",
87930
88044
  keywords: [
87931
88045
  "applitools",
87932
88046
  "eyes",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/eyes-browser",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "keywords": [
5
5
  "applitools",
6
6
  "browser",
@@ -48,7 +48,7 @@
48
48
  "test": "run --top-level mocha './test/**/*.spec.ts'"
49
49
  },
50
50
  "dependencies": {
51
- "@applitools/eyes": "1.13.0"
51
+ "@applitools/eyes": "1.13.2"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@types/node": "^12.20.55",