@applitools/core 1.2.16 → 1.2.17

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 (48) hide show
  1. package/dist/automation/get-viewport-size.js +3 -3
  2. package/dist/automation/locate.js +6 -9
  3. package/dist/automation/set-viewport-size.js +3 -3
  4. package/dist/check-and-close.js +4 -3
  5. package/dist/check.js +3 -2
  6. package/dist/classic/check-and-close.js +9 -12
  7. package/dist/classic/check.js +15 -9
  8. package/dist/classic/extract-text.js +11 -7
  9. package/dist/classic/get-base-eyes.js +39 -0
  10. package/dist/classic/locate-text.js +11 -7
  11. package/dist/classic/open-eyes.js +16 -15
  12. package/dist/make-manager.js +7 -4
  13. package/dist/open-eyes.js +27 -8
  14. package/dist/ufg/abort.js +1 -1
  15. package/dist/ufg/check.js +42 -37
  16. package/dist/ufg/get-base-eyes.js +56 -0
  17. package/dist/ufg/open-eyes.js +62 -107
  18. package/package.json +14 -14
  19. package/types/automation/get-viewport-size.d.ts +2 -4
  20. package/types/automation/locate.d.ts +4 -8
  21. package/types/automation/set-viewport-size.d.ts +2 -6
  22. package/types/automation/types.d.ts +60 -5
  23. package/types/check-and-close.d.ts +8 -3
  24. package/types/check.d.ts +8 -3
  25. package/types/classic/check-and-close.d.ts +6 -11
  26. package/types/classic/check.d.ts +6 -11
  27. package/types/classic/core.d.ts +2 -2
  28. package/types/classic/extract-text.d.ts +6 -12
  29. package/types/classic/get-base-eyes.d.ts +17 -0
  30. package/types/classic/locate-text.d.ts +6 -11
  31. package/types/classic/open-eyes.d.ts +3 -7
  32. package/types/classic/types.d.ts +34 -4
  33. package/types/close-manager.d.ts +3 -3
  34. package/types/close.d.ts +3 -3
  35. package/types/core.d.ts +1 -1
  36. package/types/extract-text.d.ts +3 -3
  37. package/types/locate-text.d.ts +3 -3
  38. package/types/make-manager.d.ts +1 -1
  39. package/types/open-eyes.d.ts +9 -10
  40. package/types/types.d.ts +33 -29
  41. package/types/ufg/abort.d.ts +2 -4
  42. package/types/ufg/check-and-close.d.ts +7 -9
  43. package/types/ufg/check.d.ts +5 -17
  44. package/types/ufg/close.d.ts +2 -5
  45. package/types/ufg/core.d.ts +1 -1
  46. package/types/ufg/get-base-eyes.d.ts +23 -0
  47. package/types/ufg/open-eyes.d.ts +7 -6
  48. package/types/ufg/types.d.ts +43 -3
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeGetViewportSize = void 0;
4
4
  const driver_1 = require("@applitools/driver");
5
5
  function makeGetViewportSize({ spec, logger: defaultLogger, }) {
6
- return async function getViewportSize({ target, logger = defaultLogger }) {
7
- logger.log('Command "getViewportSize" is called');
8
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
6
+ return async function getViewportSize({ driver, target, logger = defaultLogger, }) {
7
+ logger.log(`Command "getViewportSize" is called with ${driver ? 'driver' : 'target'}`);
8
+ driver !== null && driver !== void 0 ? driver : (driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger }));
9
9
  return driver.getViewportSize();
10
10
  };
11
11
  }
