@applitools/core 1.4.5 → 1.4.7

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 (90) hide show
  1. package/dist/automation/get-viewport-size.js +1 -1
  2. package/dist/automation/locate.js +1 -1
  3. package/dist/automation/set-viewport-size.js +1 -1
  4. package/dist/automation/utils/take-screenshot.js +2 -2
  5. package/dist/{utils → automation/utils}/to-base-check-settings.js +3 -2
  6. package/dist/{utils → automation/utils}/wait-for-lazy-load.js +2 -2
  7. package/dist/check-and-close.js +7 -5
  8. package/dist/check.js +7 -5
  9. package/dist/classic/abort.js +1 -1
  10. package/dist/classic/check-and-close.js +9 -5
  11. package/dist/classic/check.js +12 -8
  12. package/dist/classic/close.js +1 -1
  13. package/dist/classic/core.js +5 -5
  14. package/dist/classic/extract-text.js +11 -5
  15. package/dist/classic/locate-text.js +2 -0
  16. package/dist/classic/open-eyes.js +16 -14
  17. package/dist/classic/utils/take-dom-capture.js +35 -54
  18. package/dist/close-manager.js +4 -3
  19. package/dist/core.js +5 -5
  20. package/dist/get-typed-eyes.js +1 -4
  21. package/dist/make-ec-client.js +1 -9
  22. package/dist/make-manager.js +25 -27
  23. package/dist/troubleshoot/check-network.js +41 -34
  24. package/dist/troubleshoot/eyes.js +2 -2
  25. package/dist/troubleshoot/ufg.js +3 -2
  26. package/dist/troubleshoot/utils.js +1 -25
  27. package/dist/ufg/abort.js +2 -7
  28. package/dist/ufg/check-and-close.js +50 -46
  29. package/dist/ufg/check.js +31 -24
  30. package/dist/ufg/core.js +5 -5
  31. package/dist/ufg/get-base-eyes.js +2 -0
  32. package/dist/ufg/open-eyes.js +11 -2
  33. package/dist/ufg/utils/extract-broker-url.js +52 -0
  34. package/dist/ufg/utils/generate-safe-selectors.js +10 -5
  35. package/dist/ufg/utils/take-dom-snapshot.js +37 -36
  36. package/dist/ufg/utils/take-dom-snapshots.js +13 -17
  37. package/dist/ufg/utils/take-snapshots.js +3 -3
  38. package/dist/ufg/utils/take-vhses.js +60 -166
  39. package/dist/utils/format-results.js +37 -37
  40. package/package.json +20 -37
  41. package/types/automation/get-viewport-size.d.ts +2 -2
  42. package/types/automation/locate.d.ts +3 -3
  43. package/types/automation/set-viewport-size.d.ts +2 -2
  44. package/types/automation/types.d.ts +7 -7
  45. package/types/automation/utils/take-screenshot.d.ts +6 -6
  46. package/types/automation/utils/to-base-check-settings.d.ts +24 -0
  47. package/types/{utils → automation/utils}/wait-for-lazy-load.d.ts +0 -0
  48. package/types/check-and-close.d.ts +7 -7
  49. package/types/check.d.ts +6 -6
  50. package/types/classic/abort.d.ts +2 -2
  51. package/types/classic/check-and-close.d.ts +8 -4
  52. package/types/classic/check.d.ts +4 -4
  53. package/types/classic/close.d.ts +2 -2
  54. package/types/classic/core.d.ts +1 -1
  55. package/types/classic/extract-text.d.ts +3 -3
  56. package/types/classic/get-base-eyes.d.ts +4 -4
  57. package/types/classic/locate-text.d.ts +3 -3
  58. package/types/classic/open-eyes.d.ts +4 -4
  59. package/types/classic/utils/take-dom-capture.d.ts +3 -3
  60. package/types/close-batch.d.ts +1 -1
  61. package/types/close-manager.d.ts +4 -4
  62. package/types/close.d.ts +3 -3
  63. package/types/delete-test.d.ts +1 -1
  64. package/types/errors/abort-error.d.ts +0 -1
  65. package/types/extract-text.d.ts +3 -3
  66. package/types/get-typed-eyes.d.ts +3 -3
  67. package/types/locate-text.d.ts +3 -3
  68. package/types/locate.d.ts +4 -4
  69. package/types/make-ec-client.d.ts +3 -3
  70. package/types/make-manager.d.ts +8 -8
  71. package/types/open-eyes.d.ts +6 -6
  72. package/types/troubleshoot/check-network.d.ts +3 -3
  73. package/types/troubleshoot/utils.d.ts +0 -2
  74. package/types/types.d.ts +6 -4
  75. package/types/ufg/abort.d.ts +3 -4
  76. package/types/ufg/check-and-close.d.ts +20 -8
  77. package/types/ufg/check.d.ts +4 -4
  78. package/types/ufg/close.d.ts +2 -2
  79. package/types/ufg/get-base-eyes.d.ts +6 -6
  80. package/types/ufg/open-eyes.d.ts +4 -4
  81. package/types/ufg/types.d.ts +2 -2
  82. package/types/ufg/utils/extract-broker-url.d.ts +6 -0
  83. package/types/ufg/utils/generate-safe-selectors.d.ts +9 -5
  84. package/types/ufg/utils/take-dom-snapshot.d.ts +31 -6
  85. package/types/ufg/utils/take-snapshots.d.ts +1 -1
  86. package/types/ufg/utils/take-vhses.d.ts +1 -1
  87. package/types/utils/format-results.d.ts +1 -1
  88. package/dist/utils/extract-broker-url.js +0 -19
  89. package/types/utils/extract-broker-url.d.ts +0 -2
  90. package/types/utils/to-base-check-settings.d.ts +0 -18
