@applitools/core 1.4.7 → 2.0.1

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 (80) hide show
  1. package/dist/{classic → automation}/extract-text.js +6 -9
  2. package/dist/automation/get-viewport-size.js +1 -1
  3. package/dist/{classic → automation}/locate-text.js +5 -8
  4. package/dist/automation/locate.js +1 -1
  5. package/dist/automation/set-viewport-size.js +1 -1
  6. package/dist/check.js +1 -4
  7. package/dist/classic/abort.js +14 -5
  8. package/dist/classic/close.js +13 -4
  9. package/dist/classic/core.js +4 -0
  10. package/dist/classic/open-eyes.js +1 -5
  11. package/dist/close.js +1 -25
  12. package/dist/core.js +4 -0
  13. package/dist/errors/abort-error.js +5 -1
  14. package/dist/extract-text.js +13 -17
  15. package/dist/get-eyes-results.js +18 -0
  16. package/dist/{close-manager.js → get-manager-results.js} +7 -9
  17. package/dist/get-typed-eyes.js +4 -2
  18. package/dist/index.js +3 -3
  19. package/dist/locate-text.js +33 -7
  20. package/dist/locate.js +1 -1
  21. package/dist/make-manager.js +5 -28
  22. package/dist/open-eyes.js +3 -5
  23. package/dist/types.js +0 -1
  24. package/dist/ufg/abort.js +19 -19
  25. package/dist/ufg/check-and-close.js +4 -4
  26. package/dist/ufg/check.js +11 -9
  27. package/dist/ufg/close.js +25 -18
  28. package/dist/ufg/core.js +4 -0
  29. package/dist/ufg/get-results.js +27 -0
  30. package/dist/ufg/open-eyes.js +13 -25
  31. package/package.json +8 -8
  32. package/types/automation/extract-text.d.ts +16 -0
  33. package/types/automation/get-viewport-size.d.ts +5 -5
  34. package/types/automation/locate-text.d.ts +15 -0
  35. package/types/automation/locate.d.ts +6 -6
  36. package/types/automation/set-viewport-size.d.ts +5 -5
  37. package/types/automation/types.d.ts +36 -40
  38. package/types/automation/utils/take-screenshot.d.ts +9 -9
  39. package/types/automation/utils/to-base-check-settings.d.ts +6 -13
  40. package/types/automation/utils/wait-for-lazy-load.d.ts +3 -3
  41. package/types/check-and-close.d.ts +9 -11
  42. package/types/check.d.ts +9 -9
  43. package/types/classic/abort.d.ts +8 -8
  44. package/types/classic/check-and-close.d.ts +9 -9
  45. package/types/classic/check.d.ts +9 -9
  46. package/types/classic/close.d.ts +8 -8
  47. package/types/classic/core.d.ts +4 -4
  48. package/types/classic/open-eyes.d.ts +6 -6
  49. package/types/classic/types.d.ts +7 -7
  50. package/types/classic/utils/take-dom-capture.d.ts +3 -3
  51. package/types/close.d.ts +7 -6
  52. package/types/core.d.ts +4 -4
  53. package/types/errors/abort-error.d.ts +3 -1
  54. package/types/extract-text.d.ts +10 -8
  55. package/types/get-eyes-results.d.ts +12 -0
  56. package/types/get-manager-results.d.ts +14 -0
  57. package/types/get-typed-eyes.d.ts +6 -5
  58. package/types/index.d.ts +3 -3
  59. package/types/locate-text.d.ts +10 -8
  60. package/types/locate.d.ts +8 -8
  61. package/types/make-manager.d.ts +5 -5
  62. package/types/open-eyes.d.ts +9 -9
  63. package/types/types.d.ts +62 -84
  64. package/types/ufg/abort.d.ts +8 -16
  65. package/types/ufg/check-and-close.d.ts +9 -9
  66. package/types/ufg/check.d.ts +9 -9
  67. package/types/ufg/close.d.ts +8 -17
  68. package/types/ufg/core.d.ts +4 -4
  69. package/types/ufg/get-results.d.ts +11 -0
  70. package/types/ufg/open-eyes.d.ts +6 -6
  71. package/types/ufg/types.d.ts +13 -17
  72. package/types/ufg/utils/extract-broker-url.d.ts +3 -3
  73. package/types/ufg/utils/generate-safe-selectors.d.ts +8 -8
  74. package/types/ufg/utils/take-dom-snapshot.d.ts +3 -3
  75. package/types/ufg/utils/take-dom-snapshots.d.ts +3 -3
  76. package/types/ufg/utils/take-snapshots.d.ts +3 -3
  77. package/types/ufg/utils/take-vhses.d.ts +3 -3
  78. package/types/classic/extract-text.d.ts +0 -16
  79. package/types/classic/locate-text.d.ts +0 -15
  80. package/types/close-manager.d.ts +0 -18
