@applitools/core 1.2.16 → 1.3.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 (63) hide show
  1. package/dist/automation/get-viewport-size.js +2 -2
  2. package/dist/automation/locate.js +7 -10
  3. package/dist/automation/set-viewport-size.js +2 -2
  4. package/dist/check-and-close.js +11 -5
  5. package/dist/check.js +26 -16
  6. package/dist/classic/check-and-close.js +13 -12
  7. package/dist/classic/check.js +21 -11
  8. package/dist/classic/extract-text.js +6 -6
  9. package/dist/classic/get-base-eyes.js +39 -0
  10. package/dist/classic/locate-text.js +10 -6
  11. package/dist/classic/open-eyes.js +16 -15
  12. package/dist/close.js +2 -1
  13. package/dist/extract-text.js +2 -1
  14. package/dist/get-typed-eyes.js +27 -0
  15. package/dist/locate-text.js +2 -1
  16. package/dist/make-manager.js +8 -5
  17. package/dist/open-eyes.js +24 -11
  18. package/dist/types.js +1 -0
  19. package/dist/ufg/check.js +50 -40
  20. package/dist/ufg/get-base-eyes.js +40 -0
  21. package/dist/ufg/open-eyes.js +57 -107
  22. package/dist/utils/wait-for-lazy-load.js +10 -8
  23. package/package.json +19 -17
  24. package/types/automation/get-viewport-size.d.ts +4 -3
  25. package/types/automation/locate.d.ts +7 -8
  26. package/types/automation/set-viewport-size.d.ts +4 -3
  27. package/types/automation/types.d.ts +24 -20
  28. package/types/automation/utils/take-screenshot.d.ts +1 -1
  29. package/types/check-and-close.d.ts +14 -9
  30. package/types/check.d.ts +10 -7
  31. package/types/classic/check-and-close.d.ts +7 -8
  32. package/types/classic/check.d.ts +7 -8
  33. package/types/classic/core.d.ts +3 -3
  34. package/types/classic/extract-text.d.ts +8 -9
  35. package/types/classic/get-base-eyes.d.ts +17 -0
  36. package/types/classic/locate-text.d.ts +8 -9
  37. package/types/classic/open-eyes.d.ts +8 -7
  38. package/types/classic/types.d.ts +11 -8
  39. package/types/classic/utils/take-dom-capture.d.ts +1 -1
  40. package/types/close-batch.d.ts +1 -1
  41. package/types/close-manager.d.ts +3 -3
  42. package/types/close.d.ts +4 -6
  43. package/types/core.d.ts +2 -2
  44. package/types/delete-test.d.ts +1 -1
  45. package/types/extract-text.d.ts +7 -9
  46. package/types/get-typed-eyes.d.ts +21 -0
  47. package/types/locate-text.d.ts +7 -9
  48. package/types/locate.d.ts +3 -4
  49. package/types/make-manager.d.ts +3 -2
  50. package/types/open-eyes.d.ts +12 -10
  51. package/types/types.d.ts +60 -41
  52. package/types/ufg/abort.d.ts +1 -1
  53. package/types/ufg/check-and-close.d.ts +6 -8
  54. package/types/ufg/check.d.ts +7 -15
  55. package/types/ufg/close.d.ts +1 -1
  56. package/types/ufg/core.d.ts +2 -2
  57. package/types/ufg/get-base-eyes.d.ts +23 -0
  58. package/types/ufg/open-eyes.d.ts +7 -7
  59. package/types/ufg/types.d.ts +24 -9
  60. package/types/ufg/utils/take-dom-snapshot.d.ts +1 -1
  61. package/types/ufg/utils/take-dom-snapshots.d.ts +1 -1
  62. package/types/ufg/utils/take-vhses.d.ts +1 -1
  63. package/types/utils/wait-for-lazy-load.d.ts +4 -4
package/dist/ufg/check.js CHANGED
@@ -35,9 +35,9 @@ const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
35
35
  const abort_error_1 = require("../errors/abort-error");
36
36
  const utils = __importStar(require("@applitools/utils"));
37
37
  const chalk_1 = __importDefault(require("chalk"));
