@applitools/core 1.3.7 → 1.4.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.
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeAbort = void 0;
4
+ const driver_1 = require("@applitools/driver");
5
+ function makeAbort({ eyes, target, spec, logger: defaultLogger, }) {
6
+ return async function ({ settings, logger = defaultLogger, } = {}) {
7
+ const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
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 });
11
+ };
12
+ }
13
+ exports.makeAbort = makeAbort;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeClose = void 0;
4
+ const driver_1 = require("@applitools/driver");
5
+ function makeClose({ eyes, target, spec, logger: defaultLogger, }) {
6
+ return async function ({ settings, logger = defaultLogger, } = {}) {
7
+ const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
8
+ const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
9
+ const baseEyes = await eyes.getBaseEyes();
10
+ return (await Promise.all(baseEyes.map(baseEyes => baseEyes.close({ settings: { ...settings, testMetadata }, logger })))).flat();
11
+ };
12
+ }
13
+ exports.makeClose = makeClose;
@@ -30,6 +30,8 @@ const check_1 = require("./check");
30
30
  const check_and_close_1 = require("./check-and-close");
31
31
  const locate_text_1 = require("./locate-text");
32
32
  const extract_text_1 = require("./extract-text");
33
+ const close_1 = require("./close");
34
+ const abort_1 = require("./abort");
33
35
  const utils = __importStar(require("@applitools/utils"));
34
36
  function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
35
37
  return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
@@ -40,6 +42,7 @@ function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
40
42
  if (driver && !eyes) {
41
43
  const currentContext = driver.currentContext;
42
44
  (_a = settings.environment) !== null && _a !== void 0 ? _a : (settings.environment = {});
45
+ settings.environment.egSessionId = (driver === null || driver === void 0 ? void 0 : driver.isExecutionGrid) ? driver.sessionId : null;
43
46
  if (!settings.environment.viewportSize || driver.isMobile) {
44
47
  const size = await driver.getViewportSize();
45
48
  settings.environment.viewportSize = utils.geometry.scale(size, driver.viewportScale);
@@ -83,6 +86,8 @@ function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
83
86
  checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, spec, logger }),
84
87
  locateText: (0, locate_text_1.makeLocateText)({ eyes, target: driver, spec, logger }),
85
88
  extractText: (0, extract_text_1.makeExtractText)({ eyes, target: driver, spec, logger }),
89
+ close: (0, close_1.makeClose)({ eyes, target: driver, spec, logger }),
90
+ abort: (0, abort_1.makeAbort)({ eyes, target: driver, spec, logger }),
86
91
  }));
87
92
  };
88
93
  }
package/dist/core.js CHANGED
@@ -33,6 +33,7 @@ const open_eyes_1 = require("./open-eyes");
33
33
  const make_manager_1 = require("./make-manager");
34
34
  const close_batch_1 = require("./close-batch");
35
35
  const delete_test_1 = require("./delete-test");
36
+ const make_eg_client_1 = require("./make-eg-client");
36
37
  const utils = __importStar(require("@applitools/utils"));
37
38
  function makeCore({ spec, concurrency, core, agentId = 'core', cwd = process.cwd(), logger, } = {}) {
38
39
  var _a;
@@ -50,6 +51,7 @@ function makeCore({ spec, concurrency, core, agentId = 'core', cwd = process.cwd
50
51
  makeManager: (0, make_manager_1.makeMakeManager)({ spec, concurrency, agentId, logger }),
51
52
  closeBatch: (0, close_batch_1.makeCloseBatch)({ core, logger }),
52
53
  deleteTest: (0, delete_test_1.makeDeleteTest)({ core, logger }),
54
+ makeEGClient: (0, make_eg_client_1.makeMakeEGClient)({ core, logger }),
53
55
  });
54
56
  }
55
57
  exports.makeCore = makeCore;