@@ -157,7 +157,7 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
157
157
  logger.warn('Command "check" was aborted before rendering');
158
158
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
159
159
  }
160
- else if (baseEyes.aborted) {
160
+ else if (!baseEyes.running) {
161
161
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
162
162
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
163
163
  }
@@ -166,7 +166,7 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
166
166
  logger.warn('Command "check" was aborted before rendering');
167
167
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
168
168
  }
169
- else if (baseEyes.aborted) {
169
+ else if (!baseEyes.running) {
170
170
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
171
171
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
172
172
  }
@@ -197,7 +197,7 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
197
197
  logger.warn('Command "check" was aborted after rendering');
198
198
  throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
199
199
  }
200
- else if (baseEyes.aborted) {
200
+ else if (!baseEyes.running) {
201
201
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
202
202
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
203
203
  }
@@ -206,7 +206,7 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
206
206
  settings: baseSettings,
207
207
  logger,
208
208
  });
209
- if (baseEyes.aborted) {
209
+ if (!baseEyes.running) {
210
210
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
211
211
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
212
212
  }
package/dist/ufg/check.js CHANGED
@@ -39,9 +39,9 @@ const chalk_1 = __importDefault(require("chalk"));
39
39
  function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger: defaultLogger, }) {
40
40
  return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
41
41
  var _a, _b, _c, _d, _e;
42
- logger === null || logger === void 0 ? void 0 : logger.log('Command "check" is called with settings', settings);
42
+ logger.log('Command "check" is called with settings', settings);
43
43
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
44
- logger === null || logger === void 0 ? void 0 : logger.warn('Command "check" was called after test was already aborted');
44
+ logger.warn('Command "check" was called after test was already aborted');
45
45
  throw new abort_error_1.AbortError('Command "check" was called after test was already aborted');
46
46
  }
47
47
  const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
@@ -132,11 +132,11 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
132
132
  const promises = uniqueRenderers.map(async (renderer, index) => {
133
133
  if (utils.types.has(renderer, 'name') && renderer.name === 'edge') {
134
134
  const message = chalk_1.default.yellow(`The 'edge' option that is being used in your browsers' configuration will soon be deprecated. Please change it to either 'edgelegacy' for the legacy version or to 'edgechromium' for the new Chromium-based version. Please note, when using the built-in BrowserType enum, then the values are BrowserType.EDGE_LEGACY and BrowserType.EDGE_CHROMIUM, respectively.`);
135
- logger === null || logger === void 0 ? void 0 : logger.console.log(message);
135
+ logger.console.log(message);
136
136
  }
137
137
  try {
138
138
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
139
- logger === null || logger === void 0 ? void 0 : logger.warn('Command "check" was aborted before rendering');
139
+ logger.warn('Command "check" was aborted before rendering');
140
140
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
141
141
  }
142
142
  const { cookies, ...snapshot } = snapshots[index];
@@ -158,7 +158,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
158
158
  logger.warn('Command "check" was aborted before rendering');
159
159
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
160
160
  }
161
- else if (baseEyes.aborted) {
161
+ else if (!baseEyes.running) {
162
162
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
163
163
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
164
164
  }
@@ -167,7 +167,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
167
167
  logger.warn('Command "check" was aborted before rendering');
168
168
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
169
169
  }
170
- else if (baseEyes.aborted) {
170
+ else if (!baseEyes.running) {
171
171
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
172
172
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
173
173
  }
@@ -198,7 +198,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
198
198
  logger.warn('Command "check" was aborted after rendering');
199
199
  throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
200
200
  }
201
- else if (baseEyes.aborted) {
201
+ else if (!baseEyes.running) {
202
202
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
203
203
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
204
204
  }
@@ -207,14 +207,16 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
207
207
  settings: baseSettings,
208
208
  logger,
209
209
  });
210
- if (baseEyes.aborted) {
210
+ if (!baseEyes.running) {
211
211
  logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
212
212
  throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
213
213
  }
214
214
  return { ...result, eyes: baseEyes, renderer };
215
215
  }
216
216
  catch (error) {
217
- await baseEyes.abort({ settings: { testMetadata: await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata()) } });
217
+ if (baseEyes.running && !(signal === null || signal === void 0 ? void 0 : signal.aborted)) {
218
+ await baseEyes.abort({ settings: { testMetadata: await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata()) } });
219
+ }
218
220
  error.info = { eyes: baseEyes };
219
221
  throw error;
220
222
  }
package/dist/ufg/close.js CHANGED
@@ -2,29 +2,36 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeClose = void 0;
4
4
  const driver_1 = require("@applitools/driver");