38
- function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget, logger: defaultLogger, }) {
38
+ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger: defaultLogger, }) {
39
39
  return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
40
- var _a, _b;
40
+ var _a, _b, _c;
41
41
  logger.log('Command "check" is called with settings', settings);
42
42
  if (signal.aborted) {
43
43
  logger.warn('Command "check" was called after test was already aborted');
@@ -45,9 +45,9 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
45
45
  }
46
46
  const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
47
47
  let snapshots, snapshotUrl, snapshotTitle, userAgent, regionToTarget, selectorsToCalculate;
48
- if (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) {
49
- // TODO driver custom config
48
+ if ((0, driver_1.isDriver)(target, spec)) {
50
49
  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
51
  if (driver.isWeb && (!settings.renderers || settings.renderers.length === 0)) {
52
52
  const viewportSize = await driver.getViewportSize();
53
53
  settings.renderers = [{ name: 'chrome', ...viewportSize }];
@@ -61,7 +61,7 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
61
61
  });
62
62
  cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
63
63
  if (elementReferenceToTarget) {
64
- regionToTarget = (_a = generated.selectors[0]) === null || _a === void 0 ? void 0 : _a.safeSelector;
64
+ regionToTarget = (_b = generated.selectors[0]) === null || _b === void 0 ? void 0 : _b.safeSelector;
65
65
  if (!regionToTarget)
66
66
  throw new Error('Target element not found');
67
67
  selectorsToCalculate = generated.selectors.slice(1);
@@ -74,7 +74,7 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
74
74
  snapshots = await (0, take_snapshots_1.takeSnapshots)({
75
75
  driver,
76
76
  settings: {
77
- ...test.server,
77
+ ...eyes.test.server,
78
78
  waitBeforeCapture: settings.waitBeforeCapture,
79
79
  disableBrowserFetching: settings.disableBrowserFetching,
80
80
  layoutBreakpoints: settings.layoutBreakpoints,
@@ -83,8 +83,12 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
83
83
  },
84
84
  hooks: {
85
85
  async beforeSnapshots() {
86
- if (driver.isWeb && settings.lazyLoad) {
87
- await (0, wait_for_lazy_load_1.waitForLazyLoad)({ driver, settings: settings.lazyLoad !== true ? settings.lazyLoad : {}, logger });
86
+ if (settings.lazyLoad && driver.isWeb) {
87
+ await (0, wait_for_lazy_load_1.waitForLazyLoad)({
88
+ context: driver.currentContext,
89
+ settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
90
+ logger,
91
+ });
88
92
  }
89
93
  },
90
94
  },
@@ -103,7 +107,7 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
103
107
  snapshots = !utils.types.isArray(target) ? Array(settings.renderers.length).fill(target) : target;
104
108
  snapshotUrl = utils.types.has(snapshots[0], 'url') ? snapshots[0].url : undefined;
105
109
  }
106
- regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_b = elementReferenceToTarget) !== null && _b !== void 0 ? _b : settings.region);
110
+ regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_c = elementReferenceToTarget) !== null && _c !== void 0 ? _c : settings.region);
107
111
  selectorsToCalculate !== null && selectorsToCalculate !== void 0 ? selectorsToCalculate : (selectorsToCalculate = elementReferencesToCalculate.map(selector => ({
108
112
  originalSelector: selector,
109
113
  safeSelector: selector,
@@ -119,42 +123,48 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
119
123
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
120
124
  }
121
125
  const { cookies, ...snapshot } = snapshots[index];
126
+ const snapshotType = utils.types.has(snapshot, 'cdt') ? 'web' : 'native';
122
127
  const renderTargetPromise = client.createRenderTarget({
123
128
  snapshot,
124
- settings: { renderer, referer: snapshotUrl, cookies, proxy: test.server.proxy, autProxy: settings.autProxy, userAgent },
129
+ settings: {
130
+ renderer,
131
+ referer: snapshotUrl,
132
+ cookies,
133
+ proxy: eyes.test.server.proxy,
134
+ autProxy: settings.autProxy,
135
+ userAgent,
136
+ },
125
137
  });
126
- const renderSettings = {
127
- ...settings,
128
- region: regionToTarget,
129
- type: utils.types.has(snapshot, 'cdt') ? 'web' : 'native',
130
- renderer,
131
- selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
132
- includeFullPageSize: Boolean(settings.pageId),
133
- };
134
- const { rendererId, rawEnvironment } = await client.bookRenderer({ settings: renderSettings });
135
- const eyes = await getEyes({ rawEnvironment });
138
+ const [baseEyes] = await eyes.getBaseEyes({ settings: { renderer, type: snapshotType }, logger });
136
139
  try {
137
140
  if (signal.aborted) {
138
141
  logger.warn('Command "check" was aborted before rendering');
139
142
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
140
143
  }
141
- else if (eyes.aborted) {
142
- logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
143
- throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
144
+ else if (baseEyes.aborted) {
145
+ logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
146
+ throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
144
147
  }
145
- renderSettings.rendererId = rendererId;
146
148
  const renderTarget = await renderTargetPromise;
147
149
  if (signal.aborted) {
148
150
  logger.warn('Command "check" was aborted before rendering');
149
151
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
150
152
  }
151
- else if (eyes.aborted) {
152
- logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
153
- throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
153
+ else if (baseEyes.aborted) {
154
+ logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
155
+ throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
154
156
  }
155
157
  const { renderId, selectorRegions, ...baseTarget } = await client.render({
156
158
  target: renderTarget,
157
- settings: renderSettings,
159
+ settings: {
160
+ ...settings,
161
+ region: regionToTarget,
162
+ selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
163
+ includeFullPageSize: Boolean(settings.pageId),
164
+ type: snapshotType,
165
+ renderer,
166
+ rendererId: baseEyes.test.rendererId,
167
+ },
158
168
  signal,
159
169
  });
160
170
  let offset = 0;
@@ -171,31 +181,31 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
171
181
  logger.warn('Command "check" was aborted after rendering');
172
182
  throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
173
183
  }
174
- else if (eyes.aborted) {
175
- logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
176
- throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
184
+ else if (baseEyes.aborted) {
185
+ logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
186
+ throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
177
187
  }
178
- const [result] = await eyes.check({ target: { ...baseTarget, isTransformed: true }, settings: baseSettings, logger });
179
- if (eyes.aborted) {
180
- logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
181
- throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
188
+ const [result] = await baseEyes.check({ target: { ...baseTarget, isTransformed: true }, settings: baseSettings, logger });
189
+ if (baseEyes.aborted) {
190
+ logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
191
+ throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
182
192
  }
183
- return { ...result, eyes, renderer };
193
+ return { ...result, eyes: baseEyes, renderer };
184
194
  }
185
195
  catch (error) {
186
- await eyes.abort();
187
- error.info = { eyes };
196
+ await baseEyes.abort();
197
+ error.info = { eyes: baseEyes };
188
198
  throw error;
189
199
  }
190
200
  }
191
201
  catch (error) {
192
- error.info = { ...error.info, userTestId: test.userTestId, renderer };
202
+ error.info = { ...error.info, userTestId: eyes.test.userTestId, renderer };
193
203
  throw error;
194
204
  }
195
205
  });
196
206
  return settings.renderers.map((renderer, index) => ({
197
207
  asExpected: true,
198
- userTestId: test.userTestId,
208
+ userTestId: eyes.test.userTestId,
199
209
  renderer,
200
210
  promise: promises[index],
201
211
  }));
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.makeGetBaseEyes = void 0;
27
+ const utils = __importStar(require("@applitools/utils"));
28
+ function makeGetBaseEyes({ settings: defaultSettings, core, client, eyes, logger: defaultLogger }) {
29
+ const getBaseEyesWithCache = utils.general.cachify(getBaseEyes, ([options]) => options === null || options === void 0 ? void 0 : options.settings);
30
+ if (eyes)
31
+ eyes.forEach(eyes => getBaseEyesWithCache.setCachedValue(eyes.test.rendererInfo, Promise.resolve([eyes])));
32
+ return getBaseEyesWithCache;
33
+ async function getBaseEyes({ settings, logger = defaultLogger, } = {}) {
34
+ logger.log(`Command "getBaseEyes" is called with settings`, settings);
35
+ const environment = await client.bookRenderer({ settings });
36
+ const eyes = await core.openEyes({ settings: { ...defaultSettings, environment }, logger });
37
+ return [eyes];
38
+ }
39
+ }
40
+ exports.makeGetBaseEyes = makeGetBaseEyes;
@@ -24,133 +24,83 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeOpenEyes = void 0;
27
- const abort_controller_1 = require("abort-controller");
28
27
  const driver_1 = require("@applitools/driver");
29
28
  const ufg_client_1 = require("@applitools/ufg-client");
29
+ const get_base_eyes_1 = require("./get-base-eyes");
30
30
  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 abort_controller_1 = require("abort-controller");
34
35
  const utils = __importStar(require("@applitools/utils"));
35
- function makeOpenEyes({ spec, core, client, logger: defaultLogger, }) {
36
- return async function openEyes({ target, settings, logger = defaultLogger, }) {
37
- var _a, _b, _c;
38
- logger.log(`Command "openEyes" is called with ${(spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) ? 'default driver and' : ''} settings`, settings);
39
- if (spec === null || spec === void 0 ? void 0 : spec.isDriver(target)) {
40
- const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger, customConfig: { disableHelper: true } });
36
+ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
37
+ return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
38
+ var _a, _b;
39
+ logger.log(`Command "openEyes" is called with ${target ? 'default driver and' : ''}`, ...(settings ? ['settings', settings] : []), eyes ? 'predefined eyes' : '');
40
+ const driver = target && (await (0, driver_1.makeDriver)({ spec, driver: target, logger, customConfig: { disableHelper: true } }));
41
+ if (driver && !eyes) {
41
42
  const currentContext = driver.currentContext;
42
43
  if ((_a = settings.environment) === null || _a === void 0 ? void 0 : _a.viewportSize) {
43
44
  await driver.setViewportSize(settings.environment.viewportSize);
44
45
  }
45
46
  await currentContext.focus();
46
47
  }
48
+ const controller = new abort_controller_1.AbortController();
47
49
  const account = await core.getAccountInfo({ settings, logger });
48
- const test = {
49
- userTestId: settings.userTestId,
50
- batchId: (_b = settings.batch) === null || _b === void 0 ? void 0 : _b.id,
51
- keepBatchOpen: settings.keepBatchOpen,
52
- server: { serverUrl: settings.serverUrl, apiKey: settings.apiKey, proxy: settings.proxy },
53
- account,
54
- };
55
50
  client !== null && client !== void 0 ? client : (client = (0, ufg_client_1.makeUFGClient)({
56
51
  config: { ...account.ufg, ...account, proxy: settings.proxy },
57
- concurrency: (_c = settings.renderConcurrency) !== null && _c !== void 0 ? _c : 5,
52
+ concurrency: (_b = settings.renderConcurrency) !== null && _b !== void 0 ? _b : 5,
58
53
  logger,
59
54
  }));
60
- const controller = new abort_controller_1.AbortController();
61
- // get eyes per environment
62
- const getEyes = utils.general.cachify(async ({ rawEnvironment }) => {
63
- const eyes = await core.openEyes({ settings: { ...settings, environment: { rawEnvironment } }, logger });
64
- const aborted = makeHolderPromise();
65
- const queue = [];
66
- eyes.check = utils.general.wrap(eyes.check, async (check, options) => {
67
- var _a, _b;
68
- var _c;
69
- const index = options.settings.index;
70
- (_a = queue[index]) !== null && _a !== void 0 ? _a : (queue[index] = makeHolderPromise());
71
- if (index > 0)
72
- await Promise.race([((_b = queue[_c = index - 1]) !== null && _b !== void 0 ? _b : (queue[_c] = makeHolderPromise())), aborted]);
73
- return check(options).finally(queue[index].resolve);
74
- });
75
- eyes.abort = utils.general.wrap(eyes.abort, async (abort, options) => {
76
- aborted.reject(new Error('Command "check" was aborted due to possible error in previous step'));
77
- return abort(options);
78
- });
79
- return eyes;
80
- });
81
- const storage = [];
82
- let index = 0;
83
- // check with indexing and storage
84
- const check = utils.general.wrap((0, check_1.makeCheck)({ spec, getEyes, client, signal: controller.signal, test, target, logger }), async (check, options = {}) => {
55
+ const getBaseEyes = (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, core, client, logger });
56
+ return utils.general.extend({}, eyes => {
85
57
  var _a;
86
- (_a = options.settings) !== null && _a !== void 0 ? _a : (options.settings = {});
87
- options.settings.index = index++;
88
- const results = await check(options);
89
- storage.push(...results.map(result => ({ promise: result.promise, renderer: result.renderer })));
90
- return results;
58
+ const storage = [];
59
+ let stepIndex = 0;
60
+ let closed = false;
61
+ let aborted = false;
62
+ return {
63
+ type: 'ufg',
64
+ test: {
65
+ userTestId: settings.userTestId,
66
+ batchId: (_a = settings.batch) === null || _a === void 0 ? void 0 : _a.id,
67
+ keepBatchOpen: settings.keepBatchOpen,
68
+ server: { serverUrl: settings.serverUrl, apiKey: settings.apiKey, proxy: settings.proxy },
69
+ account,
70
+ },
71
+ get running() {
72
+ return !closed && !aborted;
73
+ },
74
+ get closed() {
75
+ return closed;
76
+ },
77
+ get aborted() {
78
+ return aborted;
79
+ },
80
+ getBaseEyes,
81
+ // check with indexing and storage
82
+ check: utils.general.wrap((0, check_1.makeCheck)({ eyes, client, target: driver, spec, signal: controller.signal, logger }), async (check, options = {}) => {
83
+ const results = await check({ ...options, settings: { ...options.settings, stepIndex: stepIndex++ } });
84
+ storage.push(...results.map(result => ({ promise: result.promise, renderer: result.renderer })));
85
+ return results;
86
+ }),
87
+ checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, client, target: driver, spec, signal: controller.signal, logger }),
88
+ // close only once
89
+ close: utils.general.wrap((0, close_1.makeClose)({ storage, logger }), async (close, options) => {
90
+ if (closed || aborted)
91
+ return [];
92
+ closed = true;
93
+ return close(options);
94
+ }),
95
+ // abort only once
96
+ abort: utils.general.wrap((0, abort_1.makeAbort)({ storage, controller, logger }), async (abort, options) => {
97
+ if (aborted || closed)
98
+ return [];
99
+ aborted = true;
100
+ return abort(options);
101
+ }),
102
+ };
91
103
  });
92
- let closed = false;
93
- // close only once
94
- const close = utils.general.wrap((0, close_1.makeClose)({ storage, logger }), async (close, options) => {
95
- if (closed || aborted)
96
- return [];
97
- closed = true;
98
- return close(options);
99
- });
100
- let aborted = false;
101
- // abort only once
102
- const abort = utils.general.wrap((0, abort_1.makeAbort)({ storage, controller, logger }), async (abort, options) => {
103
- if (aborted || closed)
104
- return [];
105
- aborted = true;
106
- return abort(options);
107
- });
108
- return {
109
- test,
110
- get running() {
111
- return !closed && !aborted;
112
- },
113
- get closed() {
114
- return closed;
115
- },
116
- get aborted() {
117
- return aborted;
118
- },
119
- check,
120
- checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ spec, getEyes, client, test, target, logger }),
121
- close,
122
- abort,
123
- };
124
104
  };
125
105
  }