@@ -0,0 +1,43 @@
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.makeMakeEGClient = void 0;
27
+ const execution_grid_client_1 = require("@applitools/execution-grid-client");
28
+ const utils = __importStar(require("@applitools/utils"));
29
+ function makeMakeEGClient({ core, logger: defaultLogger }) {
30
+ return async function _makeEGClient({ settings, logger = defaultLogger, } = {}) {
31
+ var _a, _b, _c, _d, _e, _f, _g, _h;
32
+ var _j, _k;
33
+ 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';
34
+ const apiKey = ((_d = (_j = settings.capabilities).apiKey) !== null && _d !== void 0 ? _d : (_j.apiKey = utils.general.getEnvValue('API_KEY')));
35
+ const proxy = (_e = settings.proxy) !== null && _e !== void 0 ? _e : (utils.general.getEnvValue('PROXY_URL') && { url: utils.general.getEnvValue('PROXY_URL') });
36
+ const _account = await core.getAccountInfo({ settings: { serverUrl, apiKey, proxy }, logger });
37
+ (_f = settings.capabilities) !== null && _f !== void 0 ? _f : (settings.capabilities = {});
38
+ (_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 : false); // TODO replace with account.selfHealingEnabled
39
+ const client = await (0, execution_grid_client_1.makeEGClient)({ settings, logger });
40
+ return client;
41
+ };
42
+ }
43
+ exports.makeMakeEGClient = makeMakeEGClient;
package/dist/ufg/abort.js CHANGED
@@ -2,8 +2,9 @@
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 }) {
6
- return async function ({ logger = defaultLogger, } = {}) {
5
+ const driver_1 = require("@applitools/driver");
6
+ function makeAbort({ storage, target, spec, controller, logger: defaultLogger, }) {
7
+ return async function ({ settings, logger = defaultLogger, } = {}) {
7
8
  controller.abort();
8
9
  const tests = storage.reduce((tests, { renderer, promise }) => {
9
10
  const key = JSON.stringify(renderer);
@@ -26,7 +27,9 @@ function makeAbort({ storage, controller, logger: defaultLogger }) {
26
27
  throw error;
27
28
  }
28
29
  }
29
- const [result] = await eyes.abort({ logger });
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 });
30
33
  return { ...result, renderer };
31
34
  }));
32
35
  };
package/dist/ufg/check.js CHANGED
@@ -34,10 +34,11 @@ const to_base_check_settings_1 = require("../utils/to-base-check-settings");
34
34
  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
+ const add_key_to_duplicated_values_in_array_1 = __importDefault(require("./utils/add-key-to-duplicated-values-in-array"));
37
38
  const chalk_1 = __importDefault(require("chalk"));
38
39
  function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger: defaultLogger, }) {
39
40
  return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
40
- var _a, _b, _c;
41
+ var _a, _b, _c, _d;
41
42
  logger.log('Command "check" is called with settings', settings);
42
43
  if (signal.aborted) {
43
44
  logger.warn('Command "check" was called after test was already aborted');
@@ -45,12 +46,13 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
45
46
  }
46
47
  const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
47
48
  let snapshots, snapshotUrl, snapshotTitle, userAgent, regionToTarget, selectorsToCalculate;
49
+ const uniqueRenderers = (0, add_key_to_duplicated_values_in_array_1.default)((_a = settings.renderers) !== null && _a !== void 0 ? _a : []);
48
50
  if ((0, driver_1.isDriver)(target, spec)) {
49
51
  const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
50
- await driver.currentContext.setScrollingElement((_a = settings.scrollRootElement) !== null && _a !== void 0 ? _a : null);
51
- if (driver.isWeb && (!settings.renderers || settings.renderers.length === 0)) {
52
+ await driver.currentContext.setScrollingElement((_b = settings.scrollRootElement) !== null && _b !== void 0 ? _b : null);
53
+ if (driver.isWeb && uniqueRenderers.length === 0) {
52
54
  const viewportSize = await driver.getViewportSize();
53
- settings.renderers = [{ name: 'chrome', ...viewportSize }];
55
+ uniqueRenderers.push({ name: 'chrome', ...viewportSize });
54
56
  }
55
57
  let cleanupGeneratedSelectors;
56
58
  if (driver.isWeb) {
@@ -61,7 +63,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
61
63
  });
62
64
  cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
63
65
  if (elementReferenceToTarget) {
64
- regionToTarget = (_b = generated.selectors[0]) === null || _b === void 0 ? void 0 : _b.safeSelector;
66
+ regionToTarget = (_c = generated.selectors[0]) === null || _c === void 0 ? void 0 : _c.safeSelector;
65
67
  if (!regionToTarget)
66
68
  throw new Error('Target element not found');
67
69
  selectorsToCalculate = generated.selectors.slice(1);
@@ -78,7 +80,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
78
80
  waitBeforeCapture: settings.waitBeforeCapture,
79
81
  disableBrowserFetching: settings.disableBrowserFetching,
80
82
  layoutBreakpoints: settings.layoutBreakpoints,
81
- renderers: settings.renderers,
83
+ renderers: uniqueRenderers,
82
84
  skipResources: client.getCachedResourceUrls(),
83
85
  },
84
86
  hooks: {
@@ -104,15 +106,15 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
104
106
  await (cleanupGeneratedSelectors === null || cleanupGeneratedSelectors === void 0 ? void 0 : cleanupGeneratedSelectors());
105
107
  }
106
108
  else {
107
- snapshots = !utils.types.isArray(target) ? Array(settings.renderers.length).fill(target) : target;
109
+ snapshots = !utils.types.isArray(target) ? Array(uniqueRenderers.length).fill(target) : target;
108
110
  snapshotUrl = utils.types.has(snapshots[0], 'url') ? snapshots[0].url : undefined;
109
111
  }
110
- regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_c = elementReferenceToTarget) !== null && _c !== void 0 ? _c : settings.region);
112
+ regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_d = elementReferenceToTarget) !== null && _d !== void 0 ? _d : settings.region);
111
113
  selectorsToCalculate !== null && selectorsToCalculate !== void 0 ? selectorsToCalculate : (selectorsToCalculate = elementReferencesToCalculate.map(selector => ({
112
114
  originalSelector: selector,
113
115
  safeSelector: selector,
114
116
  })));