5
- function makeClose({ storage, target, spec, logger: defaultLogger, }) {
6
- return async function ({ settings, logger = defaultLogger, } = {}) {
7
- const tests = storage.reduce((tests, { renderer, promise }) => {
8
- var _a;
9
- const key = JSON.stringify(renderer);
10
- const promises = (_a = tests.get(key)) !== null && _a !== void 0 ? _a : [];
11
- promises.push(promise);
12
- return tests.set(key, promises);
13
- }, new Map());
14
- return Promise.all(Array.from(tests.values(), async (promises) => {
15
- var _a, _b;
5
+ function makeClose({ storage, target, spec, logger: defaultLogger }) {
6
+ return async function close({ settings, logger = defaultLogger, } = {}) {
7
+ logger.log('Command "close" is called with settings', settings);
8
+ settings !== null && settings !== void 0 ? settings : (settings = {});
9
+ if (!settings.testMetadata) {
16
10
  try {
17
- const [{ eyes, renderer }] = await Promise.all(promises);
18
11
  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 });
21
- return { ...result, renderer };
12
+ settings.testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
13
+ }
14
+ catch (error) {
15
+ logger.warn('Command "close" received an error during extracting driver metadata', error);
16
+ }
17
+ }
18
+ storage.forEach(async (promises) => {
19
+ var _a, _b;
20
+ try {
21
+ const [{ eyes }] = await Promise.all(promises);
22
+ try {
23
+ await eyes.close({ settings, logger });
24
+ }
25
+ catch (error) {
26
+ logger.warn('Command "close" received an error during performing, trying to perform abort instead', error);
27
+ await eyes.abort({ settings, logger });
28
+ }
22
29
  }
23
30
  catch (error) {
24
- await ((_b = (_a = error.info) === null || _a === void 0 ? void 0 : _a.eyes) === null || _b === void 0 ? void 0 : _b.abort({ logger }));
25
- throw error;
31
+ logger.warn('Command "close" received an error during waiting for eyes instances in background', error);
32
+ await ((_b = (_a = error.info) === null || _a === void 0 ? void 0 : _a.eyes) === null || _b === void 0 ? void 0 : _b.abort({ settings, logger }));
26
33
  }
27
- }));
34
+ });
28
35
  };
29
36
  }
30
37
  exports.makeClose = makeClose;
package/dist/ufg/core.js CHANGED
@@ -32,6 +32,8 @@ const core_base_1 = require("@applitools/core-base");
32
32
  const get_viewport_size_1 = require("../automation/get-viewport-size");
33
33
  const set_viewport_size_1 = require("../automation/set-viewport-size");
34
34
  const locate_1 = require("../automation/locate");
35
+ const locate_text_1 = require("../automation/locate-text");
36
+ const extract_text_1 = require("../automation/extract-text");
35
37
  const open_eyes_1 = require("./open-eyes");
36
38
  const utils = __importStar(require("@applitools/utils"));
37
39
  const throat_1 = __importDefault(require("throat"));
