@applitools/core 4.37.0-debug-20250429 → 4.37.0

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.
@@ -38,7 +38,7 @@ async function extractMobileElementsIntoCheckSettings({ settings, driver, logger
38
38
  logger = logger.extend({ tags: [`extract-mobile-elements-${utils.general.shortid()}`] });
39
39
  const environment = await driver.getEnvironment();
40
40
  if (settings.region) {
41
- logger.log('extract element form region', settings.region);
41
+ logger.log('extract element from region', settings.region);
42
42
  const region = await driver.element(settings.region).catch(error => logger.log(error));
43
43
  if (!region) {
44
44
  throw new Error('region not found');
@@ -63,7 +63,7 @@ async function extractMobileElementsIntoCheckSettings({ settings, driver, logger
63
63
  if (!settings[`${regionType}Regions`])
64
64
  return obj;
65
65
  obj[`${regionType}Regions`] = (await Promise.all((_b = (_a = settings[`${regionType}Regions`]) === null || _a === void 0 ? void 0 : _a.flatMap(async (reference) => {
66
- logger.log('extract element form region', reference);
66
+ logger.log('extract element from region', reference);
67
67
  const { region } = utils.types.has(reference, 'region') ? reference : { region: reference };
68
68
  const handleRegion = new Set();
69
69
  const elements = await driver.elements(region).catch(error => logger.log(error));
@@ -355,7 +355,7 @@ async function takeNMLScreenshot({ driver, settings, environments, logger, eyes,
355
355
  aggregateCalculatedRegions.push({ regions, selector: reference });
356
356
  }
357
357
  else {
358
- logger.log(`Regions "${reference}" was not found in the screenshot`);
358
+ logger.log(`Regions "${JSON.stringify(reference)}" was not found in the screenshot`);
359
359
  }
360
360
  });
361
361
  if ((_a = baseTarget.dom) === null || _a === void 0 ? void 0 : _a.error) {
package/dist/ufg/check.js CHANGED
@@ -174,6 +174,12 @@ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironme
174
174
  },
175
175
  });
176
176
  }
177
+ try {
178
+ logInvalidSettings(logger, settings);
179
+ }
180
+ catch (err) {
181
+ logger.log('Failed to log invalid check settings', err);
182
+ }
177
183
  await baseEyes.check({
178
184
  target: { ...baseTarget, isTransformed: true },
179
185
  settings: baseSettings,
@@ -204,3 +210,14 @@ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironme
204
210
  };
205
211
  }
206
212
  exports.makeCheck = makeCheck;
213
+ function logInvalidSettings(logger, settings) {
214
+ const invalidKeys = ['overlap', 'scrollRootElement', 'stitchMode'];
215
+ if (!settings)
216
+ return;
217
+ const invalidEntries = Object.entries(settings)
218
+ .filter(([key]) => invalidKeys.includes(key))
219
+ .filter(([_, value]) => value !== undefined);
220
+ if (invalidEntries.length > 0) {
221
+ logger.warn('Warning - Invalid keys in check settings (will be ignored):', { settings, invalidEntries });
222
+ }
223
+ }
@@ -54,36 +54,50 @@ async function takeDomSnapshots({ driver, settings, hooks, provides, logger, })
54
54
  return Array(settings.environments.length).fill(snapshot);
55
55
  }
56
56
  const isStrictBreakpoints = utils.types.isArray((_b = settings.layoutBreakpoints) === null || _b === void 0 ? void 0 : _b.breakpoints);
57
- const requiredWidths = await settings.environments.reduce(async (prev, environment, index) => {
58
- const { name, width } = (await extractEnvironmentInfo(environment));
59
- const requiredWidths = await prev;
60
- const requiredWidth = isStrictBreakpoints
61
- ? calculateBreakpoint({ breakpoints: settings.layoutBreakpoints.breakpoints, value: width })
62
- : width;
63
- let environments = requiredWidths.get(requiredWidth);
57
+ const initialViewportSize = await driver.getViewportSize();
58
+ const requiredSizes = await settings.environments.reduce(async (prev, environment, index) => {
59
+ var _a;
60
+ const { name, width, height } = (await extractEnvironmentInfo(environment));
61
+ const requiredSizes = await prev;
62
+ let requiredSize;
63
+ if ((_a = settings.layoutBreakpoints) === null || _a === void 0 ? void 0 : _a.heightBreakpoints) {
64
+ const requiredWidth = settings.layoutBreakpoints.breakpoints ? width : initialViewportSize.width;
65
+ requiredSize = `${requiredWidth},${height}`;
66
+ }
67
+ else {
68
+ const requiredWidth = isStrictBreakpoints
69
+ ? calculateBreakpoint({ breakpoints: settings.layoutBreakpoints.breakpoints, value: width })
70
+ : width;
71
+ requiredSize = `${requiredWidth},${initialViewportSize.height}`;
72
+ }
73
+ let environments = requiredSizes.get(requiredSize);
64
74
  if (!environments)
65
- requiredWidths.set(requiredWidth, (environments = []));
66
- environments.push({ name, width, index });
67
- return requiredWidths;
75
+ requiredSizes.set(requiredSize, (environments = []));
76
+ environments.push({ name, width, height, index });
77
+ return requiredSizes;
68
78
  }, Promise.resolve(new Map()));
69
79
  const smallestBreakpoint = Math.min(...(isStrictBreakpoints ? settings.layoutBreakpoints.breakpoints : []));
70
- if (isStrictBreakpoints && requiredWidths.has(smallestBreakpoint - 1)) {
80
+ const smallestSize = `${smallestBreakpoint - 1},${initialViewportSize.height}`;
81
+ if (isStrictBreakpoints && requiredSizes.has(smallestSize)) {
71
82
  const message = lang.requestedEnvironmentSmallerThenBreakpointWarning({
72
83
  breakpoint: smallestBreakpoint,
73
- browsers: requiredWidths.get(smallestBreakpoint - 1),
84
+ browsers: requiredSizes.get(smallestSize),
74
85
  });
75
86
  logger.console.log(chalk_1.default.yellow(message));
76
87
  }
77
- logger.log(`Taking multiple dom snapshots for the breakpoints`, settings.layoutBreakpoints);
78
- const initialViewportSize = await driver.getViewportSize();
88
+ logger.log(`Taking multiple dom snapshots for the breakpoints`, isStrictBreakpoints ? settings.layoutBreakpoints : requiredSizes);
79
89
  const entries = [];
80
- const initialsBrowsers = requiredWidths.get(initialViewportSize.width);
90
+ const initialSize = `${initialViewportSize.width},${initialViewportSize.height}`;
91
+ const initialsBrowsers = requiredSizes.get(initialSize);
81
92
  if (initialsBrowsers) {
82
93
  logger.log(`The first dom snapshot is going to be taking for initial viewport size`, initialViewportSize);
83
- requiredWidths.delete(initialViewportSize.width);
94
+ requiredSizes.delete(initialSize);
84
95
  entries.push({ browsers: initialsBrowsers });
85
96
  }
86
- requiredWidths.forEach((browsers, requiredWidth) => entries.push({ viewportSize: { width: requiredWidth, height: initialViewportSize.height }, browsers }));
97
+ requiredSizes.forEach((browsers, requiredSize) => {
98
+ const [requiredWidth, requiredHeight] = requiredSize.split(',').map(Number);
99
+ entries.push({ viewportSize: { width: requiredWidth, height: requiredHeight }, browsers });
100
+ });
87
101
  logger.log(`All entries to take dom snapshots for`, entries);
88
102
  // making safe selectors before any resize in order to make sure fallback selectors are created
89
103
  await (0, generate_safe_selectors_1.generateSafeSelectors)({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/core",
3
- "version": "4.37.0-debug-20250429",
3
+ "version": "4.37.0",
4
4
  "homepage": "https://applitools.com",
5
5
  "bugs": {
6
6
  "url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -75,7 +75,7 @@
75
75
  }
76
76
  },
77
77
  "dependencies": {
78
- "@applitools/core-base": "1.24.0-debug-20250429",
78
+ "@applitools/core-base": "1.24.0",
79
79
  "@applitools/dom-capture": "11.5.5",
80
80
  "@applitools/dom-snapshot": "4.11.18",
81
81
  "@applitools/driver": "1.21.1",
@@ -19,6 +19,7 @@ export declare function makeCheckAndClose<TSpec extends SpecType>({ eyes, target
19
19
  disableBrowserFetching?: boolean | undefined;
20
20
  layoutBreakpoints?: {
21
21
  breakpoints: boolean | number[];
22
+ heightBreakpoints?: boolean | undefined;
22
23
  reload?: boolean | undefined;
23
24
  } | undefined;
24
25
  hooks?: {
@@ -54,6 +54,7 @@ export type SnapshotSettings<TSpec extends SpecType> = AutomationCore.CheckSetti
54
54
  disableBrowserFetching?: boolean;
55
55
  layoutBreakpoints?: {
56
56
  breakpoints: number[] | boolean;
57
+ heightBreakpoints?: boolean;
57
58
  reload?: boolean;
58
59
  };
59
60
  hooks?: {
@@ -10,6 +10,7 @@ export type DomSnapshotsSettings<TSpec extends SpecType> = DomSnapshotSettings<T
10
10
  waitBeforeCapture?: number | (() => Promise<void>);
11
11
  layoutBreakpoints?: {
12
12
  breakpoints: number[] | boolean;
13
+ heightBreakpoints?: boolean;
13
14
  reload?: boolean;
14
15
  };
15
16
  lazyLoad?: boolean | LazyLoadOptions;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestError = void 0;
4
- const core_base_1 = require("@applitools/core-base");
5
- class TestError extends core_base_1.CoreError {
6
- constructor(result) {
7
- if (result.status === 'Failed') {
8
- super(`Test '${result.name}' of '${result.appName}' is failed! See details at ${result.url}`, {
9
- reason: 'test failed',
10
- result,
11
- });
12
- }
13
- else if (result.status === 'Unresolved') {
14
- if (result.isNew) {
15
- super(`Test '${result.name}' of '${result.appName}' is new! Please approve the new baseline at ${result.url}`, {
16
- reason: 'test new',
17
- result,
18
- });
19
- }
20
- else {
21
- super(`Test '${result.name}' of '${result.appName}' detected differences! See details at: ${result.url}`, {
22
- reason: 'test different',
23
- result,
24
- });
25
- }
26
- }
27
- else {
28
- super('');
29
- }
30
- }
31
- }
32
- exports.TestError = TestError;
@@ -1,5 +0,0 @@
1
- import type { TestResult } from '@applitools/core-base';
2
- import { CoreError } from '@applitools/core-base';
3
- export declare class TestError extends CoreError {
4
- constructor(result: TestResult);
5
- }