@applitools/core 4.11.2 → 4.12.1
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 +54 -0
- package/dist/automation/utils/to-base-check-settings.js +2 -1
- package/dist/autonomous/core.js +25 -0
- package/dist/autonomous/create-render-results.js +33 -0
- package/dist/autonomous/create-render-target.js +32 -0
- package/dist/autonomous/get-render-results.js +55 -0
- package/dist/autonomous/open-eyes.js +11 -0
- package/dist/autonomous/start-renders.js +67 -0
- package/dist/autonomous/take-snapshots.js +12 -0
- package/dist/autonomous/types.js +17 -0
- package/dist/classic/open-eyes.js +3 -2
- package/dist/index.js +2 -0
- package/dist/ufg/check-and-close.js +1 -2
- package/dist/ufg/check.js +1 -2
- package/dist/ufg/core.js +3 -1
- package/dist/ufg/open-eyes.js +3 -2
- package/dist/ufg/take-snapshots.js +115 -0
- package/dist/ufg/utils/to-safe-check-settings.js +69 -0
- package/package.json +7 -7
- package/types/autonomous/core.d.ts +20 -0
- package/types/autonomous/create-render-results.d.ts +13 -0
- package/types/autonomous/create-render-target.d.ts +12 -0
- package/types/autonomous/get-render-results.d.ts +12 -0
- package/types/autonomous/open-eyes.d.ts +13 -0
- package/types/autonomous/start-renders.d.ts +12 -0
- package/types/autonomous/take-snapshots.d.ts +14 -0
- package/types/autonomous/types.d.ts +57 -0
- package/types/index.d.ts +1 -0
- package/types/ufg/check-and-close.d.ts +4 -3
- package/types/ufg/core.d.ts +2 -2
- package/types/ufg/take-snapshots.d.ts +19 -0
- package/types/ufg/types.d.ts +23 -5
- package/types/ufg/utils/to-generated-selectors.d.ts +13 -12
- package/types/ufg/utils/to-safe-check-settings.d.ts +22 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.12.1](https://github.com/Applitools-Dev/sdk/compare/js/core@4.12.0...js/core@4.12.1) (2024-04-11)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* fixed environment props in autonomous ([#2314](https://github.com/Applitools-Dev/sdk/issues/2314)) ([adfcf5b](https://github.com/Applitools-Dev/sdk/commit/adfcf5b178e92da34bea0dd87e1b736df9ae0a2b))
|
|
9
|
+
|
|
10
|
+
## [4.12.0](https://github.com/Applitools-Dev/sdk/compare/js/core@4.11.2...js/core@4.12.0) (2024-04-10)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* add prefixRenderId to SnapshotSettings ([073c81b](https://github.com/Applitools-Dev/sdk/commit/073c81b7e96411b643fe907a588f0c1ef95c4d48))
|
|
16
|
+
* refactor check to have a modular structure ([#2307](https://github.com/Applitools-Dev/sdk/issues/2307)) ([b9818f4](https://github.com/Applitools-Dev/sdk/commit/b9818f46e0a579ad0a4a6beaf142171aea7ce0fd))
|
|
17
|
+
* upgrade execution-grid-tunnel to 3 ([#2301](https://github.com/Applitools-Dev/sdk/issues/2301)) ([4f0426d](https://github.com/Applitools-Dev/sdk/commit/4f0426d5495142386d54121fde8bc1fb647728a7))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* clone the check settings in eyes check ([#2251](https://github.com/Applitools-Dev/sdk/issues/2251)) ([9517d66](https://github.com/Applitools-Dev/sdk/commit/9517d665976949458aecfb31e052c19d7109a0c4))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Dependencies
|
|
26
|
+
|
|
27
|
+
* @applitools/dom-snapshot bumped to 4.10.0
|
|
28
|
+
#### Features
|
|
29
|
+
|
|
30
|
+
* nested css ([#2296](https://github.com/Applitools-Dev/sdk/issues/2296)) ([16068dc](https://github.com/Applitools-Dev/sdk/commit/16068dcd346ee66ed254f6b2c40f7a76ec5cddb7))
|
|
31
|
+
* @applitools/nml-client bumped to 1.8.0
|
|
32
|
+
#### Features
|
|
33
|
+
|
|
34
|
+
* refactor check to have a modular structure ([#2307](https://github.com/Applitools-Dev/sdk/issues/2307)) ([b9818f4](https://github.com/Applitools-Dev/sdk/commit/b9818f46e0a579ad0a4a6beaf142171aea7ce0fd))
|
|
35
|
+
* @applitools/tunnel-client bumped to 1.5.0
|
|
36
|
+
#### Features
|
|
37
|
+
|
|
38
|
+
* upgrade execution-grid-tunnel to 3 ([#2301](https://github.com/Applitools-Dev/sdk/issues/2301)) ([4f0426d](https://github.com/Applitools-Dev/sdk/commit/4f0426d5495142386d54121fde8bc1fb647728a7))
|
|
39
|
+
* @applitools/ufg-client bumped to 1.11.0
|
|
40
|
+
#### Features
|
|
41
|
+
|
|
42
|
+
* add prefixRenderId to SnapshotSettings ([073c81b](https://github.com/Applitools-Dev/sdk/commit/073c81b7e96411b643fe907a588f0c1ef95c4d48))
|
|
43
|
+
* refactor check to have a modular structure ([#2307](https://github.com/Applitools-Dev/sdk/issues/2307)) ([b9818f4](https://github.com/Applitools-Dev/sdk/commit/b9818f46e0a579ad0a4a6beaf142171aea7ce0fd))
|
|
44
|
+
* @applitools/ec-client bumped to 1.8.0
|
|
45
|
+
#### Features
|
|
46
|
+
|
|
47
|
+
* upgrade execution-grid-tunnel to 3 ([#2301](https://github.com/Applitools-Dev/sdk/issues/2301)) ([4f0426d](https://github.com/Applitools-Dev/sdk/commit/4f0426d5495142386d54121fde8bc1fb647728a7))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
* @applitools/core-base bumped to 1.11.0
|
|
52
|
+
#### Features
|
|
53
|
+
|
|
54
|
+
* refactor check to have a modular structure ([#2307](https://github.com/Applitools-Dev/sdk/issues/2307)) ([b9818f4](https://github.com/Applitools-Dev/sdk/commit/b9818f46e0a579ad0a4a6beaf142171aea7ce0fd))
|
|
55
|
+
* report timestamp to backend ([#2278](https://github.com/Applitools-Dev/sdk/issues/2278)) ([3ff74c6](https://github.com/Applitools-Dev/sdk/commit/3ff74c66a33174025e5fab3979b748dfeb53e7b8))
|
|
56
|
+
|
|
3
57
|
## [4.11.2](https://github.com/Applitools-Dev/sdk/compare/js/core@4.11.1...js/core@4.11.2) (2024-04-01)
|
|
4
58
|
|
|
5
59
|
|
|
@@ -106,6 +106,7 @@ function toBaseCheckSettings({ settings }) {
|
|
|
106
106
|
else if (target) {
|
|
107
107
|
delete transformedSettings.region;
|
|
108
108
|
}
|
|
109
|
+
let currRegion = 0;
|
|
109
110
|
regionTypes.forEach(regionType => {
|
|
110
111
|
var _a;
|
|
111
112
|
if (!transformedSettings[`${regionType}Regions`])
|
|
@@ -114,7 +115,7 @@ function toBaseCheckSettings({ settings }) {
|
|
|
114
115
|
const { region, ...options } = utils.types.has(reference, 'region') ? reference : { region: reference };
|
|
115
116
|
if (isRegion(region))
|
|
116
117
|
return reference;
|
|
117
|
-
const { selector, regions } = calculatedRegions
|
|
118
|
+
const { selector, regions } = calculatedRegions[currRegion++];
|
|
118
119
|
return regions.map(region => ({
|
|
119
120
|
region,
|
|
120
121
|
regionId: utils.types.isString(selector) ? selector : selector === null || selector === void 0 ? void 0 : selector.selector,
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeAutonomousCore = void 0;
|
|
4
|
+
const logger_1 = require("@applitools/logger");
|
|
5
|
+
const core_1 = require("../ufg/core");
|
|
6
|
+
const take_snapshots_1 = require("./take-snapshots");
|
|
7
|
+
const create_render_target_1 = require("./create-render-target");
|
|
8
|
+
const start_renders_1 = require("./start-renders");
|
|
9
|
+
const get_render_results_1 = require("./get-render-results");
|
|
10
|
+
const create_render_results_1 = require("./create-render-results");
|
|
11
|
+
const open_eyes_1 = require("./open-eyes");
|
|
12
|
+
function makeAutonomousCore({ spec, clients, base: defaultBase, asyncCache, agentId = 'core-autonomous', cwd, logger: defaultLogger, } = {}) {
|
|
13
|
+
const logger = (0, logger_1.makeLogger)({ logger: defaultLogger, format: { label: 'core-autonomous' } });
|
|
14
|
+
const core = (0, core_1.makeCore)({ spec, clients, base: defaultBase, asyncCache, agentId, cwd, logger });
|
|
15
|
+
return {
|
|
16
|
+
type: 'autonomous',
|
|
17
|
+
takeSnapshots: spec && (0, take_snapshots_1.makeTakeSnapshots)({ core, logger }),
|
|
18
|
+
createRenderTarget: (0, create_render_target_1.makeCreateRenderTarget)({ core, logger }),
|
|
19
|
+
startRenders: (0, start_renders_1.makeStartRenders)({ core, logger }),
|
|
20
|
+
getRenderResults: (0, get_render_results_1.makeGetRenderResults)({ core, logger }),
|
|
21
|
+
createRenderResults: (0, create_render_results_1.makeCreateRenderResults)({ core, logger }),
|
|
22
|
+
openEyes: (0, open_eyes_1.makeOpenEyes)({ core, logger }),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
exports.makeAutonomousCore = makeAutonomousCore;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeCreateRenderResults = void 0;
|
|
4
|
+
const ufg_client_1 = require("@applitools/ufg-client");
|
|
5
|
+
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
6
|
+
function makeCreateRenderResults(_options) {
|
|
7
|
+
return async function createRenderResults({ renders, rawResults, }) {
|
|
8
|
+
const results = rawResults.map((rawResult, index) => (0, ufg_client_1.toRenderResult)(rawResult, { renderId: renders[index].render.renderId }));
|
|
9
|
+
return results.map(({ selectorRegions, renderId, status, error, ...baseTarget }, index) => {
|
|
10
|
+
const { elementReferences: selectors, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
|
|
11
|
+
settings: renders[index].settings,
|
|
12
|
+
});
|
|
13
|
+
const baseSettings = getBaseCheckSettings({
|
|
14
|
+
calculatedRegions: selectors.calculate.map((_, index) => {
|
|
15
|
+
var _a;
|
|
16
|
+
return ({
|
|
17
|
+
regions: (_a = selectorRegions === null || selectorRegions === void 0 ? void 0 : selectorRegions[index]) !== null && _a !== void 0 ? _a : [],
|
|
18
|
+
});
|
|
19
|
+
}),
|
|
20
|
+
});
|
|
21
|
+
baseSettings.renderId = renderId;
|
|
22
|
+
return {
|
|
23
|
+
status,
|
|
24
|
+
error,
|
|
25
|
+
target: { ...baseTarget, isTransformed: true },
|
|
26
|
+
settings: baseSettings,
|
|
27
|
+
environment: renders[index].environment,
|
|
28
|
+
account: renders[index].account,
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
exports.makeCreateRenderResults = makeCreateRenderResults;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeCreateRenderTarget = void 0;
|
|
4
|
+
function makeCreateRenderTarget({ core, logger: defaultLogger }) {
|
|
5
|
+
return async function createRenderTarget({ snapshot, logger = defaultLogger, }) {
|
|
6
|
+
const ufgClient = await core.getUFGClient({
|
|
7
|
+
settings: {
|
|
8
|
+
...snapshot.account.ufgServer,
|
|
9
|
+
eyesServerUrl: snapshot.account.eyesServer.eyesServerUrl,
|
|
10
|
+
apiKey: snapshot.account.eyesServer.apiKey,
|
|
11
|
+
},
|
|
12
|
+
logger,
|
|
13
|
+
});
|
|
14
|
+
const target = await ufgClient.createRenderTarget({
|
|
15
|
+
snapshot: snapshot.target,
|
|
16
|
+
settings: {
|
|
17
|
+
environment: snapshot.environment,
|
|
18
|
+
cookies: snapshot.target.cookies,
|
|
19
|
+
headers: {
|
|
20
|
+
Referer: snapshot.url,
|
|
21
|
+
'User-Agent': snapshot.userAgent,
|
|
22
|
+
...snapshot.settings.headers,
|
|
23
|
+
},
|
|
24
|
+
proxy: snapshot.account.eyesServer.proxy,
|
|
25
|
+
autProxy: snapshot.settings.autProxy,
|
|
26
|
+
},
|
|
27
|
+
logger,
|
|
28
|
+
});
|
|
29
|
+
return { ...snapshot, target };
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
exports.makeCreateRenderTarget = makeCreateRenderTarget;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeGetRenderResults = void 0;
|
|
4
|
+
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
5
|
+
function makeGetRenderResults({ core, logger: defaultLogger }) {
|
|
6
|
+
return async function getRenderResults({ renders, logger = defaultLogger, }) {
|
|
7
|
+
const clients = await renders.reduce(async (promise, render) => {
|
|
8
|
+
const ufgClient = await core.getUFGClient({
|
|
9
|
+
settings: {
|
|
10
|
+
...render.account.ufgServer,
|
|
11
|
+
eyesServerUrl: render.account.eyesServer.eyesServerUrl,
|
|
12
|
+
apiKey: render.account.eyesServer.apiKey,
|
|
13
|
+
},
|
|
14
|
+
logger,
|
|
15
|
+
});
|
|
16
|
+
return promise.then(clients => {
|
|
17
|
+
const targets = clients.get(ufgClient);
|
|
18
|
+
if (targets) {
|
|
19
|
+
targets.push(render);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
clients.set(ufgClient, [render]);
|
|
23
|
+
}
|
|
24
|
+
return clients;
|
|
25
|
+
});
|
|
26
|
+
}, Promise.resolve(new Map()));
|
|
27
|
+
const results = await Promise.all(Array.from(clients.entries(), async ([ufgClient, renders]) => {
|
|
28
|
+
const results = await ufgClient.getRenderResults({ renders: renders.map(render => render.render), logger });
|
|
29
|
+
return results.map(({ selectorRegions, renderId, status, error, ...baseTarget }, index) => {
|
|
30
|
+
const { elementReferences: selectors, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
|
|
31
|
+
settings: renders[index].settings,
|
|
32
|
+
});
|
|
33
|
+
const baseSettings = getBaseCheckSettings({
|
|
34
|
+
calculatedRegions: selectors.calculate.map((_, index) => {
|
|
35
|
+
var _a;
|
|
36
|
+
return ({
|
|
37
|
+
regions: (_a = selectorRegions === null || selectorRegions === void 0 ? void 0 : selectorRegions[index]) !== null && _a !== void 0 ? _a : [],
|
|
38
|
+
});
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
baseSettings.renderId = renderId;
|
|
42
|
+
return {
|
|
43
|
+
status,
|
|
44
|
+
error,
|
|
45
|
+
target: { ...baseTarget, isTransformed: true },
|
|
46
|
+
settings: baseSettings,
|
|
47
|
+
environment: renders[index].environment,
|
|
48
|
+
account: renders[index].account,
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
}));
|
|
52
|
+
return results.flat();
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
exports.makeGetRenderResults = makeGetRenderResults;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeOpenEyes = void 0;
|
|
4
|
+
const populate_eyes_server_settings_1 = require("../utils/populate-eyes-server-settings");
|
|
5
|
+
function makeOpenEyes({ core, logger: defaultLogger }) {
|
|
6
|
+
return async function openEyes({ settings, logger = defaultLogger, }) {
|
|
7
|
+
(0, populate_eyes_server_settings_1.populateEyesServerSettings)(settings);
|
|
8
|
+
return core.base.openEyes({ settings, logger });
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.makeOpenEyes = makeOpenEyes;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeStartRenders = void 0;
|
|
4
|
+
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
5
|
+
function makeStartRenders({ core, logger: defaultLogger }) {
|
|
6
|
+
return async function startRenders({ targets, logger = defaultLogger, }) {
|
|
7
|
+
const clients = await targets.reduce(async (promise, target) => {
|
|
8
|
+
const ufgClient = await core.getUFGClient({
|
|
9
|
+
settings: {
|
|
10
|
+
...target.account.ufgServer,
|
|
11
|
+
eyesServerUrl: target.account.eyesServer.eyesServerUrl,
|
|
12
|
+
apiKey: target.account.eyesServer.apiKey,
|
|
13
|
+
},
|
|
14
|
+
logger,
|
|
15
|
+
});
|
|
16
|
+
return promise.then(clients => {
|
|
17
|
+
const targets = clients.get(ufgClient);
|
|
18
|
+
if (targets) {
|
|
19
|
+
targets.push(target);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
clients.set(ufgClient, [target]);
|
|
23
|
+
}
|
|
24
|
+
return clients;
|
|
25
|
+
});
|
|
26
|
+
}, Promise.resolve(new Map()));
|
|
27
|
+
const renders = await Promise.all(Array.from(clients.entries(), async ([ufgClient, targets]) => {
|
|
28
|
+
const [renders, ...environments] = await Promise.all([
|
|
29
|
+
ufgClient.startRenders({
|
|
30
|
+
renders: targets.map(target => {
|
|
31
|
+
var _a;
|
|
32
|
+
const { elementReferences: selectors } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings: target.settings });
|
|
33
|
+
return {
|
|
34
|
+
target: target.target,
|
|
35
|
+
settings: {
|
|
36
|
+
...target.settings,
|
|
37
|
+
region: (_a = selectors.target) !== null && _a !== void 0 ? _a : target.settings.region,
|
|
38
|
+
scrollRootElement: selectors.scrolling,
|
|
39
|
+
selectorsToCalculate: selectors.calculate,
|
|
40
|
+
includeFullPageSize: Boolean(target.settings.pageId),
|
|
41
|
+
environment: target.environment,
|
|
42
|
+
uploadUrl: target.account.uploadUrl,
|
|
43
|
+
stitchingServiceUrl: target.account.stitchingServiceUrl,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}),
|
|
47
|
+
logger,
|
|
48
|
+
}),
|
|
49
|
+
...targets.map(async (target) => {
|
|
50
|
+
const environment = await ufgClient.getActualEnvironment({
|
|
51
|
+
settings: { environment: target.environment },
|
|
52
|
+
logger,
|
|
53
|
+
});
|
|
54
|
+
return { ...environment, properties: target.environment.properties };
|
|
55
|
+
}),
|
|
56
|
+
]);
|
|
57
|
+
return renders.map((render, index) => ({
|
|
58
|
+
render,
|
|
59
|
+
settings: targets[index].settings,
|
|
60
|
+
environment: environments[index],
|
|
61
|
+
account: targets[index].account,
|
|
62
|
+
}));
|
|
63
|
+
}));
|
|
64
|
+
return renders.flat();
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
exports.makeStartRenders = makeStartRenders;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeTakeSnapshots = void 0;
|
|
4
|
+
const populate_eyes_server_settings_1 = require("../utils/populate-eyes-server-settings");
|
|
5
|
+
function makeTakeSnapshots({ core, logger: defaultLogger }) {
|
|
6
|
+
return async function takeSnapshots({ target, settings, logger = defaultLogger, }) {
|
|
7
|
+
(0, populate_eyes_server_settings_1.populateEyesServerSettings)(settings);
|
|
8
|
+
const account = await core.base.getAccountInfo({ settings: settings, logger });
|
|
9
|
+
return core.takeSnapshots({ target, settings, account, logger });
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
exports.makeTakeSnapshots = makeTakeSnapshots;
|
|
@@ -0,0 +1,17 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("../ufg/types"), exports);
|
|
@@ -52,6 +52,7 @@ function makeOpenEyes({ core, spec, logger: mainLogger }) {
|
|
|
52
52
|
}
|
|
53
53
|
const environments = await (0, extract_default_environments_1.extractDefaultEnvironments)({ driver, settings });
|
|
54
54
|
const controller = new abort_controller_1.AbortController();
|
|
55
|
+
const { signal } = controller;
|
|
55
56
|
const account = await core.getAccountInfo({ settings, logger });
|
|
56
57
|
return utils.general.extend({}, eyes => {
|
|
57
58
|
var _a, _b, _c, _d;
|
|
@@ -73,8 +74,8 @@ function makeOpenEyes({ core, spec, logger: mainLogger }) {
|
|
|
73
74
|
running: true,
|
|
74
75
|
storage,
|
|
75
76
|
getBaseEyes: (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, logger }),
|
|
76
|
-
check: (0, check_1.makeCheck)({ eyes, target: driver, environments, spec, signal
|
|
77
|
-
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, environments, spec, signal
|
|
77
|
+
check: (0, check_1.makeCheck)({ eyes, target: driver, environments, spec, signal, logger }),
|
|
78
|
+
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, environments, spec, signal, logger }),
|
|
78
79
|
close: (0, close_1.makeClose)({ eyes, target: driver, environments, spec, logger }),
|
|
79
80
|
abort: (0, abort_1.makeAbort)({ eyes, target: driver, environments, spec, controller, logger }),
|
|
80
81
|
getResults: (0, get_results_1.makeGetResults)({ eyes, logger }),
|
package/dist/index.js
CHANGED
|
@@ -31,8 +31,10 @@ __exportStar(require("./types"), exports);
|
|
|
31
31
|
__exportStar(require("./core"), exports);
|
|
32
32
|
__exportStar(require("./universal/core-server"), exports);
|
|
33
33
|
__exportStar(require("./universal/core-server-process"), exports);
|
|
34
|
+
__exportStar(require("./autonomous/core"), exports);
|
|
34
35
|
__exportStar(require("@applitools/driver/dist/debug"), exports);
|
|
35
36
|
exports.formatters = __importStar(require("./utils/format-results"));
|
|
36
37
|
exports.logs = __importStar(require("./troubleshoot/logs"));
|
|
38
|
+
// TODO remove export after every dependency migrated to new distributed ufg submodule
|
|
37
39
|
var take_dom_snapshots_1 = require("./ufg/utils/take-dom-snapshots");
|
|
38
40
|
Object.defineProperty(exports, "takeDomSnapshots", { enumerable: true, get: function () { return take_dom_snapshots_1.takeDomSnapshots; } });
|
|
@@ -175,8 +175,7 @@ function makeCheckAndClose({ eyes, target: defaultTarget, environments: defaultE
|
|
|
175
175
|
scrollRootElement: selectors.scrolling,
|
|
176
176
|
selectorsToCalculate: selectors.calculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
|
|
177
177
|
includeFullPageSize: !!settings.pageId,
|
|
178
|
-
environment: ufgEnvironment,
|
|
179
|
-
environmentId: baseEyes.test.environment.environmentId,
|
|
178
|
+
environment: { ...ufgEnvironment, environmentId: baseEyes.test.environment.environmentId },
|
|
180
179
|
uploadUrl: baseEyes.test.uploadUrl,
|
|
181
180
|
stitchingServiceUrl: baseEyes.test.stitchingServiceUrl,
|
|
182
181
|
},
|
package/dist/ufg/check.js
CHANGED
|
@@ -175,8 +175,7 @@ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironme
|
|
|
175
175
|
scrollRootElement: selectors.scrolling,
|
|
176
176
|
selectorsToCalculate: selectors.calculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
|
|
177
177
|
includeFullPageSize: Boolean(settings.pageId),
|
|
178
|
-
environment: ufgEnvironment,
|
|
179
|
-
environmentId: baseEyes.test.environment.environmentId,
|
|
178
|
+
environment: { ...ufgEnvironment, environmentId: baseEyes.test.environment.environmentId },
|
|
180
179
|
uploadUrl: baseEyes.test.uploadUrl,
|
|
181
180
|
stitchingServiceUrl: baseEyes.test.stitchingServiceUrl,
|
|
182
181
|
},
|
package/dist/ufg/core.js
CHANGED
|
@@ -32,10 +32,11 @@ const locate_1 = require("../automation/locate");
|
|
|
32
32
|
const locate_text_1 = require("../automation/locate-text");
|
|
33
33
|
const extract_text_1 = require("../automation/extract-text");
|
|
34
34
|
const get_nml_client_1 = require("../automation/get-nml-client");
|
|
35
|
+
const take_snapshots_1 = require("./take-snapshots");
|
|
35
36
|
const get_ufg_client_1 = require("./get-ufg-client");
|
|
36
37
|
const open_eyes_1 = require("./open-eyes");
|
|
37
38
|
const utils = __importStar(require("@applitools/utils"));
|
|
38
|
-
function makeCore({ spec, clients, base: defaultBase, concurrency, fetchConcurrency, agentId = 'core-ufg', cwd = process.cwd(), logger: defaultLogger,
|
|
39
|
+
function makeCore({ spec, clients, base: defaultBase, asyncCache, concurrency, fetchConcurrency, agentId = 'core-ufg', cwd = process.cwd(), logger: defaultLogger, }) {
|
|
39
40
|
const logger = (0, logger_1.makeLogger)({ logger: defaultLogger, format: { label: 'core-ufg' } });
|
|
40
41
|
logger.log(`Core ufg is initialized ${defaultBase ? 'with' : 'without'} custom base core`);
|
|
41
42
|
const base = defaultBase !== null && defaultBase !== void 0 ? defaultBase : (0, core_base_1.makeCore)({ agentId, concurrency, cwd, logger });
|
|
@@ -45,6 +46,7 @@ function makeCore({ spec, clients, base: defaultBase, concurrency, fetchConcurre
|
|
|
45
46
|
base: base,
|
|
46
47
|
getViewportSize: spec && (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
|
|
47
48
|
setViewportSize: spec && (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
|
|
49
|
+
takeSnapshots: spec && (0, take_snapshots_1.makeTakeSnapshots)({ spec, core, logger }),
|
|
48
50
|
locate: (0, locate_1.makeLocate)({ spec, core, logger }),
|
|
49
51
|
locateText: (0, locate_text_1.makeLocateText)({ spec, core, logger }),
|
|
50
52
|
extractText: (0, extract_text_1.makeExtractText)({ spec, core, logger }),
|
package/dist/ufg/open-eyes.js
CHANGED
|
@@ -52,6 +52,7 @@ function makeOpenEyes({ core, spec, logger: mainLogger }) {
|
|
|
52
52
|
}
|
|
53
53
|
const environments = await (0, extract_default_environment_1.extractDefaultEnvironments)({ driver });
|
|
54
54
|
const controller = new abort_controller_1.AbortController();
|
|
55
|
+
const { signal } = controller;
|
|
55
56
|
const account = await core.getAccountInfo({ settings, logger });
|
|
56
57
|
return utils.general.extend({}, eyes => {
|
|
57
58
|
var _a, _b, _c, _d;
|
|
@@ -73,8 +74,8 @@ function makeOpenEyes({ core, spec, logger: mainLogger }) {
|
|
|
73
74
|
running: true,
|
|
74
75
|
storage,
|
|
75
76
|
getBaseEyes: (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, logger }),
|
|
76
|
-
check: (0, check_1.makeCheck)({ eyes, target: driver, environments, spec, signal
|
|
77
|
-
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, environments, spec, signal
|
|
77
|
+
check: (0, check_1.makeCheck)({ eyes, target: driver, environments, spec, signal, logger }),
|
|
78
|
+
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, environments, spec, signal, logger }),
|
|
78
79
|
close: (0, close_1.makeClose)({ eyes, target: driver, logger }),
|
|
79
80
|
abort: (0, abort_1.makeAbort)({ eyes, target: driver, spec, controller, logger }),
|
|
80
81
|
getResults: (0, get_results_1.makeGetResults)({ eyes, logger }),
|
|
@@ -0,0 +1,115 @@
|
|
|
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.makeTakeSnapshots = void 0;
|
|
27
|
+
const driver_1 = require("@applitools/driver");
|
|
28
|
+
const take_dom_snapshots_1 = require("./utils/take-dom-snapshots");
|
|
29
|
+
const to_safe_check_settings_1 = require("./utils/to-safe-check-settings");
|
|
30
|
+
const to_generated_selectors_1 = require("./utils/to-generated-selectors");
|
|
31
|
+
const uniquify_environments_1 = require("../automation/utils/uniquify-environments");
|
|
32
|
+
const abort_error_1 = require("../errors/abort-error");
|
|
33
|
+
const utils = __importStar(require("@applitools/utils"));
|
|
34
|
+
function makeTakeSnapshots({ core, spec, signal, logger: mainLogger }) {
|
|
35
|
+
return async function takeSnapshots({ target, settings = {}, environments: defaultEnvironments = [], account, logger = mainLogger, }) {
|
|
36
|
+
var _a, _b;
|
|
37
|
+
logger = logger.extend(mainLogger);
|
|
38
|
+
logger.log('Command "takeSnapshots" is called with settings', settings);
|
|
39
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
40
|
+
logger.warn('Command "takeSnapshots" was called after test was already aborted');
|
|
41
|
+
throw new abort_error_1.AbortError('Command "takeSnapshots" was called after test was already aborted');
|
|
42
|
+
}
|
|
43
|
+
const uniqueEnvironments = (0, uniquify_environments_1.uniquifyEnvironments)((_a = settings.environments) !== null && _a !== void 0 ? _a : defaultEnvironments);
|
|
44
|
+
const ufgClient = await core.getUFGClient({
|
|
45
|
+
settings: {
|
|
46
|
+
...account.ufgServer,
|
|
47
|
+
eyesServerUrl: account.eyesServer.eyesServerUrl,
|
|
48
|
+
apiKey: account.eyesServer.apiKey,
|
|
49
|
+
},
|
|
50
|
+
logger,
|
|
51
|
+
});
|
|
52
|
+
const driver = spec && target ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
53
|
+
if (!driver)
|
|
54
|
+
throw new Error('Cannot create check snapshot without a driver');
|
|
55
|
+
const environment = await driver.getEnvironment();
|
|
56
|
+
const currentContext = driver.currentContext;
|
|
57
|
+
await currentContext.setScrollingElement((_b = settings.scrollRootElement) !== null && _b !== void 0 ? _b : null);
|
|
58
|
+
const { elementReferences, getSafeCheckSettings } = (0, to_safe_check_settings_1.toSafeCheckSettings)({ settings });
|
|
59
|
+
const { elementReferencesToMark, getGeneratedSelectors } = (0, to_generated_selectors_1.toGeneratedSelectors)({
|
|
60
|
+
elementReferences,
|
|
61
|
+
transformElementReference: elementReference => { var _a; return ((0, driver_1.isSelector)(elementReference) && ((_a = spec === null || spec === void 0 ? void 0 : spec.toSimpleCommonSelector) === null || _a === void 0 ? void 0 : _a.call(spec, elementReference))) || undefined; },
|
|
62
|
+
});
|
|
63
|
+
let snapshots;
|
|
64
|
+
if (environment.isWeb) {
|
|
65
|
+
snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)({
|
|
66
|
+
driver,
|
|
67
|
+
settings: {
|
|
68
|
+
waitBeforeCapture: settings.waitBeforeCapture,
|
|
69
|
+
disableBrowserFetching: settings.disableBrowserFetching,
|
|
70
|
+
layoutBreakpoints: settings.layoutBreakpoints,
|
|
71
|
+
environments: uniqueEnvironments,
|
|
72
|
+
skipResources: ufgClient.getCachedResourceUrls(),
|
|
73
|
+
lazyLoad: settings.lazyLoad,
|
|
74
|
+
elementReferences: elementReferencesToMark,
|
|
75
|
+
},
|
|
76
|
+
provides: {
|
|
77
|
+
getChromeEmulationDevices: ufgClient.getChromeEmulationDevices,
|
|
78
|
+
getIOSDevices: ufgClient.getIOSDevices,
|
|
79
|
+
},
|
|
80
|
+
logger,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
const nmlClient = await core.getNMLClient({
|
|
85
|
+
driver,
|
|
86
|
+
settings: { ...account.eyesServer, supportedEnvironmentsUrl: account.supportedEnvironmentsUrl },
|
|
87
|
+
logger,
|
|
88
|
+
});
|
|
89
|
+
snapshots = await nmlClient.takeSnapshots({
|
|
90
|
+
settings: {
|
|
91
|
+
...account.eyesServer,
|
|
92
|
+
waitBeforeCapture: settings.waitBeforeCapture,
|
|
93
|
+
environments: uniqueEnvironments,
|
|
94
|
+
},
|
|
95
|
+
logger,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
await currentContext.focus();
|
|
99
|
+
const url = await driver.getUrl();
|
|
100
|
+
const title = await driver.getTitle();
|
|
101
|
+
const userAgent = environment.isWeb ? await driver.getUserAgentLegacy() : undefined;
|
|
102
|
+
return snapshots.map((snapshot, index) => ({
|
|
103
|
+
target: snapshot,
|
|
104
|
+
settings: getSafeCheckSettings({
|
|
105
|
+
selectors: getGeneratedSelectors(utils.types.has(snapshot, 'generatedSelectors') ? snapshot.generatedSelectors : undefined),
|
|
106
|
+
}),
|
|
107
|
+
environment: uniqueEnvironments[index],
|
|
108
|
+
account,
|
|
109
|
+
url,
|
|
110
|
+
title,
|
|
111
|
+
userAgent,
|
|
112
|
+
}));
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
exports.makeTakeSnapshots = makeTakeSnapshots;
|
|
@@ -0,0 +1,69 @@
|
|
|
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.toSafeCheckSettings = void 0;
|
|
27
|
+
const utils = __importStar(require("@applitools/utils"));
|
|
28
|
+
const regionTypes = ['ignore', 'layout', 'strict', 'content', 'floating', 'accessibility'];
|
|
29
|
+
function toSafeCheckSettings({ settings }) {
|
|
30
|
+
const calculate = regionTypes.flatMap(regionType => {
|
|
31
|
+
var _a;
|
|
32
|
+
return ((_a = settings[`${regionType}Regions`]) !== null && _a !== void 0 ? _a : []).reduce((regions, reference) => {
|
|
33
|
+
const { region } = utils.types.has(reference, 'region') ? reference : { region: reference };
|
|
34
|
+
return !isRegion(region) ? regions.concat(region) : regions;
|
|
35
|
+
}, []);
|
|
36
|
+
});
|
|
37
|
+
const target = !isRegion(settings.region) ? settings.region : undefined;
|
|
38
|
+
const scrolling = settings.scrollRootElement;
|
|
39
|
+
return { elementReferences: { target, scrolling, calculate }, getSafeCheckSettings };
|
|
40
|
+
function getSafeCheckSettings({ selectors, }) {
|
|
41
|
+
const transformedSettings = { ...settings };
|
|
42
|
+
regionTypes.forEach(regionType => {
|
|
43
|
+
var _a;
|
|
44
|
+
if (!transformedSettings[`${regionType}Regions`])
|
|
45
|
+
return;
|
|
46
|
+
transformedSettings[`${regionType}Regions`] = (_a = transformedSettings[`${regionType}Regions`]) === null || _a === void 0 ? void 0 : _a.flatMap(reference => {
|
|
47
|
+
const { region, ...options } = utils.types.has(reference, 'region') ? reference : { region: reference };
|
|
48
|
+
if (isRegion(region))
|
|
49
|
+
return reference;
|
|
50
|
+
const { originalSelector, safeSelector } = selectors.calculate.shift();
|
|
51
|
+
if (!safeSelector)
|
|
52
|
+
return [];
|
|
53
|
+
return {
|
|
54
|
+
region: safeSelector,
|
|
55
|
+
regionId: utils.types.isString(originalSelector) ? originalSelector : originalSelector === null || originalSelector === void 0 ? void 0 : originalSelector.selector,
|
|
56
|
+
...options,
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
if (!isRegion(transformedSettings.region))
|
|
61
|
+
transformedSettings.region = selectors.target;
|
|
62
|
+
transformedSettings.scrollRootElement = selectors.scrolling;
|
|
63
|
+
return transformedSettings;
|
|
64
|
+
}
|
|
65
|
+
function isRegion(region) {
|
|
66
|
+
return utils.types.has(region, ['x', 'y', 'width', 'height']);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.toSafeCheckSettings = toSafeCheckSettings;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.12.1",
|
|
4
4
|
"homepage": "https://applitools.com",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
@@ -74,19 +74,19 @@
|
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"@applitools/core-base": "1.
|
|
77
|
+
"@applitools/core-base": "1.11.0",
|
|
78
78
|
"@applitools/dom-capture": "11.2.6",
|
|
79
|
-
"@applitools/dom-snapshot": "4.
|
|
79
|
+
"@applitools/dom-snapshot": "4.10.0",
|
|
80
80
|
"@applitools/driver": "1.16.5",
|
|
81
|
-
"@applitools/ec-client": "1.
|
|
81
|
+
"@applitools/ec-client": "1.8.0",
|
|
82
82
|
"@applitools/logger": "2.0.14",
|
|
83
|
-
"@applitools/nml-client": "1.
|
|
83
|
+
"@applitools/nml-client": "1.8.0",
|
|
84
84
|
"@applitools/req": "1.6.5",
|
|
85
85
|
"@applitools/screenshoter": "3.8.27",
|
|
86
86
|
"@applitools/snippets": "2.4.25",
|
|
87
87
|
"@applitools/socket": "1.1.14",
|
|
88
88
|
"@applitools/spec-driver-webdriver": "1.1.3",
|
|
89
|
-
"@applitools/ufg-client": "1.
|
|
89
|
+
"@applitools/ufg-client": "1.11.0",
|
|
90
90
|
"@applitools/utils": "1.7.0",
|
|
91
91
|
"@types/ws": "8.5.5",
|
|
92
92
|
"abort-controller": "3.0.0",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"@applitools/spec-driver-selenium": "^1.5.74",
|
|
105
105
|
"@applitools/test-server": "^1.2.2",
|
|
106
106
|
"@applitools/test-utils": "^1.5.17",
|
|
107
|
-
"@applitools/tunnel-client": "^1.
|
|
107
|
+
"@applitools/tunnel-client": "^1.5.0",
|
|
108
108
|
"@types/node": "^12.20.55",
|
|
109
109
|
"@types/selenium-webdriver": "^4.1.2",
|
|
110
110
|
"@types/semver": "^7.5.4",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AutonomousCore } from './types';
|
|
2
|
+
import { type AsyncCache, type UFGClient } from '@applitools/ufg-client';
|
|
3
|
+
import { type NMLClient } from '@applitools/nml-client';
|
|
4
|
+
import { type SpecType, type SpecDriver } from '@applitools/driver';
|
|
5
|
+
import { type Logger } from '@applitools/logger';
|
|
6
|
+
import { type Core as BaseCore } from '@applitools/core-base';
|
|
7
|
+
type Options<TSpec extends SpecType> = {
|
|
8
|
+
spec?: SpecDriver<TSpec>;
|
|
9
|
+
clients?: {
|
|
10
|
+
ufg?: UFGClient;
|
|
11
|
+
nml?: NMLClient;
|
|
12
|
+
};
|
|
13
|
+
base?: BaseCore;
|
|
14
|
+
asyncCache?: AsyncCache;
|
|
15
|
+
agentId?: string;
|
|
16
|
+
cwd?: string;
|
|
17
|
+
logger?: Logger;
|
|
18
|
+
};
|
|
19
|
+
export declare function makeAutonomousCore<TSpec extends SpecType>({ spec, clients, base: defaultBase, asyncCache, agentId, cwd, logger: defaultLogger, }?: Options<TSpec>): AutonomousCore<TSpec>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Core as UFGCore } from '../ufg/types';
|
|
2
|
+
import type { StartedRender, RenderResult } from './types';
|
|
3
|
+
import { type Logger } from '@applitools/logger';
|
|
4
|
+
type Options = {
|
|
5
|
+
core: UFGCore<any>;
|
|
6
|
+
logger: Logger;
|
|
7
|
+
};
|
|
8
|
+
export declare function makeCreateRenderResults(_options: Options): ({ renders, rawResults, }: {
|
|
9
|
+
renders: StartedRender[];
|
|
10
|
+
rawResults: any[];
|
|
11
|
+
logger: Logger;
|
|
12
|
+
}) => Promise<RenderResult[]>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Core as UFGCore } from '../ufg/types';
|
|
2
|
+
import type { Snapshot, RenderTarget } from './types';
|
|
3
|
+
import { type Logger } from '@applitools/logger';
|
|
4
|
+
type Options = {
|
|
5
|
+
core: UFGCore<any>;
|
|
6
|
+
logger: Logger;
|
|
7
|
+
};
|
|
8
|
+
export declare function makeCreateRenderTarget({ core, logger: defaultLogger }: Options): ({ snapshot, logger, }: {
|
|
9
|
+
snapshot: Snapshot;
|
|
10
|
+
logger: Logger;
|
|
11
|
+
}) => Promise<RenderTarget>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Core as UFGCore } from '../ufg/types';
|
|
2
|
+
import type { StartedRender, RenderResult } from './types';
|
|
3
|
+
import { type Logger } from '@applitools/logger';
|
|
4
|
+
type Options = {
|
|
5
|
+
core: UFGCore<any>;
|
|
6
|
+
logger: Logger;
|
|
7
|
+
};
|
|
8
|
+
export declare function makeGetRenderResults({ core, logger: defaultLogger }: Options): ({ renders, logger, }: {
|
|
9
|
+
renders: StartedRender[];
|
|
10
|
+
logger: Logger;
|
|
11
|
+
}) => Promise<RenderResult[]>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Core as UFGCore } from '../ufg/types';
|
|
2
|
+
import type { OpenSettings } from './types';
|
|
3
|
+
import type { Eyes as BaseEyes } from '@applitools/core-base/types';
|
|
4
|
+
import { type Logger } from '@applitools/logger';
|
|
5
|
+
type Options = {
|
|
6
|
+
core: UFGCore<any>;
|
|
7
|
+
logger: Logger;
|
|
8
|
+
};
|
|
9
|
+
export declare function makeOpenEyes({ core, logger: defaultLogger }: Options): ({ settings, logger, }: {
|
|
10
|
+
settings: OpenSettings;
|
|
11
|
+
logger: Logger;
|
|
12
|
+
}) => Promise<BaseEyes>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Core as UFGCore } from '../ufg/types';
|
|
2
|
+
import type { RenderTarget, StartedRender } from './types';
|
|
3
|
+
import { type Logger } from '@applitools/logger';
|
|
4
|
+
type Options = {
|
|
5
|
+
core: UFGCore<any>;
|
|
6
|
+
logger: Logger;
|
|
7
|
+
};
|
|
8
|
+
export declare function makeStartRenders({ core, logger: defaultLogger }: Options): ({ targets, logger, }: {
|
|
9
|
+
targets: RenderTarget[];
|
|
10
|
+
logger: Logger;
|
|
11
|
+
}) => Promise<StartedRender[]>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Core as UFGCore } from '../ufg/types';
|
|
2
|
+
import type { DriverTarget, SnapshotSettings, Snapshot } from './types';
|
|
3
|
+
import { type Logger } from '@applitools/logger';
|
|
4
|
+
import { type SpecType } from '@applitools/driver';
|
|
5
|
+
type Options<TSpec extends SpecType> = {
|
|
6
|
+
core: UFGCore<TSpec>;
|
|
7
|
+
logger: Logger;
|
|
8
|
+
};
|
|
9
|
+
export declare function makeTakeSnapshots<TSpec extends SpecType>({ core, logger: defaultLogger }: Options<TSpec>): ({ target, settings, logger, }: {
|
|
10
|
+
target: DriverTarget<TSpec>;
|
|
11
|
+
settings: SnapshotSettings<TSpec>;
|
|
12
|
+
logger?: Logger | undefined;
|
|
13
|
+
}) => Promise<Snapshot[]>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Eyes as BaseEyes, ImageTarget as BaseImageTarget, OpenSettings as BaseOpenSettings, CheckSettings as BaseCheckSettings } from '@applitools/core-base/types';
|
|
2
|
+
import type * as UFGCore from '../ufg/types';
|
|
3
|
+
import { type Logger } from '@applitools/logger';
|
|
4
|
+
import { type SpecType } from '@applitools/driver';
|
|
5
|
+
import { type RenderTarget as UFGRenderTarget, type StartedRender as UFGStartedRender } from '@applitools/ufg-client';
|
|
6
|
+
export * from '../ufg/types';
|
|
7
|
+
export interface AutonomousCore<TSpec extends SpecType> {
|
|
8
|
+
readonly type: 'autonomous';
|
|
9
|
+
takeSnapshots?(options: {
|
|
10
|
+
target: UFGCore.DriverTarget<TSpec>;
|
|
11
|
+
settings?: Partial<SnapshotSettings<TSpec>>;
|
|
12
|
+
logger?: Logger;
|
|
13
|
+
}): Promise<UFGCore.Snapshot[]>;
|
|
14
|
+
createRenderTarget(options: {
|
|
15
|
+
snapshot: UFGCore.Snapshot;
|
|
16
|
+
logger?: Logger;
|
|
17
|
+
}): Promise<RenderTarget>;
|
|
18
|
+
startRenders(options: {
|
|
19
|
+
targets: RenderTarget[];
|
|
20
|
+
logger?: Logger;
|
|
21
|
+
}): Promise<StartedRender[]>;
|
|
22
|
+
getRenderResults(options: {
|
|
23
|
+
renders: StartedRender[];
|
|
24
|
+
logger?: Logger;
|
|
25
|
+
}): Promise<RenderResult[]>;
|
|
26
|
+
createRenderResults(options: {
|
|
27
|
+
renders: StartedRender[];
|
|
28
|
+
rawResults: any[];
|
|
29
|
+
logger?: Logger;
|
|
30
|
+
}): Promise<RenderResult[]>;
|
|
31
|
+
openEyes(options: {
|
|
32
|
+
settings: Partial<OpenSettings>;
|
|
33
|
+
logger?: Logger;
|
|
34
|
+
}): Promise<BaseEyes>;
|
|
35
|
+
}
|
|
36
|
+
export type SnapshotSettings<TSpec extends SpecType> = UFGCore.SnapshotSettings<TSpec> & UFGCore.EyesServerSettings;
|
|
37
|
+
export type RenderTarget = {
|
|
38
|
+
target: UFGRenderTarget;
|
|
39
|
+
settings: UFGCore.SafeCheckSettings;
|
|
40
|
+
environment: UFGCore.RenderEnvironment;
|
|
41
|
+
account: UFGCore.Account;
|
|
42
|
+
};
|
|
43
|
+
export type StartedRender = {
|
|
44
|
+
render: UFGStartedRender;
|
|
45
|
+
settings: UFGCore.SafeCheckSettings;
|
|
46
|
+
environment: UFGCore.ExactEnvironment;
|
|
47
|
+
account: UFGCore.Account;
|
|
48
|
+
};
|
|
49
|
+
export type RenderResult = {
|
|
50
|
+
status: 'rendering' | 'rendered' | 'error';
|
|
51
|
+
error: string;
|
|
52
|
+
target: BaseImageTarget;
|
|
53
|
+
settings: BaseCheckSettings;
|
|
54
|
+
environment: UFGCore.ExactEnvironment;
|
|
55
|
+
account: UFGCore.Account;
|
|
56
|
+
};
|
|
57
|
+
export type OpenSettings = BaseOpenSettings;
|
package/types/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './types';
|
|
|
2
2
|
export * from './core';
|
|
3
3
|
export * from './universal/core-server';
|
|
4
4
|
export * from './universal/core-server-process';
|
|
5
|
+
export * from './autonomous/core';
|
|
5
6
|
export { type SpecType, type SpecDriver, type Selector } from '@applitools/driver';
|
|
6
7
|
export * from '@applitools/driver/dist/debug';
|
|
7
8
|
export * as formatters from './utils/format-results';
|
|
@@ -16,15 +16,16 @@ export declare function makeCheckAndClose<TSpec extends SpecType>({ eyes, target
|
|
|
16
16
|
settings?: (import("@applitools/core-base").CheckSettings<Region | import("@applitools/driver").ElementReference<TSpec>> & import("./types").ScreenshotSettings<TSpec> & {
|
|
17
17
|
environments?: Environment[] | undefined;
|
|
18
18
|
} & {
|
|
19
|
-
hooks?: {
|
|
20
|
-
beforeCaptureScreenshot: string;
|
|
21
|
-
} | undefined;
|
|
22
19
|
disableBrowserFetching?: boolean | undefined;
|
|
23
20
|
layoutBreakpoints?: {
|
|
24
21
|
breakpoints: boolean | number[];
|
|
25
22
|
reload?: boolean | undefined;
|
|
26
23
|
} | undefined;
|
|
24
|
+
hooks?: {
|
|
25
|
+
beforeCaptureScreenshot: string;
|
|
26
|
+
} | undefined;
|
|
27
27
|
ufgOptions?: Record<string, any> | undefined;
|
|
28
|
+
prefixRenderId?: string | undefined;
|
|
28
29
|
autProxy?: (import("@applitools/req").Proxy & {
|
|
29
30
|
mode?: "Allow" | "Block" | undefined;
|
|
30
31
|
domains?: string[] | undefined;
|
package/types/ufg/core.d.ts
CHANGED
|
@@ -11,12 +11,12 @@ type Options<TSpec extends SpecType> = {
|
|
|
11
11
|
nml?: NMLClient;
|
|
12
12
|
};
|
|
13
13
|
base?: BaseCore;
|
|
14
|
+
asyncCache?: AsyncCache;
|
|
14
15
|
concurrency?: number;
|
|
15
16
|
fetchConcurrency?: number;
|
|
16
17
|
agentId?: string;
|
|
17
18
|
cwd?: string;
|
|
18
19
|
logger?: Logger;
|
|
19
|
-
asyncCache?: AsyncCache;
|
|
20
20
|
};
|
|
21
|
-
export declare function makeCore<TSpec extends SpecType>({ spec, clients, base: defaultBase, concurrency, fetchConcurrency, agentId, cwd, logger: defaultLogger,
|
|
21
|
+
export declare function makeCore<TSpec extends SpecType>({ spec, clients, base: defaultBase, asyncCache, concurrency, fetchConcurrency, agentId, cwd, logger: defaultLogger, }: Options<TSpec>): Core<TSpec>;
|
|
22
22
|
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DriverTarget, Core, SnapshotSettings, Account, Snapshot } from './types';
|
|
2
|
+
import { type Environment as UFGEnvironment } from '@applitools/ufg-client';
|
|
3
|
+
import { type AbortSignal } from 'abort-controller';
|
|
4
|
+
import { type Logger } from '@applitools/logger';
|
|
5
|
+
import { type SpecType, type SpecDriver } from '@applitools/driver';
|
|
6
|
+
type Options<TSpec extends SpecType> = {
|
|
7
|
+
core: Core<TSpec>;
|
|
8
|
+
spec: SpecDriver<TSpec>;
|
|
9
|
+
signal?: AbortSignal;
|
|
10
|
+
logger: Logger;
|
|
11
|
+
};
|
|
12
|
+
export declare function makeTakeSnapshots<TSpec extends SpecType>({ core, spec, signal, logger: mainLogger }: Options<TSpec>): ({ target, settings, environments: defaultEnvironments, account, logger, }: {
|
|
13
|
+
target: DriverTarget<TSpec>;
|
|
14
|
+
settings?: SnapshotSettings<TSpec> | undefined;
|
|
15
|
+
environments?: UFGEnvironment[] | undefined;
|
|
16
|
+
account: Account;
|
|
17
|
+
logger?: Logger | undefined;
|
|
18
|
+
}) => Promise<Snapshot[]>;
|
|
19
|
+
export {};
|
package/types/ufg/types.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type * as AutomationCore from '../automation/types';
|
|
|
3
3
|
import { type SpecType, type CommonSelector } from '@applitools/driver';
|
|
4
4
|
import { type Logger } from '@applitools/logger';
|
|
5
5
|
import { type Proxy } from '@applitools/req';
|
|
6
|
-
import { type UFGClient, type UFGClientSettings, type DomSnapshot as UFGDomSnapshot, type AndroidSnapshot as UFGAndroidSnapshot, type IOSSnapshot as UFGIOSSnapshot } from '@applitools/ufg-client';
|
|
6
|
+
import { type UFGClient, type UFGClientSettings, type Selector as UFGSelector, type Environment as UFGEnvironment, type DomSnapshot as UFGDomSnapshot, type AndroidSnapshot as UFGAndroidSnapshot, type IOSSnapshot as UFGIOSSnapshot } from '@applitools/ufg-client';
|
|
7
7
|
export * from '../automation/types';
|
|
8
8
|
export type DomSnapshot = UFGDomSnapshot & {
|
|
9
9
|
generatedSelectors?: {
|
|
@@ -21,6 +21,12 @@ export interface Core<TSpec extends SpecType> extends AutomationCore.Core<TSpec>
|
|
|
21
21
|
settings: UFGClientSettings;
|
|
22
22
|
logger?: Logger;
|
|
23
23
|
}): Promise<UFGClient>;
|
|
24
|
+
takeSnapshots?(options: {
|
|
25
|
+
target: AutomationCore.DriverTarget<TSpec>;
|
|
26
|
+
settings?: SnapshotSettings<TSpec>;
|
|
27
|
+
account: AutomationCore.Account;
|
|
28
|
+
logger?: Logger;
|
|
29
|
+
}): Promise<Snapshot[]>;
|
|
24
30
|
openEyes(options: {
|
|
25
31
|
target?: AutomationCore.DriverTarget<TSpec>;
|
|
26
32
|
settings: AutomationCore.OpenSettings;
|
|
@@ -42,19 +48,31 @@ export interface Eyes<TSpec extends SpecType> extends AutomationCore.Eyes<TSpec>
|
|
|
42
48
|
logger?: Logger;
|
|
43
49
|
}): Promise<void>;
|
|
44
50
|
}
|
|
45
|
-
export type
|
|
46
|
-
hooks?: {
|
|
47
|
-
beforeCaptureScreenshot: string;
|
|
48
|
-
};
|
|
51
|
+
export type SnapshotSettings<TSpec extends SpecType> = AutomationCore.CheckSettings<TSpec> & {
|
|
49
52
|
disableBrowserFetching?: boolean;
|
|
50
53
|
layoutBreakpoints?: {
|
|
51
54
|
breakpoints: number[] | boolean;
|
|
52
55
|
reload?: boolean;
|
|
53
56
|
};
|
|
57
|
+
hooks?: {
|
|
58
|
+
beforeCaptureScreenshot: string;
|
|
59
|
+
};
|
|
54
60
|
ufgOptions?: Record<string, any>;
|
|
61
|
+
prefixRenderId?: string;
|
|
55
62
|
autProxy?: Proxy & {
|
|
56
63
|
mode?: 'Allow' | 'Block';
|
|
57
64
|
domains?: string[];
|
|
58
65
|
};
|
|
59
66
|
headers?: Record<string, string>;
|
|
60
67
|
};
|
|
68
|
+
export type CheckSettings<TSpec extends SpecType> = SnapshotSettings<TSpec>;
|
|
69
|
+
export type SafeCheckSettings = CheckSettings<SpecType<never, never, UFGSelector, never, never>>;
|
|
70
|
+
export type Snapshot = {
|
|
71
|
+
target: DomSnapshot | AndroidSnapshot | IOSSnapshot;
|
|
72
|
+
settings: SafeCheckSettings;
|
|
73
|
+
environment: UFGEnvironment;
|
|
74
|
+
account: AutomationCore.Account;
|
|
75
|
+
url: string;
|
|
76
|
+
title: string;
|
|
77
|
+
userAgent?: string;
|
|
78
|
+
};
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import { type SpecType, type ElementReference
|
|
1
|
+
import { type SpecType, type ElementReference } from '@applitools/driver';
|
|
2
|
+
import { type Selector as UFGSelector } from '@applitools/ufg-client';
|
|
2
3
|
export declare function toGeneratedSelectors<TSpec extends SpecType>({ elementReferences, transformElementReference, }: {
|
|
3
4
|
elementReferences: {
|
|
4
5
|
target?: ElementReference<TSpec>;
|
|
5
6
|
scrolling?: ElementReference<TSpec>;
|
|
6
7
|
calculate?: ElementReference<TSpec>[];
|
|
7
8
|
};
|
|
8
|
-
transformElementReference: (elementReference: ElementReference<TSpec>) =>
|
|
9
|
+
transformElementReference: (elementReference: ElementReference<TSpec>) => UFGSelector | undefined;
|
|
9
10
|
}): {
|
|
10
11
|
elementReferencesToMark: (string | TSpec["element"] | TSpec["secondary"]["element"] | TSpec["selector"] | TSpec["secondary"]["selector"] | {
|
|
11
12
|
selector: string | TSpec["selector"] | TSpec["secondary"]["selector"];
|
|
12
13
|
type?: string | undefined;
|
|
13
|
-
child?: TSpec["selector"] | TSpec["secondary"]["selector"] | CommonSelector<TSpec["selector"] | TSpec["secondary"]["selector"]> | undefined;
|
|
14
|
-
shadow?: TSpec["selector"] | TSpec["secondary"]["selector"] | CommonSelector<TSpec["selector"] | TSpec["secondary"]["selector"]> | undefined;
|
|
15
|
-
frame?: TSpec["selector"] | TSpec["secondary"]["selector"] | CommonSelector<TSpec["selector"] | TSpec["secondary"]["selector"]> | undefined;
|
|
16
|
-
fallback?: TSpec["selector"] | TSpec["secondary"]["selector"] | CommonSelector<TSpec["selector"] | TSpec["secondary"]["selector"]> | undefined;
|
|
14
|
+
child?: TSpec["selector"] | TSpec["secondary"]["selector"] | import("@applitools/driver").CommonSelector<TSpec["selector"] | TSpec["secondary"]["selector"]> | undefined;
|
|
15
|
+
shadow?: TSpec["selector"] | TSpec["secondary"]["selector"] | import("@applitools/driver").CommonSelector<TSpec["selector"] | TSpec["secondary"]["selector"]> | undefined;
|
|
16
|
+
frame?: TSpec["selector"] | TSpec["secondary"]["selector"] | import("@applitools/driver").CommonSelector<TSpec["selector"] | TSpec["secondary"]["selector"]> | undefined;
|
|
17
|
+
fallback?: TSpec["selector"] | TSpec["secondary"]["selector"] | import("@applitools/driver").CommonSelector<TSpec["selector"] | TSpec["secondary"]["selector"]> | undefined;
|
|
17
18
|
} | (NonNullable<TSpec["element"]> extends infer T ? T extends NonNullable<TSpec["element"]> ? T extends readonly (infer InnerArr)[] ? InnerArr : T : never : never) | (NonNullable<TSpec["secondary"]["element"]> extends infer T_1 ? T_1 extends NonNullable<TSpec["secondary"]["element"]> ? T_1 extends readonly (infer InnerArr)[] ? InnerArr : T_1 : never : never) | (NonNullable<TSpec["selector"]> extends infer T_2 ? T_2 extends NonNullable<TSpec["selector"]> ? T_2 extends readonly (infer InnerArr)[] ? InnerArr : T_2 : never : never) | (NonNullable<TSpec["secondary"]["selector"]> extends infer T_3 ? T_3 extends NonNullable<TSpec["secondary"]["selector"]> ? T_3 extends readonly (infer InnerArr)[] ? InnerArr : T_3 : never : never))[];
|
|
18
19
|
getGeneratedSelectors: (generatedSelectors?: {
|
|
19
|
-
originalSelector:
|
|
20
|
-
safeSelector:
|
|
20
|
+
originalSelector: UFGSelector | null;
|
|
21
|
+
safeSelector: UFGSelector | null;
|
|
21
22
|
}[]) => {
|
|
22
|
-
target:
|
|
23
|
-
scrolling:
|
|
23
|
+
target: UFGSelector | undefined;
|
|
24
|
+
scrolling: UFGSelector | undefined;
|
|
24
25
|
calculate: {
|
|
25
|
-
originalSelector:
|
|
26
|
-
safeSelector:
|
|
26
|
+
originalSelector: UFGSelector | null;
|
|
27
|
+
safeSelector: UFGSelector | null;
|
|
27
28
|
}[];
|
|
28
29
|
};
|
|
29
30
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CheckSettings, SafeCheckSettings } from '../types';
|
|
2
|
+
import { type SpecType, type ElementReference, type CommonSelector } from '@applitools/driver';
|
|
3
|
+
import { type Selector as UFGSelector } from '@applitools/ufg-client';
|
|
4
|
+
export declare function toSafeCheckSettings<TSpec extends SpecType>({ settings }: {
|
|
5
|
+
settings: CheckSettings<TSpec>;
|
|
6
|
+
}): {
|
|
7
|
+
elementReferences: {
|
|
8
|
+
target: ElementReference<TSpec> | undefined;
|
|
9
|
+
scrolling: ElementReference<TSpec> | undefined;
|
|
10
|
+
calculate: ElementReference<TSpec>[];
|
|
11
|
+
};
|
|
12
|
+
getSafeCheckSettings: ({ selectors, }: {
|
|
13
|
+
selectors: {
|
|
14
|
+
target: UFGSelector | undefined;
|
|
15
|
+
scrolling: UFGSelector | undefined;
|
|
16
|
+
calculate: {
|
|
17
|
+
originalSelector: CommonSelector | null;
|
|
18
|
+
safeSelector: UFGSelector | null;
|
|
19
|
+
}[];
|
|
20
|
+
};
|
|
21
|
+
}) => SafeCheckSettings;
|
|
22
|
+
};
|