@applitools/core 1.4.6 → 2.0.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 (111) hide show
  1. package/dist/{classic → automation}/extract-text.js +14 -11
  2. package/dist/automation/get-viewport-size.js +2 -2
  3. package/dist/{classic → automation}/locate-text.js +5 -6
  4. package/dist/automation/locate.js +2 -2
  5. package/dist/automation/set-viewport-size.js +2 -2
  6. package/dist/automation/utils/take-screenshot.js +2 -2
  7. package/dist/{utils → automation/utils}/to-base-check-settings.js +3 -2
  8. package/dist/{utils → automation/utils}/wait-for-lazy-load.js +2 -2
  9. package/dist/check-and-close.js +7 -5
  10. package/dist/check.js +4 -5
  11. package/dist/classic/abort.js +4 -4
  12. package/dist/classic/check-and-close.js +9 -5
  13. package/dist/classic/check.js +12 -8
  14. package/dist/classic/close.js +3 -3
  15. package/dist/classic/core.js +9 -5
  16. package/dist/classic/open-eyes.js +17 -19
  17. package/dist/classic/utils/take-dom-capture.js +35 -54
  18. package/dist/close.js +1 -25
  19. package/dist/core.js +9 -5
  20. package/dist/errors/abort-error.js +5 -1
  21. package/dist/extract-text.js +13 -17
  22. package/dist/get-eyes-results.js +18 -0
  23. package/dist/{close-manager.js → get-manager-results.js} +11 -12
  24. package/dist/get-typed-eyes.js +5 -6
  25. package/dist/index.js +3 -3
  26. package/dist/locate-text.js +33 -7
  27. package/dist/locate.js +1 -1
  28. package/dist/make-ec-client.js +1 -9
  29. package/dist/make-manager.js +8 -33
  30. package/dist/open-eyes.js +3 -5
  31. package/dist/troubleshoot/check-network.js +41 -34
  32. package/dist/troubleshoot/eyes.js +2 -2
  33. package/dist/troubleshoot/ufg.js +3 -2
  34. package/dist/troubleshoot/utils.js +1 -25
  35. package/dist/types.js +0 -1
  36. package/dist/ufg/abort.js +11 -24
  37. package/dist/ufg/check-and-close.js +54 -50
  38. package/dist/ufg/check.js +33 -24
  39. package/dist/ufg/close.js +17 -18
  40. package/dist/ufg/core.js +9 -5
  41. package/dist/ufg/get-base-eyes.js +2 -0
  42. package/dist/ufg/get-results.js +27 -0
  43. package/dist/ufg/open-eyes.js +22 -25
  44. package/dist/ufg/utils/extract-broker-url.js +52 -0
  45. package/dist/ufg/utils/generate-safe-selectors.js +10 -5
  46. package/dist/ufg/utils/take-dom-snapshot.js +37 -36
  47. package/dist/ufg/utils/take-dom-snapshots.js +13 -17
  48. package/dist/ufg/utils/take-snapshots.js +3 -3
  49. package/dist/ufg/utils/take-vhses.js +60 -166
  50. package/dist/utils/format-results.js +37 -37
  51. package/package.json +19 -36
  52. package/types/automation/extract-text.d.ts +16 -0
  53. package/types/automation/get-viewport-size.d.ts +7 -7
  54. package/types/automation/locate-text.d.ts +15 -0
  55. package/types/automation/locate.d.ts +8 -8
  56. package/types/automation/set-viewport-size.d.ts +7 -7
  57. package/types/automation/types.d.ts +38 -42
  58. package/types/automation/utils/take-screenshot.d.ts +9 -9
  59. package/types/automation/utils/to-base-check-settings.d.ts +17 -0
  60. package/types/{utils → automation/utils}/wait-for-lazy-load.d.ts +3 -3
  61. package/types/check-and-close.d.ts +11 -13
  62. package/types/check.d.ts +12 -12
  63. package/types/classic/abort.d.ts +10 -10
  64. package/types/classic/check-and-close.d.ts +15 -11
  65. package/types/classic/check.d.ts +11 -11
  66. package/types/classic/close.d.ts +10 -10
  67. package/types/classic/core.d.ts +4 -4
  68. package/types/classic/get-base-eyes.d.ts +4 -4
  69. package/types/classic/open-eyes.d.ts +9 -9
  70. package/types/classic/types.d.ts +7 -7
  71. package/types/classic/utils/take-dom-capture.d.ts +4 -4
  72. package/types/close-batch.d.ts +1 -1
  73. package/types/close.d.ts +9 -8
  74. package/types/core.d.ts +4 -4
  75. package/types/delete-test.d.ts +1 -1
  76. package/types/errors/abort-error.d.ts +3 -2
  77. package/types/extract-text.d.ts +11 -9
  78. package/types/get-eyes-results.d.ts +12 -0
  79. package/types/get-manager-results.d.ts +14 -0
  80. package/types/get-typed-eyes.d.ts +9 -8
  81. package/types/index.d.ts +3 -3
  82. package/types/locate-text.d.ts +11 -9
  83. package/types/locate.d.ts +9 -9
  84. package/types/make-ec-client.d.ts +3 -3
  85. package/types/make-manager.d.ts +12 -12
  86. package/types/open-eyes.d.ts +13 -13
  87. package/types/troubleshoot/check-network.d.ts +3 -3
  88. package/types/troubleshoot/utils.d.ts +0 -2
  89. package/types/types.d.ts +65 -85
  90. package/types/ufg/abort.d.ts +10 -19
  91. package/types/ufg/check-and-close.d.ts +25 -13
  92. package/types/ufg/check.d.ts +11 -11
  93. package/types/ufg/close.d.ts +10 -19
  94. package/types/ufg/core.d.ts +4 -4
  95. package/types/ufg/get-base-eyes.d.ts +6 -6
  96. package/types/ufg/get-results.d.ts +11 -0
  97. package/types/ufg/open-eyes.d.ts +9 -9
  98. package/types/ufg/types.d.ts +13 -17
  99. package/types/ufg/utils/extract-broker-url.d.ts +6 -0
  100. package/types/ufg/utils/generate-safe-selectors.d.ts +14 -10
  101. package/types/ufg/utils/take-dom-snapshot.d.ts +34 -9
  102. package/types/ufg/utils/take-dom-snapshots.d.ts +3 -3
  103. package/types/ufg/utils/take-snapshots.d.ts +4 -4
  104. package/types/ufg/utils/take-vhses.d.ts +4 -4
  105. package/types/utils/format-results.d.ts +1 -1
  106. package/dist/utils/extract-broker-url.js +0 -24
  107. package/types/classic/extract-text.d.ts +0 -16
  108. package/types/classic/locate-text.d.ts +0 -15
  109. package/types/close-manager.d.ts +0 -18
  110. package/types/utils/extract-broker-url.d.ts +0 -2
  111. package/types/utils/to-base-check-settings.d.ts +0 -18
