@applitools/core 3.9.1 → 3.10.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 +48 -0
- package/dist/abort.js +40 -0
- package/dist/{ufg → automation}/abort.js +19 -3
- package/dist/{ufg → automation}/close.js +19 -3
- package/dist/automation/get-nml-client.js +3 -3
- package/dist/{ufg → automation}/get-results.js +4 -4
- package/dist/check-and-close.js +1 -10
- package/dist/check.js +8 -17
- package/dist/classic/check-and-close.js +111 -69
- package/dist/classic/check.js +103 -63
- package/dist/classic/core.js +4 -4
- package/dist/classic/get-base-eyes.js +29 -7
- package/dist/classic/open-eyes.js +42 -56
- package/dist/classic/utils/extract-default-renderers.js +72 -0
- package/dist/classic/utils/take-screenshots.js +60 -0
- package/dist/close.js +6 -3
- package/dist/core.js +4 -4
- package/dist/get-typed-eyes.js +3 -5
- package/dist/make-manager.js +2 -2
- package/dist/open-eyes.js +13 -10
- package/dist/ufg/check-and-close.js +59 -52
- package/dist/ufg/check.js +60 -58
- package/dist/ufg/core.js +2 -2
- package/dist/ufg/get-base-eyes.js +23 -13
- package/dist/ufg/open-eyes.js +24 -37
- package/dist/ufg/utils/extract-default-renderers.js +22 -0
- package/dist/universal/core.js +1 -0
- package/package.json +15 -15
- package/types/abort.d.ts +13 -0
- package/types/{classic → automation}/abort.d.ts +5 -4
- package/types/{classic → automation}/close.d.ts +3 -4
- package/types/automation/get-nml-client.d.ts +3 -3
- package/types/automation/get-results.d.ts +11 -0
- package/types/automation/types.d.ts +78 -7
- package/types/{ufg → automation}/utils/uniquify-renderers.d.ts +1 -1
- package/types/check.d.ts +2 -2
- package/types/classic/check-and-close.d.ts +11 -4
- package/types/classic/check.d.ts +6 -3
- package/types/classic/core.d.ts +2 -1
- package/types/classic/get-base-eyes.d.ts +4 -8
- package/types/classic/open-eyes.d.ts +3 -4
- package/types/classic/types.d.ts +3 -4
- package/types/classic/utils/extract-default-renderers.d.ts +9 -0
- package/types/classic/utils/take-screenshots.d.ts +18 -0
- package/types/close.d.ts +3 -2
- package/types/core.d.ts +7 -1
- package/types/get-typed-eyes.d.ts +5 -4
- package/types/make-manager.d.ts +7 -1
- package/types/open-eyes.d.ts +7 -1
- package/types/types.d.ts +3 -6
- package/types/ufg/check-and-close.d.ts +8 -12
- package/types/ufg/check.d.ts +4 -9
- package/types/ufg/core.d.ts +3 -3
- package/types/ufg/get-base-eyes.d.ts +3 -7
- package/types/ufg/open-eyes.d.ts +3 -4
- package/types/ufg/types.d.ts +3 -24
- package/types/ufg/utils/extract-default-renderers.d.ts +5 -0
- package/dist/classic/abort.js +0 -23
- package/dist/classic/close.js +0 -23
- package/types/ufg/abort.d.ts +0 -21
- package/types/ufg/close.d.ts +0 -19
- package/types/ufg/get-results.d.ts +0 -16
- /package/dist/{ufg → automation}/utils/uniquify-renderers.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.10.0](https://github.com/applitools/eyes.sdk.javascript1/compare/js/core@3.9.1...js/core@3.10.0) (2023-08-30)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* allowed running multiple classic test with different devices for applitoolsified native apps ([#1891](https://github.com/applitools/eyes.sdk.javascript1/issues/1891)) ([a84311f](https://github.com/applitools/eyes.sdk.javascript1/commit/a84311f88e6f532268543a96f841ae5ad87d5659))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Dependencies
|
|
12
|
+
|
|
13
|
+
* @applitools/utils bumped to 1.5.2
|
|
14
|
+
#### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* fixed some types ([498b1d7](https://github.com/applitools/eyes.sdk.javascript1/commit/498b1d7c547df04773b64b66ee39cccb402c093e))
|
|
17
|
+
* @applitools/nml-client bumped to 1.5.9
|
|
18
|
+
#### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* update broker url when server respond with error ([#1882](https://github.com/applitools/eyes.sdk.javascript1/issues/1882)) ([ab5a6ae](https://github.com/applitools/eyes.sdk.javascript1/commit/ab5a6ae8976b061bda8b56a9cc11c149e47d6dea))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
* @applitools/logger bumped to 2.0.9
|
|
25
|
+
|
|
26
|
+
* @applitools/socket bumped to 1.1.9
|
|
27
|
+
|
|
28
|
+
* @applitools/req bumped to 1.5.4
|
|
29
|
+
|
|
30
|
+
* @applitools/image bumped to 1.1.4
|
|
31
|
+
|
|
32
|
+
* @applitools/spec-driver-webdriver bumped to 1.0.43
|
|
33
|
+
|
|
34
|
+
* @applitools/spec-driver-selenium bumped to 1.5.57
|
|
35
|
+
|
|
36
|
+
* @applitools/spec-driver-puppeteer bumped to 1.1.74
|
|
37
|
+
|
|
38
|
+
* @applitools/driver bumped to 1.13.6
|
|
39
|
+
|
|
40
|
+
* @applitools/screenshoter bumped to 3.8.9
|
|
41
|
+
|
|
42
|
+
* @applitools/tunnel-client bumped to 1.2.1
|
|
43
|
+
|
|
44
|
+
* @applitools/ufg-client bumped to 1.7.2
|
|
45
|
+
|
|
46
|
+
* @applitools/ec-client bumped to 1.7.6
|
|
47
|
+
|
|
48
|
+
* @applitools/core-base bumped to 1.5.2
|
|
49
|
+
|
|
50
|
+
|
|
3
51
|
## [3.9.1](https://github.com/applitools/eyes.sdk.javascript1/compare/js/core@3.9.0...js/core@3.9.1) (2023-08-18)
|
|
4
52
|
|
|
5
53
|
|
package/dist/abort.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.makeAbort = void 0;
|
|
27
|
+
const utils = __importStar(require("@applitools/utils"));
|
|
28
|
+
function makeAbort({ eyes, renderers: defaultRenderers, logger: mainLogger, }) {
|
|
29
|
+
return async function abort({ settings, logger = mainLogger, } = {}) {
|
|
30
|
+
var _a;
|
|
31
|
+
logger = logger.extend(mainLogger, { tags: [`abort-${utils.general.shortid()}`] });
|
|
32
|
+
const typedEyes = await eyes.getTypedEyes({ logger });
|
|
33
|
+
settings !== null && settings !== void 0 ? settings : (settings = {});
|
|
34
|
+
if (typedEyes.type === 'classic' && !utils.types.isEmpty(defaultRenderers)) {
|
|
35
|
+
(_a = settings.renderers) !== null && _a !== void 0 ? _a : (settings.renderers = defaultRenderers);
|
|
36
|
+
}
|
|
37
|
+
await typedEyes.abort({ settings, logger });
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
exports.makeAbort = makeAbort;
|
|
@@ -2,10 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeAbort = void 0;
|
|
4
4
|
const driver_1 = require("@applitools/driver");
|
|
5
|
-
|
|
5
|
+
const uniquify_renderers_1 = require("./utils/uniquify-renderers");
|
|
6
|
+
function makeAbort({ eyes, target, controller, renderers: defaultRenderers, spec, logger: mainLogger, }) {
|
|
6
7
|
return async function abort({ settings, logger = mainLogger, } = {}) {
|
|
8
|
+
var _a;
|
|
7
9
|
logger = logger.extend(mainLogger);
|
|
8
10
|
logger.log('Command "abort" is called with settings', settings);
|
|
11
|
+
if (!eyes.running) {
|
|
12
|
+
logger.log('Command "abort" will be ignored because eyes were already stopped');
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
;
|
|
17
|
+
eyes.running = false;
|
|
18
|
+
}
|
|
9
19
|
controller.abort();
|
|
10
20
|
settings !== null && settings !== void 0 ? settings : (settings = {});
|
|
11
21
|
if (!settings.testMetadata && (0, driver_1.isDriver)(target, spec)) {
|
|
@@ -17,10 +27,16 @@ function makeAbort({ storage, target, spec, controller, logger: mainLogger, }) {
|
|
|
17
27
|
logger.warn('Command "abort" received an error during extracting driver metadata', error);
|
|
18
28
|
}
|
|
19
29
|
}
|
|
20
|
-
|
|
30
|
+
(_a = settings.renderers) !== null && _a !== void 0 ? _a : (settings.renderers = defaultRenderers);
|
|
31
|
+
if (eyes.storage.size === 0 && settings.renderers && settings.renderers.length > 0) {
|
|
32
|
+
const uniqueRenderers = (0, uniquify_renderers_1.uniquifyRenderers)(settings.renderers);
|
|
33
|
+
logger.log('Command "abort" starting filler tests for renderers', uniqueRenderers);
|
|
34
|
+
await Promise.all(uniqueRenderers.map(renderer => eyes.getBaseEyes({ settings: { renderer }, logger })));
|
|
35
|
+
}
|
|
36
|
+
eyes.storage.forEach(async (item) => {
|
|
21
37
|
var _a, _b;
|
|
22
38
|
try {
|
|
23
|
-
const
|
|
39
|
+
const eyes = await item.eyes;
|
|
24
40
|
await eyes.abort({ settings, logger });
|
|
25
41
|
}
|
|
26
42
|
catch (error) {
|
|
@@ -2,10 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeClose = void 0;
|
|
4
4
|
const driver_1 = require("@applitools/driver");
|
|
5
|
-
|
|
5
|
+
const uniquify_renderers_1 = require("./utils/uniquify-renderers");
|
|
6
|
+
function makeClose({ eyes, target, renderers: defaultRenderers, spec, logger: mainLogger, }) {
|
|
6
7
|
return async function close({ settings, logger = mainLogger, } = {}) {
|
|
8
|
+
var _a;
|
|
7
9
|
logger = logger.extend(mainLogger);
|
|
8
10
|
logger.log('Command "close" is called with settings', settings);
|
|
11
|
+
if (!eyes.running) {
|
|
12
|
+
logger.log('Command "close" will be ignored because eyes were already stopped');
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
;
|
|
17
|
+
eyes.running = false;
|
|
18
|
+
}
|
|
9
19
|
settings !== null && settings !== void 0 ? settings : (settings = {});
|
|
10
20
|
if (!settings.testMetadata && (0, driver_1.isDriver)(target, spec)) {
|
|
11
21
|
try {
|
|
@@ -16,10 +26,16 @@ function makeClose({ storage, target, spec, logger: mainLogger }) {
|
|
|
16
26
|
logger.warn('Command "close" received an error during extracting driver metadata', error);
|
|
17
27
|
}
|
|
18
28
|
}
|
|
19
|
-
|
|
29
|
+
(_a = settings.renderers) !== null && _a !== void 0 ? _a : (settings.renderers = defaultRenderers);
|
|
30
|
+
if (eyes.storage.size === 0 && settings.renderers && settings.renderers.length > 0) {
|
|
31
|
+
const uniqueRenderers = (0, uniquify_renderers_1.uniquifyRenderers)(settings.renderers);
|
|
32
|
+
logger.log('Command "close" starting filler tests for renderers', settings.renderers);
|
|
33
|
+
await Promise.all(uniqueRenderers.map(renderer => eyes.getBaseEyes({ settings: { renderer }, logger })));
|
|
34
|
+
}
|
|
35
|
+
eyes.storage.forEach(async (item) => {
|
|
20
36
|
var _a, _b;
|
|
21
37
|
try {
|
|
22
|
-
const [
|
|
38
|
+
const [eyes] = await Promise.all([item.eyes, ...item.jobs]);
|
|
23
39
|
try {
|
|
24
40
|
await eyes.close({ settings, logger });
|
|
25
41
|
}
|
|
@@ -27,16 +27,16 @@ exports.makeGetNMLClient = void 0;
|
|
|
27
27
|
const nml_client_1 = require("@applitools/nml-client");
|
|
28
28
|
const utils = __importStar(require("@applitools/utils"));
|
|
29
29
|
function makeGetNMLClient({ client, logger: mainLogger }) {
|
|
30
|
-
const getNMLClientWithCache = utils.general.cachify(getNMLClient, ([options]) => client ? 'default' : [options.driver.guid, options.
|
|
30
|
+
const getNMLClientWithCache = utils.general.cachify(getNMLClient, ([options]) => client ? 'default' : [options.driver.guid, options.settings]);
|
|
31
31
|
if (client)
|
|
32
32
|
getNMLClientWithCache.setCachedValue('default', Promise.resolve(client));
|
|
33
33
|
return getNMLClientWithCache;
|
|
34
|
-
async function getNMLClient({ driver,
|
|
34
|
+
async function getNMLClient({ driver, settings, logger = mainLogger, }) {
|
|
35
35
|
logger = logger.extend(mainLogger);
|
|
36
36
|
const brokerUrl = await driver.extractBrokerUrl();
|
|
37
37
|
if (!brokerUrl)
|
|
38
38
|
throw new Error('Unable to extract broker url from the device');
|
|
39
|
-
return (0, nml_client_1.makeNMLClient)({
|
|
39
|
+
return (0, nml_client_1.makeNMLClient)({ settings: { brokerUrl, ...settings }, logger });
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
exports.makeGetNMLClient = makeGetNMLClient;
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeGetResults = void 0;
|
|
4
4
|
const abort_error_1 = require("../errors/abort-error");
|
|
5
|
-
function makeGetResults({
|
|
5
|
+
function makeGetResults({ eyes, logger: mainLogger }) {
|
|
6
6
|
return async function getResults({ settings, logger = mainLogger, } = {}) {
|
|
7
7
|
logger = logger.extend(mainLogger);
|
|
8
8
|
logger.log('Command "getResults" is called with settings', settings);
|
|
9
|
-
return Promise.all(Array.from(storage.values(), async (
|
|
9
|
+
return Promise.all(Array.from(eyes.storage.values(), async (item) => {
|
|
10
10
|
var _a;
|
|
11
11
|
try {
|
|
12
|
-
const [
|
|
12
|
+
const [eyes] = await Promise.all([item.eyes, ...item.jobs]);
|
|
13
13
|
const [result] = await eyes.getResults({ settings, logger });
|
|
14
|
-
return { ...result, renderer };
|
|
14
|
+
return { ...result, renderer: item.renderer };
|
|
15
15
|
}
|
|
16
16
|
catch (error) {
|
|
17
17
|
if (error instanceof abort_error_1.AbortError && ((_a = error.info) === null || _a === void 0 ? void 0 : _a.eyes)) {
|
package/dist/check-and-close.js
CHANGED
|
@@ -28,21 +28,12 @@ const driver_1 = require("@applitools/driver");
|
|
|
28
28
|
const utils = __importStar(require("@applitools/utils"));
|
|
29
29
|
function makeCheckAndClose({ type: defaultType = 'classic', eyes, target: defaultTarget, spec, logger: mainLogger, }) {
|
|
30
30
|
return async function checkAndClose({ type = defaultType, target = defaultTarget, settings = {}, config, logger = mainLogger, } = {}) {
|
|
31
|
-
var _a;
|
|
32
31
|
logger = logger.extend(mainLogger, { tags: [`check-and-close-${type}-${utils.general.shortid()}`] });
|
|
33
32
|
settings = { ...config === null || config === void 0 ? void 0 : config.screenshot, ...config === null || config === void 0 ? void 0 : config.check, ...config === null || config === void 0 ? void 0 : config.close, ...settings };
|
|
34
33
|
const driver = (0, driver_1.isDriver)(target, spec)
|
|
35
34
|
? await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger })
|
|
36
35
|
: null;
|
|
37
|
-
const
|
|
38
|
-
const typedEyes = await eyes.getTypedEyes({
|
|
39
|
-
type,
|
|
40
|
-
settings: (_a = settings.renderers) === null || _a === void 0 ? void 0 : _a.map(renderer => ({
|
|
41
|
-
type: (environment === null || environment === void 0 ? void 0 : environment.isNative) ? 'native' : 'web',
|
|
42
|
-
renderer,
|
|
43
|
-
})),
|
|
44
|
-
logger,
|
|
45
|
-
});
|
|
36
|
+
const typedEyes = await eyes.getTypedEyes({ type, logger });
|
|
46
37
|
await typedEyes.checkAndClose({ target: driver !== null && driver !== void 0 ? driver : target, settings, logger });
|
|
47
38
|
};
|
|
48
39
|
}
|
package/dist/check.js
CHANGED
|
@@ -33,8 +33,8 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
33
33
|
function makeCheck({ type: defaultType = 'classic', eyes, target: defaultTarget, spec, logger: mainLogger, }) {
|
|
34
34
|
let stepIndex = 0;
|
|
35
35
|
return async function check({ type = defaultType, target = defaultTarget, settings, config, logger = mainLogger, } = {}) {
|
|
36
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p
|
|
37
|
-
var _r, _s, _t
|
|
36
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
37
|
+
var _q, _r, _s, _t;
|
|
38
38
|
logger = logger.extend(mainLogger, { tags: [`check-${type}-${utils.general.shortid()}`] });
|
|
39
39
|
settings = { ...config === null || config === void 0 ? void 0 : config.screenshot, ...config === null || config === void 0 ? void 0 : config.check, ...settings };
|
|
40
40
|
(_a = settings.fully) !== null && _a !== void 0 ? _a : (settings.fully = !settings.region && (!settings.frames || settings.frames.length === 0));
|
|
@@ -47,12 +47,12 @@ function makeCheck({ type: defaultType = 'classic', eyes, target: defaultTarget,
|
|
|
47
47
|
(_g = settings.sendDom) !== null && _g !== void 0 ? _g : (settings.sendDom = eyes.test.account.rcaEnabled || settings.matchLevel === 'Layout' || settings.enablePatterns || settings.useDom);
|
|
48
48
|
(_h = settings.autProxy) !== null && _h !== void 0 ? _h : (settings.autProxy = eyes.test.eyesServer.proxy);
|
|
49
49
|
(_j = settings.useDom) !== null && _j !== void 0 ? _j : (settings.useDom = false);
|
|
50
|
-
(_k = (
|
|
50
|
+
(_k = (_q = settings).retryTimeout) !== null && _k !== void 0 ? _k : (_q.retryTimeout = 2000);
|
|
51
51
|
settings.lazyLoad = settings.lazyLoad === true ? {} : settings.lazyLoad;
|
|
52
52
|
if (settings.lazyLoad) {
|
|
53
|
-
(_l = (
|
|
54
|
-
(_m = (
|
|
55
|
-
(_o = (
|
|
53
|
+
(_l = (_r = settings.lazyLoad).scrollLength) !== null && _l !== void 0 ? _l : (_r.scrollLength = 300);
|
|
54
|
+
(_m = (_s = settings.lazyLoad).waitingTime) !== null && _m !== void 0 ? _m : (_s.waitingTime = 2000);
|
|
55
|
+
(_o = (_t = settings.lazyLoad).maxAmountToScroll) !== null && _o !== void 0 ? _o : (_t.maxAmountToScroll = 15000);
|
|
56
56
|
}
|
|
57
57
|
settings.stepIndex = stepIndex++;
|
|
58
58
|
(_p = settings.waitBetweenStitches) !== null && _p !== void 0 ? _p : (settings.waitBetweenStitches = utils.types.isObject(settings.lazyLoad) ? settings.lazyLoad.waitingTime : 100);
|
|
@@ -62,17 +62,8 @@ function makeCheck({ type: defaultType = 'classic', eyes, target: defaultTarget,
|
|
|
62
62
|
const driver = (0, driver_1.isDriver)(target, spec)
|
|
63
63
|
? await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger })
|
|
64
64
|
: null;
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
type,
|
|
68
|
-
settings: (_q = settings.renderers) === null || _q === void 0 ? void 0 : _q.map(renderer => ({
|
|
69
|
-
type: (environment === null || environment === void 0 ? void 0 : environment.isNative) ? 'native' : 'web',
|
|
70
|
-
renderer,
|
|
71
|
-
})),
|
|
72
|
-
logger,
|
|
73
|
-
});
|
|
74
|
-
const results = await typedEyes.check({ target: driver !== null && driver !== void 0 ? driver : target, settings, logger });
|
|
75
|
-
return results;
|
|
65
|
+
const typedEyes = await eyes.getTypedEyes({ type, logger });
|
|
66
|
+
return typedEyes.check({ target: driver !== null && driver !== void 0 ? driver : target, settings, logger });
|
|
76
67
|
};
|
|
77
68
|
}
|
|
78
69
|
exports.makeCheck = makeCheck;
|
|
@@ -25,90 +25,132 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.makeCheckAndClose = void 0;
|
|
27
27
|
const driver_1 = require("@applitools/driver");
|
|
28
|
-
const
|
|
29
|
-
const take_dom_capture_1 = require("./utils/take-dom-capture");
|
|
28
|
+
const take_screenshots_1 = require("./utils/take-screenshots");
|
|
30
29
|
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
31
30
|
const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
|
|
31
|
+
const uniquify_renderers_1 = require("../automation/utils/uniquify-renderers");
|
|
32
|
+
const abort_error_1 = require("../errors/abort-error");
|
|
32
33
|
const utils = __importStar(require("@applitools/utils"));
|
|
33
|
-
function makeCheckAndClose({ eyes, target: defaultTarget, spec, logger: mainLogger, }) {
|
|
34
|
+
function makeCheckAndClose({ eyes, target: defaultTarget, renderers: defaultRenderers = [], spec, signal, logger: mainLogger, }) {
|
|
34
35
|
return async function checkAndClose({ target = defaultTarget, settings = {}, logger = mainLogger, } = {}) {
|
|
35
36
|
var _a, _b;
|
|
36
37
|
logger = logger.extend(mainLogger);
|
|
37
38
|
logger.log('Command "checkAndClose" is called with settings', settings);
|
|
38
39
|
if (!target)
|
|
39
40
|
throw new Error('Method was called with no target');
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
await Promise.all(baseEyes.map(baseEyes => baseEyes.checkAndClose({ target, settings: baseSettings, logger })));
|
|
44
|
-
return;
|
|
41
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
42
|
+
logger.warn('Command "checkAndClose" was called after test was already aborted');
|
|
43
|
+
throw new abort_error_1.AbortError('Command "checkAndClose" was called after test was already aborted');
|
|
45
44
|
}
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
settings.screenshotMode === 'default') {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
await ((_a = screenshot.scrollingElement) === null || _a === void 0 ? void 0 : _a.setAttribute('data-applitools-scroll', 'true'));
|
|
78
|
-
else
|
|
79
|
-
await ((_b = screenshot.element) === null || _b === void 0 ? void 0 : _b.setAttribute('data-applitools-scroll', 'true'));
|
|
80
|
-
baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, settings: { proxy: eyes.test.eyesServer.proxy }, logger }).catch(() => undefined);
|
|
45
|
+
const uniqueRenderers = (0, uniquify_renderers_1.uniquifyRenderers)((_a = settings.renderers) !== null && _a !== void 0 ? _a : defaultRenderers);
|
|
46
|
+
const baseTargets = [];
|
|
47
|
+
const baseSettings = [];
|
|
48
|
+
if ((0, driver_1.isDriver)(target, spec)) {
|
|
49
|
+
const driver = await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger });
|
|
50
|
+
await driver.currentContext.setScrollingElement((_b = settings.scrollRootElement) !== null && _b !== void 0 ? _b : null);
|
|
51
|
+
const environment = await driver.getEnvironment();
|
|
52
|
+
if (settings.lazyLoad && environment.isWeb) {
|
|
53
|
+
await (0, wait_for_lazy_load_1.waitForLazyLoad)({
|
|
54
|
+
context: driver.currentContext,
|
|
55
|
+
settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
|
|
56
|
+
logger,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const { elementReferencesToCalculate, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
|
|
60
|
+
if (environment.isWeb || !environment.isApplitoolsLib || settings.screenshotMode === 'default') {
|
|
61
|
+
const screenshots = await (0, take_screenshots_1.takeScreenshots)({
|
|
62
|
+
driver,
|
|
63
|
+
settings: {
|
|
64
|
+
...settings,
|
|
65
|
+
renderers: uniqueRenderers,
|
|
66
|
+
regionsToCalculate: elementReferencesToCalculate,
|
|
67
|
+
calculateView: !!settings.pageId,
|
|
68
|
+
domSettings: settings.sendDom ? { proxy: eyes.test.eyesServer.proxy } : undefined,
|
|
69
|
+
},
|
|
70
|
+
logger,
|
|
71
|
+
});
|
|
72
|
+
screenshots.forEach(({ calculatedRegions, ...baseTarget }) => {
|
|
73
|
+
baseTargets.push(baseTarget);
|
|
74
|
+
baseSettings.push(getBaseCheckSettings({ calculatedRegions }));
|
|
75
|
+
});
|
|
81
76
|
}
|
|
82
|
-
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
77
|
+
else {
|
|
78
|
+
const nmlClient = await eyes.core.getNMLClient({
|
|
79
|
+
driver,
|
|
80
|
+
settings: { ...eyes.test.eyesServer, renderEnvironmentsUrl: eyes.test.renderEnvironmentsUrl },
|
|
81
|
+
logger,
|
|
82
|
+
});
|
|
83
|
+
const screenshots = await nmlClient.takeScreenshots({
|
|
84
|
+
settings: {
|
|
85
|
+
renderers: uniqueRenderers,
|
|
86
|
+
fully: settings.fully,
|
|
87
|
+
stitchMode: settings.stitchMode,
|
|
88
|
+
hideScrollbars: settings.hideScrollbars,
|
|
89
|
+
hideCaret: settings.hideScrollbars,
|
|
90
|
+
overlap: settings.overlap,
|
|
91
|
+
waitBeforeCapture: settings.waitBeforeCapture,
|
|
92
|
+
waitBetweenStitches: settings.waitBetweenStitches,
|
|
93
|
+
lazyLoad: settings.lazyLoad,
|
|
94
|
+
name: settings.name,
|
|
95
|
+
},
|
|
96
|
+
logger,
|
|
97
|
+
});
|
|
98
|
+
screenshots.forEach(({ calculatedRegions: _calculatedRegions, renderEnvironment, ...baseTarget }, index) => {
|
|
99
|
+
uniqueRenderers[index] = { environment: renderEnvironment };
|
|
100
|
+
baseTargets.push({ ...baseTarget, isTransformed: true });
|
|
101
|
+
baseSettings.push(getBaseCheckSettings({ calculatedRegions: [] }));
|
|
102
|
+
});
|
|
89
103
|
}
|
|
90
|
-
await screenshot.restoreState();
|
|
91
104
|
}
|
|
92
105
|
else {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
settings: {
|
|
96
|
-
name: settings.name,
|
|
97
|
-
fully: settings.fully,
|
|
98
|
-
stitchMode: settings.stitchMode,
|
|
99
|
-
hideScrollbars: settings.hideScrollbars,
|
|
100
|
-
hideCaret: settings.hideScrollbars,
|
|
101
|
-
overlap: settings.overlap,
|
|
102
|
-
waitBeforeCapture: settings.waitBeforeCapture,
|
|
103
|
-
waitBetweenStitches: settings.waitBetweenStitches,
|
|
104
|
-
lazyLoad: settings.lazyLoad,
|
|
105
|
-
},
|
|
106
|
-
logger,
|
|
107
|
-
});
|
|
108
|
-
baseTarget = { image: screenshot.image, isTransformed: true };
|
|
109
|
-
baseSettings = getBaseCheckSettings({ calculatedRegions: [] });
|
|
106
|
+
baseTargets.push(target);
|
|
107
|
+
baseSettings.push(settings);
|
|
110
108
|
}
|
|
111
|
-
|
|
109
|
+
const promises = uniqueRenderers.map(async (renderer, index) => {
|
|
110
|
+
const rendererLogger = logger.extend({ tags: [`renderer-${utils.general.shortid()}`] });
|
|
111
|
+
try {
|
|
112
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
113
|
+
rendererLogger.warn('Command "checkAndClose" was aborted before checking');
|
|
114
|
+
throw new abort_error_1.AbortError('Command "checkAndClose" was aborted before checking');
|
|
115
|
+
}
|
|
116
|
+
const baseEyes = await eyes.getBaseEyes({ settings: { renderer }, logger: rendererLogger });
|
|
117
|
+
try {
|
|
118
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
119
|
+
rendererLogger.warn('Command "checkAndClose" was aborted before checking');
|
|
120
|
+
throw new abort_error_1.AbortError('Command "checkAndClose" was aborted before checking');
|
|
121
|
+
}
|
|
122
|
+
else if (!baseEyes.running) {
|
|
123
|
+
rendererLogger.warn(`Check on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
|
|
124
|
+
throw new abort_error_1.AbortError(`Check on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
|
|
125
|
+
}
|
|
126
|
+
await baseEyes.checkAndClose({
|
|
127
|
+
target: baseTargets[index],
|
|
128
|
+
settings: baseSettings[index],
|
|
129
|
+
logger: rendererLogger,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
rendererLogger.error(`Check on environment with id "${baseEyes.test.renderEnvironmentId}" failed due to an error`, error);
|
|
134
|
+
await baseEyes.abort({ logger: rendererLogger });
|
|
135
|
+
error.info = { eyes: baseEyes };
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
rendererLogger.error(`Check with id ${renderer.id} failed before checking started due to an error`, error);
|
|
141
|
+
error.info = { ...error.info, userTestId: eyes.test.userTestId, renderer };
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
uniqueRenderers.forEach((renderer, index) => {
|
|
146
|
+
const key = JSON.stringify(renderer);
|
|
147
|
+
let item = eyes.storage.get(key);
|
|
148
|
+
if (!item) {
|
|
149
|
+
item = { renderer, eyes: null, jobs: [] };
|
|
150
|
+
eyes.storage.set(key, item);
|
|
151
|
+
}
|
|
152
|
+
item.jobs.push(promises[index]);
|
|
153
|
+
});
|
|
112
154
|
};
|
|
113
155
|
}
|
|
114
156
|
exports.makeCheckAndClose = makeCheckAndClose;
|