@@ -3,18 +3,15 @@ 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, target: defaultTarget, logger: defaultLogger, }) {
7
- return async function locate({ target = defaultTarget, settings, logger = defaultLogger, } = {}) {
8
- logger.log('Command "locate" is called with settings', settings);
9
- if (!(spec === null || spec === void 0 ? void 0 : spec.isDriver(target))) {
6
+ function makeLocate({ spec, core, logger: defaultLogger, }) {
7
+ return async function locate({ settings, driver, target, logger = defaultLogger, } = {}) {
8
+ logger.log(`Command "locate" is called with ${driver ? 'driver' : 'target'} and settings`, settings);
9
+ driver !== null && driver !== void 0 ? driver : (driver = (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null);
10
+ if (!driver) {
10
11
  return core.locate({ target: target, settings: settings, logger });
11
12
  }
12
- // TODO driver custom config
13
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
14
13
  const screenshot = await (0, take_screenshot_1.takeScreenshot)({ driver, settings, logger });
15
- const baseTarget = {
16
- image: await screenshot.image.toPng(),
17
- };
14
+ const baseTarget = { image: await screenshot.image.toPng() };
18
15
  const results = await core.locate({ target: baseTarget, settings: settings, logger });
19
16
  return results;
20
17
  };
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeSetViewportSize = void 0;
4
4
  const driver_1 = require("@applitools/driver");
5
5
  function makeSetViewportSize({ spec, logger: defaultLogger, }) {
6
- return async function setViewportSize({ target, size, logger = defaultLogger }) {
7
- logger.log('Command "setViewportSize" is called with size', size);
8
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
6
+ return async function setViewportSize({ driver, target, size, logger = defaultLogger, }) {
7
+ logger.log(`Command "setViewportSize" is called with ${driver ? 'driver' : 'target'} and size`, size);
8
+ driver !== null && driver !== void 0 ? driver : (driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger }));
9
9
  return driver.setViewportSize(size);
10
10
  };
11
11
  }
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeCheckAndClose = void 0;
4
- function makeCheckAndClose({ eyes, logger: defaultLogger, }) {
5
- return async function checkAndClose({ target, settings = {}, config, logger = defaultLogger, } = {}) {
4
+ function makeCheckAndClose({ type: defaultType, getTypedEyes, logger: defaultLogger, }) {
5
+ return async function checkAndClose({ type = defaultType, target, settings = {}, config, logger = defaultLogger, } = {}) {
6
6
  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 };
7
+ const eyes = await getTypedEyes({ type, renderers: settings.renderers });
7
8
  const results = await eyes.checkAndClose({
8
9
  target: target,
9
- settings,
10
+ settings: settings,
10
11
  logger,
11
12
  });
12
13
  return results;
package/dist/check.js CHANGED
@@ -29,11 +29,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.makeCheck = void 0;
30
30
  const utils = __importStar(require("@applitools/utils"));
31
31
  const chalk_1 = __importDefault(require("chalk"));
32
- function makeCheck({ eyes, logger: defaultLogger, }) {
33
- return async function check({ target, settings = {}, config, logger = defaultLogger, } = {}) {
32
+ function makeCheck({ type: defaultType, getTypedEyes, logger: defaultLogger, }) {
33
+ return async function check({ type = defaultType, target, settings, config, logger = defaultLogger, } = {}) {
34
34
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
35
35
  var _s, _t, _u, _v;
36
36
  settings = { ...config === null || config === void 0 ? void 0 : config.screenshot, ...config === null || config === void 0 ? void 0 : config.check, ...settings };
37
+ const eyes = await getTypedEyes({ type, renderers: settings.renderers });
37
38
  (_a = settings.fully) !== null && _a !== void 0 ? _a : (settings.fully = !settings.region && (!settings.frames || settings.frames.length === 0));
38
39
  (_b = settings.waitBeforeCapture) !== null && _b !== void 0 ? _b : (settings.waitBeforeCapture = 100);
39
40
  (_c = settings.stitchMode) !== null && _c !== void 0 ? _c : (settings.stitchMode = 'Scroll');
@@ -30,19 +30,17 @@ const take_dom_capture_1 = require("./utils/take-dom-capture");
30
30
  const to_base_check_settings_1 = require("../utils/to-base-check-settings");
31
31
  const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
32
32
  const utils = __importStar(require("@applitools/utils"));
33
- function makeCheckAndClose({ spec, eyes, target: defaultTarget, logger: defaultLogger, }) {
34
- return async function checkAndClose({ target = defaultTarget, settings, logger = defaultLogger, } = {}) {
33
+ function makeCheckAndClose({ eyes, driver: defaultDriver, spec, logger: defaultLogger, }) {
34
+ return async function checkAndClose({ settings = {}, driver, target, logger = defaultLogger, } = {}) {
35
35
  var _a;
36
36
  logger.log('Command "checkAndClose" is called with settings', settings);
37
- if (!(spec === null || spec === void 0 ? void 0 : spec.isDriver(target))) {
38
- return eyes.checkAndClose({
39
- target: target,
40
- settings: settings,
41
- logger,
42
- });
37
+ driver !== null && driver !== void 0 ? driver : (driver = (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : defaultDriver);
38
+ const baseEyes = await eyes.getBaseEyes({ logger });
39
+ if (!driver) {
40
+ const baseTarget = target;
41
+ const baseSettings = settings;
42
+ return (await Promise.all(baseEyes.map(baseEyes => baseEyes.checkAndClose({ target: baseTarget, settings: baseSettings, logger })))).flat();
43
43
  }
44
- // TODO driver custom config
45
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
46
44
  if (settings.lazyLoad)
47
45
  await (0, wait_for_lazy_load_1.waitForLazyLoad)({ driver, settings: settings.lazyLoad !== true ? settings.lazyLoad : {}, logger });
48
46
  const { elementReferencesToCalculate, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
@@ -73,8 +71,7 @@ function makeCheckAndClose({ spec, eyes, target: defaultTarget, logger: defaultL
73
71
  baseTarget.fullViewSize = scrollingElement ? await scrollingElement.getContentSize() : await driver.getViewportSize();
74
72
  }
75
73
  await screenshot.restoreState();
76
- const results = await eyes.checkAndClose({ target: baseTarget, settings: baseSettings, logger });
77
- return results;
74
+ return (await Promise.all(baseEyes.map(baseEyes => baseEyes.checkAndClose({ target: baseTarget, settings: baseSettings, logger })))).flat();
78
75
  };
79
76
  }
80
77
  exports.makeCheckAndClose = makeCheckAndClose;
@@ -30,20 +30,24 @@ const take_dom_capture_1 = require("./utils/take-dom-capture");
30
30
  const to_base_check_settings_1 = require("../utils/to-base-check-settings");
31
31
  const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
32
32
  const utils = __importStar(require("@applitools/utils"));
33
- function makeCheck({ spec, eyes, target: defaultTarget, logger: defaultLogger, }) {
34
- return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, } = {}) {
33
+ function makeCheck({ eyes, driver: defaultDriver, spec, logger: defaultLogger, }) {
34
+ return async function check({ settings = {}, driver, target, logger = defaultLogger, } = {}) {
35
35
  var _a;
36
36
  logger.log('Command "check" is called with settings', settings);
37
- if (!(spec === null || spec === void 0 ? void 0 : spec.isDriver(target))) {
38
- return eyes.check({ target: target, settings: settings, logger });
37
+ driver !== null && driver !== void 0 ? driver : (driver = (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : defaultDriver);
38
+ const baseEyes = await eyes.getBaseEyes();
39
+ if (!driver) {
40
+ const baseTarget = target;
41
+ const baseSettings = settings;
42
+ return (await Promise.all(baseEyes.map(baseEyes => baseEyes.check({ target: baseTarget, settings: baseSettings, logger })))).flat();
39
43
  }
40
- // TODO driver custom config
41
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
44
+ await driver.refreshContexts();
42
45
  await driver.currentContext.setScrollingElement(settings.scrollRootElement);
43
46
  if (settings.lazyLoad && driver.isWeb) {
44
47
  await (0, wait_for_lazy_load_1.waitForLazyLoad)({ driver, settings: settings.lazyLoad !== true ? settings.lazyLoad : {}, logger });
45
48
  }
46
- const shouldRunOnce = eyes.test.isNew;
49
+ // TODO it actually could be different per eyes
50
+ const shouldRunOnce = true;
47
51
  const finishAt = Date.now() + settings.retryTimeout;
48
52
  let baseTarget;
49
53
  let baseSettings;
@@ -77,10 +81,12 @@ function makeCheck({ spec, eyes, target: defaultTarget, logger: defaultLogger, }
77
81
  baseTarget.fullViewSize = scrollingElement ? await scrollingElement.getContentSize() : await driver.getViewportSize();
78
82
  }
79
83
  await screenshot.restoreState();
80
- results = await eyes.check({ target: baseTarget, settings: { ...baseSettings, ignoreMismatch: !shouldRunOnce }, logger });
84
+ baseSettings.ignoreMismatch = !shouldRunOnce;
85
+ results = (await Promise.all(baseEyes.map(baseEyes => baseEyes.check({ target: baseTarget, settings: baseSettings, logger })))).flat();
81
86
  } while (!shouldRunOnce && !results.some(result => result.asExpected) && Date.now() < finishAt);
82
87
  if (!shouldRunOnce && !results.some(result => result.asExpected)) {
83
- results = await eyes.check({ target: baseTarget, settings: baseSettings, logger });
88
+ baseSettings.ignoreMismatch = false;
89
+ results = (await Promise.all(baseEyes.map(baseEyes => baseEyes.check({ target: baseTarget, settings: baseSettings, logger })))).flat();
84
90
  }
85
91
  return results;
86
92
  };
@@ -29,15 +29,19 @@ const take_screenshot_1 = require("../automation/utils/take-screenshot");
29
29
  const take_dom_capture_1 = require("./utils/take-dom-capture");
30
30
  const utils = __importStar(require("@applitools/utils"));
31
31
  const snippets_1 = require("@applitools/snippets");
32
- function makeExtractText({ spec, eyes, target: defaultTarget, logger: defaultLogger, }) {
33
- return async function extractText({ target = defaultTarget, settings, logger = defaultLogger, } = {}) {
32
+ function makeExtractText({ eyes, driver: defaultDriver, spec, logger: defaultLogger, }) {
33
+ return async function extractText({ settings, driver, target, logger = defaultLogger, } = {}) {
34
34
  logger.log('Command "extractText" is called with settings', settings);
35
- if (!(spec === null || spec === void 0 ? void 0 : spec.isDriver(target))) {
36
- return eyes.extractText({ target: target, settings: settings, logger });
35
+ driver !== null && driver !== void 0 ? driver : (driver = (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : defaultDriver);
36
+ const [baseEyes] = await eyes.getBaseEyes();
37
+ if (!driver) {
38
+ return baseEyes.extractText({
39
+ target: target,
40
+ settings: settings,
41
+ logger,
42
+ });
37
43
  }
38
44
  settings = utils.types.isArray(settings) ? settings : [settings];
39
- // TODO driver custom config
40
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
41
45
  const results = await settings.reduce(async (prev, settings) => {
42
46
  var _a;
43
47
  const steps = await prev;
@@ -64,7 +68,7 @@ function makeExtractText({ spec, eyes, target: defaultTarget, logger: defaultLog
64
68
  }
65
69
  delete settings.region;
66
70
  delete settings.normalization;
67
- const results = await eyes.extractText({ target: baseTarget, settings: settings, logger });
71
+ const results = await baseEyes.extractText({ target: baseTarget, settings: settings, logger });
68
72
  steps.push(results);
69
73
  return steps;
70
74
  }, Promise.resolve([]));
@@ -0,0 +1,39 @@
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.makeGetBaseEyes = void 0;
27
+ const utils = __importStar(require("@applitools/utils"));
28
+ function makeGetBaseEyes({ settings, core, eyes, logger: defaultLogger }) {
29
+ const getBaseEyesWithCache = utils.general.cachify(getBaseEyes, () => 'default');
30
+ if (eyes) {
31
+ getBaseEyesWithCache.setCachedValue('default', Promise.resolve(eyes));
32
+ }
33
+ return getBaseEyesWithCache;
34
+ async function getBaseEyes({ logger = defaultLogger } = {}) {
35
+ logger.log(`Command "getBaseEyes" is called with ${utils.types.isArray(eyes) ? `eyes array of length ${eyes.length}` : 'single eyes instance'}`);
36
+ return [await core.openEyes({ settings, logger })];
37
+ }
38
+ }
39
+ exports.makeGetBaseEyes = makeGetBaseEyes;
@@ -28,14 +28,14 @@ const driver_1 = require("@applitools/driver");
28
28
  const take_screenshot_1 = require("../automation/utils/take-screenshot");
29
29
  // import {takeDomCapture} from './utils/take-dom-capture'
30
30
  const utils = __importStar(require("@applitools/utils"));
31
- function makeLocateText({ spec, eyes, target: defaultTarget, logger: defaultLogger, }) {
32
- return async function locateText({ target = defaultTarget, settings, logger = defaultLogger, } = {}) {
31
+ function makeLocateText({ spec, driver: defaultDriver, eyes, logger: defaultLogger, }) {
32
+ return async function locateText({ settings, driver, target, logger = defaultLogger, } = {}) {
33
33
  logger.log('Command "locateText" is called with settings', settings);
34
- if (!(spec === null || spec === void 0 ? void 0 : spec.isDriver(target))) {
35
- return eyes.locateText({ target: target, settings: settings, logger });
34
+ driver !== null && driver !== void 0 ? driver : (driver = (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : defaultDriver);
35
+ const [baseEyes] = await eyes.getBaseEyes();
36
+ if (!driver) {
37
+ return baseEyes.locateText({ target: target, settings: settings, logger });
36
38
  }
37
- // TODO driver custom config
38
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
39
39
  const screenshot = await (0, take_screenshot_1.takeScreenshot)({ driver, settings, logger });
40
40
  const baseTarget = {
41
41
  image: await screenshot.image.toPng(),
@@ -46,7 +46,11 @@ function makeLocateText({ spec, eyes, target: defaultTarget, logger: defaultLogg
46
46
  // else await screenshot.element?.setAttribute('data-applitools-scroll', 'true')
47
47
  // baseTarget.dom = await takeDomCapture({driver, logger}).catch(() => null)
48
48
  }
49
- const results = await eyes.locateText({ target: baseTarget, settings: settings, logger });
49
+ const results = await baseEyes.locateText({
50
+ target: baseTarget,
51
+ settings: settings,
52
+ logger,
53
+ });
50
54
  return results;
51
55
  };
52
56
  }
@@ -25,21 +25,19 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeOpenEyes = void 0;
27
27
  const driver_1 = require("@applitools/driver");
28
+ const get_base_eyes_1 = require("./get-base-eyes");
28
29
  const check_1 = require("./check");
29
30
  const check_and_close_1 = require("./check-and-close");
30
31
  const locate_text_1 = require("./locate-text");
31
32
  const extract_text_1 = require("./extract-text");
32
33
  const utils = __importStar(require("@applitools/utils"));
33
- function makeOpenEyes({ spec, core, logger: defaultLogger, }) {
34
- return async function openEyes({ target, settings, logger = defaultLogger, }) {
34
+ function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
35
+ return async function openEyes({ settings, eyes, driver, target, logger = defaultLogger, }) {
35
36
  var _a, _b, _c, _d, _e;
36
37
  var _f;
37
- logger.log(`Command "openEyes" is called with ${(spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? 'default driver and' : ''} settings`, settings);
38
- // TODO driver custom config
39
- const driver = (spec === null || spec === void 0 ? void 0 : spec.isDriver(target))
40
- ? await (0, driver_1.makeDriver)({ spec, driver: target, logger, customConfig: { useCeilForViewportSize: settings.useCeilForViewportSize } })
41
- : null;
42
- if (driver) {
38
+ logger.log(`Command "openEyes" is called with ${(spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? 'default driver and' : ''}`, ...(settings ? ['settings', settings] : []), eyes ? 'predefined eyes' : '');
39
+ driver !== null && driver !== void 0 ? driver : (driver = (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger, customConfig: settings }) : null);
40
+ if (driver && !eyes) {
43
41
  const currentContext = driver.currentContext;
44
42
  (_a = settings.environment) !== null && _a !== void 0 ? _a : (settings.environment = {});
45
43
  if (!settings.environment.viewportSize || driver.isMobile) {
@@ -76,13 +74,16 @@ function makeOpenEyes({ spec, core, logger: defaultLogger, }) {
76
74
  }
77
75
  await currentContext.focus();
78
76
  }
79
- const eyes = await core.openEyes({ settings, logger });
80
- return utils.general.extend(eyes, {
81
- check: (0, check_1.makeCheck)({ spec, eyes, target, logger }),
82
- checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ spec, eyes, target, logger }),
83
- locateText: (0, locate_text_1.makeLocateText)({ spec, eyes, target, logger }),
84
- extractText: (0, extract_text_1.makeExtractText)({ spec, eyes, target, logger }),
85
- });
77
+ const getBaseEyes = (0, get_base_eyes_1.makeGetBaseEyes)({ settings, core, eyes, logger });
78
+ const [baseEyes] = await getBaseEyes();
79
+ return utils.general.extend(baseEyes, eyes => ({
80
+ type: 'classic',
81
+ getBaseEyes,
82
+ check: (0, check_1.makeCheck)({ eyes, driver, spec, logger }),
83
+ checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, driver, spec, logger }),
84
+ locateText: (0, locate_text_1.makeLocateText)({ eyes, driver, spec, logger }),
85
+ extractText: (0, extract_text_1.makeExtractText)({ eyes, driver, spec, logger }),
86
+ }));
86
87
  };
87
88
  }
88
89
  exports.makeOpenEyes = makeOpenEyes;
@@ -32,12 +32,15 @@ const close_manager_1 = require("./close-manager");
32
32
  const utils = __importStar(require("@applitools/utils"));
33
33
  function makeMakeManager({ spec, core, concurrency: defaultConcurrency = utils.general.getEnvValue('CONCURRENCY', 'number'), agentId: defaultAgentId, cwd = process.cwd(), logger: defaultLogger, }) {
34
34
  return async function makeManager({ type, concurrency = defaultConcurrency, legacyConcurrency, agentId = type === 'ufg' ? defaultAgentId === null || defaultAgentId === void 0 ? void 0 : defaultAgentId.replace(/(\/\d)/, '.visualgrid$1') : defaultAgentId, logger = defaultLogger, } = {}) {
35
- core !== null && core !== void 0 ? core : (core = (0, core_base_1.makeCore)({ agentId, cwd, logger }));
36
35
  concurrency !== null && concurrency !== void 0 ? concurrency : (concurrency = utils.types.isInteger(legacyConcurrency) ? legacyConcurrency * 5 : 5);
37
- const typedCore = type === 'ufg' ? (0, core_2.makeCore)({ spec, core, concurrency, logger }) : (0, core_1.makeCore)({ spec, core, logger });
36
+ core !== null && core !== void 0 ? core : (core = (0, core_base_1.makeCore)({ agentId, cwd, logger }));
37
+ const cores = {
38
+ ufg: (0, core_2.makeCore)({ spec, core, concurrency, logger }),
39
+ classic: (0, core_1.makeCore)({ spec, core, logger }),
40
+ };
38
41
  const storage = [];
39
42
  // open eyes with result storage
40
- const openEyes = utils.general.wrap((0, open_eyes_1.makeOpenEyes)({ spec, core: typedCore, logger }), async (openEyes, options) => {
43
+ const openEyes = utils.general.wrap((0, open_eyes_1.makeOpenEyes)({ type, spec, core, cores, logger }), async (openEyes, options) => {
41
44
  const eyes = await openEyes(options);
42
45
  const item = { eyes };
43
46
  storage.push(item);
@@ -58,7 +61,7 @@ function makeMakeManager({ spec, core, concurrency: defaultConcurrency = utils.g
58
61
  });
59
62
  return {
60
63
  openEyes,
61
- closeManager: (0, close_manager_1.makeCloseManager)({ core: typedCore, storage, logger }),
64
+ closeManager: (0, close_manager_1.makeCloseManager)({ core, storage, logger }),
62
65
  };
63
66
  };
64
67
  }
package/dist/open-eyes.js CHANGED
@@ -32,8 +32,8 @@ const locate_text_1 = require("./locate-text");
32
32
  const extract_text_1 = require("./extract-text");
33
33
  const close_1 = require("./close");
34
34
  const utils = __importStar(require("@applitools/utils"));
35
- function makeOpenEyes({ spec, core, concurrency, logger: defaultLogger, }) {
36
- return async function openEyes({ type, target, settings, config, logger = defaultLogger, }) {
35
+ function makeOpenEyes({ type: defaultType, concurrency, core, cores, spec, logger: defaultLogger, }) {
36
+ return async function openEyes({ type = defaultType, settings, config, target, logger = defaultLogger, }) {
37
37
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
38
38
  var _v, _w, _x, _y, _z;
39
39
  settings = { ...config === null || config === void 0 ? void 0 : config.open, ...settings };
@@ -51,9 +51,9 @@ function makeOpenEyes({ spec, core, concurrency, logger: defaultLogger, }) {
51
51
  (_p = settings.baselineBranchName) !== null && _p !== void 0 ? _p : (settings.baselineBranchName = utils.general.getEnvValue('BASELINE_BRANCH'));
52
52
  (_q = settings.ignoreBaseline) !== null && _q !== void 0 ? _q : (settings.ignoreBaseline = false);
53
53
  (_r = settings.compareWithParentBranch) !== null && _r !== void 0 ? _r : (settings.compareWithParentBranch = false);
54
- (_s = (_z = settings).renderConcurrency) !== null && _s !== void 0 ? _s : (_z.renderConcurrency = (_u = (_t = config === null || config === void 0 ? void 0 : config.check) === null || _t === void 0 ? void 0 : _t.renderers) === null || _u === void 0 ? void 0 : _u.length);
55
- if (!utils.types.has(core, 'type')) {
56
- core = type === 'ufg' ? (0, core_2.makeCore)({ spec, core, concurrency, logger }) : (0, core_1.makeCore)({ spec, core, logger });
54
+ if (type === 'ufg') {
55
+ ;
56
+ (_s = (_z = settings).renderConcurrency) !== null && _s !== void 0 ? _s : (_z.renderConcurrency = (_u = (_t = config === null || config === void 0 ? void 0 : config.check) === null || _t === void 0 ? void 0 : _t.renderers) === null || _u === void 0 ? void 0 : _u.length);
57
57
  }
58
58
  core.logEvent({
59
59
  settings: {
@@ -71,10 +71,29 @@ function makeOpenEyes({ spec, core, concurrency, logger: defaultLogger, }) {
71
71
  },
72
72
  logger,
73
73
  });
74
- const eyes = await core.openEyes({ target, settings: settings, logger });
74
+ cores !== null && cores !== void 0 ? cores : (cores = {
75
+ ufg: (0, core_2.makeCore)({ spec, core, concurrency: concurrency !== null && concurrency !== void 0 ? concurrency : 5, logger }),
76
+ classic: (0, core_1.makeCore)({ spec, core, logger }),
77
+ });
78
+ const eyes = type === 'ufg'
79
+ ? await cores.ufg.openEyes({ target, settings: settings, logger })
80
+ : await cores.classic.openEyes({ target, settings: settings, logger });
81
+ async function getTypedEyes({ type = 'classic', renderers, }) {
82
+ if (eyes.type === type) {
83
+ return eyes;
84
+ }
85
+ else if (type === 'ufg') {
86
+ const baseEyes = await eyes.getBaseEyes();
87
+ return cores.ufg.openEyes({ target, eyes: baseEyes, logger });
88
+ }
89
+ else {
90
+ const baseEyes = (await Promise.all(renderers.map(renderer => eyes.getBaseEyes({ settings: { renderer, type: 'native' } })))).flat();
91
+ return cores.classic.openEyes({ target, eyes: baseEyes, logger });
92
+ }
93
+ }
75
94
  return utils.general.extend(eyes, {
76
- check: (0, check_1.makeCheck)({ eyes, logger }),
77
- checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, logger }),
95
+ check: (0, check_1.makeCheck)({ type, getTypedEyes, logger }),
96
+ checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ type, getTypedEyes, logger }),
78
97
  locateText: (0, locate_text_1.makeLocateText)({ eyes, logger }),
79
98
  extractText: (0, extract_text_1.makeExtractText)({ eyes, logger }),
80
99
  close: (0, close_1.makeClose)({ eyes, logger }),
package/dist/ufg/abort.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeAbort = void 0;
4
4
  const abort_error_1 = require("../errors/abort-error");
5
- function makeAbort({ storage, controller, logger: defaultLogger }) {
5
+ function makeAbort({ storage, controller, logger: defaultLogger, }) {
6
6
  return async function ({ logger = defaultLogger, } = {}) {
7
7
  controller.abort();
8
8
  const tests = storage.reduce((tests, { renderer, promise }) => {
package/dist/ufg/check.js CHANGED
@@ -35,8 +35,8 @@ const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
35
35
  const abort_error_1 = require("../errors/abort-error");
36
36
  const utils = __importStar(require("@applitools/utils"));
37
37
  const chalk_1 = __importDefault(require("chalk"));
38
- function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget, logger: defaultLogger, }) {
39
- return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
38
+ function makeCheck({ eyes, client, driver: defaultDriver, spec, signal, logger: defaultLogger, }) {
39
+ return async function check({ settings = {}, driver, target, logger = defaultLogger, }) {
40
40
  var _a, _b;
41
41
  logger.log('Command "check" is called with settings', settings);
42
42
  if (signal.aborted) {
@@ -45,9 +45,8 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
45
45
  }
46
46
  const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
47
47
  let snapshots, snapshotUrl, snapshotTitle, userAgent, regionToTarget, selectorsToCalculate;
48
- if (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) {
49
- // TODO driver custom config
50
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
48
+ driver !== null && driver !== void 0 ? driver : (driver = (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : defaultDriver);
49
+ if (driver) {
51
50
  if (driver.isWeb && (!settings.renderers || settings.renderers.length === 0)) {
52
51
  const viewportSize = await driver.getViewportSize();
53
52
  settings.renderers = [{ name: 'chrome', ...viewportSize }];
@@ -74,7 +73,7 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
74
73
  snapshots = await (0, take_snapshots_1.takeSnapshots)({
75
74
  driver,
76
75
  settings: {
77
- ...test.server,
76
+ ...eyes.test.server,
78
77
  waitBeforeCapture: settings.waitBeforeCapture,
79
78
  disableBrowserFetching: settings.disableBrowserFetching,
80
79
  layoutBreakpoints: settings.layoutBreakpoints,
@@ -119,42 +118,48 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
119
118
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
120
119
  }
121
120
  const { cookies, ...snapshot } = snapshots[index];
121
+ const snapshotType = utils.types.has(snapshot, 'cdt') ? 'web' : 'native';
122
122
  const renderTargetPromise = client.createRenderTarget({
123
123
  snapshot,
124
- settings: { renderer, referer: snapshotUrl, cookies, proxy: test.server.proxy, autProxy: settings.autProxy, userAgent },
124
+ settings: {
125
+ renderer,
126
+ referer: snapshotUrl,
127
+ cookies,
128
+ proxy: eyes.test.server.proxy,
129
+ autProxy: settings.autProxy,
130
+ userAgent,
131
+ },
125
132
  });
126
- const renderSettings = {
127
- ...settings,
128
- region: regionToTarget,
129
- type: utils.types.has(snapshot, 'cdt') ? 'web' : 'native',
130
- renderer,
131
- selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
132
- includeFullPageSize: Boolean(settings.pageId),
133
- };
134
- const { rendererId, rawEnvironment } = await client.bookRenderer({ settings: renderSettings });
135
- const eyes = await getEyes({ rawEnvironment });
133
+ const [baseEyes] = await eyes.getBaseEyes({ settings: { renderer, type: snapshotType }, logger });
136
134
  try {
137
135
  if (signal.aborted) {
138
136
  logger.warn('Command "check" was aborted before rendering');
139
137
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
140
138
  }
141
- else if (eyes.aborted) {
142
- logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
143
- throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
139
+ else if (baseEyes.aborted) {
140
+ logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
141
+ throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
144
142
  }
145
- renderSettings.rendererId = rendererId;
146
143
  const renderTarget = await renderTargetPromise;
147
144
  if (signal.aborted) {
148
145
  logger.warn('Command "check" was aborted before rendering');
149
146
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
150
147
  }
151
- else if (eyes.aborted) {
152
- logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
153
- throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
148
+ else if (baseEyes.aborted) {
149
+ logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
150
+ throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
154
151
  }
155
152
  const { renderId, selectorRegions, ...baseTarget } = await client.render({
156
153
  target: renderTarget,
157
- settings: renderSettings,
154
+ settings: {
155
+ ...settings,
156
+ region: regionToTarget,
157
+ selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
158
+ includeFullPageSize: Boolean(settings.pageId),
159
+ type: snapshotType,
160
+ renderer,
161
+ rendererId: baseEyes.test.rendererId,
162
+ },
158
163
  signal,
159
164
  });
160
165
  let offset = 0;
@@ -171,31 +176,31 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
171
176
  logger.warn('Command "check" was aborted after rendering');
172
177
  throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
173
178
  }
174
- else if (eyes.aborted) {
175
- logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
176
- throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
179
+ else if (baseEyes.aborted) {
180
+ logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
181
+ throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
177
182
  }
178
- const [result] = await eyes.check({ target: { ...baseTarget, isTransformed: true }, settings: baseSettings, logger });
179
- if (eyes.aborted) {
180
- logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
181
- throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
183
+ const [result] = await baseEyes.check({ target: { ...baseTarget, isTransformed: true }, settings: baseSettings, logger });
184
+ if (baseEyes.aborted) {
185
+ logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
186
+ throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
182
187
  }
183
- return { ...result, eyes, renderer };
188
+ return { ...result, eyes: baseEyes, renderer };
184
189
  }
185
190
  catch (error) {
186
- await eyes.abort();
187
- error.info = { eyes };
191
+ await baseEyes.abort();
192
+ error.info = { eyes: baseEyes };
188
193
  throw error;
189
194
  }
190
195
  }
191
196
  catch (error) {
192
- error.info = { ...error.info, userTestId: test.userTestId, renderer };
197
+ error.info = { ...error.info, userTestId: eyes.test.userTestId, renderer };
193
198
  throw error;
194
199
  }
195
200
  });
196
201
  return settings.renderers.map((renderer, index) => ({
197
202
  asExpected: true,
198
- userTestId: test.userTestId,
203
+ userTestId: eyes.test.userTestId,
199
204
  renderer,
200
205
  promise: promises[index],
201
206
  }));