@applitools/eyes-browser 1.5.21 → 1.5.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.5.22](https://github.com/Applitools-Dev/sdk/compare/js/eyes-browser@1.5.21...js/eyes-browser@1.5.22) (2026-01-19)
4
+
5
+
6
+ ### Dependencies
7
+
8
+ * @applitools/driver bumped to 1.25.0
9
+ #### Features
10
+
11
+ * multi-page support - FLD-3827 ([#3410](https://github.com/Applitools-Dev/sdk/issues/3410)) ([a55b982](https://github.com/Applitools-Dev/sdk/commit/a55b9827c2218c11da5ed61b38bf12a70ce4c8db))
12
+ * @applitools/spec-driver-puppeteer bumped to 1.7.0
13
+ #### Features
14
+
15
+ * multi-page support - FLD-3827 ([#3410](https://github.com/Applitools-Dev/sdk/issues/3410)) ([a55b982](https://github.com/Applitools-Dev/sdk/commit/a55b9827c2218c11da5ed61b38bf12a70ce4c8db))
16
+
17
+
18
+
19
+ * @applitools/core bumped to 4.55.0
20
+ #### Features
21
+
22
+ * multi-page support - FLD-3827 ([#3410](https://github.com/Applitools-Dev/sdk/issues/3410)) ([a55b982](https://github.com/Applitools-Dev/sdk/commit/a55b9827c2218c11da5ed61b38bf12a70ce4c8db))
23
+
24
+
25
+
26
+ * @applitools/dom-snapshot bumped to 4.15.6
27
+
28
+ * @applitools/spec-driver-webdriver bumped to 1.5.5
29
+
30
+ * @applitools/spec-driver-selenium bumped to 1.7.11
31
+
32
+ * @applitools/screenshoter bumped to 3.12.12
33
+
34
+ * @applitools/nml-client bumped to 1.11.15
35
+
36
+ * @applitools/ec-client bumped to 1.12.17
37
+
38
+ * @applitools/eyes bumped to 1.38.0
39
+ #### Features
40
+
41
+ * multi-page support - FLD-3827 ([#3410](https://github.com/Applitools-Dev/sdk/issues/3410)) ([a55b982](https://github.com/Applitools-Dev/sdk/commit/a55b9827c2218c11da5ed61b38bf12a70ce4c8db))
42
+
43
+
44
+
45
+
3
46
  ## [1.5.21](https://github.com/Applitools-Dev/sdk/compare/js/eyes-browser@1.5.20...js/eyes-browser@1.5.21) (2026-01-14)
4
47
 
5
48
 
package/dist/index.js CHANGED
@@ -71874,6 +71874,14 @@ var require_driver = __commonJS({
71874
71874
  }
71875
71875
  return normalizedRegion;
71876
71876
  }
71877
+ async bringToFront() {
71878
+ var _a, _b;
71879
+ try {
71880
+ await ((_b = (_a = this._spec).bringToFront) === null || _b === void 0 ? void 0 : _b.call(_a, this.target));
71881
+ } catch (error) {
71882
+ this._logger.warn("Unable to bringToFront the current context due to the error", error);
71883
+ }
71884
+ }
71877
71885
  async getRegionInViewport(context, region) {
71878
71886
  await context.focus();
71879
71887
  return context.getRegionInViewport(region);
@@ -95716,7 +95724,7 @@ creating temp style for access.`), r3 = Zh(e3);
95716
95724
  function B2(e3) {
95717
95725
  return n4.defaultView && n4.defaultView.frameElement && n4.defaultView.frameElement.getAttribute(e3);
95718
95726
  }
95719
- }(t3).then((e3) => (h2.log("processPage end"), e3.scriptVersion = "4.15.5", e3));
95727
+ }(t3).then((e3) => (h2.log("processPage end"), e3.scriptVersion = "4.15.6", e3));
95720
95728
  }, window[x], "domSnapshotResult");
95721
95729
  return function(e3) {
95722
95730
  try {
@@ -96516,9 +96524,10 @@ var require_to_safe_check_settings = __commonJS({
96516
96524
  const { region, ...options } = utils34.types.has(reference, "region") ? reference : { region: reference };
96517
96525
  if (isRegion(region))
96518
96526
  return reference;
96519
- const { originalSelector, safeSelector } = selectors.calculate.shift();
96520
- if (!safeSelector)
96527
+ const selectorInfo = selectors.calculate.shift();
96528
+ if (!(selectorInfo === null || selectorInfo === void 0 ? void 0 : selectorInfo.safeSelector))
96521
96529
  return [];
96530
+ const { originalSelector, safeSelector } = selectorInfo;
96522
96531
  return {
96523
96532
  region: safeSelector,
96524
96533
  regionId: utils34.types.isString(originalSelector) ? originalSelector : originalSelector === null || originalSelector === void 0 ? void 0 : originalSelector.selector,
@@ -96549,7 +96558,7 @@ var require_to_generated_selectors = __commonJS({
96549
96558
  init_setInterval();
96550
96559
  Object.defineProperty(exports, "__esModule", { value: true });
96551
96560
  exports.toGeneratedSelectors = void 0;
96552
- function toGeneratedSelectors({ elementReferences, logger, transformElementReference }) {
96561
+ function toGeneratedSelectors({ elementReferences, logger, transformElementReference, logDeprecations }) {
96553
96562
  var _a, _b, _c;
96554
96563
  const elementReferencesToMark = [
96555
96564
  (_a = elementReferences.target) !== null && _a !== void 0 ? _a : [],
@@ -96596,7 +96605,8 @@ var require_to_generated_selectors = __commonJS({
96596
96605
  safeSelector: isError ? null : safeSelector
96597
96606
  };
96598
96607
  });
96599
- } else {
96608
+ } else if (target || scrolling || calculate.length) {
96609
+ logDeprecations("toGeneratedSelectors: `transformElementReference` was unexpectedly called.");
96600
96610
  target = elementReferences.target && transformElementReference(elementReferences.target);
96601
96611
  scrolling = elementReferences.scrolling && transformElementReference(elementReferences.scrolling);
96602
96612
  calculate = ((_c2 = elementReferences.calculate) !== null && _c2 !== void 0 ? _c2 : []).map((elementReference) => {
@@ -96694,6 +96704,7 @@ var require_take_snapshots2 = __commonJS({
96694
96704
  const { elementReferencesToMark, getGeneratedSelectors } = (0, to_generated_selectors_1.toGeneratedSelectors)({
96695
96705
  elementReferences,
96696
96706
  logger,
96707
+ logDeprecations,
96697
96708
  // dead code - `transformElementReference` was used for NMG but it's not longer used anywhere
96698
96709
  transformElementReference: (elementReference) => {
96699
96710
  var _a2;
@@ -96744,6 +96755,7 @@ var require_take_snapshots2 = __commonJS({
96744
96755
  }
96745
96756
  }
96746
96757
  } else {
96758
+ logDeprecations("takeSnapshots: taking native snapshots is no longer supported. How did you reach this message? (dead code)");
96747
96759
  const nmlClient = await core.getNMLClient({
96748
96760
  driver,
96749
96761
  settings: { ...account.eyesServer, supportedEnvironmentsUrl: account.supportedEnvironmentsUrl },
@@ -96790,6 +96802,18 @@ var require_take_snapshots2 = __commonJS({
96790
96802
  title,
96791
96803
  userAgent
96792
96804
  }));
96805
+ function logDeprecations(...args) {
96806
+ core.logEvent({
96807
+ settings: {
96808
+ level: "Error",
96809
+ event: {
96810
+ type: "SDK.unreachableCodeReached",
96811
+ message: args.join(" ")
96812
+ },
96813
+ ...account.eyesServer
96814
+ }
96815
+ });
96816
+ }
96793
96817
  };
96794
96818
  }
96795
96819
  exports.makeTakeSnapshots = makeTakeSnapshots;
@@ -119467,6 +119491,7 @@ var require_check4 = __commonJS({
119467
119491
  logger.console.log(chalk_1.default.yellow(lang.matchLevelContentDeprecatedWarning));
119468
119492
  }
119469
119493
  const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger }) : null;
119494
+ await (driver === null || driver === void 0 ? void 0 : driver.bringToFront());
119470
119495
  const typedEyes = await eyes.getTypedEyes({ type, logger });
119471
119496
  return typedEyes.check({ target: driver !== null && driver !== void 0 ? driver : target, settings, logger });
119472
119497
  };
@@ -121130,7 +121155,7 @@ var require_package3 = __commonJS({
121130
121155
  "../core/package.json"(exports, module) {
121131
121156
  module.exports = {
121132
121157
  name: "@applitools/core",
121133
- version: "4.54.3",
121158
+ version: "4.55.0",
121134
121159
  homepage: "https://applitools.com",
121135
121160
  bugs: {
121136
121161
  url: "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -126502,6 +126527,9 @@ var require_spec_driver3 = __commonJS({
126502
126527
  },
126503
126528
  async executeBrowserCommands(driver, commands2) {
126504
126529
  return socket.request("Driver.executeBrowserCommands", { driver, commands: commands2 });
126530
+ },
126531
+ async bringToFront(driver) {
126532
+ return socket.request("Driver.bringToFront", { driver });
126505
126533
  }
126506
126534
  };
126507
126535
  spec = addDefaultCommands(spec);
@@ -128046,7 +128074,7 @@ var require_package4 = __commonJS({
128046
128074
  "../eyes/package.json"(exports, module) {
128047
128075
  module.exports = {
128048
128076
  name: "@applitools/eyes",
128049
- version: "1.37.0",
128077
+ version: "1.38.0",
128050
128078
  keywords: [
128051
128079
  "applitools",
128052
128080
  "eyes",
@@ -128076,6 +128104,10 @@ var require_package4 = __commonJS({
128076
128104
  types: "./types/index.d.ts",
128077
128105
  default: "./dist/index.js"
128078
128106
  },
128107
+ "./SettingsWithPage": {
128108
+ types: "./types/SettingsWithPage.d.ts",
128109
+ default: "./dist/SettingsWithPage.js"
128110
+ },
128079
128111
  "./dist/*": "./dist/*.js",
128080
128112
  "./package.json": "./package.json"
128081
128113
  },
@@ -130262,6 +130294,11 @@ var CheckSettingsAutomationFluent = class extends CheckSettingsBaseFluent {
130262
130294
  return utils14.types.isNumber(value) || utils14.types.isString(value) || this._isElementReference(value);
130263
130295
  }
130264
130296
  region(region) {
130297
+ if (utils14.types.isPlainObject(region) && utils14.types.has(region, "page")) {
130298
+ const { page, ...regionWithoutPage } = region;
130299
+ this._settings.page = page;
130300
+ region = regionWithoutPage;
130301
+ }
130265
130302
  if (this._isSelectorReference(region) && this._isSelectorReference(this._settings.region) && utils14.types.has(this._settings.region, "selector")) {
130266
130303
  let lastSelector = this._settings.region;
130267
130304
  while (lastSelector.shadow)
@@ -130289,7 +130326,15 @@ var CheckSettingsAutomationFluent = class extends CheckSettingsBaseFluent {
130289
130326
  return this;
130290
130327
  }
130291
130328
  frame(contextOrFrame, scrollRootElement) {
130329
+ let page;
130330
+ if (utils14.types.isPlainObject(contextOrFrame) && utils14.types.has(contextOrFrame, "page")) {
130331
+ page = contextOrFrame.page;
130332
+ }
130292
130333
  const context = this._isFrameReference(contextOrFrame) || this._isSelectorReference(contextOrFrame) ? { frame: contextOrFrame, scrollRootElement } : contextOrFrame;
130334
+ if (page) {
130335
+ ;
130336
+ this._settings.page = page;
130337
+ }
130293
130338
  if (!this._settings.frames)
130294
130339
  this._settings.frames = [];
130295
130340
  this._settings.frames.push(context);
@@ -130410,7 +130455,7 @@ var CheckSettingsAutomationFluent = class extends CheckSettingsBaseFluent {
130410
130455
  toJSON() {
130411
130456
  var _a, _b, _c, _d, _e, _f, _g, _h;
130412
130457
  return {
130413
- target: void 0,
130458
+ target: this._settings.page,
130414
130459
  settings: utils14.general.removeUndefinedProps({
130415
130460
  name: this._settings.name,
130416
130461
  region: this._settings.region ? this.toCoreRegion(this._settings.region) : this._settings.region,
@@ -133368,7 +133413,11 @@ var Eyes = class {
133368
133413
  return this.check({ name, region: selector, timeout, fully: true });
133369
133414
  }
133370
133415
  async checkRegion(imageOrRegion, regionOrName, nameOrTimeout, ignoreMismatch = false) {
133371
- return utils32.types.has(imageOrRegion, ["x", "y", "width", "height"]) ? this.check({ region: imageOrRegion, name: regionOrName, timeout: nameOrTimeout }) : this.check(
133416
+ return utils32.types.has(imageOrRegion, ["x", "y", "width", "height"]) ? this.check({
133417
+ region: imageOrRegion,
133418
+ name: regionOrName,
133419
+ timeout: nameOrTimeout
133420
+ }) : this.check(
133372
133421
  { image: imageOrRegion },
133373
133422
  { region: regionOrName, name: nameOrTimeout, ignoreMismatch }
133374
133423
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/eyes-browser",
3
- "version": "1.5.21",
3
+ "version": "1.5.22",
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.37.0"
51
+ "@applitools/eyes": "1.38.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@types/node": "^12.20.55",
package/types/Eyes.d.ts CHANGED
@@ -26,7 +26,8 @@ import { ValidationResult } from './output/ValidationResult';
26
26
  import { SessionEventHandler, SessionEventHandlers } from './SessionEventHandlers';
27
27
  import { EyesRunner } from './Runners';
28
28
  import { Logger } from './Logger';
29
- export declare class Eyes<TSpec extends Core.SpecType = Core.SpecType> {
29
+ export { CheckSettingsOptIn } from './input/CheckSettings';
30
+ export declare class Eyes<TSpec extends Core.SpecType = Core.SpecType, TCheckSettingsWithAutomation extends CheckSettingsAutomation<TSpec> = CheckSettingsAutomation<TSpec>> {
30
31
  protected static readonly _sdk: SDK<Core.SpecType>;
31
32
  protected get _sdk(): SDK<TSpec>;
32
33
  private _logger;
@@ -102,7 +103,7 @@ export declare class Eyes<TSpec extends Core.SpecType = Core.SpecType> {
102
103
  open(appName?: string, testName?: string, viewportSize?: RectangleSize, sessionType?: SessionType): Promise<void>;
103
104
  check(name: string, checkSettings: CheckSettingsImageFluent | CheckSettingsAutomationFluent<TSpec>): Promise<MatchResultData>;
104
105
  check(target: Image, checkSettings?: CheckSettingsImage): Promise<MatchResultData>;
105
- check(checkSettings?: CheckSettingsAutomation<TSpec>): Promise<MatchResultData>;
106
+ check(checkSettings?: TCheckSettingsWithAutomation): Promise<MatchResultData>;
106
107
  /** @deprecated */
107
108
  checkWindow(name?: string, timeout?: number, fully?: boolean): Promise<MatchResultData>;
108
109
  /** @deprecated */
@@ -0,0 +1 @@
1
+ export { CheckSettingsOptIn as CheckSettings, RegionReferenceWithPage as RegionReference } from './input/CheckSettings';
@@ -82,7 +82,7 @@ type LayoutBreakpoints = boolean | number[] | {
82
82
  heightBreakpoints: boolean;
83
83
  reload?: boolean;
84
84
  };
85
- export type CheckSettingsAutomation<TSpec extends Core.SpecType> = CheckSettingsBase<RegionReference<TSpec>> & {
85
+ export type CheckSettingsAutomation<TSpec extends Core.SpecType, TRegionReference = RegionReference<TSpec>> = CheckSettingsBase<TRegionReference> & {
86
86
  frames?: (ContextReference<TSpec> | FrameReference<TSpec>)[];
87
87
  webview?: boolean | string;
88
88
  scrollRootElement?: ElementReference<TSpec>;
@@ -108,6 +108,31 @@ export type CheckSettingsAutomation<TSpec extends Core.SpecType> = CheckSettings
108
108
  waitBeforeCapture?: number | (() => Promise<void>);
109
109
  lazyLoad?: boolean | LazyLoadOptions;
110
110
  };
111
+ /**
112
+ * All available opt-in properties for CheckSettings.
113
+ * Platforms can selectively include these properties as needed.
114
+ *
115
+ * @template TSpec - The spec type for the platform
116
+ */
117
+ type CheckSettingsWithPage<TSpec extends Core.SpecType> = {
118
+ page?: TSpec['driver'];
119
+ };
120
+ export type RegionReferenceWithPage<TSpec extends Core.SpecType> = (Region & {
121
+ page?: TSpec['driver'];
122
+ }) | {
123
+ selector: TSpec['selector'] | string;
124
+ page?: TSpec['driver'];
125
+ } | ElementReference<TSpec>;
126
+ /**
127
+ * Opt-in properties for multi-page context support.
128
+ * Platforms that support multi-page contexts (Playwright, Puppeteer) should include this.
129
+ *
130
+ * @template TSpec - The spec type for the platform
131
+ * @template TKeys - Optional array of property keys to include. If not specified, only 'page' is included.
132
+ *
133
+ */
134
+ export type CheckSettingsOptIn<TSpec extends Core.SpecType, TKeys extends readonly (keyof CheckSettingsWithPage<TSpec>)[] = ['page']> = Pick<CheckSettingsWithPage<TSpec>, TKeys[number]>;
135
+ export type CheckSettingsAutomationWithOptIn<TSpec extends Core.SpecType> = CheckSettingsAutomation<TSpec, RegionReferenceWithPage<TSpec>> & CheckSettingsOptIn<TSpec, ['page']>;
111
136
  export declare class CheckSettingsBaseFluent<TRegion = never> {
112
137
  protected _settings: CheckSettingsBase<TRegion>;
113
138
  protected parent?: this;
@@ -192,16 +217,17 @@ export declare class CheckSettingsImageFluent extends CheckSettingsBaseFluent {
192
217
  settings: Core.CheckSettings<never, 'classic'>;
193
218
  };
194
219
  }
195
- export declare class CheckSettingsAutomationFluent<TSpec extends Core.SpecType = Core.SpecType> extends CheckSettingsBaseFluent<RegionReference<TSpec>> {
220
+ export declare class CheckSettingsAutomationFluent<TSpec extends Core.SpecType = Core.SpecType, TCheckSettingsWithAutomation extends CheckSettingsAutomation<TSpec> = CheckSettingsAutomation<TSpec>> extends CheckSettingsBaseFluent<RegionReference<TSpec>> {
196
221
  protected _settings: CheckSettingsAutomation<TSpec>;
197
222
  protected static readonly _spec: Core.SpecDriver<Core.SpecType>;
198
223
  protected _spec: Core.SpecDriver<TSpec>;
199
224
  protected _isElementReference(value: any): value is ElementReference<TSpec>;
200
225
  protected _isSelectorReference(selector: any): selector is SelectorReference<TSpec>;
201
226
  protected _isFrameReference(value: any): value is FrameReference<TSpec>;
202
- constructor(settings?: CheckSettingsAutomation<TSpec> | CheckSettingsAutomationFluent<TSpec>);
227
+ constructor(settings?: CheckSettingsAutomationFluent<TSpec>);
228
+ constructor(settings?: TCheckSettingsWithAutomation);
203
229
  /** @internal */
204
- constructor(settings?: CheckSettingsAutomation<TSpec> | CheckSettingsAutomationFluent<TSpec>, spec?: Core.SpecDriver<TSpec>, parent?: CheckSettingsAutomationFluent<TSpec>);
230
+ constructor(settings?: TCheckSettingsWithAutomation | CheckSettingsAutomationFluent<TSpec>, spec?: Core.SpecDriver<TSpec>, parent?: CheckSettingsAutomationFluent<TSpec>);
205
231
  region(region: RegionReference<TSpec>): this;
206
232
  shadow(selector: SelectorReference<TSpec>): typeof this;
207
233
  frame(context: ContextReference<TSpec>): this;
@@ -252,7 +278,7 @@ export declare class CheckSettingsAutomationFluent<TSpec extends Core.SpecType =
252
278
  };
253
279
  /** @internal */
254
280
  toJSON(): {
255
- target: undefined;
281
+ target: TSpec['driver'] | undefined;
256
282
  settings: Core.CheckSettings<TSpec, 'classic'> & Core.CheckSettings<TSpec, 'ufg'>;
257
283
  };
258
284
  }
@@ -264,7 +290,7 @@ export type TargetImage = {
264
290
  url(imageUrl: URL | string): CheckSettingsImageFluent;
265
291
  };
266
292
  export declare const TargetImage: TargetImage;
267
- export type TargetAutomation<TSpec extends Core.SpecType = Core.SpecType> = {
293
+ export type TargetAutomationBase<TSpec extends Core.SpecType = Core.SpecType> = {
268
294
  /** @internal */
269
295
  spec: Core.SpecDriver<TSpec>;
270
296
  window(): CheckSettingsAutomationFluent<TSpec>;
@@ -274,7 +300,8 @@ export type TargetAutomation<TSpec extends Core.SpecType = Core.SpecType> = {
274
300
  shadow(selector: SelectorReference<TSpec>): CheckSettingsAutomationFluent<TSpec>;
275
301
  webview(webview?: string | boolean): CheckSettingsAutomationFluent<TSpec>;
276
302
  };
277
- export declare const TargetAutomation: TargetAutomation<Core.SpecType>;
303
+ export type TargetAutomation<TSpec extends Core.SpecType = Core.SpecType> = TargetAutomationBase<TSpec>;
304
+ export declare const TargetAutomation: TargetAutomationBase<Core.SpecType>;
278
305
  export type Target<TSpec extends Core.SpecType = Core.SpecType> = TargetImage & TargetAutomation<TSpec>;
279
306
  export declare const Target: Target<Core.SpecType>;
280
307
  export {};