126
106
  exports.makeOpenEyes = makeOpenEyes;
127
- function makeHolderPromise() {
128
- let promise;
129
- let resolve;
130
- let reject;
131
- let result;
132
- return {
133
- then(onFulfilled, onRejected) {
134
- if (!promise) {
135
- promise = new Promise((...args) => ([resolve, reject] = args));
136
- if ((result === null || result === void 0 ? void 0 : result.status) === 'fulfilled')
137
- resolve();
138
- else if ((result === null || result === void 0 ? void 0 : result.status) === 'rejected')
139
- reject(result.reason);
140
- }
141
- return promise.then(onFulfilled, onRejected);
142
- },
143
- resolve() {
144
- if (resolve)
145
- resolve();
146
- else
147
- result !== null && result !== void 0 ? result : (result = { status: 'fulfilled' });
148
- },
149
- reject(reason) {
150
- if (reject)
151
- reject(reason);
152
- else
153
- result !== null && result !== void 0 ? result : (result = { status: 'rejected', reason });
154
- },
155
- };
156
- }
@@ -2,16 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.waitForLazyLoad = void 0;
4
4
  const snippets_1 = require("@applitools/snippets");
5
- async function waitForLazyLoad({ driver, settings, logger, }) {
5
+ async function waitForLazyLoad({ context, settings, logger, }) {
6
6
  var _a, _b, _c, _d, _e;
7
7
  logger.log('lazy loading the page before capturing a screenshot');
8
- const arg = {
9
- scrollLength: (_a = settings.scrollLength) !== null && _a !== void 0 ? _a : 300,
10
- waitingTime: (_b = settings.waitingTime) !== null && _b !== void 0 ? _b : 2000,
11
- maxAmountToScroll: (_c = settings.maxAmountToScroll) !== null && _c !== void 0 ? _c : 15000,
12
- };
13
- await driver.currentContext.executePoll(snippets_1.lazyLoad, {
14
- main: [arg],
8
+ await context.executePoll(snippets_1.lazyLoad, {
9
+ main: [
10
+ await context.getScrollingElement(),
11
+ {
12
+ scrollLength: (_a = settings.scrollLength) !== null && _a !== void 0 ? _a : 300,
13
+ waitingTime: (_b = settings.waitingTime) !== null && _b !== void 0 ? _b : 2000,
14
+ maxAmountToScroll: (_c = settings.maxAmountToScroll) !== null && _c !== void 0 ? _c : 15000,
15
+ },
16
+ ],
15
17
  poll: [],
16
18
  executionTimeout: 5 * 60 * 1000,
17
19
  pollTimeout: (_e = (_d = settings.pollTimeout) !== null && _d !== void 0 ? _d : settings.waitingTime) !== null && _e !== void 0 ? _e : 2000,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/core",
3
- "version": "1.2.16",
3
+ "version": "1.3.0",
4
4
  "homepage": "https://applitools.com",
5
5
  "bugs": {
6
6
  "url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -61,28 +61,30 @@
61
61
  }
62
62
  },
63
63
  "dependencies": {
64
- "@applitools/core-base": "1.1.15",
64
+ "@applitools/core-base": "1.1.17",
65
65
  "@applitools/dom-capture": "11.2.0",
66
- "@applitools/dom-snapshot": "4.7.1",
67
- "@applitools/driver": "1.11.9",
68
- "@applitools/logger": "1.1.30",
69
- "@applitools/nml-client": "1.3.12",
70
- "@applitools/req": "1.1.17",
71
- "@applitools/screenshoter": "3.7.10",
72
- "@applitools/snippets": "2.4.8",
73
- "@applitools/ufg-client": "1.1.6",
74
- "@applitools/utils": "1.3.16",
66
+ "@applitools/dom-snapshot": "4.7.2",
67
+ "@applitools/driver": "1.11.14",
68
+ "@applitools/logger": "1.1.32",
69
+ "@applitools/nml-client": "1.3.14",
70
+ "@applitools/req": "1.1.19",
71
+ "@applitools/screenshoter": "3.7.13",
72
+ "@applitools/snippets": "2.4.10",
73
+ "@applitools/ufg-client": "1.1.8",
74
+ "@applitools/utils": "1.3.18",
75
75
  "abort-controller": "3.0.0",
76
+ "chalk": "4.1.2",
77
+ "node-fetch": "2.6.7",
76
78
  "throat": "6.0.1"
77
79
  },
78
80
  "devDependencies": {
79
81
  "@applitools/bongo": "^2.2.0",
80
82
  "@applitools/sdk-fake-eyes-server": "^2.1.3",
81
- "@applitools/spec-driver-puppeteer": "^1.1.23",
82
- "@applitools/spec-driver-selenium": "^1.5.9",
83
- "@applitools/spec-driver-webdriverio": "^1.4.7",
84
- "@applitools/test-server": "^1.1.11",
85
- "@applitools/test-utils": "^1.5.2",
83
+ "@applitools/spec-driver-puppeteer": "^1.1.26",
84
+ "@applitools/spec-driver-selenium": "^1.5.12",
85
+ "@applitools/spec-driver-webdriverio": "^1.4.9",
86
+ "@applitools/test-server": "^1.1.13",
87
+ "@applitools/test-utils": "^1.5.3",
86
88
  "@types/mocha": "^9.1.1",
87
89
  "@types/node": "12",
88
90
  "@types/selenium-webdriver": "^4.1.2",
@@ -102,7 +104,7 @@
102
104
  "puppeteer": "^16.2.0",
103
105
  "selenium-webdriver": "4.4",
104
106
  "ts-node": "^10.7.0",
105
- "typescript": "^4.8.3",
107
+ "typescript": "^4.9.4",
106
108
  "webdriverio": "^7.25.0"
107
109
  },
108
110
  "engines": {
@@ -1,11 +1,12 @@
1
+ import type { DriverTarget } from './types';
1
2
  import { type Logger } from '@applitools/logger';
2
3
  import { type SpecDriver } from '@applitools/driver';
3
- declare type Options<TDriver, TContext, TElement, TSelector> = {
4
+ type Options<TDriver, TContext, TElement, TSelector> = {
4
5
  spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
5
6
  logger?: Logger;
6
7
  };
7
- export declare function makeGetViewportSize<TDriver, TContext, TElement, TSelector>({ spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ target, logger }: {
8
- target: TDriver;
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>;
9
10
  logger?: Logger;
10
11
  }) => Promise<import("@applitools/utils").Size>;
11
12
  export {};
@@ -1,16 +1,15 @@
1
- import type { Target, LocateSettings, LocateResult } from './types';
2
- import type { Core as BaseCore, Target as BaseTarget } from '@applitools/core-base';
1
+ import type { DriverTarget, ImageTarget, LocateSettings, LocateResult } from './types';
2
+ import type { Core as BaseCore } from '@applitools/core-base';
3
3
  import { type Logger } from '@applitools/logger';
4
4
  import { type SpecDriver } from '@applitools/driver';
5
- declare type Options<TDriver, TContext, TElement, TSelector> = {
6
- spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
5
+ type Options<TDriver, TContext, TElement, TSelector> = {
7
6
  core: BaseCore;
8
- target?: Target<TDriver>;
7
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
9
8
  logger?: Logger;
10
9
  };
11
- export declare function makeLocate<TDriver, TContext, TElement, TSelector>({ spec, core, target: defaultTarget, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): <TLocator extends string>({ target, settings, logger, }?: {
12
- target?: Target<TDriver> | BaseTarget;
13
- settings?: LocateSettings<TLocator, TElement, TSelector>;
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>;
14
13
  logger?: Logger;
15
14
  }) => Promise<LocateResult<TLocator>>;
16
15
  export {};
@@ -1,12 +1,13 @@
1
1
  import type { Size } from '@applitools/utils';
2
+ import type { DriverTarget } from './types';
2
3
  import { type Logger } from '@applitools/logger';
3
4
  import { type SpecDriver } from '@applitools/driver';
4
- declare type Options<TDriver, TContext, TElement, TSelector> = {
5
+ type Options<TDriver, TContext, TElement, TSelector> = {
5
6
  spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
6
7
  logger?: Logger;
7
8
  };
8
- export declare function makeSetViewportSize<TDriver, TContext, TElement, TSelector>({ spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ target, size, logger }: {
9
- target: TDriver;
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>;
10
11
  size: Size;
11
12
  logger?: Logger;
12
13
  }) => Promise<void>;