@@ -42,34 +42,32 @@ function makeMakeManager({ spec, core, concurrency: defaultConcurrency = utils.g
42
42
  classic: (0, core_1.makeCore)({ spec, core, logger }),
43
43
  };
44
44
  const storage = [];
45
- // open eyes with result storage
46
- const openEyes = utils.general.wrap((0, open_eyes_1.makeOpenEyes)({ type, batch, spec, core, cores, logger }), async (openEyes, options) => {
47
- const eyes = await openEyes(options);
48
- const item = { eyes };
49
- storage.push(item);
50
- return utils.general.extend(eyes, {
51
- close(options) {
52
- var _a;
53
- const promise = eyes.close(options);
54
- (_a = item.promise) !== null && _a !== void 0 ? _a : (item.promise = promise);
55
- return promise;
56
- },
57
- checkAndClose(options) {
58
- var _a;
59
- const promise = eyes.checkAndClose(options);
60
- (_a = item.promise) !== null && _a !== void 0 ? _a : (item.promise = promise);
61
- return promise;
62
- },
63
- abort(options) {
64
- var _a;
65
- const promise = eyes.abort(options);
66
- (_a = item.promise) !== null && _a !== void 0 ? _a : (item.promise = promise);
67
- return promise;
68
- },
69
- });
70
- });
71
45
  return {
72
- openEyes,
46
+ openEyes: utils.general.wrap((0, open_eyes_1.makeOpenEyes)({ type, batch, spec, core, cores, logger }), async (openEyes, options) => {
47
+ const eyes = await openEyes(options);
48
+ const item = { eyes };
49
+ storage.push(item);
50
+ return utils.general.extend(eyes, {
51
+ checkAndClose: utils.general.wrap(eyes.checkAndClose, (checkAndClose, options) => {
52
+ var _a;
53
+ const promise = checkAndClose(options);
54
+ (_a = item.promise) !== null && _a !== void 0 ? _a : (item.promise = promise);
55
+ return promise;
56
+ }),
57
+ close: utils.general.wrap(eyes.close, (close, options) => {
58
+ var _a;
59
+ const promise = close(options);
60
+ (_a = item.promise) !== null && _a !== void 0 ? _a : (item.promise = promise);
61
+ return promise;
62
+ }),
63
+ abort: utils.general.wrap(eyes.abort, (abort, options) => {
64
+ var _a;
65
+ const promise = abort(options);
66
+ (_a = item.promise) !== null && _a !== void 0 ? _a : (item.promise = promise);
67
+ return promise;
68
+ }),
69
+ });
70
+ }),
73
71
  closeManager: (0, close_manager_1.makeCloseManager)({ core, storage, logger }),
74
72
  };
75
73
  };
@@ -29,46 +29,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
30
  exports.checkNetwork = void 0;
31
31
  const chalk_1 = __importDefault(require("chalk"));
32
- const utils_1 = require("./utils");
33
32
  const eyes_1 = __importDefault(require("./eyes"));
34
33
  const ufg_1 = __importDefault(require("./ufg"));
35
34
  const utils = __importStar(require("@applitools/utils"));
36
35
  const TIMEOUT = 15000;
37
36
  const config = utils.config.getConfig({ params: ['apiKey', 'serverUrl', 'proxy'] });