@@ -74,6 +76,8 @@ function makeCore({ concurrency, spec, client, core, agentId = 'core-ufg', cwd =
74
76
  getViewportSize: spec && (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
75
77
  setViewportSize: spec && (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
76
78
  locate: (0, locate_1.makeLocate)({ spec, core, logger }),
79
+ locateText: (0, locate_text_1.makeLocateText)({ spec, core, logger }),
80
+ extractText: (0, extract_text_1.makeExtractText)({ spec, core, logger }),
77
81
  openEyes: (0, open_eyes_1.makeOpenEyes)({ spec, client, core, logger }),
78
82
  });
79
83
  }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeGetResults = void 0;
4
+ const abort_error_1 = require("../errors/abort-error");
5
+ function makeGetResults({ storage, logger: defaultLogger }) {
6
+ return async function getResults({ settings, logger = defaultLogger, } = {}) {
7
+ logger.log('Command "getResults" is called with settings', settings);
8
+ return Promise.all(Array.from(storage.values(), async (promises) => {
9
+ var _a;
10
+ try {
11
+ const [{ eyes, renderer }] = await Promise.all(promises);
12
+ const [result] = await eyes.getResults({ settings, logger });
13
+ return { ...result, renderer };
14
+ }
15
+ catch (error) {
16
+ if (error instanceof abort_error_1.AbortError && ((_a = error.info) === null || _a === void 0 ? void 0 : _a.eyes)) {
17
+ logger.warn('Command "getResults" received an abort error during performing', settings);
18
+ const [result] = await error.info.eyes.getResults({ settings, logger });
19
+ return { ...result, renderer: error.info.renderer };
20
+ }
21
+ logger.fatal('Command "getResults" received an error during performing', settings);
22
+ throw error;
23
+ }
24
+ }));
25
+ };
26
+ }
27
+ exports.makeGetResults = makeGetResults;
@@ -31,9 +31,10 @@ const check_1 = require("./check");
31
31
  const check_and_close_1 = require("./check-and-close");
32
32
  const close_1 = require("./close");
33
33
  const abort_1 = require("./abort");
34
+ const get_results_1 = require("./get-results");
34
35
  const abort_controller_1 = require("abort-controller");
35
36
  const utils = __importStar(require("@applitools/utils"));
36
- function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
37
+ function makeOpenEyes({ core, client, spec, logger: defaultLogger }) {
37
38
  return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
38
39
  var _a, _b;
39
40
  logger.log(`Command "openEyes" is called with ${target ? 'default driver and' : ''}`, ...(settings ? ['settings', settings] : []), eyes ? 'predefined eyes' : '');
@@ -59,9 +60,8 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
59
60
  const getBaseEyes = (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, core, client, logger });
60
61
  return utils.general.extend({}, eyes => {
61
62
  var _a;
62
- const storage = [];
63
- let closed = false;
64
- let aborted = false;
63
+ const storage = new Map();
64
+ let running = true;
65
65
  return {
66
66
  type: 'ufg',
67
67
  test: {
@@ -72,22 +72,17 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
72
72
  account,
73
73
  },
74
74
  get running() {
75
- return !closed && !aborted;
76
- },
77
- get closed() {
78
- return closed;
79
- },
80
- get aborted() {
81
- return aborted;
75
+ return running;
82
76
  },
83
77
  getBaseEyes,
84
78
  // check with indexing and storage
85
79
  check: utils.general.wrap((0, check_1.makeCheck)({ eyes, client: client, target: driver, spec, signal: controller.signal, logger }), async (check, options = {}) => {
86
80
  const results = await check(options);
87
- storage.push(...results.map(result => ({
88
- promise: result.promise,
89
- renderer: result.renderer,
90
- })));
81
+ results.forEach(result => {
82
+ var _a;
83
+ const key = JSON.stringify(result.renderer);
84
+ storage.set(key, [...((_a = storage.get(key)) !== null && _a !== void 0 ? _a : []), result.promise]);
85
+ });
91
86
  return results;
92
87
  }),
93
88
  checkAndClose: (0, check_and_close_1.makeCheckAndClose)({
@@ -98,22 +93,15 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
98
93
  signal: controller.signal,
99
94
  logger,
100
95
  }),
101
- locateText: null,
102
- extractText: null,
103
- // close only once
104
96
  close: utils.general.wrap((0, close_1.makeClose)({ storage, target: driver, logger }), async (close, options) => {
105
- if (closed || aborted)
106
- return [];
107
- closed = true;
97
+ running = false;
108
98
  return close(options);
109
99
  }),
110
- // abort only once
111
100
  abort: utils.general.wrap((0, abort_1.makeAbort)({ storage, target: driver, spec, controller, logger }), async (abort, options) => {
112
- if (aborted || closed)
113
- return [];
114
- aborted = true;
101
+ running = false;
115
102
  return abort(options);
116
103
  }),
104
+ getResults: (0, get_results_1.makeGetResults)({ storage, logger }),
117
105
  };
118
106
  });
119
107
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/core",
3
- "version": "1.4.7",
3
+ "version": "2.0.1",
4
4
  "homepage": "https://applitools.com",
5
5
  "bugs": {
6
6
  "url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -56,14 +56,14 @@
56
56
  "postversion": "bongo postversion --skip-release-notification"
57
57
  },
58
58
  "dependencies": {
59
- "@applitools/core-base": "1.1.33",
59
+ "@applitools/core-base": "1.1.34",
60
60
  "@applitools/dom-capture": "11.2.1",
61
61
  "@applitools/dom-snapshot": "4.7.3",
62
- "@applitools/driver": "1.11.28",
62
+ "@applitools/driver": "1.11.29",
63
63
  "@applitools/logger": "1.1.45",
64
- "@applitools/nml-client": "1.3.31",
64
+ "@applitools/nml-client": "1.3.32",
65
65
  "@applitools/req": "1.1.30",
66
- "@applitools/screenshoter": "3.7.24",
66
+ "@applitools/screenshoter": "3.7.25",
67
67
  "@applitools/snippets": "2.4.15",
68
68
  "@applitools/ufg-client": "1.1.24",
69
69
  "@applitools/utils": "1.3.30",
@@ -77,9 +77,9 @@
77
77
  },
78
78
  "devDependencies": {
79
79
  "@applitools/bongo": "^2.2.2",
80
- "@applitools/spec-driver-puppeteer": "^1.1.39",
81
- "@applitools/spec-driver-selenium": "^1.5.26",
82
- "@applitools/spec-driver-webdriverio": "^1.4.23",
80
+ "@applitools/spec-driver-puppeteer": "^1.1.40",
81
+ "@applitools/spec-driver-selenium": "^1.5.27",
82
+ "@applitools/spec-driver-webdriverio": "^1.4.24",
83
83
  "@applitools/test-server": "^1.1.24",
84
84
  "@applitools/test-utils": "^1.5.12",
85
85
  "@types/mocha": "^9.1.1",
@@ -0,0 +1,16 @@
1
+ import type { MaybeArray } from '@applitools/utils';
2
+ import type { DriverTarget, ImageTarget, ExtractTextSettings } from '../classic/types';
3
+ import type { Core as BaseCore } from '@applitools/core-base';
4
+ import { type Logger } from '@applitools/logger';
5
+ import { type SpecType, type SpecDriver } from '@applitools/driver';
6
+ type Options<TSpec extends SpecType> = {
7
+ core: BaseCore;
8
+ spec?: SpecDriver<TSpec>;
9
+ logger: Logger;
10
+ };
11
+ export declare function makeExtractText<TSpec extends SpecType>({ core, spec, logger: defaultLogger }: Options<TSpec>): ({ target, settings, logger, }: {
12
+ target: DriverTarget<TSpec> | ImageTarget;
13
+ settings: MaybeArray<ExtractTextSettings<TSpec>>;
14
+ logger?: Logger | undefined;
15
+ }) => Promise<string[]>;
16
+ export {};
@@ -1,12 +1,12 @@
1
1
  import type { DriverTarget } from './types';
2
2
  import { type Logger } from '@applitools/logger';
3
- import { type SpecDriver } from '@applitools/driver';
4
- type Options<TDriver, TContext, TElement, TSelector> = {
5
- spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
3
+ import { type SpecType, type SpecDriver } from '@applitools/driver';
4
+ type Options<TSpec extends SpecType> = {
5
+ spec: SpecDriver<TSpec>;
6
6
  logger: Logger;
7
7
  };
8
- export declare function makeGetViewportSize<TDriver, TContext, TElement, TSelector>({ spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ target, logger, }: {
9
- target: DriverTarget<TDriver, TContext, TElement, TSelector>;
8
+ export declare function makeGetViewportSize<TSpec extends SpecType>({ spec, logger: defaultLogger }: Options<TSpec>): ({ target, logger, }: {
9
+ target: DriverTarget<TSpec>;
10
10
  logger?: Logger | undefined;
11
11
  }) => Promise<import("@applitools/utils").Size>;
12
12
  export {};
@@ -0,0 +1,15 @@
1
+ import type { DriverTarget, ImageTarget, LocateTextSettings, LocateTextResult } from './types';
2
+ import type { Core as BaseCore } from '@applitools/core-base';
3
+ import { type Logger } from '@applitools/logger';
4
+ import { type SpecType, type SpecDriver } from '@applitools/driver';
5
+ type Options<TSpec extends SpecType> = {
6
+ core: BaseCore;
7
+ spec?: SpecDriver<TSpec>;
8
+ logger: Logger;
9
+ };
10
+ export declare function makeLocateText<TSpec extends SpecType>({ core, spec, logger: defaultLogger }: Options<TSpec>): <TPattern extends string>({ target, settings, logger, }: {
11
+ target: DriverTarget<TSpec> | ImageTarget;
12
+ settings: LocateTextSettings<TPattern, TSpec>;
13
+ logger?: Logger | undefined;
14
+ }) => Promise<LocateTextResult<TPattern>>;
15
+ export {};
@@ -1,15 +1,15 @@
1
1
  import type { DriverTarget, ImageTarget, LocateSettings, LocateResult } from './types';
2
2
  import type { Core as BaseCore } from '@applitools/core-base';
3
3
  import { type Logger } from '@applitools/logger';
4
- import { type SpecDriver } from '@applitools/driver';
5
- type Options<TDriver, TContext, TElement, TSelector> = {
4
+ import { type SpecType, type SpecDriver } from '@applitools/driver';
5
+ type Options<TSpec extends SpecType> = {
6
6
  core: BaseCore;
7
- spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
7
+ spec?: SpecDriver<TSpec>;
8
8
  logger: Logger;
9
9
  };
10
- export declare function makeLocate<TDriver, TContext, TElement, TSelector>({ spec, core, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): <TLocator extends string>({ settings, target, logger, }: {
11
- target: DriverTarget<TDriver, TContext, TElement, TSelector> | ImageTarget;
12
- settings: LocateSettings<TLocator, TElement, TSelector>;
10
+ export declare function makeLocate<TSpec extends SpecType>({ spec, core, logger: defaultLogger }: Options<TSpec>): <TLocator extends string>({ settings, target, logger, }: {
11
+ target: DriverTarget<TSpec> | ImageTarget;
12
+ settings: LocateSettings<TLocator, TSpec>;
13
13
  logger?: Logger | undefined;
14
14
  }) => Promise<LocateResult<TLocator>>;
15
15
  export {};
@@ -1,13 +1,13 @@
1
1
  import type { Size } from '@applitools/utils';
2
2
  import type { DriverTarget } from './types';
3
3
  import { type Logger } from '@applitools/logger';
4
- import { type SpecDriver } from '@applitools/driver';
5
- type Options<TDriver, TContext, TElement, TSelector> = {
6
- spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
4
+ import { type SpecType, type SpecDriver } from '@applitools/driver';
5
+ type Options<TSpec extends SpecType> = {
6
+ spec: SpecDriver<TSpec>;
7
7
  logger: Logger;
8
8
  };
9
- export declare function makeSetViewportSize<TDriver, TContext, TElement, TSelector>({ spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ target, size, logger, }: {
10
- target: DriverTarget<TDriver, TContext, TElement, TSelector>;
9
+ export declare function makeSetViewportSize<TSpec extends SpecType>({ spec, logger: defaultLogger }: Options<TSpec>): ({ target, size, logger, }: {
10
+ target: DriverTarget<TSpec>;
11
11
  size: Size;
12
12
  logger?: Logger | undefined;
13
13
  }) => Promise<void>;
@@ -1,72 +1,68 @@
1
1
  import type { MaybeArray, Size, Region } from '@applitools/utils';
2
2
  import type * as BaseCore from '@applitools/core-base/types';
3
- import { type Driver, type Selector } from '@applitools/driver';
3
+ import { type SpecType, type Driver, type ElementReference, type ContextReference } from '@applitools/driver';
4
4
  import { type Logger } from '@applitools/logger';
5
5
  export * from '@applitools/core-base/types';
6
- export type DriverTarget<TDriver, TContext, TElement, TSelector> = TDriver | Driver<TDriver, TContext, TElement, TSelector>;
7
- export interface Core<TDriver, TContext, TElement, TSelector, TEyes = Eyes<TDriver, TContext, TElement, TSelector>> extends BaseCore.Core<TEyes> {
8
- isDriver?(driver: any): driver is TDriver;
9
- isElement?(element: any): element is TElement;
10
- isSelector?(selector: any): selector is TSelector;
6
+ export type DriverTarget<TSpec extends SpecType> = TSpec['driver'] | Driver<TSpec>;
7
+ export type Target<TSpec extends SpecType> = DriverTarget<TSpec> | BaseCore.Target;
8
+ export interface Core<TSpec extends SpecType, TTarget = Target<TSpec>, TEyes extends Eyes<TSpec, TTarget> = Eyes<TSpec, TTarget>> extends BaseCore.Core<TTarget, TEyes> {
9
+ isDriver?(driver: any): driver is TSpec['driver'];
10
+ isElement?(element: any): element is TSpec['element'];
11
+ isSelector?(selector: any): selector is TSpec['selector'];
11
12
  getViewportSize?(options: {
12
- target: DriverTarget<TDriver, TContext, TElement, TSelector>;
13
+ target: DriverTarget<TSpec>;
13
14
  logger?: Logger;
14
15
  }): Promise<Size>;
15
16
  setViewportSize?(options: {
16
- target: DriverTarget<TDriver, TContext, TElement, TSelector>;
17
+ target: DriverTarget<TSpec>;
17
18
  size: Size;
18
19
  logger?: Logger;
19
20
  }): Promise<void>;
20
21
  openEyes(options: {
21
- target?: DriverTarget<TDriver, TContext, TElement, TSelector>;
22
+ target?: DriverTarget<TSpec>;
22
23
  settings: BaseCore.OpenSettings;
23
24
  eyes?: BaseCore.Eyes[];
24
25
  logger?: Logger;
25
26
  }): Promise<TEyes>;
26
27
  locate<TLocator extends string>(options: {
27
- target: DriverTarget<TDriver, TContext, TElement, TSelector> | BaseCore.ImageTarget;
28
- settings: LocateSettings<TLocator, TElement, TSelector>;
28
+ target: TTarget;
29
+ settings: LocateSettings<TLocator, TSpec>;
29
30
  logger?: Logger;
30
31
  }): Promise<BaseCore.LocateResult<TLocator>>;
32
+ locateText<TPattern extends string>(options: {
33
+ target: TTarget;
34
+ settings: LocateTextSettings<TPattern, TSpec>;
35
+ logger?: Logger;
36
+ }): Promise<BaseCore.LocateTextResult<TPattern>>;
37
+ extractText(options: {
38
+ target: TTarget;
39
+ settings: MaybeArray<ExtractTextSettings<TSpec>>;
40
+ logger?: Logger;
41
+ }): Promise<string[]>;
31
42
  }
32
- export interface Eyes<TDriver, TContext, TElement, TSelector, TTarget = DriverTarget<TDriver, TContext, TElement, TSelector>> extends BaseCore.Eyes<TTarget> {
43
+ export interface Eyes<TSpec extends SpecType, TTarget = Target<TSpec>> extends BaseCore.Eyes<TTarget> {
33
44
  getBaseEyes(options?: {
34
45
  logger?: Logger;
35
46
  }): Promise<BaseCore.Eyes[]>;
36
47
  check(options?: {
37
48
  target?: TTarget;
38
- settings?: CheckSettings<TElement, TSelector>;
49
+ settings?: CheckSettings<TSpec>;
39
50
  logger?: Logger;
40
51
  }): Promise<BaseCore.CheckResult[]>;
41
52
  checkAndClose(options?: {
42
53
  target?: TTarget;
43
- settings?: CheckSettings<TElement, TSelector> & BaseCore.CloseSettings;
54
+ settings?: CheckSettings<TSpec> & BaseCore.CloseSettings;
44
55
  logger?: Logger;
45
56
  }): Promise<BaseCore.TestResult[]>;
46
- locateText<TPattern extends string>(options: {
47
- target?: TTarget;
48
- settings: LocateTextSettings<TPattern, TElement, TSelector>;
49
- logger?: Logger;
50
- }): Promise<BaseCore.LocateTextResult<TPattern>>;
51
- extractText(options: {
52
- target?: TTarget;
53
- settings: MaybeArray<ExtractTextSettings<TElement, TSelector>>;
54
- logger?: Logger;
55
- }): Promise<string[]>;
56
57
  }
57
- type RegionReference<TElement, TSelector> = Region | ElementReference<TElement, TSelector>;
58
- type ElementReference<TElement, TSelector> = TElement | Selector<TSelector>;
59
- type FrameReference<TElement, TSelector> = ElementReference<TElement, TSelector> | string | number;
60
- type ContextReference<TElement, TSelector> = {
61
- frame: FrameReference<TElement, TSelector>;
62
- scrollRootElement?: ElementReference<TElement, TSelector>;
63
- };
64
- type StitchMode = 'Scroll' | 'CSS';
65
- export interface ScreenshotSettings<TElement, TSelector> extends BaseCore.ImageSettings<RegionReference<TElement, TSelector>> {
66
- frames?: (ContextReference<TElement, TSelector> | FrameReference<TElement, TSelector>)[];
58
+ export interface ScreenshotSettings<TSpec extends SpecType> extends BaseCore.ImageSettings<Region | ElementReference<TSpec>> {
59
+ frames?: (ContextReference<TSpec> | {
60
+ frame: ContextReference<TSpec>;
61
+ scrollRootElement?: ElementReference<TSpec>;
62
+ })[];
67
63
  fully?: boolean;
68
- scrollRootElement?: ElementReference<TElement, TSelector>;
69
- stitchMode?: StitchMode;
64
+ scrollRootElement?: ElementReference<TSpec>;
65
+ stitchMode?: 'Scroll' | 'CSS';
70
66
  hideScrollbars?: boolean;
71
67
  hideCaret?: boolean;
72
68
  overlap?: {
@@ -82,7 +78,7 @@ export interface ScreenshotSettings<TElement, TSelector> extends BaseCore.ImageS
82
78
  };
83
79
  webview?: boolean | string;
84
80
  }
85
- export type LocateSettings<TLocator extends string, TElement, TSelector> = BaseCore.LocateSettings<TLocator, RegionReference<TElement, TSelector>> & ScreenshotSettings<TElement, TSelector>;
86
- export type CheckSettings<TElement, TSelector> = BaseCore.CheckSettings<RegionReference<TElement, TSelector>> & ScreenshotSettings<TElement, TSelector>;
87
- export type LocateTextSettings<TPattern extends string, TElement, TSelector> = BaseCore.LocateTextSettings<TPattern, RegionReference<TElement, TSelector>> & ScreenshotSettings<TElement, TSelector>;
88
- export type ExtractTextSettings<TElement, TSelector> = BaseCore.ExtractTextSettings<RegionReference<TElement, TSelector>> & ScreenshotSettings<TElement, TSelector>;
81
+ export type LocateSettings<TLocator extends string, TSpec extends SpecType> = BaseCore.LocateSettings<TLocator, Region | ElementReference<TSpec>> & ScreenshotSettings<TSpec>;
82
+ export type LocateTextSettings<TPattern extends string, TSpec extends SpecType> = BaseCore.LocateTextSettings<TPattern, Region | ElementReference<TSpec>> & ScreenshotSettings<TSpec>;
83
+ export type ExtractTextSettings<TSpec extends SpecType> = BaseCore.ExtractTextSettings<Region | ElementReference<TSpec>> & ScreenshotSettings<TSpec>;
84
+ export type CheckSettings<TSpec extends SpecType> = BaseCore.CheckSettings<Region | ElementReference<TSpec>> & ScreenshotSettings<TSpec>;
@@ -1,19 +1,19 @@
1
1
  import type { Region } from '@applitools/utils';
2
2
  import type { ScreenshotSettings } from '../../classic/types';
3
3
  import { type Logger } from '@applitools/logger';
4
- import { type Driver, type Element, type ElementReference } from '@applitools/driver';
5
- export type Screenshot<TElement, TSelector> = {
4
+ import { type Driver, type Element, type ElementReference, type SpecType } from '@applitools/driver';
5
+ export type Screenshot<TSpec extends SpecType> = {
6
6
  image: any;
7
7
  region: Region;
8
- element: Element<unknown, unknown, TElement, TSelector>;
9
- scrollingElement: Element<unknown, unknown, TElement, TSelector>;
8
+ element: Element<TSpec>;
9
+ scrollingElement: Element<TSpec>;
10
10
  restoreState(): Promise<void>;
11
11
  calculatedRegions: [];
12
12
  };
13
- export declare function takeScreenshot<TDriver, TContext, TElement, TSelector>({ driver, settings, logger, }: {
14
- driver: Driver<TDriver, TContext, TElement, TSelector>;
15
- settings: ScreenshotSettings<TElement, TSelector> & {
16
- regionsToCalculate?: ElementReference<TElement, TSelector>[];
13
+ export declare function takeScreenshot<TSpec extends SpecType>({ driver, settings, logger, }: {
14
+ driver: Driver<TSpec>;
15
+ settings: ScreenshotSettings<TSpec> & {
16
+ regionsToCalculate?: ElementReference<TSpec>[];
17
17
  };
18
18
  logger: Logger;
19
- }): Promise<Screenshot<TElement, TSelector>>;
19
+ }): Promise<Screenshot<TSpec>>;
@@ -1,19 +1,12 @@
1
1
  import type { Region } from '@applitools/utils';
2
- import type { CheckSettings as BaseCheckSettings } from '@applitools/core-base';
3
2
  import type { CheckSettings } from '../types';
4
- import { type Selector } from '@applitools/driver';
5
- export declare function toBaseCheckSettings<TElement, TSelector>({ settings }: {
6
- settings: CheckSettings<TElement, TSelector>;
3
+ import type { CheckSettings as BaseCheckSettings } from '@applitools/core-base';
4
+ import { type SpecType, type ElementReference, type Selector } from '@applitools/driver';
5
+ export declare function toBaseCheckSettings<TSpec extends SpecType>({ settings }: {
6
+ settings: CheckSettings<TSpec>;
7
7
  }): {
8
- elementReferencesToCalculate: (TElement | Selector<TSelector>)[];
9
- elementReferenceToTarget: string | TElement | TSelector | {
10
- selector: string | TSelector;
11
- type?: string | undefined;
12
- child?: Selector<TSelector> | undefined;
13
- shadow?: Selector<TSelector> | undefined;
14
- frame?: Selector<TSelector> | undefined;
15
- fallback?: Selector<TSelector> | undefined;
16
- } | undefined;
8
+ elementReferencesToCalculate: ElementReference<TSpec>[];
9
+ elementReferenceToTarget: ElementReference<TSpec> | undefined;
17
10
  getBaseCheckSettings: ({ calculatedRegions, preserveTransformation, }: {
18
11
  calculatedRegions: {
19
12
  selector?: Selector;
@@ -1,5 +1,5 @@
1
1
  import { type Logger } from '@applitools/logger';
2
- import { type Context } from '@applitools/driver';
2
+ import { type SpecType, type Context } from '@applitools/driver';
3
3
  export type LazyLoadSettings = {
4
4
  scrollLength?: number;
5
5
  waitingTime?: number;
@@ -7,8 +7,8 @@ export type LazyLoadSettings = {
7
7
  executionTimeout?: number;
8
8
  pollTimeout?: number;
9
9
  };
10
- export declare function waitForLazyLoad<TContext extends Context<unknown, unknown, unknown, unknown>>({ context, settings, logger, }: {
11
- context: TContext;
10
+ export declare function waitForLazyLoad<TSpec extends SpecType>({ context, settings, logger, }: {
11
+ context: Context<TSpec>;
12
12
  settings: LazyLoadSettings;
13
13
  logger: Logger;
14
14
  }): Promise<void>;