115
- const promises = settings.renderers.map(async (renderer, index) => {
117
+ const promises = uniqueRenderers.map(async (renderer, index) => {
116
118
  if (utils.types.has(renderer, 'name') && renderer.name === 'edge') {
117
119
  const message = chalk_1.default.yellow(`The 'edge' option that is being used in your browsers' configuration will soon be deprecated. Please change it to either 'edgelegacy' for the legacy version or to 'edgechromium' for the new Chromium-based version. Please note, when using the built-in BrowserType enum, then the values are BrowserType.EDGE_LEGACY and BrowserType.EDGE_CHROMIUM, respectively.`);
118
120
  logger.console.log(message);
@@ -193,7 +195,9 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
193
195
  return { ...result, eyes: baseEyes, renderer };
194
196
  }
195
197
  catch (error) {
196
- await baseEyes.abort();
198
+ const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
199
+ const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
200
+ await baseEyes.abort({ settings: { testMetadata } });
197
201
  error.info = { eyes: baseEyes };
198
202
  throw error;
199
203
  }
@@ -203,7 +207,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
203
207
  throw error;
204
208
  }
205
209
  });
206
- return settings.renderers.map((renderer, index) => ({
210
+ return uniqueRenderers.map((renderer, index) => ({
207
211
  asExpected: true,
208
212
  userTestId: eyes.test.userTestId,
209
213
  renderer,
package/dist/ufg/close.js CHANGED
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeClose = void 0;
4
- function makeClose({ storage, logger: defaultLogger }) {
4
+ const driver_1 = require("@applitools/driver");
5
+ function makeClose({ storage, target, spec, logger: defaultLogger, }) {
5
6
  return async function ({ settings, logger = defaultLogger, } = {}) {
6
7
  const tests = storage.reduce((tests, { renderer, promise }) => {
7
8
  var _a;
@@ -14,7 +15,9 @@ function makeClose({ storage, logger: defaultLogger }) {
14
15
  var _a, _b;
15
16
  try {
16
17
  const [{ eyes, renderer }] = await Promise.all(promises);
17
- const [result] = await eyes.close({ settings, logger });
18
+ const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
19
+ const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
20
+ const [result] = await eyes.close({ settings: { ...settings, testMetadata }, logger });
18
21
  return { ...result, renderer };
19
22
  }
20
23
  catch (error) {
@@ -35,12 +35,14 @@ const abort_controller_1 = require("abort-controller");
35
35
  const utils = __importStar(require("@applitools/utils"));
36
36
  function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
37
37
  return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
38
- var _a, _b;
38
+ var _a, _b, _c;
39
39
  logger.log(`Command "openEyes" is called with ${target ? 'default driver and' : ''}`, ...(settings ? ['settings', settings] : []), eyes ? 'predefined eyes' : '');
40
40
  const driver = target && (await (0, driver_1.makeDriver)({ spec, driver: target, logger, customConfig: { disableHelper: true } }));
41
+ (_a = settings.environment) !== null && _a !== void 0 ? _a : (settings.environment = {});
42
+ settings.environment.egSessionId = (driver === null || driver === void 0 ? void 0 : driver.isExecutionGrid) ? driver.sessionId : null;
41
43
  if (driver && !eyes) {
42
44
  const currentContext = driver.currentContext;
43
- if ((_a = settings.environment) === null || _a === void 0 ? void 0 : _a.viewportSize) {
45
+ if ((_b = settings.environment) === null || _b === void 0 ? void 0 : _b.viewportSize) {
44
46
  await driver.setViewportSize(settings.environment.viewportSize);
45
47
  }
46
48
  await currentContext.focus();
@@ -49,7 +51,7 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
49
51
  const account = await core.getAccountInfo({ settings, logger });
50
52
  client !== null && client !== void 0 ? client : (client = (0, ufg_client_1.makeUFGClient)({
51
53
  config: { ...account.ufg, ...account, proxy: settings.proxy },
52
- concurrency: (_b = settings.renderConcurrency) !== null && _b !== void 0 ? _b : 5,
54
+ concurrency: (_c = settings.renderConcurrency) !== null && _c !== void 0 ? _c : 5,
53
55
  logger,
54
56
  }));
55
57
  const getBaseEyes = (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, core, client, logger });
@@ -80,19 +82,22 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
80
82
  // check with indexing and storage
81
83
  check: utils.general.wrap((0, check_1.makeCheck)({ eyes, client, target: driver, spec, signal: controller.signal, logger }), async (check, options = {}) => {
82
84
  const results = await check(options);
83
- storage.push(...results.map(result => ({ promise: result.promise, renderer: result.renderer })));
85
+ storage.push(...results.map(result => ({
86
+ promise: result.promise,
87
+ renderer: result.renderer,
88
+ })));
84
89
  return results;
85
90
  }),
86
91
  checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, client, target: driver, spec, signal: controller.signal, logger }),
87
92
  // close only once
88
- close: utils.general.wrap((0, close_1.makeClose)({ storage, logger }), async (close, options) => {
93
+ close: utils.general.wrap((0, close_1.makeClose)({ storage, target: driver, logger }), async (close, options) => {
89
94
  if (closed || aborted)
90
95
  return [];
91
96
  closed = true;
92
97
  return close(options);
93
98
  }),
94
99
  // abort only once
95
- abort: utils.general.wrap((0, abort_1.makeAbort)({ storage, controller, logger }), async (abort, options) => {
100
+ abort: utils.general.wrap((0, abort_1.makeAbort)({ storage, target: driver, spec, controller, logger }), async (abort, options) => {
96
101
  if (aborted || closed)
97
102
  return [];
98
103
  aborted = true;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function addKeyToDuplicatedValuesInArray(array) {
4
+ const result = [];
5
+ const duplicates = new Map();
6
+ for (const value of array) {
7
+ let index = 0;
8
+ const key = JSON.stringify(value);
9
+ if (duplicates.has(key)) {
10
+ index = duplicates.get(key) + 1;
11
+ result.push({ ...value, id: `${typeof value.id !== 'undefined' ? value.id + '-' : ''}${index}` });
12
+ }
13
+ else {
14
+ result.push(value);
15
+ }
16
+ duplicates.set(key, index);
17
+ }
18
+ return result;
19
+ }
20
+ exports.default = addKeyToDuplicatedValuesInArray;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/core",
3
- "version": "1.3.7",
3
+ "version": "1.4.0",
4
4
  "homepage": "https://applitools.com",
5
5
  "bugs": {
6
6
  "url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -61,30 +61,32 @@
61
61
  }
62
62
  },
63
63
  "dependencies": {
64
- "@applitools/core-base": "1.1.24",
64
+ "@applitools/core-base": "1.1.29",
65
65
  "@applitools/dom-capture": "11.2.0",
66
66
  "@applitools/dom-snapshot": "4.7.3",
67
- "@applitools/driver": "1.11.21",
68
- "@applitools/logger": "1.1.36",
69
- "@applitools/nml-client": "1.3.22",
70
- "@applitools/req": "1.1.23",
71
- "@applitools/screenshoter": "3.7.20",
72
- "@applitools/snippets": "2.4.12",
73
- "@applitools/ufg-client": "1.1.12",
74
- "@applitools/utils": "1.3.22",
67
+ "@applitools/driver": "1.11.25",
68
+ "@applitools/execution-grid-client": "1.2.2",
69
+ "@applitools/logger": "1.1.40",
70
+ "@applitools/nml-client": "1.3.26",
71
+ "@applitools/req": "1.1.27",
72
+ "@applitools/screenshoter": "3.7.22",
73
+ "@applitools/snippets": "2.4.13",
74
+ "@applitools/ufg-client": "1.1.18",
75
+ "@applitools/utils": "1.3.26",
75
76
  "abort-controller": "3.0.0",
76
77
  "chalk": "4.1.2",
77
78
  "node-fetch": "2.6.7",
78
79
  "throat": "6.0.1"
79
80
  },
80
81
  "devDependencies": {
81
- "@applitools/bongo": "^2.2.0",
82
+ "@applitools/bongo": "^2.2.2",
83
+ "@applitools/execution-grid-client": "^1.1.39",
82
84
  "@applitools/sdk-fake-eyes-server": "^2.1.3",
83
- "@applitools/spec-driver-puppeteer": "^1.1.31",
84
- "@applitools/spec-driver-selenium": "^1.5.19",
85
- "@applitools/spec-driver-webdriverio": "^1.4.18",
86
- "@applitools/test-server": "^1.1.16",
87
- "@applitools/test-utils": "^1.5.5",
85
+ "@applitools/spec-driver-puppeteer": "^1.1.36",
86
+ "@applitools/spec-driver-selenium": "^1.5.23",
87
+ "@applitools/spec-driver-webdriverio": "^1.4.20",
88
+ "@applitools/test-server": "^1.1.20",
89
+ "@applitools/test-utils": "^1.5.8",
88
90
  "@types/mocha": "^9.1.1",
89
91
  "@types/node": "12",
90
92
  "@types/selenium-webdriver": "^4.1.2",
@@ -0,0 +1,16 @@
1
+ import type { AbortSettings, TestResult } from './types';
2
+ import type { Eyes } from './types';
3
+ import { type Logger } from '@applitools/logger';
4
+ import type { DriverTarget } from './types';
5
+ import { type SpecDriver } from '@applitools/driver';
6
+ type Options<TDriver, TContext, TElement, TSelector> = {
7
+ eyes: Eyes<TDriver, TContext, TElement, TSelector>;
8
+ target?: DriverTarget<TDriver, TContext, TElement, TSelector>;
9
+ spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
10
+ logger: Logger;
11
+ };
12
+ export declare function makeAbort<TDriver, TContext, TElement, TSelector>({ eyes, target, spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ settings, logger, }?: {
13
+ settings?: AbortSettings;
14
+ logger?: Logger;
15
+ }) => Promise<TestResult[]>;
16
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { CloseSettings, TestResult } from './types';
2
+ import type { Eyes } from './types';
3
+ import { type Logger } from '@applitools/logger';
4
+ import type { DriverTarget } from './types';
5
+ import { type SpecDriver } from '@applitools/driver';
6
+ type Options<TDriver, TContext, TElement, TSelector> = {
7
+ eyes: Eyes<TDriver, TContext, TElement, TSelector>;
8
+ target?: DriverTarget<TDriver, TContext, TElement, TSelector>;
9
+ spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
10
+ logger: Logger;
11
+ };
12
+ export declare function makeClose<TDriver, TContext, TElement, TSelector>({ eyes, target, spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ settings, logger, }?: {
13
+ settings?: CloseSettings;
14
+ logger?: Logger;
15
+ }) => Promise<TestResult[]>;
16
+ export {};
@@ -0,0 +1,12 @@
1
+ import type { Core as BaseCore } from '@applitools/core-base';
2
+ import { type Logger } from '@applitools/logger';
3
+ import { type EGClient, type EGClientSettings } from '@applitools/execution-grid-client';
4
+ type Options = {
5
+ core: BaseCore;
6
+ logger: Logger;
7
+ };
8
+ export declare function makeMakeEGClient({ core, logger: defaultLogger }: Options): ({ settings, logger, }?: {
9
+ settings?: EGClientSettings;
10
+ logger?: Logger;
11
+ }) => Promise<EGClient>;
12
+ export {};
package/types/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { MaybeArray } from '@applitools/utils';
2
+ import type { EGClient } from '@applitools/execution-grid-client';
2
3
  import type * as AutomationCore from './automation/types';
3
4
  import type * as ClassicCore from './classic/types';
4
5
  import type * as UFGCore from './ufg/types';
@@ -10,6 +11,10 @@ export type TypedCore<TDriver, TContext, TElement, TSelector, TType extends 'cla
10
11
  export type TypedEyes<TDriver, TContext, TElement, TSelector, TType extends 'classic' | 'ufg', TTarget = Target<TDriver, TContext, TElement, TSelector, TType>> = TType extends 'ufg' ? UFGCore.Eyes<TDriver, TContext, TElement, TSelector, TTarget> : ClassicCore.Eyes<TDriver, TContext, TElement, TSelector, TTarget>;
11
12
  export type Target<TDriver, TContext, TElement, TSelector, TType extends 'classic' | 'ufg'> = TType extends 'ufg' ? UFGCore.UFGTarget<TDriver, TContext, TElement, TSelector> : ClassicCore.ClassicTarget<TDriver, TContext, TElement, TSelector>;
12
13
  export interface Core<TDriver, TContext, TElement, TSelector> extends AutomationCore.Core<TDriver, TContext, TElement, TSelector> {
14
+ makeEGClient(options?: {
15
+ settings?: any;
16
+ logger?: Logger;
17
+ }): Promise<EGClient>;
13
18
  makeManager<TType extends 'classic' | 'ufg' = 'classic'>(options?: {
14
19
  type: TType;
15
20
  concurrency?: TType extends 'ufg' ? number : never;
@@ -1,9 +1,11 @@
1
- import type { TestResult } from './types';
1
+ import type { AbortSettings, TestResult } from './types';
2
2
  import type { Eyes as BaseEyes } from '@applitools/core-base';
3
3
  import { type Logger } from '@applitools/logger';
4
4
  import { type Renderer } from '@applitools/ufg-client';
5
5
  import { type AbortController } from 'abort-controller';
6
- type Options = {
6
+ import type { DriverTarget } from './types';
7
+ import { type SpecDriver } from '@applitools/driver';
8
+ type Options<TDriver, TContext, TElement, TSelector> = {
7
9
  storage: {
8
10
  renderer: Renderer;
9
11
  promise: Promise<{
@@ -12,9 +14,12 @@ type Options = {
12
14
  }>;
13
15
  }[];
14
16
  controller: AbortController;
17
+ target?: DriverTarget<TDriver, TContext, TElement, TSelector>;
18
+ spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
15
19
  logger: Logger;
16
20
  };
17
- export declare function makeAbort({ storage, controller, logger: defaultLogger }: Options): ({ logger, }?: {
21
+ export declare function makeAbort<TDriver, TContext, TElement, TSelector>({ storage, target, spec, controller, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ settings, logger, }?: {
22
+ settings?: AbortSettings;
18
23
  logger?: Logger;
19
24
  }) => Promise<TestResult[]>;
20
25
  export {};
@@ -2,7 +2,9 @@ import type { CloseSettings, TestResult } from './types';
2
2
  import type { Eyes as BaseEyes } from '@applitools/core-base';
3
3
  import { type Logger } from '@applitools/logger';
4
4
  import { type Renderer } from '@applitools/ufg-client';
5
- type Options = {
5
+ import type { DriverTarget } from './types';
6
+ import { type SpecDriver } from '@applitools/driver';
7
+ type Options<TDriver, TContext, TElement, TSelector> = {
6
8
  storage: {
7
9
  renderer: Renderer;
8
10
  promise: Promise<{
@@ -10,9 +12,11 @@ type Options = {
10
12
  renderer: Renderer;
11
13
  }>;
12
14
  }[];
15
+ target?: DriverTarget<TDriver, TContext, TElement, TSelector>;
16
+ spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
13
17
  logger: Logger;
14
18
  };
15
- export declare function makeClose({ storage, logger: defaultLogger }: Options): ({ settings, logger, }?: {
19
+ export declare function makeClose<TDriver, TContext, TElement, TSelector>({ storage, target, spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ settings, logger, }?: {
16
20
  settings?: CloseSettings;
17
21
  logger?: Logger;
18
22
  }) => Promise<TestResult[]>;
@@ -0,0 +1,3 @@
1
+ export default function addKeyToDuplicatedValuesInArray<TValue extends {
2
+ id?: string;
3
+ }>(array: TValue[]): TValue[];