38
37
  async function checkNetwork({ stream = process.stdout, eyes = eyes_1.default, ufg = ufg_1.default } = {}) {
39
- const hasClearLine = stream.clearLine && stream.cursorTo;
40
- async function doTest(func, name) {
41
- const delimiterLength = 30 - name.length;
42
- const delimiter = new Array(delimiterLength).join(' ');
43
- hasClearLine && printSuccess(name, delimiter, '[ ? ]');
44
- const start = Date.now();
45
- const funcWithTimeout = (0, utils_1.ptimeoutWithError)(func(), TIMEOUT, new Error('request timeout!'));
46
- const [err] = await (0, utils_1.presult)(funcWithTimeout);
47
- const end = (Date.now() - start) / 1000;
48
- clearLine();
49
- if (err) {
50
- printErr(name, delimiter, `[ X ] +${end}`, err.message, err.message[err.message.length - 1] !== '\n' ? '\n' : '');
51
- }
52
- else {
53
- printSuccess(name, delimiter, `[ OK ] +${end}`, '\n');
54
- }
55
- return !!err;
56
- }
57
- function print(...msg) {
58
- stream.write((0, chalk_1.default)(...msg));
59
- }
60
- function printErr(...msg) {
61
- stream.write(chalk_1.default.red(...msg));
62
- }
63
- function printSuccess(...msg) {
64
- stream.write(chalk_1.default.green(...msg));
65
- }
66
- function clearLine() {
67
- if (hasClearLine) {
68
- stream.clearLine(0);
69
- stream.cursorTo(0);
70
- }
71
- }
38
+ const hasClearLine = !!stream.clearLine && !!stream.cursorTo;
72
39
  if (!config.apiKey) {
73
40
  printErr('Missing "apiKey". Add APPLITOOLS_API_KEY as an env variable or add "apiKey" in applitools.config.js\n');
74
41
  return;
@@ -102,6 +69,46 @@ async function checkNetwork({ stream = process.stdout, eyes = eyes_1.default, uf
102
69
  else if (curlVgErr) {
103
70
  printErr(proxyMsg, '\n', await ufg.getCmd());
104
71
  }
72
+ async function doTest(func, name) {
73
+ const delimiterLength = 30 - name.length;
74
+ const delimiter = new Array(delimiterLength).join(' ');
75
+ hasClearLine && printSuccess(name, delimiter, '[ ? ]');
76
+ const start = Date.now();
77
+ const [err] = await ptimeoutWithError(func(), TIMEOUT, new Error('request timeout!'));
78
+ const end = (Date.now() - start) / 1000;
79
+ clearLine();
80
+ if (err) {
81
+ printErr(name, delimiter, `[ X ] +${end}`, err.message, err.message[err.message.length - 1] !== '\n' ? '\n' : '');
82
+ }
83
+ else {
84
+ printSuccess(name, delimiter, `[ OK ] +${end}`, '\n');
85
+ }
86
+ return !!err;
87
+ }
88
+ function print(...msg) {
89
+ stream.write((0, chalk_1.default)(...msg));
90
+ }
91
+ function printErr(...msg) {
92
+ stream.write(chalk_1.default.red(...msg));
93
+ }
94
+ function printSuccess(...msg) {
95
+ stream.write(chalk_1.default.green(...msg));
96
+ }
97
+ function clearLine() {
98
+ if (hasClearLine) {
99
+ stream.clearLine(0);
100
+ stream.cursorTo(0);
101
+ }
102
+ }
103
+ async function ptimeoutWithError(promise, timeout, err) {
104
+ let timer;
105
+ return Promise.race([
106
+ promise.then(v => (timer && clearTimeout(timer), [undefined, v]), err => (timer && clearTimeout(timer), [err])),
107
+ new Promise(res => {
108
+ timer = setTimeout(() => res([err]), timeout);
109
+ }),
110
+ ]);
111
+ }
105
112
  }
106
113
  exports.checkNetwork = checkNetwork;
107
114
  checkNetwork();
@@ -34,12 +34,12 @@ const utils = __importStar(require("@applitools/utils"));
34
34
  const node_fetch_1 = __importDefault(require("node-fetch"));
35
35
  exports.RENDER_INFO_URL = `${utils_1.config.serverUrl}/api/sessions/renderinfo?apiKey=${utils_1.config.apiKey}`;
36
36
  exports.CURL_CMD = `curl ${exports.RENDER_INFO_URL} ${(0, utils_1.getProxyCurlArg)()}`;
37
- const validateRawAccountInfo = res => {
37
+ const validateRawAccountInfo = (res) => {
38
38
  if (!res || !res.accessToken || !res.resultsUrl) {
39
39
  throw new Error(`bad render info result ${JSON.stringify(res)}`);
40
40
  }
41
41
  };
42
- const validateAccountInfo = res => {
42
+ const validateAccountInfo = (res) => {
43
43
  if (!res || !res.ufg || !res.ufg.accessToken || !res.uploadUrl) {
44
44
  throw new Error(`bad render info result ${JSON.stringify(res)}`);
45
45
  }
@@ -29,9 +29,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.getCmd = void 0;
30
30
  const https_1 = require("https");
31
31
  const crypto_1 = require("crypto");
32
- const eyes_1 = require("./eyes");
32
+ const logger_1 = require("@applitools/logger");
33
33
  const ufg_client_1 = require("@applitools/ufg-client");
34
34
  const utils_1 = require("./utils");
35
+ const eyes_1 = require("./eyes");
35
36
  const utils = __importStar(require("@applitools/utils"));
36
37
  const node_fetch_1 = __importDefault(require("node-fetch"));
37
38
  const value = Buffer.from(JSON.stringify({ resources: {}, domNodes: [] }));
@@ -91,7 +92,7 @@ exports.default = {
91
92
  const url = new URL(UFG_PUT_RESOURCE_URL);
92
93
  const requests = (0, ufg_client_1.makeUFGRequests)({
93
94
  config: { serverUrl: url.origin, accessToken: await accessTokenPromise, uploadUrl: '', stitchingServiceUrl: '' },
94
- logger: null,
95
+ logger: (0, logger_1.makeLogger)(),
95
96
  });
96
97
  await requests.uploadResource({ resource });
97
98
  },
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.ptimeoutWithError = exports.presult = exports.getProxyCurlArg = exports.config = void 0;
26
+ exports.getProxyCurlArg = exports.config = void 0;
27
27
  const utils = __importStar(require("@applitools/utils"));
28
28
  exports.config = {
29
29
  serverUrl: 'https://eyesapi.applitools.com',
@@ -42,27 +42,3 @@ function getProxyCurlArg() {
42
42
  return proxyUrl ? `-x ${proxyUrl.href}` : '';
43
43
  }
44
44
  exports.getProxyCurlArg = getProxyCurlArg;
45
- function presult(promise) {
46
- return promise.then(v => [undefined, v], err => [err]);
47
- }
48
- exports.presult = presult;
49
- async function ptimeoutWithError(promiseOrPromiseFunc, timeout, err) {
50
- let promiseResolved = false;
51
- const hasAborted = () => promiseResolved;
52
- const promise = promiseOrPromiseFunc.then ? promiseOrPromiseFunc : promiseOrPromiseFunc(hasAborted);
53
- let cancel;
54
- const v = await Promise.race([
55
- promise.then(v => ((promiseResolved = true), cancel && clearTimeout(cancel), v), err => ((promiseResolved = true), cancel && clearTimeout(cancel), Promise.reject(err))),
56
- new Promise(res => (cancel = setTimeout(() => {
57
- if (promiseResolved)
58
- res(undefined);
59
- else {
60
- cancel = undefined;
61
- promiseResolved = true;
62
- res(Promise.reject(err));
63
- }
64
- }, timeout))),
65
- ]);
66
- return v;
67
- }
68
- exports.ptimeoutWithError = ptimeoutWithError;
package/dist/ufg/abort.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeAbort = void 0;
4
- const abort_error_1 = require("../errors/abort-error");
5
4
  const driver_1 = require("@applitools/driver");
6
5
  function makeAbort({ storage, target, spec, controller, logger: defaultLogger, }) {
7
6
  return async function ({ settings, logger = defaultLogger, } = {}) {
@@ -20,12 +19,8 @@ function makeAbort({ storage, target, spec, controller, logger: defaultLogger, }
20
19
  catch (error) {
21
20
  eyes = error.info.eyes;
22
21
  renderer = error.info.renderer;
23
- if (!eyes) {
24
- if (error instanceof abort_error_1.AbortError)
25
- return error.info;
26
- else
27
- throw error;
28
- }
22
+ if (!eyes)
23
+ throw error;
29
24
  }
30
25
  const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
31
26
  const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
@@ -29,22 +29,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.makeCheckAndClose = void 0;
30
30
  const driver_1 = require("@applitools/driver");
31
31
  const take_snapshots_1 = require("./utils/take-snapshots");
32
- const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
33
- const to_base_check_settings_1 = require("../utils/to-base-check-settings");
32
+ const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
33
+ const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
34
34
  const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
35
35
  const uniquify_renderers_1 = require("./utils/uniquify-renderers");
36
36
  const abort_error_1 = require("../errors/abort-error");
37
37
  const utils = __importStar(require("@applitools/utils"));
38
38
  const chalk_1 = __importDefault(require("chalk"));
39
39
  function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget, logger: defaultLogger, }) {
40
- return async function checkAndClose({ target = defaultTarget, settings = {}, logger = defaultLogger, snapshots, }) {
40
+ return async function checkAndClose({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
41
41
  var _a, _b, _c;
42
42
  logger.log('Command "checkAndClose" is called with settings', settings);
43
- if (signal.aborted) {
43
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
44
44
  logger.warn('Command "checkAndClose" was called after test was already aborted');
45
45
  throw new abort_error_1.AbortError('Command "checkAndClose" was called after test was already aborted');
46
46
  }
47
- const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
47
+ const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
48
+ settings,
49
+ });
50
+ let snapshots;
48
51
  let snapshotUrl;
49
52
  let snapshotTitle;
50
53
  let userAgent;
@@ -67,13 +70,16 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
67
70
  userAgent = driver.userAgent;
68
71
  const generated = await (0, generate_safe_selectors_1.generateSafeSelectors)({
69
72
  context: driver.currentContext,
70
- elementReferences: [...(elementReferenceToTarget ? [elementReferenceToTarget] : []), ...elementReferencesToCalculate],
73
+ elementReferences: [
74
+ ...(elementReferenceToTarget ? [elementReferenceToTarget] : []),
75
+ ...elementReferencesToCalculate,
76
+ ],
71
77
  });
72
78
  cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
73
79
  if (elementReferenceToTarget) {
74
- regionToTarget = (_b = generated.selectors[0]) === null || _b === void 0 ? void 0 : _b.safeSelector;
75
- if (!regionToTarget)
80
+ if (!((_b = generated.selectors[0]) === null || _b === void 0 ? void 0 : _b.safeSelector))
76
81
  throw new Error('Target element not found');
82
+ regionToTarget = generated.selectors[0].safeSelector;
77
83
  selectorsToCalculate = generated.selectors.slice(1);
78
84
  }
79
85
  else {
@@ -81,42 +87,40 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
81
87
  }
82
88
  }
83
89
  const currentContext = driver.currentContext;
84
- if (!snapshots) {
85
- snapshots = await (0, take_snapshots_1.takeSnapshots)({
86
- driver,
87
- settings: {
88
- ...eyes.test.server,
89
- waitBeforeCapture: settings.waitBeforeCapture,
90
- disableBrowserFetching: settings.disableBrowserFetching,
91
- layoutBreakpoints: settings.layoutBreakpoints,
92
- renderers: settings.renderers,
93
- skipResources: client.getCachedResourceUrls(),
94
- },
95
- hooks: {
96
- async beforeSnapshots() {
97
- if (driver.isWeb && settings.lazyLoad) {
98
- await (0, wait_for_lazy_load_1.waitForLazyLoad)({
99
- context: driver.currentContext,
100
- settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
101
- logger,
102
- });
103
- }
104
- },
105
- },
106
- provides: {
107
- getChromeEmulationDevices: client.getChromeEmulationDevices,
108
- getIOSDevices: client.getIOSDevices,
90
+ snapshots = await (0, take_snapshots_1.takeSnapshots)({
91
+ driver,
92
+ settings: {
93
+ ...eyes.test.server,
94
+ waitBeforeCapture: settings.waitBeforeCapture,
95
+ disableBrowserFetching: settings.disableBrowserFetching,
96
+ layoutBreakpoints: settings.layoutBreakpoints,
97
+ renderers: uniqueRenderers,
98
+ skipResources: client.getCachedResourceUrls(),
99
+ },
100
+ hooks: {
101
+ async beforeSnapshots() {
102
+ if (settings.lazyLoad && driver.isWeb) {
103
+ await (0, wait_for_lazy_load_1.waitForLazyLoad)({
104
+ context: driver.currentContext,
105
+ settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
106
+ logger,
107
+ });
108
+ }
109
109
  },
110
- logger,
111
- });
112
- }
110
+ },
111
+ provides: {
112
+ getChromeEmulationDevices: client.getChromeEmulationDevices,
113
+ getIOSDevices: client.getIOSDevices,
114
+ },
115
+ logger,
116
+ });
113
117
  await currentContext.focus();
114
118
  snapshotUrl = await driver.getUrl();
115
119
  snapshotTitle = await driver.getTitle();
116
120
  await (cleanupGeneratedSelectors === null || cleanupGeneratedSelectors === void 0 ? void 0 : cleanupGeneratedSelectors());
117
121
  }
118
122
  else {
119
- snapshots = !utils.types.isArray(target) ? Array(settings.renderers.length).fill(target) : target;
123
+ snapshots = !utils.types.isArray(target) ? Array(uniqueRenderers.length).fill(target) : target;
120
124
  snapshotUrl = utils.types.has(snapshots[0], 'url') ? snapshots[0].url : undefined;
121
125
  }
122
126
  regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_c = elementReferenceToTarget) !== null && _c !== void 0 ? _c : settings.region);
@@ -124,13 +128,13 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
124
128
  originalSelector: selector,
125
129
  safeSelector: selector,
126
130
  })));
127
- const promises = settings.renderers.map(async (renderer, index) => {
131
+ const promises = uniqueRenderers.map(async (renderer, index) => {
128
132
  if (utils.types.has(renderer, 'name') && renderer.name === 'edge') {
129
133
  const message = chalk_1.default.yellow(`The 'edge' option that is being used in your browsers' configuration will soon be deprecated. Please change it to either 'edgelegacy' for the legacy version or to 'edgechromium' for the new Chromium-based version. Please note, when using the built-in BrowserType enum, then the values are BrowserType.EDGE_LEGACY and BrowserType.EDGE_CHROMIUM, respectively.`);
130
134
  logger.console.log(message);
131
135
  }
132
136
  try {
133
- if (signal.aborted) {
137
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
134
138
  logger.warn('Command "check" was aborted before rendering');
135
139
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
136
140
  }
@@ -149,7 +153,7 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
149
153
  });
150
154
  const [baseEyes] = await eyes.getBaseEyes({ settings: { renderer, type: snapshotType }, logger });
151
155
  try {
152
- if (signal.aborted) {
156
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
153
157
  logger.warn('Command "check" was aborted before rendering');
154
158
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
155
159
  }
@@ -158,7 +162,7 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
158
162
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
159
163
  }
160
164
  const renderTarget = await renderTargetPromise;
161
- if (signal.aborted) {
165
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
162
166
  logger.warn('Command "check" was aborted before rendering');
163
167
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
164
168
  }
@@ -170,26 +174,26 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
170
174
  target: renderTarget,
171
175
  settings: {
172
176
  ...settings,
173
- rendererId: baseEyes.test.rendererId,
174
177
  region: regionToTarget,
175
- type: utils.types.has(snapshot, 'cdt') ? 'web' : 'native',
176
- renderer,
177
178
  selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
178
179
  includeFullPageSize: Boolean(settings.pageId),
180
+ type: snapshotType,
181
+ renderer,
182
+ rendererId: baseEyes.test.rendererId,
179
183
  },
180
184
  signal,
181
185
  });
182
186
  let offset = 0;
183
187
  const baseSettings = getBaseCheckSettings({
184
188
  calculatedRegions: selectorsToCalculate.map(({ originalSelector, safeSelector }) => ({
185
- selector: originalSelector,
189
+ selector: originalSelector !== null && originalSelector !== void 0 ? originalSelector : undefined,
186
190
  regions: safeSelector ? selectorRegions[offset++] : [],
187
191
  })),
188
192
  });
189
193
  baseSettings.renderId = renderId;
190
194
  baseTarget.source = snapshotUrl;
191
195
  baseTarget.name = snapshotTitle;
192
- if (signal.aborted) {
196
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
193
197
  logger.warn('Command "check" was aborted after rendering');
194
198
  throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
195
199
  }
package/dist/ufg/check.js CHANGED
@@ -29,8 +29,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.makeCheck = void 0;
30
30
  const driver_1 = require("@applitools/driver");
31
31
  const take_snapshots_1 = require("./utils/take-snapshots");
32
- const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
33
- const to_base_check_settings_1 = require("../utils/to-base-check-settings");
32
+ const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
33
+ const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
34
34
  const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
35
35
  const uniquify_renderers_1 = require("./utils/uniquify-renderers");
36
36
  const abort_error_1 = require("../errors/abort-error");
@@ -38,13 +38,15 @@ const utils = __importStar(require("@applitools/utils"));
38
38
  const chalk_1 = __importDefault(require("chalk"));
39
39
  function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger: defaultLogger, }) {
40
40
  return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
41
- var _a, _b, _c, _d;
42
- logger.log('Command "check" is called with settings', settings);
43
- if (signal.aborted) {
44
- logger.warn('Command "check" was called after test was already aborted');
41
+ var _a, _b, _c, _d, _e;
42
+ logger === null || logger === void 0 ? void 0 : logger.log('Command "check" is called with settings', settings);
43
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
44
+ logger === null || logger === void 0 ? void 0 : logger.warn('Command "check" was called after test was already aborted');
45
45
  throw new abort_error_1.AbortError('Command "check" was called after test was already aborted');
46
46
  }
47
- const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
47
+ const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
48
+ settings,
49
+ });
48
50
  let snapshots;
49
51
  let snapshotUrl;
50
52
  let snapshotTitle;
@@ -52,8 +54,8 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
52
54
  let regionToTarget;
53
55
  let selectorsToCalculate;
54
56
  const uniqueRenderers = (0, uniquify_renderers_1.uniquifyRenderers)((_a = settings.renderers) !== null && _a !== void 0 ? _a : []);
55
- if ((0, driver_1.isDriver)(target, spec)) {
56
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
57
+ const driver = spec && (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
58
+ if (driver) {
57
59
  await driver.currentContext.setScrollingElement((_b = settings.scrollRootElement) !== null && _b !== void 0 ? _b : null);
58
60
  if (uniqueRenderers.length === 0) {
59
61
  if (driver.isWeb) {
@@ -69,13 +71,16 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
69
71
  userAgent = driver.userAgent;
70
72
  const generated = await (0, generate_safe_selectors_1.generateSafeSelectors)({
71
73
  context: driver.currentContext,
72
- elementReferences: [...(elementReferenceToTarget ? [elementReferenceToTarget] : []), ...elementReferencesToCalculate],
74
+ elementReferences: [
75
+ ...(elementReferenceToTarget ? [elementReferenceToTarget] : []),
76
+ ...elementReferencesToCalculate,
77
+ ],
73
78
  });
74
79
  cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
75
80
  if (elementReferenceToTarget) {
76
- regionToTarget = (_c = generated.selectors[0]) === null || _c === void 0 ? void 0 : _c.safeSelector;
77
- if (!regionToTarget)
81
+ if (!((_c = generated.selectors[0]) === null || _c === void 0 ? void 0 : _c.safeSelector))
78
82
  throw new Error('Target element not found');
83
+ regionToTarget = (_d = generated.selectors[0]) === null || _d === void 0 ? void 0 : _d.safeSelector;
79
84
  selectorsToCalculate = generated.selectors.slice(1);
80
85
  }
81
86
  else {
@@ -119,7 +124,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
119
124
  snapshots = !utils.types.isArray(target) ? Array(uniqueRenderers.length).fill(target) : target;
120
125
  snapshotUrl = utils.types.has(snapshots[0], 'url') ? snapshots[0].url : undefined;
121
126
  }
122
- regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_d = elementReferenceToTarget) !== null && _d !== void 0 ? _d : settings.region);
127
+ regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_e = elementReferenceToTarget) !== null && _e !== void 0 ? _e : settings.region);
123
128
  selectorsToCalculate !== null && selectorsToCalculate !== void 0 ? selectorsToCalculate : (selectorsToCalculate = elementReferencesToCalculate.map(selector => ({
124
129
  originalSelector: selector,
125
130
  safeSelector: selector,
@@ -127,11 +132,11 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
127
132
  const promises = uniqueRenderers.map(async (renderer, index) => {
128
133
  if (utils.types.has(renderer, 'name') && renderer.name === 'edge') {
129
134
  const message = chalk_1.default.yellow(`The 'edge' option that is being used in your browsers' configuration will soon be deprecated. Please change it to either 'edgelegacy' for the legacy version or to 'edgechromium' for the new Chromium-based version. Please note, when using the built-in BrowserType enum, then the values are BrowserType.EDGE_LEGACY and BrowserType.EDGE_CHROMIUM, respectively.`);
130
- logger.console.log(message);
135
+ logger === null || logger === void 0 ? void 0 : logger.console.log(message);
131
136
  }
132
137
  try {
133
- if (signal.aborted) {
134
- logger.warn('Command "check" was aborted before rendering');
138
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
139
+ logger === null || logger === void 0 ? void 0 : logger.warn('Command "check" was aborted before rendering');
135
140
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
136
141
  }
137
142
  const { cookies, ...snapshot } = snapshots[index];
@@ -149,7 +154,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
149
154
  });
150
155
  const [baseEyes] = await eyes.getBaseEyes({ settings: { renderer, type: snapshotType }, logger });
151
156
  try {
152
- if (signal.aborted) {
157
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
153
158
  logger.warn('Command "check" was aborted before rendering');
154
159
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
155
160
  }
@@ -158,7 +163,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
158
163
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
159
164
  }
160
165
  const renderTarget = await renderTargetPromise;
161
- if (signal.aborted) {
166
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
162
167
  logger.warn('Command "check" was aborted before rendering');
163
168
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
164
169
  }
@@ -182,14 +187,14 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
182
187
  let offset = 0;
183
188
  const baseSettings = getBaseCheckSettings({
184
189
  calculatedRegions: selectorsToCalculate.map(({ originalSelector, safeSelector }) => ({
185
- selector: originalSelector,
190
+ selector: originalSelector !== null && originalSelector !== void 0 ? originalSelector : undefined,
186
191
  regions: safeSelector ? selectorRegions[offset++] : [],
187
192
  })),
188
193
  });
189
194
  baseSettings.renderId = renderId;
190
195
  baseTarget.source = snapshotUrl;
191
196
  baseTarget.name = snapshotTitle;
192
- if (signal.aborted) {
197
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
193
198
  logger.warn('Command "check" was aborted after rendering');
194
199
  throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
195
200
  }
@@ -197,7 +202,11 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
197
202
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
198
203
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
199
204
  }
200
- const [result] = await baseEyes.check({ target: { ...baseTarget, isTransformed: true }, settings: baseSettings, logger });
205
+ const [result] = await baseEyes.check({
206
+ target: { ...baseTarget, isTransformed: true },
207
+ settings: baseSettings,
208
+ logger,
209
+ });
201
210
  if (baseEyes.aborted) {
202
211
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
203
212
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
@@ -205,9 +214,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
205
214
  return { ...result, eyes: baseEyes, renderer };
206
215
  }
207
216
  catch (error) {
208
- const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
209
- const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
210
- await baseEyes.abort({ settings: { testMetadata } });
217
+ await baseEyes.abort({ settings: { testMetadata: await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata()) } });
211
218
  error.info = { eyes: baseEyes };
212
219
  throw error;
213
220
  }
package/dist/ufg/core.js CHANGED
@@ -68,11 +68,11 @@ function makeCore({ concurrency, spec, client, core, agentId = 'core-ufg', cwd =
68
68
  });
69
69
  return utils.general.extend(core, {
70
70
  type: 'ufg',
71
- isDriver: spec === null || spec === void 0 ? void 0 : spec.isDriver,
72
- isElement: spec === null || spec === void 0 ? void 0 : spec.isElement,
73
- isSelector: spec === null || spec === void 0 ? void 0 : spec.isSelector,
74
- getViewportSize: (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
75
- setViewportSize: (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
71
+ isDriver: spec && spec.isDriver,
72
+ isElement: spec && spec.isElement,
73
+ isSelector: spec && spec.isSelector,
74
+ getViewportSize: spec && (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
75
+ setViewportSize: spec && (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
76
76
  locate: (0, locate_1.makeLocate)({ spec, core, logger }),
77
77
  openEyes: (0, open_eyes_1.makeOpenEyes)({ spec, client, core, logger }),
78
78
  });
@@ -32,6 +32,8 @@ function makeGetBaseEyes({ settings: defaultSettings, core, client, eyes, logger
32
32
  return getBaseEyesWithCache;
33
33
  async function getBaseEyes({ settings, logger = defaultLogger, } = {}) {
34
34
  logger.log(`Command "getBaseEyes" is called with settings`, settings);
35
+ if (!settings)
36
+ throw new Error('');
35
37
  const environment = await client.bookRenderer({ settings });
36
38
  const eyes = await core.openEyes({
37
39
  settings: { ...defaultSettings, environment: { ...defaultSettings.environment, ...environment } },
@@ -82,7 +82,7 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
82
82
  },
83
83
  getBaseEyes,
84
84
  // check with indexing and storage
85
- check: utils.general.wrap((0, check_1.makeCheck)({ eyes, client, target: driver, spec, signal: controller.signal, logger }), async (check, options = {}) => {
85
+ check: utils.general.wrap((0, check_1.makeCheck)({ eyes, client: client, target: driver, spec, signal: controller.signal, logger }), async (check, options = {}) => {
86
86
  const results = await check(options);
87
87
  storage.push(...results.map(result => ({
88
88
  promise: result.promise,
@@ -90,7 +90,16 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
90
90
  })));
91
91
  return results;
92
92
  }),
93
- checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, client, target: driver, spec, signal: controller.signal, logger }),
93
+ checkAndClose: (0, check_and_close_1.makeCheckAndClose)({
94
+ eyes,
95
+ client: client,
96
+ target: driver,
97
+ spec,
98
+ signal: controller.signal,
99
+ logger,
100
+ }),
101
+ locateText: null,
102
+ extractText: null,
94
103
  // close only once
95
104
  close: utils.general.wrap((0, close_1.makeClose)({ storage, target: driver, logger }), async (close, options) => {
96
105
  if (closed || aborted)