@applitools/core 4.7.0 → 4.8.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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,67 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.8.0](https://github.com/applitools/eyes.sdk.javascript1/compare/js/core@4.7.1...js/core@4.8.0) (2024-02-13)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add support for regions and calculated regions ([#2161](https://github.com/applitools/eyes.sdk.javascript1/issues/2161)) ([fea4b1f](https://github.com/applitools/eyes.sdk.javascript1/commit/fea4b1fca3d8f59eada2b5186cd32d47352ccf1a))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* missing viewport when using system screenshot and multi viewport ([#2173](https://github.com/applitools/eyes.sdk.javascript1/issues/2173)) ([411283c](https://github.com/applitools/eyes.sdk.javascript1/commit/411283c7bebc09f178d73b6b47e81e5ce4244d5e))
|
|
14
|
+
* nml coded region integration with universal ([6fb0934](https://github.com/applitools/eyes.sdk.javascript1/commit/6fb09348238dfe4698856f88e762a9abf80c686f))
|
|
15
|
+
* throw error for encoding none unicode char ([#2171](https://github.com/applitools/eyes.sdk.javascript1/issues/2171)) ([4edb9cf](https://github.com/applitools/eyes.sdk.javascript1/commit/4edb9cfb27d8db2ff4cb09c8ebf1b95ab020633d))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Dependencies
|
|
19
|
+
|
|
20
|
+
* @applitools/dom-snapshot bumped to 4.7.17
|
|
21
|
+
#### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* throw error for encoding none unicode char ([#2171](https://github.com/applitools/eyes.sdk.javascript1/issues/2171)) ([4edb9cf](https://github.com/applitools/eyes.sdk.javascript1/commit/4edb9cfb27d8db2ff4cb09c8ebf1b95ab020633d))
|
|
24
|
+
* @applitools/spec-driver-webdriver bumped to 1.0.57
|
|
25
|
+
#### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* fixed issue with cdp commands on chromium browsers ([#2180](https://github.com/applitools/eyes.sdk.javascript1/issues/2180)) ([550fc77](https://github.com/applitools/eyes.sdk.javascript1/commit/550fc772d3988aae29e6f4a1a11d2a408072dc38))
|
|
28
|
+
* @applitools/spec-driver-puppeteer bumped to 1.4.0
|
|
29
|
+
#### Features
|
|
30
|
+
|
|
31
|
+
* added support for puppeteer >= 22 ([#2185](https://github.com/applitools/eyes.sdk.javascript1/issues/2185)) ([59d23a9](https://github.com/applitools/eyes.sdk.javascript1/commit/59d23a9689d77c7db06df53b67fa293a3b3f166e))
|
|
32
|
+
* @applitools/screenshoter bumped to 3.8.23
|
|
33
|
+
|
|
34
|
+
* @applitools/nml-client bumped to 1.7.0
|
|
35
|
+
#### Features
|
|
36
|
+
|
|
37
|
+
* add support for regions and calculated regions ([#2161](https://github.com/applitools/eyes.sdk.javascript1/issues/2161)) ([fea4b1f](https://github.com/applitools/eyes.sdk.javascript1/commit/fea4b1fca3d8f59eada2b5186cd32d47352ccf1a))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
#### Bug Fixes
|
|
41
|
+
|
|
42
|
+
* missing viewport when using system screenshot and multi viewport ([#2173](https://github.com/applitools/eyes.sdk.javascript1/issues/2173)) ([411283c](https://github.com/applitools/eyes.sdk.javascript1/commit/411283c7bebc09f178d73b6b47e81e5ce4244d5e))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
* @applitools/ec-client bumped to 1.7.25
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## [4.7.1](https://github.com/applitools/eyes.sdk.javascript1/compare/js/core@4.7.0...js/core@4.7.1) (2024-02-06)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### Dependencies
|
|
53
|
+
|
|
54
|
+
* @applitools/spec-driver-webdriver bumped to 1.0.56
|
|
55
|
+
#### Bug Fixes
|
|
56
|
+
|
|
57
|
+
* avoid error when extracting driver capabilities ([#2176](https://github.com/applitools/eyes.sdk.javascript1/issues/2176)) ([8971f1c](https://github.com/applitools/eyes.sdk.javascript1/commit/8971f1c07a73c1259e117c5c3c8d43d1d324c584))
|
|
58
|
+
* @applitools/screenshoter bumped to 3.8.22
|
|
59
|
+
|
|
60
|
+
* @applitools/nml-client bumped to 1.6.6
|
|
61
|
+
|
|
62
|
+
* @applitools/ec-client bumped to 1.7.24
|
|
63
|
+
|
|
64
|
+
|
|
3
65
|
## [4.7.0](https://github.com/applitools/eyes.sdk.javascript1/compare/js/core@4.6.0...js/core@4.7.0) (2024-01-30)
|
|
4
66
|
|
|
5
67
|
|
|
@@ -23,10 +23,70 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.toBaseCheckSettings = void 0;
|
|
26
|
+
exports.toBaseCheckSettings = exports.extractMobileElementsIntoCheckSettings = exports.hasCodedRegions = void 0;
|
|
27
27
|
const utils = __importStar(require("@applitools/utils"));
|
|
28
|
+
const regionTypes = ['ignore', 'layout', 'strict', 'content', 'floating', 'accessibility'];
|
|
29
|
+
function hasCodedRegions(settings) {
|
|
30
|
+
for (const regionType of regionTypes) {
|
|
31
|
+
if (settings[`${regionType}Regions`])
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
exports.hasCodedRegions = hasCodedRegions;
|
|
37
|
+
async function extractMobileElementsIntoCheckSettings({ settings, driver, logger, }) {
|
|
38
|
+
logger = logger.extend({ tags: [`extract-mobile-elements-${utils.general.shortid()}`] });
|
|
39
|
+
if (settings.region) {
|
|
40
|
+
logger.log('extract element form region', settings.region);
|
|
41
|
+
const region = await driver.element(settings.region).catch(error => logger.log(error));
|
|
42
|
+
if (!region) {
|
|
43
|
+
throw new Error('region not found');
|
|
44
|
+
}
|
|
45
|
+
settings.region = await (region === null || region === void 0 ? void 0 : region.getAttribute('name'));
|
|
46
|
+
}
|
|
47
|
+
if (settings.scrollRootElement) {
|
|
48
|
+
logger.log('extract element form scrollRootElement', settings.scrollRootElement);
|
|
49
|
+
const scrollRootElement = await driver.element(settings.scrollRootElement).catch(error => logger.log(error));
|
|
50
|
+
if (!scrollRootElement) {
|
|
51
|
+
throw new Error('scrollRootElement not found');
|
|
52
|
+
}
|
|
53
|
+
settings.scrollRootElement = await scrollRootElement.getAttribute('name');
|
|
54
|
+
}
|
|
55
|
+
const codedRegionsAsElement = await regionTypes.reduce(async (promise, regionType) => {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
const obj = await promise;
|
|
58
|
+
if (!settings[`${regionType}Regions`])
|
|
59
|
+
return obj;
|
|
60
|
+
obj[`${regionType}Regions`] = (await Promise.all((_b = (_a = settings[`${regionType}Regions`]) === null || _a === void 0 ? void 0 : _a.flatMap(async (reference) => {
|
|
61
|
+
logger.log('extract element form region', reference);
|
|
62
|
+
const { region } = utils.types.has(reference, 'region') ? reference : { region: reference };
|
|
63
|
+
const handleRegion = new Set();
|
|
64
|
+
const elements = await driver.elements(region).catch(error => logger.log(error));
|
|
65
|
+
if (!elements)
|
|
66
|
+
return []; // elements not found
|
|
67
|
+
return elements === null || elements === void 0 ? void 0 : elements.reduce(async (promise, element) => {
|
|
68
|
+
const arr = await promise;
|
|
69
|
+
const name = await element.getAttribute('name');
|
|
70
|
+
if (handleRegion.has(name))
|
|
71
|
+
return arr;
|
|
72
|
+
handleRegion.add(name);
|
|
73
|
+
return arr.concat({
|
|
74
|
+
region: {
|
|
75
|
+
name,
|
|
76
|
+
reference: region,
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}, Promise.resolve([]));
|
|
80
|
+
})) !== null && _b !== void 0 ? _b : [])).flat();
|
|
81
|
+
return obj;
|
|
82
|
+
}, Promise.resolve({}));
|
|
83
|
+
return {
|
|
84
|
+
...settings,
|
|
85
|
+
...codedRegionsAsElement,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
exports.extractMobileElementsIntoCheckSettings = extractMobileElementsIntoCheckSettings;
|
|
28
89
|
function toBaseCheckSettings({ settings }) {
|
|
29
|
-
const regionTypes = ['ignore', 'layout', 'strict', 'content', 'floating', 'accessibility'];
|
|
30
90
|
const calculate = regionTypes.flatMap(regionType => {
|
|
31
91
|
var _a;
|
|
32
92
|
return ((_a = settings[`${regionType}Regions`]) !== null && _a !== void 0 ? _a : []).reduce((regions, reference) => {
|
|
@@ -27,6 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.makeCheckAndClose = void 0;
|
|
30
|
+
const nml_client_1 = require("@applitools/nml-client");
|
|
30
31
|
const driver_1 = require("@applitools/driver");
|
|
31
32
|
const take_screenshots_1 = require("./utils/take-screenshots");
|
|
32
33
|
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
@@ -78,18 +79,35 @@ function makeCheckAndClose({ eyes, target: defaultTarget, environments: defaultE
|
|
|
78
79
|
if (driverEnvironment.isWeb ||
|
|
79
80
|
!((_c = driverEnvironment.applitoolsLib) === null || _c === void 0 ? void 0 : _c.instrumented) ||
|
|
80
81
|
settings.screenshotMode === 'default') {
|
|
82
|
+
let actualEnvironments;
|
|
83
|
+
if (settings.screenshotMode === 'default') {
|
|
84
|
+
if (!uniqueEnvironments.every(environment => {
|
|
85
|
+
return (!utils.types.has(environment, 'iosDeviceInfo') && !utils.types.has(environment, 'androidDeviceInfo'));
|
|
86
|
+
})) {
|
|
87
|
+
const nmlEnvironmentsInfo = await (0, nml_client_1.getNMLEnvironmentsInfo)({
|
|
88
|
+
environments: uniqueEnvironments,
|
|
89
|
+
supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl,
|
|
90
|
+
proxy: eyes.test.eyesServer.proxy,
|
|
91
|
+
logger,
|
|
92
|
+
});
|
|
93
|
+
actualEnvironments = nmlEnvironmentsInfo.renderEnvironments;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
81
96
|
const screenshots = await (0, take_screenshots_1.takeScreenshots)({
|
|
82
97
|
driver,
|
|
83
98
|
settings: {
|
|
84
99
|
...settings,
|
|
85
|
-
environments: uniqueEnvironments,
|
|
100
|
+
environments: actualEnvironments !== null && actualEnvironments !== void 0 ? actualEnvironments : uniqueEnvironments,
|
|
86
101
|
regionsToCalculate: elementReferences.calculate,
|
|
87
102
|
calculateView: !!settings.pageId,
|
|
88
103
|
domSettings: settings.sendDom ? { proxy: eyes.test.eyesServer.proxy } : undefined,
|
|
89
104
|
},
|
|
90
105
|
logger,
|
|
91
106
|
});
|
|
92
|
-
|
|
107
|
+
if (actualEnvironments)
|
|
108
|
+
exactEnvironments.push(...actualEnvironments);
|
|
109
|
+
else
|
|
110
|
+
exactEnvironments.push(...uniqueEnvironments);
|
|
93
111
|
screenshots.forEach(({ calculatedRegions, ...baseTarget }) => {
|
|
94
112
|
baseTargets.push(baseTarget);
|
|
95
113
|
baseSettings.push(getBaseCheckSettings({ calculatedRegions }));
|
package/dist/classic/check.js
CHANGED
|
@@ -27,6 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.makeCheck = void 0;
|
|
30
|
+
const nml_client_1 = require("@applitools/nml-client");
|
|
30
31
|
const driver_1 = require("@applitools/driver");
|
|
31
32
|
const take_screenshots_1 = require("./utils/take-screenshots");
|
|
32
33
|
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
@@ -74,22 +75,32 @@ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironme
|
|
|
74
75
|
logger,
|
|
75
76
|
});
|
|
76
77
|
}
|
|
77
|
-
const { elementReferences, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
|
|
78
78
|
if (driverEnvironment.isWeb ||
|
|
79
79
|
!((_c = driverEnvironment.applitoolsLib) === null || _c === void 0 ? void 0 : _c.instrumented) ||
|
|
80
80
|
settings.screenshotMode === 'default') {
|
|
81
|
+
let actualEnvironments = uniqueEnvironments;
|
|
82
|
+
if (settings.screenshotMode === 'default') {
|
|
83
|
+
const { localEnvironment, renderEnvironments } = await (0, nml_client_1.getNMLEnvironmentsInfo)({
|
|
84
|
+
environments: uniqueEnvironments,
|
|
85
|
+
supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl,
|
|
86
|
+
proxy: eyes.test.eyesServer.proxy,
|
|
87
|
+
logger,
|
|
88
|
+
});
|
|
89
|
+
actualEnvironments = localEnvironment ? [localEnvironment] : renderEnvironments;
|
|
90
|
+
}
|
|
91
|
+
const { elementReferences, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
|
|
81
92
|
const screenshots = await (0, take_screenshots_1.takeScreenshots)({
|
|
82
93
|
driver,
|
|
83
94
|
settings: {
|
|
84
95
|
...settings,
|
|
85
|
-
environments:
|
|
96
|
+
environments: actualEnvironments,
|
|
86
97
|
regionsToCalculate: elementReferences.calculate,
|
|
87
98
|
calculateView: !!settings.pageId,
|
|
88
99
|
domSettings: settings.sendDom ? { proxy: eyes.test.eyesServer.proxy } : undefined,
|
|
89
100
|
},
|
|
90
101
|
logger,
|
|
91
102
|
});
|
|
92
|
-
exactEnvironments.push(...
|
|
103
|
+
exactEnvironments.push(...actualEnvironments);
|
|
93
104
|
screenshots.forEach(({ calculatedRegions, ...baseTarget }) => {
|
|
94
105
|
baseTargets.push(baseTarget);
|
|
95
106
|
baseSettings.push(getBaseCheckSettings({ calculatedRegions }));
|
|
@@ -108,6 +119,15 @@ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironme
|
|
|
108
119
|
settings: { ...eyes.test.eyesServer, supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl },
|
|
109
120
|
logger,
|
|
110
121
|
});
|
|
122
|
+
if (settings.scrollRootElement || settings.region || (0, to_base_check_settings_1.hasCodedRegions)(settings))
|
|
123
|
+
await nmlClient.preTakeScreenshot({ logger });
|
|
124
|
+
const { elementReferences, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
|
|
125
|
+
settings: {
|
|
126
|
+
...settings,
|
|
127
|
+
...(await (0, to_base_check_settings_1.extractMobileElementsIntoCheckSettings)({ settings, driver, logger })),
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
const calculate = elementReferences.calculate;
|
|
111
131
|
const screenshots = await nmlClient.takeScreenshots({
|
|
112
132
|
settings: {
|
|
113
133
|
environments: uniqueEnvironments,
|
|
@@ -120,13 +140,28 @@ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironme
|
|
|
120
140
|
waitBetweenStitches: settings.waitBetweenStitches,
|
|
121
141
|
lazyLoad: settings.lazyLoad,
|
|
122
142
|
name: settings.name,
|
|
143
|
+
region: elementReferences.target,
|
|
144
|
+
selectorsToFindRegionsFor: calculate.map(({ name }) => name),
|
|
145
|
+
scrollRootElement: elementReferences.scrolling,
|
|
123
146
|
},
|
|
124
147
|
logger,
|
|
125
148
|
});
|
|
126
|
-
screenshots.forEach(({ environment, ...baseTarget }) => {
|
|
149
|
+
screenshots.forEach(({ environment, calculateRegions, ...baseTarget }) => {
|
|
150
|
+
const aggregateCalculatedRegions = [];
|
|
151
|
+
calculate.forEach(({ reference }, index) => {
|
|
152
|
+
const regions = calculateRegions === null || calculateRegions === void 0 ? void 0 : calculateRegions[index];
|
|
153
|
+
if (regions) {
|
|
154
|
+
aggregateCalculatedRegions.push({ regions, selector: reference });
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
logger.log(`Regions "${reference}" was not found in the screenshot`);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
127
160
|
exactEnvironments.push(environment);
|
|
128
161
|
baseTargets.push({ ...baseTarget, isTransformed: true });
|
|
129
|
-
baseSettings.push(getBaseCheckSettings({
|
|
162
|
+
baseSettings.push(getBaseCheckSettings({
|
|
163
|
+
calculatedRegions: aggregateCalculatedRegions,
|
|
164
|
+
}));
|
|
130
165
|
});
|
|
131
166
|
}
|
|
132
167
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.8.0",
|
|
4
4
|
"homepage": "https://applitools.com",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
@@ -76,16 +76,16 @@
|
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"@applitools/core-base": "1.9.0",
|
|
78
78
|
"@applitools/dom-capture": "11.2.5",
|
|
79
|
-
"@applitools/dom-snapshot": "4.7.
|
|
79
|
+
"@applitools/dom-snapshot": "4.7.17",
|
|
80
80
|
"@applitools/driver": "1.16.2",
|
|
81
|
-
"@applitools/ec-client": "1.7.
|
|
81
|
+
"@applitools/ec-client": "1.7.25",
|
|
82
82
|
"@applitools/logger": "2.0.14",
|
|
83
|
-
"@applitools/nml-client": "1.
|
|
83
|
+
"@applitools/nml-client": "1.7.0",
|
|
84
84
|
"@applitools/req": "1.6.4",
|
|
85
|
-
"@applitools/screenshoter": "3.8.
|
|
85
|
+
"@applitools/screenshoter": "3.8.23",
|
|
86
86
|
"@applitools/snippets": "2.4.25",
|
|
87
87
|
"@applitools/socket": "1.1.14",
|
|
88
|
-
"@applitools/spec-driver-webdriver": "1.0.
|
|
88
|
+
"@applitools/spec-driver-webdriver": "1.0.57",
|
|
89
89
|
"@applitools/ufg-client": "1.9.9",
|
|
90
90
|
"@applitools/utils": "1.7.0",
|
|
91
91
|
"@types/ws": "8.5.5",
|
|
@@ -98,9 +98,9 @@
|
|
|
98
98
|
"yargs": "17.7.2"
|
|
99
99
|
},
|
|
100
100
|
"devDependencies": {
|
|
101
|
-
"@applitools/bongo": "^5.
|
|
101
|
+
"@applitools/bongo": "^5.10.0",
|
|
102
102
|
"@applitools/sea": "^1.0.0",
|
|
103
|
-
"@applitools/spec-driver-puppeteer": "^1.
|
|
103
|
+
"@applitools/spec-driver-puppeteer": "^1.4.0",
|
|
104
104
|
"@applitools/spec-driver-selenium": "^1.5.69",
|
|
105
105
|
"@applitools/test-server": "^1.2.2",
|
|
106
106
|
"@applitools/test-utils": "^1.5.17",
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { Region } from '@applitools/utils';
|
|
2
2
|
import type { CheckSettings } from '../types';
|
|
3
3
|
import type { CheckSettings as BaseCheckSettings } from '@applitools/core-base';
|
|
4
|
-
import {
|
|
4
|
+
import type { SpecType, ElementReference, Selector, Driver } from '@applitools/driver';
|
|
5
|
+
import { Logger } from '@applitools/logger';
|
|
6
|
+
export declare function hasCodedRegions<TSpec extends SpecType>(settings: CheckSettings<TSpec>): boolean;
|
|
7
|
+
export declare function extractMobileElementsIntoCheckSettings<TSpec extends SpecType>({ settings, driver, logger, }: {
|
|
8
|
+
settings: CheckSettings<TSpec>;
|
|
9
|
+
driver: Driver<TSpec>;
|
|
10
|
+
logger: Logger;
|
|
11
|
+
}): Promise<any>;
|
|
5
12
|
export declare function toBaseCheckSettings<TSpec extends SpecType>({ settings }: {
|
|
6
13
|
settings: CheckSettings<TSpec>;
|
|
7
14
|
}): {
|