@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
package/dist/close.js CHANGED
@@ -1,37 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeClose = void 0;
4
- const test_error_1 = require("./errors/test-error");
5
4
  function makeClose({ eyes, logger: defaultLogger, }) {
6
5
  return async function close({ settings, config, logger = defaultLogger, } = {}) {
7
6
  var _a;
8
7
  settings = { ...config === null || config === void 0 ? void 0 : config.close, ...settings };
9
8
  (_a = settings.updateBaselineIfNew) !== null && _a !== void 0 ? _a : (settings.updateBaselineIfNew = true);
10
9
  const typedEyes = await eyes.getTypedEyes({ logger });
11
- const results = await typedEyes.close({ settings, logger });
12
- if (settings.throwErr) {
13
- results.forEach(result => {
14
- if (result.status !== 'Passed')
15
- throw new test_error_1.TestError(result);
16
- });
17
- }
18
- return results.length > 0
19
- ? results
20
- : [
21
- {
22
- userTestId: eyes.test.userTestId,
23
- name: '',
24
- steps: 0,
25
- matches: 0,
26
- mismatches: 0,
27
- missing: 0,
28
- exactMatches: 0,
29
- strictMatches: 0,
30
- contentMatches: 0,
31
- layoutMatches: 0,
32
- noneMatches: 0,
33
- },
34
- ];
10
+ await typedEyes.close({ settings, logger });
35
11
  };
36
12
  }
37
13
  exports.makeClose = makeClose;
package/dist/core.js CHANGED
@@ -29,6 +29,8 @@ 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("./locate");
32
+ const locate_text_1 = require("./locate-text");
33
+ const extract_text_1 = require("./extract-text");
32
34
  const open_eyes_1 = require("./open-eyes");
33
35
  const make_manager_1 = require("./make-manager");
34
36
  const close_batch_1 = require("./close-batch");
