@applitools/core 4.11.2 → 4.12.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.
Files changed (34) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/automation/utils/to-base-check-settings.js +2 -1
  3. package/dist/autonomous/core.js +25 -0
  4. package/dist/autonomous/create-render-results.js +33 -0
  5. package/dist/autonomous/create-render-target.js +32 -0
  6. package/dist/autonomous/get-render-results.js +55 -0
  7. package/dist/autonomous/open-eyes.js +11 -0
  8. package/dist/autonomous/start-renders.js +61 -0
  9. package/dist/autonomous/take-snapshots.js +12 -0
  10. package/dist/autonomous/types.js +17 -0
  11. package/dist/classic/open-eyes.js +3 -2
  12. package/dist/index.js +2 -0
  13. package/dist/ufg/check-and-close.js +1 -2
  14. package/dist/ufg/check.js +1 -2
  15. package/dist/ufg/core.js +3 -1
  16. package/dist/ufg/open-eyes.js +3 -2
  17. package/dist/ufg/take-snapshots.js +115 -0
  18. package/dist/ufg/utils/to-safe-check-settings.js +69 -0
  19. package/package.json +7 -7
  20. package/types/autonomous/core.d.ts +20 -0
  21. package/types/autonomous/create-render-results.d.ts +13 -0
  22. package/types/autonomous/create-render-target.d.ts +12 -0
  23. package/types/autonomous/get-render-results.d.ts +12 -0
  24. package/types/autonomous/open-eyes.d.ts +13 -0
  25. package/types/autonomous/start-renders.d.ts +12 -0
  26. package/types/autonomous/take-snapshots.d.ts +14 -0
  27. package/types/autonomous/types.d.ts +57 -0
  28. package/types/index.d.ts +1 -0
  29. package/types/ufg/check-and-close.d.ts +4 -3
  30. package/types/ufg/core.d.ts +2 -2
  31. package/types/ufg/take-snapshots.d.ts +19 -0
  32. package/types/ufg/types.d.ts +23 -5
  33. package/types/ufg/utils/to-generated-selectors.d.ts +13 -12
  34. package/types/ufg/utils/to-safe-check-settings.d.ts +22 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,52 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.12.0](https://github.com/Applitools-Dev/sdk/compare/js/core@4.11.2...js/core@4.12.0) (2024-04-10)
4
+
5
+
6
+ ### Features
7
+
8
+ * add prefixRenderId to SnapshotSettings ([073c81b](https://github.com/Applitools-Dev/sdk/commit/073c81b7e96411b643fe907a588f0c1ef95c4d48))
9
+ * 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))
10
+ * upgrade execution-grid-tunnel to 3 ([#2301](https://github.com/Applitools-Dev/sdk/issues/2301)) ([4f0426d](https://github.com/Applitools-Dev/sdk/commit/4f0426d5495142386d54121fde8bc1fb647728a7))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * 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))
16
+
17
+
18
+ ### Dependencies
19
+
20
+ * @applitools/dom-snapshot bumped to 4.10.0
21
+ #### Features
22
+
23
+ * nested css ([#2296](https://github.com/Applitools-Dev/sdk/issues/2296)) ([16068dc](https://github.com/Applitools-Dev/sdk/commit/16068dcd346ee66ed254f6b2c40f7a76ec5cddb7))
24
+ * @applitools/nml-client bumped to 1.8.0
25
+ #### Features
26
+
27
+ * 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))
28
+ * @applitools/tunnel-client bumped to 1.5.0
29
+ #### Features
30
+
31
+ * upgrade execution-grid-tunnel to 3 ([#2301](https://github.com/Applitools-Dev/sdk/issues/2301)) ([4f0426d](https://github.com/Applitools-Dev/sdk/commit/4f0426d5495142386d54121fde8bc1fb647728a7))
32
+ * @applitools/ufg-client bumped to 1.11.0
33
+ #### Features
34
+
35
+ * add prefixRenderId to SnapshotSettings ([073c81b](https://github.com/Applitools-Dev/sdk/commit/073c81b7e96411b643fe907a588f0c1ef95c4d48))
36
+ * 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))
37
+ * @applitools/ec-client bumped to 1.8.0
38
+ #### Features
39
+
40
+ * upgrade execution-grid-tunnel to 3 ([#2301](https://github.com/Applitools-Dev/sdk/issues/2301)) ([4f0426d](https://github.com/Applitools-Dev/sdk/commit/4f0426d5495142386d54121fde8bc1fb647728a7))
41
+
42
+
43
+
44
+ * @applitools/core-base bumped to 1.11.0
45
+ #### Features
46
+
47
+ * 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))
48
+ * report timestamp to backend ([#2278](https://github.com/Applitools-Dev/sdk/issues/2278)) ([3ff74c6](https://github.com/Applitools-Dev/sdk/commit/3ff74c66a33174025e5fab3979b748dfeb53e7b8))
49
+
3
50
  ## [4.11.2](https://github.com/Applitools-Dev/sdk/compare/js/core@4.11.1...js/core@4.11.2) (2024-04-01)
4
51
 
5
52
 
@@ -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.shift();
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,61 @@
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(target => ufgClient.getActualEnvironment({ settings: { environment: target.environment }, logger })),
50
+ ]);
51
+ return renders.map((render, index) => ({
52
+ render,
53
+ settings: targets[index].settings,
54
+ environment: environments[index],
55
+ account: targets[index].account,
56
+ }));
57
+ }));
58
+ return renders.flat();
59
+ };
60
+ }
61
+ 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: controller.signal, logger }),
77
- checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, environments, spec, signal: controller.signal, logger }),
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, asyncCache, }) {
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 }),
@@ -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: controller.signal, logger }),
77
- checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, environments, spec, signal: controller.signal, logger }),
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.11.2",
3
+ "version": "4.12.0",
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.10.1",
77
+ "@applitools/core-base": "1.11.0",
78
78
  "@applitools/dom-capture": "11.2.6",
79
- "@applitools/dom-snapshot": "4.9.2",
79
+ "@applitools/dom-snapshot": "4.10.0",
80
80
  "@applitools/driver": "1.16.5",
81
- "@applitools/ec-client": "1.7.32",
81
+ "@applitools/ec-client": "1.8.0",
82
82
  "@applitools/logger": "2.0.14",
83
- "@applitools/nml-client": "1.7.5",
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.10.2",
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.4.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 Environment as UFGEnvironment, type ActualEnvironment as UFGActualEnvironment, 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: UFGEnvironment;
41
+ account: UFGCore.Account;
42
+ };
43
+ export type StartedRender = {
44
+ render: UFGStartedRender;
45
+ settings: UFGCore.SafeCheckSettings;
46
+ environment: UFGActualEnvironment;
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: UFGActualEnvironment;
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;
@@ -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, asyncCache, }: Options<TSpec>): Core<TSpec>;
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 {};
@@ -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 CheckSettings<TSpec extends SpecType> = AutomationCore.CheckSettings<TSpec> & {
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, type CommonSelector } from '@applitools/driver';
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>) => CommonSelector | undefined;
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: CommonSelector | null;
20
- safeSelector: CommonSelector | null;
20
+ originalSelector: UFGSelector | null;
21
+ safeSelector: UFGSelector | null;
21
22
  }[]) => {
22
- target: CommonSelector | undefined;
23
- scrolling: CommonSelector | undefined;
23
+ target: UFGSelector | undefined;
24
+ scrolling: UFGSelector | undefined;
24
25
  calculate: {
25
- originalSelector: CommonSelector | null;
26
- safeSelector: CommonSelector | null;
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
+ };