@applitools/core 4.12.3 → 4.14.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 +120 -0
- package/dist/automation/abort.js +2 -4
- package/dist/automation/close.js +2 -4
- package/dist/automation/utils/report-kobiton.js +21 -0
- package/dist/check.js +1 -1
- package/dist/classic/check-and-close.js +3 -2
- package/dist/classic/check.js +258 -153
- package/dist/classic/get-base-eyes.js +4 -1
- package/dist/classic/open-eyes.js +2 -2
- package/dist/core.js +20 -2
- package/dist/make-manager.js +2 -2
- package/dist/ufg/check-and-close.js +2 -2
- package/dist/ufg/check.js +2 -2
- package/dist/ufg/get-base-eyes.js +13 -2
- package/dist/ufg/open-eyes.js +2 -2
- package/package.json +16 -16
- package/types/automation/abort.d.ts +4 -5
- package/types/automation/close.d.ts +4 -5
- package/types/automation/types.d.ts +9 -4
- package/types/automation/utils/report-kobiton.d.ts +12 -0
- package/types/classic/get-base-eyes.d.ts +1 -1
- package/types/open-eyes.d.ts +1 -1
- package/types/ufg/get-base-eyes.d.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,125 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.14.0](https://github.com/Applitools-Dev/sdk/compare/js/core@4.13.1...js/core@4.14.0) (2024-05-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* `matchTimeout` ([#2309](https://github.com/Applitools-Dev/sdk/issues/2309)) ([626529e](https://github.com/Applitools-Dev/sdk/commit/626529e839fd2a96ac0de98332f42873c0f387a4))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* cache nml client per driver ([#2336](https://github.com/Applitools-Dev/sdk/issues/2336)) ([02c09a5](https://github.com/Applitools-Dev/sdk/commit/02c09a53eb6ca6340c93365908f4c485ab389c21))
|
|
14
|
+
* support for using unicode and just using escape with numbers ([#2241](https://github.com/Applitools-Dev/sdk/issues/2241)) ([c59f47f](https://github.com/Applitools-Dev/sdk/commit/c59f47f73585d7f308c43c9ee1845e097a2111a3))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Dependencies
|
|
18
|
+
|
|
19
|
+
* @applitools/dom-snapshot bumped to 4.11.1
|
|
20
|
+
#### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* support for using unicode and just using escape with numbers ([#2241](https://github.com/Applitools-Dev/sdk/issues/2241)) ([c59f47f](https://github.com/Applitools-Dev/sdk/commit/c59f47f73585d7f308c43c9ee1845e097a2111a3))
|
|
23
|
+
* @applitools/spec-driver-webdriver bumped to 1.1.7
|
|
24
|
+
|
|
25
|
+
* @applitools/spec-driver-selenium bumped to 1.5.78
|
|
26
|
+
|
|
27
|
+
* @applitools/spec-driver-puppeteer bumped to 1.4.7
|
|
28
|
+
|
|
29
|
+
* @applitools/driver bumped to 1.17.2
|
|
30
|
+
#### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* cache nml client per driver ([#2336](https://github.com/Applitools-Dev/sdk/issues/2336)) ([02c09a5](https://github.com/Applitools-Dev/sdk/commit/02c09a53eb6ca6340c93365908f4c485ab389c21))
|
|
33
|
+
* @applitools/screenshoter bumped to 3.8.31
|
|
34
|
+
|
|
35
|
+
* @applitools/nml-client bumped to 1.8.4
|
|
36
|
+
|
|
37
|
+
* @applitools/ec-client bumped to 1.8.4
|
|
38
|
+
|
|
39
|
+
* @applitools/core-base bumped to 1.13.0
|
|
40
|
+
#### Features
|
|
41
|
+
|
|
42
|
+
* `matchTimeout` ([#2309](https://github.com/Applitools-Dev/sdk/issues/2309)) ([626529e](https://github.com/Applitools-Dev/sdk/commit/626529e839fd2a96ac0de98332f42873c0f387a4))
|
|
43
|
+
|
|
44
|
+
## [4.13.1](https://github.com/Applitools-Dev/sdk/compare/js/core@4.13.0...js/core@4.13.1) (2024-04-22)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
### Dependencies
|
|
48
|
+
|
|
49
|
+
* @applitools/utils bumped to 1.7.2
|
|
50
|
+
#### Bug Fixes
|
|
51
|
+
|
|
52
|
+
* trigger release ([88ba29f](https://github.com/Applitools-Dev/sdk/commit/88ba29f358620a5c0f0861eb31e8929d0b611284))
|
|
53
|
+
* @applitools/logger bumped to 2.0.16
|
|
54
|
+
|
|
55
|
+
* @applitools/socket bumped to 1.1.16
|
|
56
|
+
|
|
57
|
+
* @applitools/req bumped to 1.6.7
|
|
58
|
+
|
|
59
|
+
* @applitools/image bumped to 1.1.11
|
|
60
|
+
|
|
61
|
+
* @applitools/spec-driver-webdriver bumped to 1.1.6
|
|
62
|
+
|
|
63
|
+
* @applitools/spec-driver-selenium bumped to 1.5.77
|
|
64
|
+
|
|
65
|
+
* @applitools/spec-driver-puppeteer bumped to 1.4.6
|
|
66
|
+
|
|
67
|
+
* @applitools/driver bumped to 1.17.1
|
|
68
|
+
|
|
69
|
+
* @applitools/screenshoter bumped to 3.8.30
|
|
70
|
+
|
|
71
|
+
* @applitools/nml-client bumped to 1.8.3
|
|
72
|
+
|
|
73
|
+
* @applitools/tunnel-client bumped to 1.5.2
|
|
74
|
+
|
|
75
|
+
* @applitools/ufg-client bumped to 1.11.2
|
|
76
|
+
|
|
77
|
+
* @applitools/ec-client bumped to 1.8.3
|
|
78
|
+
|
|
79
|
+
* @applitools/core-base bumped to 1.12.1
|
|
80
|
+
#### Bug Fixes
|
|
81
|
+
|
|
82
|
+
* environment override ([2b296e6](https://github.com/Applitools-Dev/sdk/commit/2b296e61cca6743d8d217ba99f2fba3a260fbdfa))
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
## [4.13.0](https://github.com/Applitools-Dev/sdk/compare/js/core@4.12.3...js/core@4.13.0) (2024-04-22)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
### Features
|
|
91
|
+
|
|
92
|
+
* ability to override baseline parameters per environment ([#2332](https://github.com/Applitools-Dev/sdk/issues/2332)) ([43b8b18](https://github.com/Applitools-Dev/sdk/commit/43b8b189fb3c9dd19aa3be372e8fcc0fe8edfa50))
|
|
93
|
+
* report batchId and batchUrl to kobiton ([#2329](https://github.com/Applitools-Dev/sdk/issues/2329)) ([5be4356](https://github.com/Applitools-Dev/sdk/commit/5be4356d7f3cd96b70491325d4a788202c06720a))
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
### Dependencies
|
|
97
|
+
|
|
98
|
+
* @applitools/dom-snapshot bumped to 4.11.0
|
|
99
|
+
#### Features
|
|
100
|
+
|
|
101
|
+
* extract url from embed element ([#2285](https://github.com/Applitools-Dev/sdk/issues/2285)) ([3c4da0d](https://github.com/Applitools-Dev/sdk/commit/3c4da0dbd061cb2fc4313392196012ffd4601d0e))
|
|
102
|
+
* @applitools/spec-driver-webdriver bumped to 1.1.5
|
|
103
|
+
|
|
104
|
+
* @applitools/spec-driver-selenium bumped to 1.5.76
|
|
105
|
+
|
|
106
|
+
* @applitools/spec-driver-puppeteer bumped to 1.4.5
|
|
107
|
+
|
|
108
|
+
* @applitools/driver bumped to 1.17.0
|
|
109
|
+
#### Features
|
|
110
|
+
|
|
111
|
+
* report batchId and batchUrl to kobiton ([#2329](https://github.com/Applitools-Dev/sdk/issues/2329)) ([5be4356](https://github.com/Applitools-Dev/sdk/commit/5be4356d7f3cd96b70491325d4a788202c06720a))
|
|
112
|
+
* @applitools/screenshoter bumped to 3.8.29
|
|
113
|
+
|
|
114
|
+
* @applitools/nml-client bumped to 1.8.2
|
|
115
|
+
|
|
116
|
+
* @applitools/ec-client bumped to 1.8.2
|
|
117
|
+
|
|
118
|
+
* @applitools/core-base bumped to 1.12.0
|
|
119
|
+
#### Features
|
|
120
|
+
|
|
121
|
+
* ability to override baseline parameters per environment ([#2332](https://github.com/Applitools-Dev/sdk/issues/2332)) ([43b8b18](https://github.com/Applitools-Dev/sdk/commit/43b8b189fb3c9dd19aa3be372e8fcc0fe8edfa50))
|
|
122
|
+
|
|
3
123
|
## [4.12.3](https://github.com/Applitools-Dev/sdk/compare/js/core@4.12.2...js/core@4.12.3) (2024-04-17)
|
|
4
124
|
|
|
5
125
|
|
package/dist/automation/abort.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeAbort = void 0;
|
|
4
|
-
const driver_1 = require("@applitools/driver");
|
|
5
4
|
const uniquify_environments_1 = require("./utils/uniquify-environments");
|
|
6
|
-
function makeAbort({ eyes,
|
|
5
|
+
function makeAbort({ eyes, driver, controller, environments: defaultEnvironments, logger: mainLogger, }) {
|
|
7
6
|
return async function abort({ settings, logger = mainLogger, } = {}) {
|
|
8
7
|
var _a;
|
|
9
8
|
logger = logger.extend(mainLogger);
|
|
@@ -18,9 +17,8 @@ function makeAbort({ eyes, target, controller, environments: defaultEnvironments
|
|
|
18
17
|
}
|
|
19
18
|
controller.abort();
|
|
20
19
|
settings !== null && settings !== void 0 ? settings : (settings = {});
|
|
21
|
-
if (!settings.testMetadata &&
|
|
20
|
+
if (!settings.testMetadata && driver) {
|
|
22
21
|
try {
|
|
23
|
-
const driver = await (0, driver_1.makeDriver)({ spec, driver: target, relaxed: true, logger });
|
|
24
22
|
settings.testMetadata = await driver.getSessionMetadata();
|
|
25
23
|
}
|
|
26
24
|
catch (error) {
|
package/dist/automation/close.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeClose = void 0;
|
|
4
|
-
const driver_1 = require("@applitools/driver");
|
|
5
4
|
const uniquify_environments_1 = require("./utils/uniquify-environments");
|
|
6
|
-
function makeClose({ eyes,
|
|
5
|
+
function makeClose({ eyes, driver, environments: defaultEnvironments, logger: mainLogger, }) {
|
|
7
6
|
return async function close({ settings, logger = mainLogger, } = {}) {
|
|
8
7
|
var _a;
|
|
9
8
|
logger = logger.extend(mainLogger);
|
|
@@ -17,9 +16,8 @@ function makeClose({ eyes, target, environments: defaultEnvironments, spec, logg
|
|
|
17
16
|
eyes.running = false;
|
|
18
17
|
}
|
|
19
18
|
settings !== null && settings !== void 0 ? settings : (settings = {});
|
|
20
|
-
if (!settings.testMetadata &&
|
|
19
|
+
if (!settings.testMetadata && driver) {
|
|
21
20
|
try {
|
|
22
|
-
const driver = await (0, driver_1.makeDriver)({ spec, driver: target, relaxed: true, logger });
|
|
23
21
|
settings.testMetadata = await driver.getSessionMetadata();
|
|
24
22
|
}
|
|
25
23
|
catch (error) {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reportKobiton = void 0;
|
|
4
|
+
async function reportKobiton({ driver, settings, logger }) {
|
|
5
|
+
var _a;
|
|
6
|
+
// At this point, the driver might be closed already. The operation below could fail in this case
|
|
7
|
+
try {
|
|
8
|
+
if ((_a = (await (driver === null || driver === void 0 ? void 0 : driver.getEnvironment()))) === null || _a === void 0 ? void 0 : _a.isKobiton) {
|
|
9
|
+
const kobitonInfo = {
|
|
10
|
+
batchId: settings.batchId,
|
|
11
|
+
batchUrl: settings.resultsUrl,
|
|
12
|
+
};
|
|
13
|
+
logger.log('sending to kobiton', kobitonInfo);
|
|
14
|
+
await driver.execute('kobiton:assignApplitoolsInfo', kobitonInfo);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
logger.log('failed to send to kobiton', err);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.reportKobiton = reportKobiton;
|
package/dist/check.js
CHANGED
|
@@ -48,7 +48,7 @@ function makeCheck({ type: defaultType = 'classic', eyes, target: defaultTarget,
|
|
|
48
48
|
(_g = settings.sendDom) !== null && _g !== void 0 ? _g : (settings.sendDom = eyes.test.account.rcaEnabled || settings.matchLevel === 'Layout' || settings.enablePatterns || settings.useDom);
|
|
49
49
|
(_h = settings.autProxy) !== null && _h !== void 0 ? _h : (settings.autProxy = eyes.test.eyesServer.proxy);
|
|
50
50
|
(_j = settings.useDom) !== null && _j !== void 0 ? _j : (settings.useDom = false);
|
|
51
|
-
(_k = (_q = settings).retryTimeout) !== null && _k !== void 0 ? _k : (_q.retryTimeout =
|
|
51
|
+
(_k = (_q = settings).retryTimeout) !== null && _k !== void 0 ? _k : (_q.retryTimeout = 0);
|
|
52
52
|
settings.lazyLoad = settings.lazyLoad === true ? {} : settings.lazyLoad;
|
|
53
53
|
if (settings.lazyLoad) {
|
|
54
54
|
(_l = (_r = settings.lazyLoad).scrollLength) !== null && _l !== void 0 ? _l : (_r.scrollLength = 300);
|
|
@@ -53,8 +53,9 @@ function makeCheckAndClose({ eyes, target: defaultTarget, environments: defaultE
|
|
|
53
53
|
const baseTargets = [];
|
|
54
54
|
const baseSettings = [];
|
|
55
55
|
const exactEnvironments = [];
|
|
56
|
+
let driver;
|
|
56
57
|
if ((0, driver_1.isDriver)(target, spec)) {
|
|
57
|
-
|
|
58
|
+
driver = await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger });
|
|
58
59
|
await driver.currentContext.setScrollingElement((_b = settings.scrollRootElement) !== null && _b !== void 0 ? _b : null);
|
|
59
60
|
const driverEnvironment = await driver.getEnvironment();
|
|
60
61
|
uniqueEnvironments.forEach(environment => {
|
|
@@ -161,7 +162,7 @@ function makeCheckAndClose({ eyes, target: defaultTarget, environments: defaultE
|
|
|
161
162
|
environmentLogger.warn('Command "checkAndClose" was aborted before checking');
|
|
162
163
|
throw new abort_error_1.AbortError('Command "checkAndClose" was aborted before checking');
|
|
163
164
|
}
|
|
164
|
-
const baseEyes = await eyes.getBaseEyes({ settings: { environment }, logger: environmentLogger });
|
|
165
|
+
const baseEyes = await eyes.getBaseEyes({ settings: { environment, driver }, logger: environmentLogger });
|
|
165
166
|
try {
|
|
166
167
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
167
168
|
environmentLogger.warn('Command "checkAndClose" was aborted before checking');
|
package/dist/classic/check.js
CHANGED
|
@@ -40,9 +40,11 @@ const utils = __importStar(require("@applitools/utils"));
|
|
|
40
40
|
const lang = __importStar(require("../lang"));
|
|
41
41
|
function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironments = [], spec, signal, logger: mainLogger, }) {
|
|
42
42
|
return async function check({ target = defaultTarget, settings = {}, logger = mainLogger, } = {}) {
|
|
43
|
-
var _a
|
|
43
|
+
var _a;
|
|
44
|
+
// logging
|
|
44
45
|
logger = logger.extend(mainLogger);
|
|
45
46
|
logger.log('Command "check" is called with settings', settings);
|
|
47
|
+
// input validation and sanitization
|
|
46
48
|
if (!target)
|
|
47
49
|
throw new Error('Method was called with no target');
|
|
48
50
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
@@ -50,172 +52,275 @@ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironme
|
|
|
50
52
|
throw new abort_error_1.AbortError('Command "check" was called after test was already aborted');
|
|
51
53
|
}
|
|
52
54
|
const uniqueEnvironments = (0, uniquify_environments_1.uniquifyEnvironments)((_a = settings.environments) !== null && _a !== void 0 ? _a : defaultEnvironments);
|
|
53
|
-
|
|
54
|
-
const baseSettings = [];
|
|
55
|
-
const exactEnvironments = [];
|
|
55
|
+
let driver = undefined;
|
|
56
56
|
if ((0, driver_1.isDriver)(target, spec)) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
(_a = (_c = environment.iosDeviceInfo).version) !== null && _a !== void 0 ? _a : (_c.version = driverEnvironment.platformVersion);
|
|
57
|
+
driver = await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger });
|
|
58
|
+
if (settings.retryTimeout) {
|
|
59
|
+
// when retry timeout is set, retry checking until it passes or timeout is reached. This will stall the client test execution until it passes or timeout is reached to prevent the test from continuing and changing the state of the app
|
|
60
|
+
logger.log(`Retry timeout is set to ${settings.retryTimeout}ms - will retry checking until it passes or timeout is reached`);
|
|
61
|
+
const start = Date.now();
|
|
62
|
+
if (await isNewTest({ eyes, driver, environments: uniqueEnvironments, logger })) {
|
|
63
|
+
await new Promise(resolve => setTimeout(resolve, settings.retryTimeout));
|
|
65
64
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const { localEnvironment, renderEnvironments } = await (0, nml_client_1.getNMLEnvironmentsInfo)({
|
|
85
|
-
environments: uniqueEnvironments,
|
|
86
|
-
supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl,
|
|
87
|
-
proxy: eyes.test.eyesServer.proxy,
|
|
88
|
-
logger,
|
|
65
|
+
let asExpected = false, retries = 0;
|
|
66
|
+
do {
|
|
67
|
+
retries++;
|
|
68
|
+
// generate base targets (images to be compared) and settings for each environment
|
|
69
|
+
const baseScreenshotsAndSettings = await generateBaseScreenshotsAndSettings(settings, uniqueEnvironments, eyes, logger, driver);
|
|
70
|
+
const promises = baseScreenshotsAndSettings.map(async ({ exactEnvironment: environment, baseSetting: settings, baseTarget: target }) => {
|
|
71
|
+
return await checkEnvironment({
|
|
72
|
+
eyes,
|
|
73
|
+
driver,
|
|
74
|
+
target,
|
|
75
|
+
environment,
|
|
76
|
+
signal,
|
|
77
|
+
logger,
|
|
78
|
+
settings: {
|
|
79
|
+
...settings,
|
|
80
|
+
replaceLast: retries > 1,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
89
83
|
});
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
calculateView: !!settings.pageId,
|
|
100
|
-
domSettings: settings.sendDom ? { proxy: eyes.test.eyesServer.proxy } : undefined,
|
|
101
|
-
},
|
|
102
|
-
logger,
|
|
103
|
-
});
|
|
104
|
-
exactEnvironments.push(...actualEnvironments);
|
|
105
|
-
screenshots.forEach(({ calculatedRegions, ...baseTarget }) => {
|
|
106
|
-
baseTargets.push(baseTarget);
|
|
107
|
-
baseSettings.push(getBaseCheckSettings({ calculatedRegions }));
|
|
108
|
-
});
|
|
84
|
+
const results = await Promise.all(promises);
|
|
85
|
+
asExpected = results.every(result => result.asExpected);
|
|
86
|
+
if (retries === 1) {
|
|
87
|
+
baseScreenshotsAndSettings.forEach(({ exactEnvironment }) => {
|
|
88
|
+
// put dummy promises in storage to tell eyes.close that all checks hepped
|
|
89
|
+
putInStorage(exactEnvironment, eyes, Promise.resolve());
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
} while (!asExpected && Date.now() - start < settings.retryTimeout);
|
|
109
93
|
}
|
|
110
94
|
else {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
logger.log(message);
|
|
117
|
-
}
|
|
118
|
-
const nmlClient = await eyes.core.getNMLClient({
|
|
119
|
-
driver,
|
|
120
|
-
settings: { ...eyes.test.eyesServer, supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl },
|
|
121
|
-
logger,
|
|
95
|
+
// generate base targets (images to be compared) and settings for each environment
|
|
96
|
+
const baseScreenshotsAndSettings = await generateBaseScreenshotsAndSettings(settings, uniqueEnvironments, eyes, logger, driver);
|
|
97
|
+
// when no retry timeout is set, queue all environment checks against the server without stalling the client test execution
|
|
98
|
+
baseScreenshotsAndSettings.forEach(({ exactEnvironment: environment, baseSetting, baseTarget }) => {
|
|
99
|
+
checkInTheBackground(environment, baseTarget, baseSetting);
|
|
122
100
|
});
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
uniqueEnvironments.forEach(environment => checkInTheBackground(environment, target, settings));
|
|
105
|
+
}
|
|
106
|
+
function checkInTheBackground(environment, target, settings) {
|
|
107
|
+
putInStorage(environment, eyes, checkEnvironment({ eyes, driver, target, environment, signal, logger, settings }));
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
function putInStorage(environment, eyes, promise) {
|
|
111
|
+
const key = (0, to_environment_key_1.toEnvironmentKey)(environment);
|
|
112
|
+
let item = eyes.storage.get(key);
|
|
113
|
+
if (!item) {
|
|
114
|
+
item = { eyes: utils.promises.makeControlledPromise(), jobs: [] };
|
|
115
|
+
eyes.storage.set(key, item);
|
|
116
|
+
}
|
|
117
|
+
item.jobs.push(promise.then());
|
|
118
|
+
return item;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.makeCheck = makeCheck;
|
|
122
|
+
async function isNewTest({ eyes, driver, environments, logger, }) {
|
|
123
|
+
const environmentLogger = logger.extend({ tags: [`environment-${utils.general.shortid()}`] });
|
|
124
|
+
return (await Promise.all(environments.map(async (environment) => await eyes.getBaseEyes({ settings: { environment, driver }, logger: environmentLogger }))))
|
|
125
|
+
.map(baseEyes => baseEyes.test.isNew)
|
|
126
|
+
.some(isNew => isNew);
|
|
127
|
+
}
|
|
128
|
+
async function checkEnvironment({ eyes, driver, target, environment, signal, logger, settings, }) {
|
|
129
|
+
var _a, _b;
|
|
130
|
+
const environmentLogger = logger.extend({ tags: [`environment-${utils.general.shortid()}`] });
|
|
131
|
+
environmentLogger.log('Command "check" is called with settings', settings);
|
|
132
|
+
try {
|
|
133
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
134
|
+
abortError({ logger: environmentLogger, message: 'Command "check" was aborted before checking' });
|
|
135
|
+
}
|
|
136
|
+
const baseEyes = await eyes.getBaseEyes({ settings: { environment, driver }, logger: environmentLogger });
|
|
137
|
+
try {
|
|
138
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
139
|
+
abortError({
|
|
140
|
+
logger: environmentLogger,
|
|
141
|
+
message: `Command "check" was aborted before checking`,
|
|
149
142
|
});
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
aggregateCalculatedRegions.push({ regions, selector: reference });
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
logger.log(`Regions "${reference}" was not found in the screenshot`);
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
exactEnvironments.push(environment);
|
|
162
|
-
baseTargets.push({ ...baseTarget, isTransformed: true });
|
|
163
|
-
baseSettings.push(getBaseCheckSettings({
|
|
164
|
-
calculatedRegions: aggregateCalculatedRegions,
|
|
165
|
-
}));
|
|
143
|
+
}
|
|
144
|
+
else if (!baseEyes.running) {
|
|
145
|
+
abortError({
|
|
146
|
+
logger: environmentLogger,
|
|
147
|
+
message: `Check on environment with id "${(_a = baseEyes.test.environment) === null || _a === void 0 ? void 0 : _a.environmentId}" was aborted during one of the previous steps`,
|
|
166
148
|
});
|
|
167
149
|
}
|
|
150
|
+
return await baseEyes.check({
|
|
151
|
+
target,
|
|
152
|
+
settings: settings,
|
|
153
|
+
logger: environmentLogger,
|
|
154
|
+
});
|
|
168
155
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
156
|
+
catch (error) {
|
|
157
|
+
environmentLogger.error(`Check on environment with id "${(_b = baseEyes.test.environment) === null || _b === void 0 ? void 0 : _b.environmentId}" failed due to an error`, error);
|
|
158
|
+
if (baseEyes.running && !(signal === null || signal === void 0 ? void 0 : signal.aborted))
|
|
159
|
+
baseEyes.abort({ logger: environmentLogger, settings: { reason: error } });
|
|
173
160
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
environmentLogger.error(`Environment with id ${environment.environmentId} failed before checking started due to an error`, error);
|
|
164
|
+
error.info = { ...error.info, userTestId: eyes.test.userTestId, environment };
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
return { asExpected: false };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* @throws {AbortError}
|
|
171
|
+
*/
|
|
172
|
+
function abortError({ logger, message }) {
|
|
173
|
+
logger.warn(message);
|
|
174
|
+
throw new abort_error_1.AbortError(message);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* create base targets (array of screenshots) and base settings (array of check settings) for each environment
|
|
178
|
+
*/
|
|
179
|
+
async function generateBaseScreenshotsAndSettings(settings, uniqueEnvironments, eyes, logger, driver) {
|
|
180
|
+
var _a;
|
|
181
|
+
const driverEnvironment = await driver.getEnvironment();
|
|
182
|
+
uniqueEnvironments = addMobileDeviceInfo(uniqueEnvironments, driverEnvironment);
|
|
183
|
+
await beforeScreenshot();
|
|
184
|
+
const shouldTakeWebScreenshot = driverEnvironment.isWeb ||
|
|
185
|
+
!((_a = driverEnvironment.applitoolsLib) === null || _a === void 0 ? void 0 : _a.instrumented) ||
|
|
186
|
+
settings.webview ||
|
|
187
|
+
settings.screenshotMode === 'default';
|
|
188
|
+
if (shouldTakeWebScreenshot) {
|
|
189
|
+
return await takeWebScreenshot({
|
|
190
|
+
driver,
|
|
191
|
+
settings,
|
|
192
|
+
environments: uniqueEnvironments,
|
|
193
|
+
logger,
|
|
194
|
+
eyes,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// take screenshot using NML
|
|
199
|
+
checkConflictingCapabilities();
|
|
200
|
+
return await takeNMLScreenshot({
|
|
201
|
+
driver,
|
|
202
|
+
settings,
|
|
203
|
+
environments: uniqueEnvironments,
|
|
204
|
+
logger,
|
|
205
|
+
eyes,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
async function beforeScreenshot() {
|
|
209
|
+
var _a;
|
|
210
|
+
await driver.currentContext.setScrollingElement((_a = settings.scrollRootElement) !== null && _a !== void 0 ? _a : null);
|
|
211
|
+
if (settings.lazyLoad && driverEnvironment.isWeb) {
|
|
212
|
+
await (0, wait_for_lazy_load_1.waitForLazyLoad)({
|
|
213
|
+
context: driver.currentContext,
|
|
214
|
+
settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
|
|
215
|
+
logger,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
function checkConflictingCapabilities() {
|
|
220
|
+
var _a;
|
|
221
|
+
if ((_a = driverEnvironment.applitoolsLib) === null || _a === void 0 ? void 0 : _a.conflictingCapabilities) {
|
|
222
|
+
const message = lang.applitoolsLibConflictingCapabilitiesWarning({
|
|
223
|
+
conflictingCapabilities: driverEnvironment.applitoolsLib.conflictingCapabilities,
|
|
224
|
+
});
|
|
225
|
+
logger.console.log(chalk_1.default.yellow(message));
|
|
226
|
+
logger.log(message);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
function addMobileDeviceInfo(environments, driverEnvironment) {
|
|
230
|
+
return environments.map(environment => {
|
|
231
|
+
var _a, _b;
|
|
232
|
+
var _c, _d;
|
|
233
|
+
if (utils.types.has(environment, 'iosDeviceInfo')) {
|
|
234
|
+
(_a = (_c = environment.iosDeviceInfo).version) !== null && _a !== void 0 ? _a : (_c.version = driverEnvironment.platformVersion);
|
|
203
235
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
error.info = { ...error.info, userTestId: eyes.test.userTestId, environment };
|
|
207
|
-
throw error;
|
|
236
|
+
else if (utils.types.has(environment, 'androidDeviceInfo')) {
|
|
237
|
+
(_b = (_d = environment.androidDeviceInfo).version) !== null && _b !== void 0 ? _b : (_d.version = driverEnvironment.platformVersion);
|
|
208
238
|
}
|
|
239
|
+
return environment;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
async function takeWebScreenshot({ driver, settings, environments, logger, eyes, }) {
|
|
244
|
+
let actualEnvironments = environments;
|
|
245
|
+
if (settings.screenshotMode === 'default') {
|
|
246
|
+
const { localEnvironment, renderEnvironments } = await (0, nml_client_1.getNMLEnvironmentsInfo)({
|
|
247
|
+
environments: environments,
|
|
248
|
+
supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl,
|
|
249
|
+
proxy: eyes.test.eyesServer.proxy,
|
|
250
|
+
logger,
|
|
209
251
|
});
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
252
|
+
actualEnvironments = localEnvironment ? [localEnvironment] : renderEnvironments;
|
|
253
|
+
}
|
|
254
|
+
const { elementReferences, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
|
|
255
|
+
const screenshots = await (0, take_screenshots_1.takeScreenshots)({
|
|
256
|
+
driver,
|
|
257
|
+
settings: {
|
|
258
|
+
...settings,
|
|
259
|
+
environments: actualEnvironments,
|
|
260
|
+
regionsToCalculate: elementReferences.calculate,
|
|
261
|
+
calculateView: !!settings.pageId,
|
|
262
|
+
domSettings: settings.sendDom ? { proxy: eyes.test.eyesServer.proxy } : undefined,
|
|
263
|
+
},
|
|
264
|
+
logger,
|
|
265
|
+
});
|
|
266
|
+
return screenshots.map(({ calculatedRegions, ...baseTarget }, i) => {
|
|
267
|
+
return {
|
|
268
|
+
baseTarget,
|
|
269
|
+
baseSetting: getBaseCheckSettings({ calculatedRegions }),
|
|
270
|
+
exactEnvironment: actualEnvironments[i],
|
|
271
|
+
};
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
async function takeNMLScreenshot({ driver, settings, environments, logger, eyes, }) {
|
|
275
|
+
const nmlClient = await eyes.core.getNMLClient({
|
|
276
|
+
driver,
|
|
277
|
+
settings: { ...eyes.test.eyesServer, supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl },
|
|
278
|
+
logger,
|
|
279
|
+
});
|
|
280
|
+
if (settings.scrollRootElement || settings.region || (0, to_base_check_settings_1.hasCodedRegions)(settings))
|
|
281
|
+
await nmlClient.preTakeScreenshot({ logger });
|
|
282
|
+
const { elementReferences, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
|
|
283
|
+
settings: {
|
|
284
|
+
...settings,
|
|
285
|
+
...(await (0, to_base_check_settings_1.extractMobileElementsIntoCheckSettings)({ settings, driver, logger })),
|
|
286
|
+
},
|
|
287
|
+
});
|
|
288
|
+
const calculate = elementReferences.calculate;
|
|
289
|
+
const screenshots = await nmlClient.takeScreenshots({
|
|
290
|
+
settings: {
|
|
291
|
+
environments: environments,
|
|
292
|
+
fully: settings.fully,
|
|
293
|
+
stitchMode: settings.stitchMode,
|
|
294
|
+
hideScrollbars: settings.hideScrollbars,
|
|
295
|
+
hideCaret: settings.hideScrollbars,
|
|
296
|
+
overlap: settings.overlap,
|
|
297
|
+
waitBeforeCapture: settings.waitBeforeCapture,
|
|
298
|
+
waitBetweenStitches: settings.waitBetweenStitches,
|
|
299
|
+
lazyLoad: settings.lazyLoad,
|
|
300
|
+
name: settings.name,
|
|
301
|
+
region: elementReferences.target,
|
|
302
|
+
selectorsToFindRegionsFor: calculate.map(({ name }) => name),
|
|
303
|
+
scrollRootElement: elementReferences.scrolling,
|
|
304
|
+
},
|
|
305
|
+
logger,
|
|
306
|
+
});
|
|
307
|
+
return screenshots.map(({ calculateRegions, ...baseTarget }) => {
|
|
308
|
+
const aggregateCalculatedRegions = [];
|
|
309
|
+
calculate.forEach(({ reference }, index) => {
|
|
310
|
+
const regions = calculateRegions === null || calculateRegions === void 0 ? void 0 : calculateRegions[index];
|
|
311
|
+
if (regions) {
|
|
312
|
+
aggregateCalculatedRegions.push({ regions, selector: reference });
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
logger.log(`Regions "${reference}" was not found in the screenshot`);
|
|
216
316
|
}
|
|
217
|
-
item.jobs.push(promises[index]);
|
|
218
317
|
});
|
|
219
|
-
|
|
318
|
+
return {
|
|
319
|
+
baseTarget: { ...baseTarget, isTransformed: true },
|
|
320
|
+
baseSetting: getBaseCheckSettings({
|
|
321
|
+
calculatedRegions: aggregateCalculatedRegions,
|
|
322
|
+
}),
|
|
323
|
+
exactEnvironment: baseTarget.environment,
|
|
324
|
+
};
|
|
325
|
+
});
|
|
220
326
|
}
|
|
221
|
-
exports.makeCheck = makeCheck;
|
|
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.makeGetBaseEyes = void 0;
|
|
27
27
|
const to_environment_key_1 = require("../automation/utils/to-environment-key");
|
|
28
28
|
const utils = __importStar(require("@applitools/utils"));
|
|
29
|
+
const report_kobiton_1 = require("../automation/utils/report-kobiton");
|
|
29
30
|
function makeGetBaseEyes({ settings: defaultSettings, eyes, logger: mainLogger, }) {
|
|
30
31
|
const getBaseEyesWithCache = utils.general.wrap(getBaseEyes, (getBaseEyes, options) => {
|
|
31
32
|
const key = (0, to_environment_key_1.toEnvironmentKey)(options.settings.environment);
|
|
@@ -43,7 +44,7 @@ function makeGetBaseEyes({ settings: defaultSettings, eyes, logger: mainLogger,
|
|
|
43
44
|
var _a;
|
|
44
45
|
logger = logger.extend(mainLogger);
|
|
45
46
|
logger.log(`Command "getBaseEyes" is called with settings`, settings);
|
|
46
|
-
|
|
47
|
+
const baseEyes = await eyes.core.base.openEyes({
|
|
47
48
|
settings: {
|
|
48
49
|
...defaultSettings,
|
|
49
50
|
fallbackBaselineId: (_a = settings.environment) === null || _a === void 0 ? void 0 : _a.fallbackBaselineId,
|
|
@@ -51,6 +52,8 @@ function makeGetBaseEyes({ settings: defaultSettings, eyes, logger: mainLogger,
|
|
|
51
52
|
},
|
|
52
53
|
logger,
|
|
53
54
|
});
|
|
55
|
+
(0, report_kobiton_1.reportKobiton)({ driver: settings.driver, settings: baseEyes.test, logger });
|
|
56
|
+
return baseEyes;
|
|
54
57
|
}
|
|
55
58
|
}
|
|
56
59
|
exports.makeGetBaseEyes = makeGetBaseEyes;
|
|
@@ -76,8 +76,8 @@ function makeOpenEyes({ core, spec, logger: mainLogger }) {
|
|
|
76
76
|
getBaseEyes: (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, logger }),
|
|
77
77
|
check: (0, check_1.makeCheck)({ eyes, target: driver, environments, spec, signal, logger }),
|
|
78
78
|
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, environments, spec, signal, logger }),
|
|
79
|
-
close: (0, close_1.makeClose)({ eyes,
|
|
80
|
-
abort: (0, abort_1.makeAbort)({ eyes,
|
|
79
|
+
close: (0, close_1.makeClose)({ eyes, driver, environments, logger }),
|
|
80
|
+
abort: (0, abort_1.makeAbort)({ eyes, driver, environments, controller, logger }),
|
|
81
81
|
getResults: (0, get_results_1.makeGetResults)({ eyes, logger }),
|
|
82
82
|
};
|
|
83
83
|
});
|
package/dist/core.js
CHANGED
|
@@ -26,6 +26,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.makeCore = void 0;
|
|
27
27
|
const logger_1 = require("@applitools/logger");
|
|
28
28
|
const core_base_1 = require("@applitools/core-base");
|
|
29
|
+
const core_1 = require("./classic/core");
|
|
30
|
+
const core_2 = require("./ufg/core");
|
|
29
31
|
const get_viewport_size_1 = require("./automation/get-viewport-size");
|
|
30
32
|
const set_viewport_size_1 = require("./automation/set-viewport-size");
|
|
31
33
|
const get_account_info_1 = require("./get-account-info");
|
|
@@ -50,6 +52,10 @@ function makeCore({ spec, clients, base: defaultBase, concurrency = utils.genera
|
|
|
50
52
|
if (environment.sdk)
|
|
51
53
|
(0, validate_sdk_version_1.validateSdkVersion)(environment.sdk, { logger });
|
|
52
54
|
const base = defaultBase !== null && defaultBase !== void 0 ? defaultBase : (0, core_base_1.makeCore)({ agentId, concurrency, cwd, logger });
|
|
55
|
+
const cores = {
|
|
56
|
+
ufg: (0, core_2.makeCore)({ spec, clients, base, asyncCache, logger }),
|
|
57
|
+
classic: (0, core_1.makeCore)({ spec, clients, base, logger }),
|
|
58
|
+
};
|
|
53
59
|
return utils.general.extend(base, core => {
|
|
54
60
|
return {
|
|
55
61
|
base: base,
|
|
@@ -58,11 +64,23 @@ function makeCore({ spec, clients, base: defaultBase, concurrency = utils.genera
|
|
|
58
64
|
getNMLClient: (0, get_nml_client_1.makeGetNMLClient)({ client: clients === null || clients === void 0 ? void 0 : clients.nml, logger }),
|
|
59
65
|
getECClient: (0, get_ec_client_1.makeGetECClient)({ logger }),
|
|
60
66
|
getAccountInfo: (0, get_account_info_1.makeGetAccountInfo)({ core, logger }),
|
|
61
|
-
|
|
67
|
+
// Note: `defaultBase` is passesd for `base`, and `cores` is not passed here on purpose, so that a manager will create its own base, which would apply the correct concurrency value that was passed to the manager.
|
|
68
|
+
// `defaultBase` is here for testing purposes
|
|
69
|
+
makeManager: (0, make_manager_1.makeMakeManager)({
|
|
70
|
+
spec,
|
|
71
|
+
clients,
|
|
72
|
+
core,
|
|
73
|
+
base: defaultBase,
|
|
74
|
+
agentId,
|
|
75
|
+
cwd,
|
|
76
|
+
environment,
|
|
77
|
+
asyncCache,
|
|
78
|
+
logger,
|
|
79
|
+
}),
|
|
62
80
|
locate: (0, locate_1.makeLocate)({ spec, core, logger }),
|
|
63
81
|
locateText: (0, locate_text_1.makeLocateText)({ spec, core, logger }),
|
|
64
82
|
extractText: (0, extract_text_1.makeExtractText)({ spec, core, logger }),
|
|
65
|
-
openEyes: (0, open_eyes_1.makeOpenEyes)({ spec, clients, core, environment, asyncCache, logger }),
|
|
83
|
+
openEyes: (0, open_eyes_1.makeOpenEyes)({ spec, clients, core, cores, environment, asyncCache, logger }),
|
|
66
84
|
closeBatch: (0, close_batch_1.makeCloseBatch)({ core, logger }),
|
|
67
85
|
deleteTest: (0, delete_test_1.makeDeleteTest)({ core, logger }),
|
|
68
86
|
};
|
package/dist/make-manager.js
CHANGED
|
@@ -44,8 +44,8 @@ function makeMakeManager({ spec, clients, core, base: defaultBase, agentId: defa
|
|
|
44
44
|
logger.log('Command "makeManager" is called with settings', settings);
|
|
45
45
|
const base = defaultBase !== null && defaultBase !== void 0 ? defaultBase : (0, core_base_1.makeCore)({ agentId: settings.agentId, concurrency: settings.concurrency, cwd, logger });
|
|
46
46
|
const cores = {
|
|
47
|
-
ufg: (0, core_2.makeCore)({ spec, base, fetchConcurrency: settings.fetchConcurrency, asyncCache, logger }),
|
|
48
|
-
classic: (0, core_1.makeCore)({ spec, base, logger }),
|
|
47
|
+
ufg: (0, core_2.makeCore)({ spec, clients, base, fetchConcurrency: settings.fetchConcurrency, asyncCache, logger }),
|
|
48
|
+
classic: (0, core_1.makeCore)({ spec, clients, base, logger }),
|
|
49
49
|
};
|
|
50
50
|
const storage = [];
|
|
51
51
|
return {
|
|
@@ -66,7 +66,7 @@ function makeCheckAndClose({ eyes, target: defaultTarget, environments: defaultE
|
|
|
66
66
|
let userAgent;
|
|
67
67
|
const driver = spec && (0, driver_1.isDriver)(target, spec)
|
|
68
68
|
? await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger })
|
|
69
|
-
:
|
|
69
|
+
: undefined;
|
|
70
70
|
if (driver) {
|
|
71
71
|
const environment = await driver.getEnvironment();
|
|
72
72
|
const currentContext = driver.currentContext;
|
|
@@ -148,7 +148,7 @@ function makeCheckAndClose({ eyes, target: defaultTarget, environments: defaultE
|
|
|
148
148
|
},
|
|
149
149
|
logger: environmentLogger,
|
|
150
150
|
});
|
|
151
|
-
const baseEyes = await eyes.getBaseEyes({ settings: { environment }, logger });
|
|
151
|
+
const baseEyes = await eyes.getBaseEyes({ settings: { environment, driver }, logger });
|
|
152
152
|
try {
|
|
153
153
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
154
154
|
environmentLogger.warn('Command "check" was aborted before rendering');
|
package/dist/ufg/check.js
CHANGED
|
@@ -66,7 +66,7 @@ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironme
|
|
|
66
66
|
let userAgent;
|
|
67
67
|
const driver = spec && (0, driver_1.isDriver)(target, spec)
|
|
68
68
|
? await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger })
|
|
69
|
-
:
|
|
69
|
+
: undefined;
|
|
70
70
|
if (driver) {
|
|
71
71
|
const environment = await driver.getEnvironment();
|
|
72
72
|
const currentContext = driver.currentContext;
|
|
@@ -148,7 +148,7 @@ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironme
|
|
|
148
148
|
},
|
|
149
149
|
logger: environmentLogger,
|
|
150
150
|
});
|
|
151
|
-
const baseEyes = await eyes.getBaseEyes({ settings: { environment }, logger: environmentLogger });
|
|
151
|
+
const baseEyes = await eyes.getBaseEyes({ settings: { environment, driver }, logger: environmentLogger });
|
|
152
152
|
try {
|
|
153
153
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
154
154
|
environmentLogger.warn('Command "check" was aborted before rendering');
|
|
@@ -25,6 +25,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.makeGetBaseEyes = void 0;
|
|
27
27
|
const utils = __importStar(require("@applitools/utils"));
|
|
28
|
+
const report_kobiton_1 = require("../automation/utils/report-kobiton");
|
|
28
29
|
function makeGetBaseEyes({ settings: defaultSettings, eyes, logger: mainLogger, }) {
|
|
29
30
|
const getBaseEyesWithCache = utils.general.wrap(getBaseEyes, (getBaseEyes, options) => {
|
|
30
31
|
const key = JSON.stringify(options.settings.environment);
|
|
@@ -54,14 +55,24 @@ function makeGetBaseEyes({ settings: defaultSettings, eyes, logger: mainLogger,
|
|
|
54
55
|
settings: { environment: settings.environment },
|
|
55
56
|
logger,
|
|
56
57
|
});
|
|
57
|
-
|
|
58
|
+
const baseEyes = await eyes.core.base.openEyes({
|
|
58
59
|
settings: {
|
|
59
60
|
...defaultSettings,
|
|
60
61
|
fallbackBaselineId: (_a = settings.environment) === null || _a === void 0 ? void 0 : _a.fallbackBaselineId,
|
|
61
|
-
environment: {
|
|
62
|
+
environment: {
|
|
63
|
+
...defaultSettings.environment,
|
|
64
|
+
...environment,
|
|
65
|
+
os: settings.environment.os,
|
|
66
|
+
displayOs: settings.environment.displayOs,
|
|
67
|
+
hostingApp: settings.environment.hostingApp,
|
|
68
|
+
displayHostingApp: settings.environment.displayHostingApp,
|
|
69
|
+
properties: settings.environment.properties,
|
|
70
|
+
},
|
|
62
71
|
},
|
|
63
72
|
logger,
|
|
64
73
|
});
|
|
74
|
+
(0, report_kobiton_1.reportKobiton)({ driver: settings.driver, settings: baseEyes.test, logger });
|
|
75
|
+
return baseEyes;
|
|
65
76
|
}
|
|
66
77
|
}
|
|
67
78
|
exports.makeGetBaseEyes = makeGetBaseEyes;
|
package/dist/ufg/open-eyes.js
CHANGED
|
@@ -76,8 +76,8 @@ function makeOpenEyes({ core, spec, logger: mainLogger }) {
|
|
|
76
76
|
getBaseEyes: (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, logger }),
|
|
77
77
|
check: (0, check_1.makeCheck)({ eyes, target: driver, environments, spec, signal, logger }),
|
|
78
78
|
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, environments, spec, signal, logger }),
|
|
79
|
-
close: (0, close_1.makeClose)({ eyes,
|
|
80
|
-
abort: (0, abort_1.makeAbort)({ eyes,
|
|
79
|
+
close: (0, close_1.makeClose)({ eyes, driver, logger }),
|
|
80
|
+
abort: (0, abort_1.makeAbort)({ eyes, driver, controller, logger }),
|
|
81
81
|
getResults: (0, get_results_1.makeGetResults)({ eyes, logger }),
|
|
82
82
|
};
|
|
83
83
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.14.0",
|
|
4
4
|
"homepage": "https://applitools.com",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
@@ -74,20 +74,20 @@
|
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"@applitools/core-base": "1.
|
|
77
|
+
"@applitools/core-base": "1.13.0",
|
|
78
78
|
"@applitools/dom-capture": "11.2.6",
|
|
79
|
-
"@applitools/dom-snapshot": "4.
|
|
80
|
-
"@applitools/driver": "1.
|
|
81
|
-
"@applitools/ec-client": "1.8.
|
|
82
|
-
"@applitools/logger": "2.0.
|
|
83
|
-
"@applitools/nml-client": "1.8.
|
|
84
|
-
"@applitools/req": "1.6.
|
|
85
|
-
"@applitools/screenshoter": "3.8.
|
|
79
|
+
"@applitools/dom-snapshot": "4.11.1",
|
|
80
|
+
"@applitools/driver": "1.17.2",
|
|
81
|
+
"@applitools/ec-client": "1.8.4",
|
|
82
|
+
"@applitools/logger": "2.0.16",
|
|
83
|
+
"@applitools/nml-client": "1.8.4",
|
|
84
|
+
"@applitools/req": "1.6.7",
|
|
85
|
+
"@applitools/screenshoter": "3.8.31",
|
|
86
86
|
"@applitools/snippets": "2.4.25",
|
|
87
|
-
"@applitools/socket": "1.1.
|
|
88
|
-
"@applitools/spec-driver-webdriver": "1.1.
|
|
89
|
-
"@applitools/ufg-client": "1.11.
|
|
90
|
-
"@applitools/utils": "1.7.
|
|
87
|
+
"@applitools/socket": "1.1.16",
|
|
88
|
+
"@applitools/spec-driver-webdriver": "1.1.7",
|
|
89
|
+
"@applitools/ufg-client": "1.11.2",
|
|
90
|
+
"@applitools/utils": "1.7.2",
|
|
91
91
|
"@types/ws": "8.5.5",
|
|
92
92
|
"abort-controller": "3.0.0",
|
|
93
93
|
"chalk": "4.1.2",
|
|
@@ -100,11 +100,11 @@
|
|
|
100
100
|
"devDependencies": {
|
|
101
101
|
"@applitools/bongo": "^5.10.0",
|
|
102
102
|
"@applitools/sea": "^1.0.0",
|
|
103
|
-
"@applitools/spec-driver-puppeteer": "^1.4.
|
|
104
|
-
"@applitools/spec-driver-selenium": "^1.5.
|
|
103
|
+
"@applitools/spec-driver-puppeteer": "^1.4.7",
|
|
104
|
+
"@applitools/spec-driver-selenium": "^1.5.78",
|
|
105
105
|
"@applitools/test-server": "^1.2.2",
|
|
106
106
|
"@applitools/test-utils": "^1.5.17",
|
|
107
|
-
"@applitools/tunnel-client": "^1.5.
|
|
107
|
+
"@applitools/tunnel-client": "^1.5.2",
|
|
108
108
|
"@types/node": "^12.20.55",
|
|
109
109
|
"@types/selenium-webdriver": "^4.1.2",
|
|
110
110
|
"@types/semver": "^7.5.4",
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Eyes, AbortSettings, Environment } from './types';
|
|
2
2
|
import { type Logger } from '@applitools/logger';
|
|
3
3
|
import { type AbortController } from 'abort-controller';
|
|
4
|
-
import { type
|
|
4
|
+
import { type Driver, type SpecType } from '@applitools/driver';
|
|
5
5
|
type Options<TSpec extends SpecType> = {
|
|
6
6
|
eyes: Eyes<TSpec>;
|
|
7
|
-
|
|
7
|
+
driver?: Driver<TSpec>;
|
|
8
8
|
controller: AbortController;
|
|
9
9
|
environments?: Environment[];
|
|
10
|
-
spec?: SpecDriver<TSpec>;
|
|
11
10
|
logger: Logger;
|
|
12
11
|
};
|
|
13
|
-
export declare function makeAbort<TSpec extends SpecType>({ eyes,
|
|
12
|
+
export declare function makeAbort<TSpec extends SpecType>({ eyes, driver, controller, environments: defaultEnvironments, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }?: {
|
|
14
13
|
settings?: AbortSettings | undefined;
|
|
15
14
|
logger?: Logger | undefined;
|
|
16
15
|
}) => Promise<void>;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Eyes, CloseSettings, Environment } from '../ufg/types';
|
|
2
2
|
import { type Logger } from '@applitools/logger';
|
|
3
|
-
import { type
|
|
3
|
+
import { type Driver, type SpecType } from '@applitools/driver';
|
|
4
4
|
type Options<TSpec extends SpecType> = {
|
|
5
5
|
eyes: Eyes<TSpec>;
|
|
6
|
-
|
|
6
|
+
driver?: Driver<TSpec>;
|
|
7
7
|
environments?: Environment[];
|
|
8
|
-
spec?: SpecDriver<TSpec>;
|
|
9
8
|
logger: Logger;
|
|
10
9
|
};
|
|
11
|
-
export declare function makeClose<TSpec extends SpecType>({ eyes,
|
|
10
|
+
export declare function makeClose<TSpec extends SpecType>({ eyes, driver, environments: defaultEnvironments, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }?: {
|
|
12
11
|
settings?: CloseSettings | undefined;
|
|
13
12
|
logger?: Logger | undefined;
|
|
14
13
|
}) => Promise<void>;
|
|
@@ -33,6 +33,10 @@ export interface AndroidDeviceEnvironment {
|
|
|
33
33
|
}
|
|
34
34
|
export type RenderEnvironment = (DesktopBrowserEnvironment | ChromeEmulationDeviceEnvironment | IOSDeviceEnvironment | AndroidDeviceEnvironment) & {
|
|
35
35
|
environmentId?: string;
|
|
36
|
+
os?: string;
|
|
37
|
+
displayOs?: string;
|
|
38
|
+
hostingApp?: string;
|
|
39
|
+
displayHostingApp?: string;
|
|
36
40
|
properties?: BaseCore.CustomProperty[];
|
|
37
41
|
fallbackBaselineId?: string;
|
|
38
42
|
};
|
|
@@ -42,7 +46,7 @@ export type ExactEnvironment = BaseCore.Environment & {
|
|
|
42
46
|
fallbackBaselineId?: string;
|
|
43
47
|
};
|
|
44
48
|
export type Environment = RenderEnvironment | ExactEnvironment;
|
|
45
|
-
export interface Core<TSpec extends SpecType> extends BaseCore.Core {
|
|
49
|
+
export interface Core<TSpec extends SpecType> extends Omit<BaseCore.Core, 'openEyes'> {
|
|
46
50
|
readonly base: BaseCore.Core;
|
|
47
51
|
getViewportSize?(options: {
|
|
48
52
|
target: DriverTarget<TSpec>;
|
|
@@ -80,11 +84,11 @@ export interface Core<TSpec extends SpecType> extends BaseCore.Core {
|
|
|
80
84
|
logger?: Logger;
|
|
81
85
|
}): Promise<string[]>;
|
|
82
86
|
}
|
|
83
|
-
export interface Eyes<TSpec extends SpecType> extends BaseCore.Eyes {
|
|
87
|
+
export interface Eyes<TSpec extends SpecType> extends Omit<BaseCore.Eyes, 'core' | 'check' | 'checkAndClose'> {
|
|
84
88
|
readonly core: Core<TSpec>;
|
|
85
89
|
readonly storage: EyesStorage;
|
|
86
90
|
getBaseEyes(options: {
|
|
87
|
-
settings: GetBaseEyesSettings
|
|
91
|
+
settings: GetBaseEyesSettings<TSpec>;
|
|
88
92
|
logger?: Logger;
|
|
89
93
|
}): Promise<BaseCore.Eyes>;
|
|
90
94
|
check(options?: {
|
|
@@ -114,8 +118,9 @@ export type EyesStorage = Map<string, {
|
|
|
114
118
|
eyes: ControlledPromise<BaseCore.Eyes>;
|
|
115
119
|
jobs: Promise<void>[];
|
|
116
120
|
}>;
|
|
117
|
-
export interface GetBaseEyesSettings {
|
|
121
|
+
export interface GetBaseEyesSettings<TSpec extends SpecType> {
|
|
118
122
|
environment: Environment;
|
|
123
|
+
driver?: Driver<TSpec>;
|
|
119
124
|
}
|
|
120
125
|
export type LazyLoadOptions = {
|
|
121
126
|
scrollLength?: number;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Driver, SpecType } from '@applitools/driver';
|
|
2
|
+
import type { Logger } from '@applitools/logger';
|
|
3
|
+
type Options<TSpec extends SpecType> = {
|
|
4
|
+
driver?: Driver<TSpec>;
|
|
5
|
+
settings: {
|
|
6
|
+
batchId: string;
|
|
7
|
+
resultsUrl: string;
|
|
8
|
+
};
|
|
9
|
+
logger: Logger;
|
|
10
|
+
};
|
|
11
|
+
export declare function reportKobiton<TSpec extends SpecType>({ driver, settings, logger }: Options<TSpec>): Promise<void>;
|
|
12
|
+
export {};
|
|
@@ -8,7 +8,7 @@ type Options<TSpec extends SpecType> = {
|
|
|
8
8
|
logger: Logger;
|
|
9
9
|
};
|
|
10
10
|
export declare function makeGetBaseEyes<TSpec extends SpecType>({ settings: defaultSettings, eyes, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }: {
|
|
11
|
-
settings: GetBaseEyesSettings
|
|
11
|
+
settings: GetBaseEyesSettings<TSpec>;
|
|
12
12
|
logger?: Logger | undefined;
|
|
13
13
|
}) => Promise<BaseEyes>;
|
|
14
14
|
export {};
|
package/types/open-eyes.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ type Options<TSpec extends SpecType> = {
|
|
|
9
9
|
logger: Logger;
|
|
10
10
|
};
|
|
11
11
|
export declare function makeGetBaseEyes<TSpec extends SpecType>({ settings: defaultSettings, eyes, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }: {
|
|
12
|
-
settings: GetBaseEyesSettings
|
|
12
|
+
settings: GetBaseEyesSettings<TSpec>;
|
|
13
13
|
logger?: Logger | undefined;
|
|
14
14
|
}) => Promise<BaseEyes>;
|
|
15
15
|
export {};
|