@@ -41,12 +43,14 @@ function makeCore({ spec, concurrency, core, agentId = 'core', cwd = process.cwd
41
43
  logger.log(`Core is initialized ${core ? 'with' : 'without'} custom base core`);
42
44
  core !== null && core !== void 0 ? core : (core = (0, core_base_1.makeCore)({ agentId, cwd, logger }));
43
45
  return utils.general.extend(core, {
44
- isDriver: spec === null || spec === void 0 ? void 0 : spec.isDriver,
45
- isElement: spec === null || spec === void 0 ? void 0 : spec.isElement,
46
- isSelector: spec === null || spec === void 0 ? void 0 : spec.isSelector,
47
- getViewportSize: (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
48
- setViewportSize: (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
46
+ isDriver: spec && spec.isDriver,
47
+ isElement: spec && spec.isElement,
48
+ isSelector: spec && spec.isSelector,
49
+ getViewportSize: spec && (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
50
+ setViewportSize: spec && (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
49
51
  locate: (0, locate_1.makeLocate)({ spec, core, logger }),
52
+ locateText: (0, locate_text_1.makeLocateText)({ spec, core, logger }),
53
+ extractText: (0, extract_text_1.makeExtractText)({ spec, core, logger }),
50
54
  openEyes: (0, open_eyes_1.makeOpenEyes)({ spec, core, concurrency, logger }),
51
55
  makeManager: (0, make_manager_1.makeMakeManager)({ spec, concurrency, agentId, logger }),
52
56
  closeBatch: (0, close_batch_1.makeCloseBatch)({ core, logger }),
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbortError = void 0;
4
- class AbortError extends Error {
4
+ const core_base_1 = require("@applitools/core-base");
5
+ class AbortError extends core_base_1.CoreError {
6
+ constructor(message, info) {
7
+ super(message, { reason: 'abort', ...info });
8
+ }
5
9
  }
6
10
  exports.AbortError = AbortError;
@@ -24,24 +24,20 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeExtractText = void 0;
27
+ const core_1 = require("./classic/core");
27
28
  const utils = __importStar(require("@applitools/utils"));
28
- function makeExtractText({ eyes, target: defaultTarget, logger: defaultLogger, }) {
29
- return async function extractText({ target = defaultTarget, settings, config, logger = defaultLogger, }) {
30
- var _a;
31
- if (utils.types.isArray(settings)) {
32
- settings = settings.map(settings => {
33
- var _a;
34
- settings = { ...config === null || config === void 0 ? void 0 : config.screenshot, ...settings };
35
- (_a = settings.autProxy) !== null && _a !== void 0 ? _a : (settings.autProxy = eyes.test.server.proxy);
36
- return settings;
37
- });
38
- }
39
- else {
40
- settings = { ...config === null || config === void 0 ? void 0 : config.screenshot, ...settings };
41
- (_a = settings.autProxy) !== null && _a !== void 0 ? _a : (settings.autProxy = eyes.test.server.proxy);
42
- }
43
- const classicEyes = await eyes.getTypedEyes({ type: 'classic', logger });
44
- const results = await classicEyes.extractText({ target, settings, logger });
29
+ function makeExtractText({ spec, core, logger: defaultLogger }) {
30
+ return async function extractText({ target, settings, config, logger = defaultLogger, }) {
31
+ settings = utils.types.isArray(settings) ? settings : [settings];
32
+ settings = settings.map(settings => {
33
+ var _a, _b, _c;
34
+ settings = { ...config === null || config === void 0 ? void 0 : config.open, ...config === null || config === void 0 ? void 0 : config.screenshot, ...settings };
35
+ (_a = settings.serverUrl) !== null && _a !== void 0 ? _a : (settings.serverUrl = (_b = utils.general.getEnvValue('SERVER_URL')) !== null && _b !== void 0 ? _b : 'https://eyesapi.applitools.com');
36
+ (_c = settings.apiKey) !== null && _c !== void 0 ? _c : (settings.apiKey = utils.general.getEnvValue('API_KEY'));
37
+ return settings;
38
+ });
39
+ const classicCore = (0, core_1.makeCore)({ spec, core, logger });
40
+ const results = await classicCore.extractText({ target, settings, logger });
45
41
  return results;
46
42
  };
47
43
  }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeGetEyesResults = void 0;
4
+ const test_error_1 = require("./errors/test-error");
5
+ function makeGetEyesResults({ eyes, logger: defaultLogger, }) {
6
+ return async function getEyesResults({ settings, logger = defaultLogger, } = {}) {
7
+ const typedEyes = await eyes.getTypedEyes({ logger });
8
+ const results = await typedEyes.getResults({ settings, logger });
9
+ if (settings === null || settings === void 0 ? void 0 : settings.throwErr) {
10
+ results.forEach(result => {
11
+ if (result.status !== 'Passed')
12
+ throw new test_error_1.TestError(result);
13
+ });
14
+ }
15
+ return results;
16
+ };
17
+ }
18
+ exports.makeGetEyesResults = makeGetEyesResults;
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeCloseManager = void 0;
3
+ exports.makeGetManagerResults = void 0;
4
4
  const test_error_1 = require("./errors/test-error");
5
5
  const internal_error_1 = require("./errors/internal-error");
6
- function makeCloseManager({ core, storage, logger: defaultLogger, }) {
7
- return async function closeManager({ settings, logger = defaultLogger, } = {}) {
8
- const containers = await Promise.all(storage.map(async ({ eyes, promise }) => {
9
- if (!promise)
10
- logger.warn(`The eyes with id "${eyes.test.userTestId}" are going to be auto aborted`);
6
+ function makeGetManagerResults({ core, storage, logger: defaultLogger, }) {
7
+ return async function getManagerResults({ settings, logger = defaultLogger, } = {}) {
8
+ var _a, _b, _c;
9
+ const containers = await Promise.all(storage.map(async (eyes) => {
11
10
  try {
12
- const results = await (promise !== null && promise !== void 0 ? promise : eyes.abort({ logger }));
11
+ const results = await eyes.getResults({ settings, logger });
13
12
  return results.map(result => {
14
13
  return {
15
14
  result,
@@ -23,7 +22,7 @@ function makeCloseManager({ core, storage, logger: defaultLogger, }) {
23
22
  return [{ error: new internal_error_1.InternalError(error), ...error.info }];
24
23
  }
25
24
  }));
26
- const batches = storage.reduce((batches, { eyes }) => {
25
+ const batches = storage.reduce((batches, eyes) => {
27
26
  if (!eyes.test.keepBatchOpen) {
28
27
  const settings = { ...eyes.test.server, batchId: eyes.test.batchId };
29
28
  batches[`${settings.serverUrl}:${settings.apiKey}:${settings.batchId}`] = settings;
@@ -54,12 +53,12 @@ function makeCloseManager({ core, storage, logger: defaultLogger, }) {
54
53
  summary.passed += 1;
55
54
  else if (container.result.status === 'Unresolved')
56
55
  summary.unresolved += 1;
57
- summary.matches += container.result.matches;
58
- summary.missing += container.result.missing;
59
- summary.mismatches += container.result.mismatches;
56
+ summary.matches += (_a = container.result.matches) !== null && _a !== void 0 ? _a : 0;
57
+ summary.missing += (_b = container.result.missing) !== null && _b !== void 0 ? _b : 0;
58
+ summary.mismatches += (_c = container.result.mismatches) !== null && _c !== void 0 ? _c : 0;
60
59
  }
61
60
  }
62
61
  return summary;
63
62
  };
64
63
  }
65
- exports.makeCloseManager = makeCloseManager;
64
+ exports.makeGetManagerResults = makeGetManagerResults;
@@ -5,10 +5,7 @@ function makeGetTypedEyes({ type: defaultType, settings: defaultSettings, target
5
5
  let eyes;
6
6
  return async function getTypesEyes({ type = defaultType, settings, logger = defaultLogger, } = {}) {
7
7
  if (!eyes) {
8
- eyes =
9
- type === 'ufg'
10
- ? await cores.ufg.openEyes({ target, settings: defaultSettings, logger })
11
- : await cores.classic.openEyes({ target, settings: defaultSettings, logger });
8
+ eyes = await cores[type].openEyes({ target, settings: defaultSettings, logger });
12
9
  return eyes;
13
10
  }
14
11
  else if (eyes.type === type) {
@@ -16,11 +13,13 @@ function makeGetTypedEyes({ type: defaultType, settings: defaultSettings, target
16
13
  }
17
14
  else if (type === 'ufg') {
18
15
  const baseEyes = await eyes.getBaseEyes();
19
- return cores.ufg.openEyes({ target, settings: defaultSettings, eyes: baseEyes, logger });
16
+ const typedEyes = await cores.ufg.openEyes({ target, settings: defaultSettings, eyes: baseEyes, logger });
17
+ return typedEyes;
20
18
  }
21
19
  else {
22
20
  const baseEyes = (await Promise.all(settings.renderers.map(renderer => eyes.getBaseEyes({ settings: { type: settings.type, renderer } })))).flat();
23
- return cores.classic.openEyes({ target, settings: defaultSettings, eyes: baseEyes, logger });
21
+ const typedEyes = await cores.classic.openEyes({ target, settings: defaultSettings, eyes: baseEyes, logger });
22
+ return typedEyes;
24
23
  }
25
24
  };
26
25
  }
package/dist/index.js CHANGED
@@ -26,10 +26,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
26
  return result;
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.formatters = exports.takeDomSnapshots = void 0;
29
+ exports.takeDomSnapshots = exports.formatters = void 0;
30
30
  __exportStar(require("./types"), exports);
31
31
  __exportStar(require("./core"), exports);
32
+ __exportStar(require("@applitools/driver/dist/debug"), exports);
33
+ exports.formatters = __importStar(require("./utils/format-results"));
32
34
  var take_dom_snapshots_1 = require("./ufg/utils/take-dom-snapshots");
33
35
  Object.defineProperty(exports, "takeDomSnapshots", { enumerable: true, get: function () { return take_dom_snapshots_1.takeDomSnapshots; } });
34
- exports.formatters = __importStar(require("./utils/format-results"));
35
- __exportStar(require("@applitools/driver/dist/debug"), exports);
@@ -1,13 +1,39 @@
1
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.makeLocateText = void 0;
4
- function makeLocateText({ eyes, target: defaultTarget, logger: defaultLogger, }) {
5
- return async function locateText({ target = defaultTarget, settings, config, logger = defaultLogger, }) {
6
- var _a;
7
- settings = { ...config === null || config === void 0 ? void 0 : config.screenshot, ...settings };
8
- (_a = settings.autProxy) !== null && _a !== void 0 ? _a : (settings.autProxy = eyes.test.server.proxy);
9
- const classicEyes = await eyes.getTypedEyes({ type: 'classic', logger });
10
- const results = await classicEyes.locateText({ target, settings, logger });
27
+ const core_1 = require("./classic/core");
28
+ const utils = __importStar(require("@applitools/utils"));
29
+ function makeLocateText({ spec, core, logger: defaultLogger }) {
30
+ return async function locateText({ target, settings, config, logger = defaultLogger, }) {
31
+ var _a, _b, _c;
32
+ settings = { ...config === null || config === void 0 ? void 0 : config.open, ...config === null || config === void 0 ? void 0 : config.screenshot, ...settings };
33
+ (_a = settings.serverUrl) !== null && _a !== void 0 ? _a : (settings.serverUrl = (_b = utils.general.getEnvValue('SERVER_URL')) !== null && _b !== void 0 ? _b : 'https://eyesapi.applitools.com');
34
+ (_c = settings.apiKey) !== null && _c !== void 0 ? _c : (settings.apiKey = utils.general.getEnvValue('API_KEY'));
35
+ const classicCore = (0, core_1.makeCore)({ spec, core, logger });
36
+ const results = await classicCore.locateText({ target, settings, logger });
11
37
  return results;
12
38
  };
13
39
  }
package/dist/locate.js CHANGED
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeLocate = void 0;
27
27
  const core_1 = require("./classic/core");
28
28
  const utils = __importStar(require("@applitools/utils"));
29
- function makeLocate({ spec, core, logger: defaultLogger, }) {
29
+ function makeLocate({ spec, core, logger: defaultLogger }) {
30
30
  return async function locate({ target, settings, config, logger = defaultLogger, }) {
31
31
  var _a, _b, _c;
32
32
  settings = { ...config === null || config === void 0 ? void 0 : config.open, ...config === null || config === void 0 ? void 0 : config.screenshot, ...settings };
@@ -25,18 +25,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeMakeECClient = void 0;
27
27
  const utils = __importStar(require("@applitools/utils"));
28
- function makeMakeECClient({ core, logger: defaultLogger }) {
28
+ function makeMakeECClient({ logger: defaultLogger }) {
29
29
  return utils.general.cachify(makeECClient, ([options]) => options === null || options === void 0 ? void 0 : options.settings);
30
30
  async function makeECClient({ settings, logger = defaultLogger, } = {}) {
31
- var _a, _b, _c, _d, _e, _f, _g, _h;
32
- var _j, _k;
33
31
  const { makeECClient } = require('@applitools/ec-client');
34
- const serverUrl = (_c = (_b = (_a = settings.capabilities.eyesServerUrl) !== null && _a !== void 0 ? _a : utils.general.getEnvValue('EYES_SERVER_URL')) !== null && _b !== void 0 ? _b : utils.general.getEnvValue('SERVER_URL')) !== null && _c !== void 0 ? _c : 'https://eyesapi.applitools.com';
35
- const apiKey = ((_d = (_j = settings.capabilities).apiKey) !== null && _d !== void 0 ? _d : (_j.apiKey = utils.general.getEnvValue('API_KEY')));
36
- const proxy = (_e = settings.proxy) !== null && _e !== void 0 ? _e : (utils.general.getEnvValue('PROXY_URL') && { url: utils.general.getEnvValue('PROXY_URL') });
37
- const account = await core.getAccountInfo({ settings: { serverUrl, apiKey, proxy }, logger });
38
- (_f = settings.capabilities) !== null && _f !== void 0 ? _f : (settings.capabilities = {});
39
- (_g = (_k = settings.capabilities).useSelfHealing) !== null && _g !== void 0 ? _g : (_k.useSelfHealing = (_h = utils.general.getEnvValue('USE_SELF_HEALING', 'boolean')) !== null && _h !== void 0 ? _h : account.selfHealingEnabled);
40
32
  const client = await makeECClient({ settings, logger });
41
33
  return client;
42
34
  }
@@ -28,7 +28,7 @@ const core_base_1 = require("@applitools/core-base");
28
28
  const core_1 = require("./classic/core");
29
29
  const core_2 = require("./ufg/core");
30
30
  const open_eyes_1 = require("./open-eyes");
31
- const close_manager_1 = require("./close-manager");
31
+ const get_manager_results_1 = require("./get-manager-results");
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 = 'classic', concurrency = defaultConcurrency, legacyConcurrency, batch, agentId = type === 'ufg' ? defaultAgentId === null || defaultAgentId === void 0 ? void 0 : defaultAgentId.replace(/(\/\d)/, '.visualgrid$1') : defaultAgentId, logger = defaultLogger, } = {}) {
@@ -37,40 +37,15 @@ function makeMakeManager({ spec, core, concurrency: defaultConcurrency = utils.g
37
37
  batch !== null && batch !== void 0 ? batch : (batch = {});
38
38
  (_a = batch.id) !== null && _a !== void 0 ? _a : (batch.id = `generated-${utils.general.guid()}`);
39
39
  core !== null && core !== void 0 ? core : (core = (0, core_base_1.makeCore)({ agentId, cwd, logger }));
40
- const cores = {
41
- ufg: (0, core_2.makeCore)({ spec, core, concurrency, logger }),
42
- classic: (0, core_1.makeCore)({ spec, core, logger }),
43
- };
40
+ const cores = { ufg: (0, core_2.makeCore)({ spec, core, concurrency, logger }), classic: (0, core_1.makeCore)({ spec, core, logger }) };
44
41
  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
42
  return {
72
- openEyes,
73
- closeManager: (0, close_manager_1.makeCloseManager)({ core, storage, logger }),
43
+ openEyes: utils.general.wrap((0, open_eyes_1.makeOpenEyes)({ type, batch, spec, core, cores, logger }), async (openEyes, options) => {
44
+ const eyes = await openEyes(options);
45
+ storage.push(eyes);
46
+ return eyes;
47
+ }),
48
+ getResults: (0, get_manager_results_1.makeGetManagerResults)({ core, storage, logger }),
74
49
  };
75
50
  };
76
51
  }
package/dist/open-eyes.js CHANGED
@@ -30,9 +30,8 @@ const core_2 = require("./ufg/core");
30
30
  const get_typed_eyes_1 = require("./get-typed-eyes");
31
31
  const check_1 = require("./check");
32
32
  const check_and_close_1 = require("./check-and-close");
33
- const locate_text_1 = require("./locate-text");
34
- const extract_text_1 = require("./extract-text");
35
33
  const close_1 = require("./close");
34
+ const get_eyes_results_1 = require("./get-eyes-results");
36
35
  const extract_ci_provider_1 = require("./utils/extract-ci-provider");
37
36
  const utils = __importStar(require("@applitools/utils"));
38
37
  function makeOpenEyes({ type: defaultType = 'classic', concurrency, batch, core, cores, spec, logger: defaultLogger, }) {
@@ -97,10 +96,9 @@ function makeOpenEyes({ type: defaultType = 'classic', concurrency, batch, core,
97
96
  getTypedEyes,
98
97
  check: (0, check_1.makeCheck)({ type, eyes, target: driver, spec, logger }),
99
98
  checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ type, eyes, target: driver, spec, logger }),
100
- locateText: (0, locate_text_1.makeLocateText)({ eyes, target: driver, logger }),
101
- extractText: (0, extract_text_1.makeExtractText)({ eyes, target: driver, logger }),
102
99
  close: (0, close_1.makeClose)({ eyes, logger }),
103
- }));
100
+ getResults: (0, get_eyes_results_1.makeGetEyesResults)({ eyes, logger }),
101
+ })); // TODO solve the types issue
104
102
  };
105
103
  }
106
104
  exports.makeOpenEyes = makeOpenEyes;
@@ -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/types.js CHANGED
@@ -14,5 +14,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("@applitools/core-base/types"), exports);
18
17
  __exportStar(require("./automation/types"), exports);
package/dist/ufg/abort.js CHANGED
@@ -1,37 +1,24 @@
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
- return async function ({ settings, logger = defaultLogger, } = {}) {
6
+ return async function abort({ settings, logger = defaultLogger, } = {}) {
7
+ logger.log('Command "abort" is called with settings', settings);
8
8
  controller.abort();
9
- const tests = storage.reduce((tests, { renderer, promise }) => {
10
- const key = JSON.stringify(renderer);
11
- return tests.set(key, promise);
12
- }, new Map());
13
- return Promise.all(Array.from(tests.values(), async (promise) => {
14
- let eyes, renderer;
9
+ const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
10
+ const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
11
+ storage.forEach(async (promises) => {
12
+ var _a, _b;
15
13
  try {
16
- const value = await promise;
17
- eyes = value.eyes;
18
- renderer = value.renderer;
14
+ const { eyes } = await Promise.race(promises);
15
+ await eyes.abort({ settings: { ...settings, testMetadata }, logger });
19
16
  }
20
17
  catch (error) {
21
- eyes = error.info.eyes;
22
- 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
- }
18
+ logger.warn('Command "abort" received an error during waiting for eyes instances in background', error);
19
+ await ((_b = (_a = error === null || error === void 0 ? void 0 : error.info) === null || _a === void 0 ? void 0 : _a.eyes) === null || _b === void 0 ? void 0 : _b.abort({ settings: { ...settings, testMetadata }, logger }));
29
20
  }
30
- const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
31
- const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
32
- const [result] = await eyes.abort({ settings: { ...settings, testMetadata }, logger });
33
- return { ...result, renderer };
34
- }));
21
+ });
35
22
  };
36
23
  }
37
24
  exports.makeAbort = makeAbort;