@@ -25,16 +25,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeExtractText = void 0;
27
27
  const driver_1 = require("@applitools/driver");
28
- const take_screenshot_1 = require("../automation/utils/take-screenshot");
29
- const take_dom_capture_1 = require("./utils/take-dom-capture");
28
+ const take_screenshot_1 = require("./utils/take-screenshot");
29
+ const take_dom_capture_1 = require("../classic/utils/take-dom-capture");
30
30
  const utils = __importStar(require("@applitools/utils"));
31
- const snippets_1 = require("@applitools/snippets");
32
- function makeExtractText({ eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
33
- return async function extractText({ target = defaultTarget, settings, logger = defaultLogger, }) {
31
+ const { getText } = require('@applitools/snippets');
32
+ function makeExtractText({ core, spec, logger: defaultLogger }) {
33
+ return async function extractText({ target, settings, logger = defaultLogger, }) {
34
34
  logger.log('Command "extractText" is called with settings', settings);
35
- const [baseEyes] = await eyes.getBaseEyes();
36
35
  if (!(0, driver_1.isDriver)(target, spec)) {
37
- return baseEyes.extractText({ target, settings: settings, logger });
36
+ return core.extractText({ target, settings: settings, logger });
38
37
  }
39
38
  settings = utils.types.isArray(settings) ? settings : [settings];
40
39
  const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
@@ -42,11 +41,11 @@ function makeExtractText({ eyes, target: defaultTarget, spec, logger: defaultLog
42
41
  var _a;
43
42
  const steps = await prev;
44
43
  const screenshot = await (0, take_screenshot_1.takeScreenshot)({ driver, settings, logger });
45
- if (!settings.hint && !utils.types.has(settings.region, ['x', 'y', 'width', 'height'])) {
44
+ if (!settings.hint && (0, driver_1.isElementReference)(settings.region, spec)) {
46
45
  const element = await driver.currentContext.element(settings.region);
47
46
  if (!element)
48
47
  throw new Error(`Unable to find element using provided selector`);
49
- settings.hint = await driver.currentContext.execute(snippets_1.getText, [element]);
48
+ settings.hint = await driver.currentContext.execute(getText, [element]);
50
49
  if (settings.hint)
51
50
  settings.hint = settings.hint.replace(/[.\\+]/g, '\\$&');
52
51
  }
@@ -60,11 +59,15 @@ function makeExtractText({ eyes, target: defaultTarget, spec, logger: defaultLog
60
59
  await screenshot.scrollingElement.setAttribute('data-applitools-scroll', 'true');
61
60
  else
62
61
  await ((_a = screenshot.element) === null || _a === void 0 ? void 0 : _a.setAttribute('data-applitools-scroll', 'true'));
63
- baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() => null);
62
+ baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() => undefined);
64
63
  }
65
64
  delete settings.region;
66
65
  delete settings.normalization;
67
- const results = await baseEyes.extractText({ target: baseTarget, settings: settings, logger });
66
+ const results = await core.extractText({
67
+ target: baseTarget,
68
+ settings: settings,
69
+ logger,
70
+ });
68
71
  steps.push(results);
69
72
  return steps;
70
73
  }, Promise.resolve([]));
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeGetViewportSize = void 0;
4
4
  const driver_1 = require("@applitools/driver");
5
- function makeGetViewportSize({ spec, logger: defaultLogger, }) {
5
+ function makeGetViewportSize({ spec, logger: defaultLogger }) {
6
6
  return async function getViewportSize({ target, logger = defaultLogger, }) {
7
7
  logger.log(`Command "getViewportSize" is called`);
8
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
8
+ const driver = await (0, driver_1.makeDriver)({ driver: target, spec, logger });
9
9
  return driver.getViewportSize();
10
10
  };
11
11
  }
@@ -25,15 +25,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeLocateText = void 0;
27
27
  const driver_1 = require("@applitools/driver");
28
- const take_screenshot_1 = require("../automation/utils/take-screenshot");
28
+ const take_screenshot_1 = require("./utils/take-screenshot");
29
29
  // import {takeDomCapture} from './utils/take-dom-capture'
30
30
  const utils = __importStar(require("@applitools/utils"));
31
- function makeLocateText({ eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
32
- return async function locateText({ target = defaultTarget, settings, logger = defaultLogger, }) {
31
+ function makeLocateText({ core, spec, logger: defaultLogger }) {
32
+ return async function locateText({ target, settings, logger = defaultLogger, }) {
33
33
  logger.log('Command "locateText" is called with settings', settings);
34
- const [baseEyes] = await eyes.getBaseEyes();
35
34
  if (!(0, driver_1.isDriver)(target, spec)) {
36
- return baseEyes.locateText({ target, settings: settings, logger });
35
+ return core.locateText({ target, settings: settings, logger });
37
36
  }
38
37
  const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
39
38
  const screenshot = await (0, take_screenshot_1.takeScreenshot)({ driver, settings, logger });
@@ -46,7 +45,7 @@ function makeLocateText({ eyes, target: defaultTarget, spec, logger: defaultLogg
46
45
  // else await screenshot.element?.setAttribute('data-applitools-scroll', 'true')
47
46
  // baseTarget.dom = await takeDomCapture({driver, logger}).catch(() => null)
48
47
  }
49
- const results = await baseEyes.locateText({
48
+ const results = await core.locateText({
50
49
  target: baseTarget,
51
50
  settings: settings,
52
51
  logger,
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeLocate = void 0;
4
4
  const driver_1 = require("@applitools/driver");
5
5
  const take_screenshot_1 = require("./utils/take-screenshot");
6
- function makeLocate({ spec, core, logger: defaultLogger, }) {
6
+ function makeLocate({ spec, core, logger: defaultLogger }) {
7
7
  return async function locate({ settings, target, logger = defaultLogger, }) {
8
8
  logger.log(`Command "locate" is called with settings`, settings);
9
9
  if (!(0, driver_1.isDriver)(target, spec)) {
10
10
  return core.locate({ target, settings: settings, logger });
11
11
  }
12
- const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
12
+ const driver = await (0, driver_1.makeDriver)({ driver: target, spec, logger });
13
13
  const screenshot = await (0, take_screenshot_1.takeScreenshot)({ driver, settings, logger });
14
14
  const baseTarget = { image: await screenshot.image.toPng() };
15
15
  const results = await core.locate({ target: baseTarget, settings: settings, logger });
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeSetViewportSize = void 0;
4
4
  const driver_1 = require("@applitools/driver");
5
- function makeSetViewportSize({ spec, logger: defaultLogger, }) {
5
+ function makeSetViewportSize({ spec, logger: defaultLogger }) {
6
6
  return async function setViewportSize({ target, size, logger = defaultLogger, }) {
7
7
  logger.log(`Command "setViewportSize" is called with size`, size);
8
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
8
+ const driver = await (0, driver_1.makeDriver)({ driver: target, spec, logger });
9
9
  return driver.setViewportSize(size);
10
10
  };
11
11
  }
@@ -24,11 +24,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.takeScreenshot = void 0;
27
- const screenshoter_1 = require("@applitools/screenshoter");
28
27
  const utils = __importStar(require("@applitools/utils"));
28
+ const { takeScreenshot: legacyTakeScreenshot } = require('@applitools/screenshoter');
29
29
  async function takeScreenshot({ driver, settings, logger, }) {
30
30
  var _a, _b;
31
- return (0, screenshoter_1.takeScreenshot)({
31
+ return legacyTakeScreenshot({
32
32
  driver,
33
33
  frames: (_a = settings.frames) === null || _a === void 0 ? void 0 : _a.map(frame => {
34
34
  return utils.types.isPlainObject(frame) && utils.types.has(frame, 'frame')
@@ -25,7 +25,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.toBaseCheckSettings = void 0;
27
27
  const utils = __importStar(require("@applitools/utils"));
28
- function toBaseCheckSettings({ settings, }) {
28
+ function toBaseCheckSettings({ settings }) {
29
29
  const regionTypes = ['ignore', 'layout', 'strict', 'content', 'floating', 'accessibility'];
30
30
  const elementReferencesToCalculate = regionTypes.flatMap(regionType => {
31
31
  var _a;
@@ -46,9 +46,10 @@ function toBaseCheckSettings({ settings, }) {
46
46
  delete transformedSettings.region;
47
47
  }
48
48
  regionTypes.forEach(regionType => {
49
+ var _a;
49
50
  if (!transformedSettings[`${regionType}Regions`])
50
51
  return;
51
- transformedSettings[`${regionType}Regions`] = transformedSettings[`${regionType}Regions`].flatMap(reference => {
52
+ transformedSettings[`${regionType}Regions`] = (_a = transformedSettings[`${regionType}Regions`]) === null || _a === void 0 ? void 0 : _a.flatMap(reference => {
52
53
  const { region, ...options } = utils.types.has(reference, 'region') ? reference : { region: reference };
53
54
  if (isRegion(region))
54
55
  return reference;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.waitForLazyLoad = void 0;
4
- const snippets_1 = require("@applitools/snippets");
4
+ const { lazyLoad } = require('@applitools/snippets');
5
5
  async function waitForLazyLoad({ context, settings, logger, }) {
6
6
  var _a, _b, _c, _d, _e;
7
7
  logger.log('lazy loading the page before capturing a screenshot');
8
- await context.executePoll(snippets_1.lazyLoad, {
8
+ await context.executePoll(lazyLoad, {
9
9
  main: [
10
10
  await context.getScrollingElement(),
11
11
  {
@@ -2,16 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeCheckAndClose = void 0;
4
4
  const driver_1 = require("@applitools/driver");
5
- function makeCheckAndClose({ type: defaultType, eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
5
+ function makeCheckAndClose({ type: defaultType = 'classic', eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
6
6
  return async function checkAndClose({ type = defaultType, target = defaultTarget, settings = {}, config, logger = defaultLogger, } = {}) {
7
7
  settings = { ...config === null || config === void 0 ? void 0 : config.screenshot, ...config === null || config === void 0 ? void 0 : config.check, ...config === null || config === void 0 ? void 0 : config.close, ...settings };
8
8
  const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
9
9
  const typedEyes = await eyes.getTypedEyes({
10
10
  type,
11
- settings: driver && {
12
- type: driver.isNative ? 'native' : 'web',
13
- renderers: settings.renderers,
14
- },
11
+ settings: driver
12
+ ? {
13
+ type: driver.isNative ? 'native' : 'web',
14
+ renderers: settings.renderers,
15
+ }
16
+ : undefined,
15
17
  logger,
16
18
  });
17
19
  const results = await typedEyes.checkAndClose({ target: driver !== null && driver !== void 0 ? driver : target, settings, logger });
package/dist/check.js CHANGED
@@ -30,7 +30,7 @@ exports.makeCheck = void 0;
30
30
  const driver_1 = require("@applitools/driver");
31
31
  const utils = __importStar(require("@applitools/utils"));
32
32
  const chalk_1 = __importDefault(require("chalk"));
33
- function makeCheck({ type: defaultType, eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
33
+ function makeCheck({ type: defaultType = 'classic', eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
34
34
  let stepIndex = 0;
35
35
  return async function check({ type = defaultType, target = defaultTarget, settings, config, logger = defaultLogger, } = {}) {
36
36
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
@@ -62,10 +62,9 @@ function makeCheck({ type: defaultType, eyes, target: defaultTarget, spec, logge
62
62
  const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
63
63
  const typedEyes = await eyes.getTypedEyes({
64
64
  type,
65
- settings: driver && {
66
- type: driver.isNative ? 'native' : 'web',
67
- renderers: settings.renderers,
68
- },
65
+ settings: driver
66
+ ? { type: driver.isNative ? 'native' : 'web', renderers: settings.renderers }
67
+ : undefined,
69
68
  logger,
70
69
  });
71
70
  const results = await typedEyes.check({ target: driver !== null && driver !== void 0 ? driver : target, settings, logger });
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeAbort = void 0;
4
4
  const driver_1 = require("@applitools/driver");
5
- function makeAbort({ eyes, target, spec, logger: defaultLogger, }) {
6
- return async function ({ settings, logger = defaultLogger, } = {}) {
5
+ function makeAbort({ eyes, target, spec, logger: defaultLogger }) {
6
+ return async function abort({ settings, logger = defaultLogger, } = {}) {
7
7
  const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
8
8
  const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
9
- const [baseEyes] = await eyes.getBaseEyes();
10
- return await baseEyes.abort({ settings: { ...settings, testMetadata }, logger });
9
+ const baseEyes = await eyes.getBaseEyes();
10
+ await Promise.all(baseEyes.map(baseEyes => baseEyes.abort({ settings: { ...settings, testMetadata }, logger })));
11
11
  };
12
12
  }
13
13
  exports.makeAbort = makeAbort;
@@ -27,13 +27,15 @@ exports.makeCheckAndClose = void 0;
27
27
  const driver_1 = require("@applitools/driver");
28
28
  const take_screenshot_1 = require("../automation/utils/take-screenshot");
29
29
  const take_dom_capture_1 = require("./utils/take-dom-capture");
30
- const to_base_check_settings_1 = require("../utils/to-base-check-settings");
31
- const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
30
+ const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
31
+ const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
32
32
  const utils = __importStar(require("@applitools/utils"));
33
33
  function makeCheckAndClose({ eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
34
34
  return async function checkAndClose({ target = defaultTarget, settings = {}, logger = defaultLogger, } = {}) {
35
35
  var _a;
36
36
  logger.log('Command "checkAndClose" is called with settings', settings);
37
+ if (!target)
38
+ throw new Error('Method was called with no target');
37
39
  const baseEyes = await eyes.getBaseEyes({ logger });
38
40
  if (!(0, driver_1.isDriver)(target, spec)) {
39
41
  const baseSettings = settings;
@@ -66,13 +68,15 @@ function makeCheckAndClose({ eyes, target: defaultTarget, spec, logger: defaultL
66
68
  await screenshot.scrollingElement.setAttribute('data-applitools-scroll', 'true');
67
69
  else
68
70
  await ((_a = screenshot.element) === null || _a === void 0 ? void 0 : _a.setAttribute('data-applitools-scroll', 'true'));
69
- baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() => null);
71
+ baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() => undefined);
70
72
  }
71
73
  if (settings.pageId) {
72
74
  const scrollingElement = await driver.mainContext.getScrollingElement();
73
- const scrollingOffset = driver.isNative ? { x: 0, y: 0 } : await scrollingElement.getScrollOffset();
75
+ const scrollingOffset = !scrollingElement || driver.isNative ? { x: 0, y: 0 } : await scrollingElement.getScrollOffset();
74
76
  baseTarget.locationInView = utils.geometry.offset(scrollingOffset, screenshot.region);
75
- baseTarget.fullViewSize = scrollingElement ? await scrollingElement.getContentSize() : await driver.getViewportSize();
77
+ baseTarget.fullViewSize = scrollingElement
78
+ ? await scrollingElement.getContentSize()
79
+ : await driver.getViewportSize();
76
80
  }
77
81
  await screenshot.restoreState();
78
82
  return (await Promise.all(baseEyes.map(baseEyes => baseEyes.checkAndClose({ target: baseTarget, settings: baseSettings, logger })))).flat();
@@ -27,13 +27,15 @@ exports.makeCheck = void 0;
27
27
  const driver_1 = require("@applitools/driver");
28
28
  const take_screenshot_1 = require("../automation/utils/take-screenshot");
29
29
  const take_dom_capture_1 = require("./utils/take-dom-capture");
30
- const to_base_check_settings_1 = require("../utils/to-base-check-settings");
31
- const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
30
+ const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
31
+ const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
32
32
  const utils = __importStar(require("@applitools/utils"));
33
33
  function makeCheck({ eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
34
34
  return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, } = {}) {
35
- var _a, _b;
35
+ var _a, _b, _c;
36
36
  logger.log('Command "check" is called with settings', settings);
37
+ if (!target)
38
+ throw new Error('Method was called with no target');
37
39
  const baseEyes = await eyes.getBaseEyes();
38
40
  if (!(0, driver_1.isDriver)(target, spec)) {
39
41
  return (await Promise.all(baseEyes.map(baseEyes => baseEyes.check({ target, settings: settings, logger })))).flat();
@@ -52,7 +54,7 @@ function makeCheck({ eyes, target: defaultTarget, spec, logger: defaultLogger, }
52
54
  }
53
55
  // TODO it actually could be different per eyes
54
56
  const shouldRunOnce = true;
55
- const finishAt = Date.now() + settings.retryTimeout;
57
+ const finishAt = Date.now() + ((_b = settings.retryTimeout) !== null && _b !== void 0 ? _b : 0);
56
58
  let baseTarget;
57
59
  let baseSettings;
58
60
  let results;
@@ -75,14 +77,16 @@ function makeCheck({ eyes, target: defaultTarget, spec, logger: defaultLogger, }
75
77
  if (settings.fully)
76
78
  await screenshot.scrollingElement.setAttribute('data-applitools-scroll', 'true');
77
79
  else
78
- await ((_b = screenshot.element) === null || _b === void 0 ? void 0 : _b.setAttribute('data-applitools-scroll', 'true'));
79
- baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() => null);
80
+ await ((_c = screenshot.element) === null || _c === void 0 ? void 0 : _c.setAttribute('data-applitools-scroll', 'true'));
81
+ baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() => undefined);
80
82
  }
81
83
  if (settings.pageId) {
82
84
  const scrollingElement = await driver.mainContext.getScrollingElement();
83
- const scrollingOffset = driver.isNative ? { x: 0, y: 0 } : await scrollingElement.getScrollOffset();
85
+ const scrollingOffset = !scrollingElement || driver.isNative ? { x: 0, y: 0 } : await scrollingElement.getScrollOffset();
84
86
  baseTarget.locationInView = utils.geometry.offset(scrollingOffset, screenshot.region);
85
- baseTarget.fullViewSize = scrollingElement ? await scrollingElement.getContentSize() : await driver.getViewportSize();
87
+ baseTarget.fullViewSize = scrollingElement
88
+ ? await scrollingElement.getContentSize()
89
+ : await driver.getViewportSize();
86
90
  }
87
91
  await screenshot.restoreState();
88
92
  baseSettings.ignoreMismatch = !shouldRunOnce;
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeClose = void 0;
4
4
  const driver_1 = require("@applitools/driver");
5
- function makeClose({ eyes, target, spec, logger: defaultLogger, }) {
6
- return async function ({ settings, logger = defaultLogger, } = {}) {
5
+ function makeClose({ eyes, target, spec, logger: defaultLogger }) {
6
+ return async function close({ settings, logger = defaultLogger, } = {}) {
7
7
  const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
8
8
  const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
9
9
  const baseEyes = await eyes.getBaseEyes();
10
- return (await Promise.all(baseEyes.map(baseEyes => baseEyes.close({ settings: { ...settings, testMetadata }, logger })))).flat();
10
+ await Promise.all(baseEyes.map(baseEyes => baseEyes.close({ settings: { ...settings, testMetadata }, logger })));
11
11
  };
12
12
  }
13
13
  exports.makeClose = makeClose;
@@ -29,21 +29,25 @@ const core_base_1 = require("@applitools/core-base");
29
29
  const get_viewport_size_1 = require("../automation/get-viewport-size");
30
30
  const set_viewport_size_1 = require("../automation/set-viewport-size");
31
31
  const locate_1 = require("../automation/locate");
32
+ const locate_text_1 = require("../automation/locate-text");
33
+ const extract_text_1 = require("../automation/extract-text");
32
34
  const open_eyes_1 = require("./open-eyes");
33
35
  const utils = __importStar(require("@applitools/utils"));
34
- function makeCore({ spec, core, agentId = 'core-classic', cwd = process.cwd(), logger, }) {
36
+ function makeCore({ spec, core, agentId = 'core-classic', cwd = process.cwd(), logger: defaultLogger, }) {
35
37
  var _a;
36
- logger = (_a = logger === null || logger === void 0 ? void 0 : logger.extend({ label: 'core-classic' })) !== null && _a !== void 0 ? _a : (0, logger_1.makeLogger)({ label: 'core-classic' });
38
+ const logger = (_a = defaultLogger === null || defaultLogger === void 0 ? void 0 : defaultLogger.extend({ label: 'core-classic' })) !== null && _a !== void 0 ? _a : (0, logger_1.makeLogger)({ label: 'core-classic' });
37
39
  logger.log(`Core classic is initialized ${core ? 'with' : 'without'} custom base core`);
38
40
  core !== null && core !== void 0 ? core : (core = (0, core_base_1.makeCore)({ agentId, cwd, logger }));
39
41
  return utils.general.extend(core, {
40
42
  type: 'classic',
41
- isDriver: spec === null || spec === void 0 ? void 0 : spec.isDriver,
42
- isElement: spec === null || spec === void 0 ? void 0 : spec.isElement,
43
- isSelector: spec === null || spec === void 0 ? void 0 : spec.isSelector,
43
+ isDriver: spec && spec.isDriver,
44
+ isElement: spec && spec.isElement,
45
+ isSelector: spec && spec.isSelector,
44
46
  getViewportSize: spec && (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
45
47
  setViewportSize: spec && (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
46
48
  locate: (0, locate_1.makeLocate)({ spec, core, logger }),
49
+ locateText: (0, locate_text_1.makeLocateText)({ spec, core, logger }),
50
+ extractText: (0, extract_text_1.makeExtractText)({ spec, core, logger }),
47
51
  openEyes: (0, open_eyes_1.makeOpenEyes)({ spec, core, logger }),
48
52
  });
49
53
  }
@@ -28,12 +28,10 @@ const driver_1 = require("@applitools/driver");
28
28
  const get_base_eyes_1 = require("./get-base-eyes");
29
29
  const check_1 = require("./check");
30
30
  const check_and_close_1 = require("./check-and-close");
31
- const locate_text_1 = require("./locate-text");
32
- const extract_text_1 = require("./extract-text");
33
31
  const close_1 = require("./close");
34
32
  const abort_1 = require("./abort");
35
33
  const utils = __importStar(require("@applitools/utils"));
36
- function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
34
+ function makeOpenEyes({ core, spec, logger: defaultLogger }) {
37
35
  return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
38
36
  var _a, _b, _c, _d, _e;
39
37
  var _f;
@@ -47,27 +45,29 @@ function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
47
45
  }
48
46
  if (driver.isWeb) {
49
47
  (_b = (_f = settings.environment).userAgent) !== null && _b !== void 0 ? _b : (_f.userAgent = driver.userAgent);
50
- if (driver.isChromium &&
51
- ((driver.isWindows && Number.parseInt(driver.browserVersion) >= 107) ||
52
- (driver.isMac && Number.parseInt(driver.browserVersion) >= 90))) {
53
- settings.environment.os = `${driver.platformName} ${(_c = driver.platformVersion) !== null && _c !== void 0 ? _c : ''}`.trim();
54
- }
55
48
  }
56
49
  if (!settings.environment.deviceName && driver.deviceName) {
57
50
  settings.environment.deviceName = driver.deviceName;
58
51
  }
59
- if (!settings.environment.os && driver.isNative && driver.platformName) {
60
- settings.environment.os = driver.platformName;
61
- if (!settings.keepPlatformNameAsIs) {
62
- if ((_d = settings.environment.os) === null || _d === void 0 ? void 0 : _d.startsWith('android')) {
63
- settings.environment.os = `Android${settings.environment.os.slice(7)}`;
52
+ if (!settings.environment.os) {
53
+ if (driver.isNative && driver.platformName) {
54
+ settings.environment.os = driver.platformName;
55
+ if (!settings.keepPlatformNameAsIs) {
56
+ if ((_c = settings.environment.os) === null || _c === void 0 ? void 0 : _c.startsWith('android')) {
57
+ settings.environment.os = `Android${settings.environment.os.slice(7)}`;
58
+ }
59
+ if ((_d = settings.environment.os) === null || _d === void 0 ? void 0 : _d.startsWith('ios')) {
60
+ settings.environment.os = `iOS${settings.environment.os.slice(3)}`;
61
+ }
64
62
  }
65
- if ((_e = settings.environment.os) === null || _e === void 0 ? void 0 : _e.startsWith('ios')) {
66
- settings.environment.os = `iOS${settings.environment.os.slice(3)}`;
63
+ if (driver.platformVersion) {
64
+ settings.environment.os += ` ${driver.platformVersion}`;
67
65
  }
68
66
  }
69
- if (driver.platformVersion) {
70
- settings.environment.os += ` ${driver.platformVersion}`;
67
+ else if (driver.isChromium &&
68
+ ((driver.isWindows && Number.parseInt(driver.browserVersion) >= 107) ||
69
+ (driver.isMac && Number.parseInt(driver.browserVersion) >= 90))) {
70
+ settings.environment.os = `${driver.platformName} ${(_e = driver.platformVersion) !== null && _e !== void 0 ? _e : ''}`.trim();
71
71
  }
72
72
  }
73
73
  if (!settings.environment.viewportSize || driver.isMobile) {
@@ -86,8 +86,6 @@ function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
86
86
  getBaseEyes,
87
87
  check: (0, check_1.makeCheck)({ eyes, target: driver, spec, logger }),
88
88
  checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, spec, logger }),
89
- locateText: (0, locate_text_1.makeLocateText)({ eyes, target: driver, spec, logger }),
90
- extractText: (0, extract_text_1.makeExtractText)({ eyes, target: driver, spec, logger }),
91
89
  close: (0, close_1.makeClose)({ eyes, target: driver, spec, logger }),
92
90
  abort: (0, abort_1.makeAbort)({ eyes, target: driver, spec, logger }),
93
91
  }));
@@ -1,25 +1,21 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.takeDomCapture = void 0;
7
- const dom_capture_1 = require("@applitools/dom-capture");
8
- const req_1 = __importDefault(require("@applitools/req"));
4
+ const req_1 = require("@applitools/req");
5
+ const { getCaptureDomPoll, getPollResult, getCaptureDomPollForIE, getPollResultForIE, } = require('@applitools/dom-capture');
9
6
  async function takeDomCapture({ driver, settings, logger, }) {
10
- var _a;
7
+ var _a, _b, _c;
11
8
  const isLegacyBrowser = driver.isIE || driver.isEdgeLegacy;
12
- const { canExecuteOnlyFunctionScripts } = driver.features;
13
9
  const arg = {
14
10
  chunkByteLength: (_a = settings === null || settings === void 0 ? void 0 : settings.chunkByteLength) !== null && _a !== void 0 ? _a : (Number(process.env.APPLITOOLS_SCRIPT_RESULT_MAX_BYTE_LENGTH) || (driver.isIOS ? 100000 : 250 * 1024 * 1024)),
15
11
  };
16
12
  const scripts = {
17
- main: canExecuteOnlyFunctionScripts
13
+ main: ((_b = driver.features) === null || _b === void 0 ? void 0 : _b.canExecuteOnlyFunctionScripts)
18
14
  ? require('@applitools/dom-capture').captureDomPoll
19
- : `return (${isLegacyBrowser ? await (0, dom_capture_1.getCaptureDomPollForIE)() : await (0, dom_capture_1.getCaptureDomPoll)()}).apply(null, arguments);`,
20
- poll: canExecuteOnlyFunctionScripts
15
+ : `return (${isLegacyBrowser ? await getCaptureDomPollForIE() : await getCaptureDomPoll()}).apply(null, arguments);`,
16
+ poll: ((_c = driver.features) === null || _c === void 0 ? void 0 : _c.canExecuteOnlyFunctionScripts)
21
17
  ? require('@applitools/dom-capture').pollResult
22
- : `return (${isLegacyBrowser ? await (0, dom_capture_1.getPollResultForIE)() : await (0, dom_capture_1.getPollResult)()}).apply(null, arguments);`,
18
+ : `return (${isLegacyBrowser ? await getPollResultForIE() : await getPollResult()}).apply(null, arguments);`,
23
19
  };
24
20
  const url = await driver.getUrl();
25
21
  const dom = await captureContextDom(driver.mainContext);
@@ -34,17 +30,17 @@ async function takeDomCapture({ driver, settings, logger, }) {
34
30
  pollTimeout: (_b = settings === null || settings === void 0 ? void 0 : settings.pollTimeout) !== null && _b !== void 0 ? _b : 200,
35
31
  });
36
32
  if (!capture)
37
- return {};
33
+ return '';
38
34
  const raws = capture.split('\n');
39
35
  const tokens = JSON.parse(raws[0]);
40
36
  const cssEndIndex = raws.indexOf(tokens.separator);
41
37
  const frameEndIndex = raws.indexOf(tokens.separator, cssEndIndex + 1);
42
38
  let dom = raws[frameEndIndex + 1];
43
39
  const cssResources = await Promise.all(raws.slice(1, cssEndIndex).reduce((cssResources, href) => {
44
- return href ? cssResources.concat(fetchCss(new URL(href, url).href)) : cssResources;
40
+ return href ? cssResources.concat(fetchCssResource(new URL(href, url).href)) : cssResources;
45
41
  }, []));
46
- for (const { href, css } of cssResources) {
47
- dom = dom.replace(`${tokens.cssStartToken}${href}${tokens.cssEndToken}`, css);
42
+ for (const { url, css } of cssResources) {
43
+ dom = dom.replace(`${tokens.cssStartToken}${url}${tokens.cssEndToken}`, css);
48
44
  }
49
45
  const framePaths = raws.slice(cssEndIndex + 1, frameEndIndex);
50
46
  for (const xpaths of framePaths) {
@@ -60,74 +56,59 @@ async function takeDomCapture({ driver, settings, logger, }) {
60
56
  }
61
57
  catch (ignored) {
62
58
  logger.log('Switching to frame failed');
63
- contextDom = {};
59
+ contextDom = '';
64
60
  }
65
61
  dom = dom.replace(`${tokens.iframeStartToken}${xpaths}${tokens.iframeEndToken}`, contextDom);
66
62
  }
67
63
  return dom;
68
64
  }
69
- async function fetchCss(href) {
65
+ async function fetchCssResource(url) {
66
+ logger.log(`Request to download css will be sent to the address "[GET]${url}"`);
70
67
  try {
71
- logger.log(`Given URL to download: ${href}`);
72
- const response = await (0, req_1.default)(href, {
68
+ const response = await (0, req_1.req)(url, {
73
69
  retry: {
74
70
  limit: 1,
75
- validate: ({ response, error }) => Boolean(error) || response.status >= 400,
71
+ validate: ({ response, error }) => Boolean(error) || !response.ok,
76
72
  },
77
- fetch: settings.fetch,
73
+ fetch: settings === null || settings === void 0 ? void 0 : settings.fetch,
78
74
  });
79
- if (response.status < 400) {
80
- const css = await response.text();
81
- logger.log(`downloading CSS in length of ${css.length} chars took`);
82
- return { href, css: cleanStringForJSON(css) };
83
- }
75
+ logger.log(`Request to download css that was sent to the address "[GET]${url}" respond with ${response.statusText}(${response.status})`, response.ok ? `and css of length ${(await response.clone().text()).length} chars` : '');
76
+ return { url, css: response.ok ? encodeJSON(await response.text()) : '' };
84
77
  }
85
- catch (err) {
86
- return { href, css: '' };
78
+ catch (error) {
79
+ logger.error(`Request to download css that was sent to the address "[GET]${url}" failed with error`, error);
80
+ return { url, css: '' };
87
81
  }
88
82
  }
89
- function cleanStringForJSON(str) {
90
- if (str == null || str.length === 0) {
83
+ function encodeJSON(str) {
84
+ if (!str)
91
85
  return '';
92
- }
93
- let sb = '';
94
- let char = '\0';
95
- let tmp;
96
- for (let i = 0, l = str.length; i < l; i += 1) {
97
- char = str[i];
86
+ return Array.from(str).reduce((result, char) => {
98
87
  switch (char) {
99
88
  case '\\':
100
89
  case '"':
101
90
  case '/':
102
- sb += '\\' + char; // eslint-disable-line
103
- break;
91
+ return result + '\\' + char;
104
92
  case '\b':
105
- sb += '\\b';
106
- break;
93
+ return result + '\\b';
107
94
  case '\t':
108
- sb += '\\t';
109
- break;
95
+ return result + '\\t';
110
96
  case '\n':
111
- sb += '\\n';
112
- break;
97
+ return result + '\\n';
113
98
  case '\f':
114
- sb += '\\f';
115
- break;
99
+ return result + '\\f';
116
100
  case '\r':
117
- sb += '\\r';
118
- break;
101
+ return result + '\\r';
119
102
  default:
120
103
  if (char < ' ') {
121
- tmp = '000' + char.charCodeAt(0).toString(16); // eslint-disable-line
122
- sb += '\\u' + tmp.substring(tmp.length - 4); // eslint-disable-line
104
+ const tmp = '000' + char.charCodeAt(0).toString(16);
105
+ return result + '\\u' + tmp.substring(tmp.length - 4);
123
106
  }
124
107
  else {
125
- sb += char;
108
+ return result + char;
126
109
  }
127
- break;
128
110
  }
129
- }
130
- return sb;
111
+ }, '');
131
112
  }
132
113
  }
133
114
  exports.takeDomCapture = takeDomCapture;