@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.
- package/dist/automation/utils/to-base-check-settings.js +2 -2
- package/dist/classic/check.js +1 -1
- package/dist/ufg/check.js +17 -0
- package/dist/ufg/utils/take-dom-snapshots.js +31 -17
- package/package.json +2 -2
- package/types/ufg/check-and-close.d.ts +1 -0
- package/types/ufg/types.d.ts +1 -0
- package/types/ufg/utils/take-dom-snapshots.d.ts +1 -0
- package/dist/errors/test-error.js +0 -32
- package/types/errors/test-error.d.ts +0 -5
|
@@ -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
|
|
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
|
|
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));
|
package/dist/classic/check.js
CHANGED
|
@@ -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
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
66
|
-
environments.push({ name, width, index });
|
|
67
|
-
return
|
|
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
|
-
|
|
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:
|
|
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
|
|
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
|
-
|
|
94
|
+
requiredSizes.delete(initialSize);
|
|
84
95
|
entries.push({ browsers: initialsBrowsers });
|
|
85
96
|
}
|
|
86
|
-
|
|
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
|
|
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
|
|
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?: {
|
package/types/ufg/types.d.ts
CHANGED
|
@@ -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;
|