@applitools/core 3.11.8 → 4.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 (59) hide show
  1. package/CHANGELOG.md +135 -0
  2. package/dist/abort.js +3 -3
  3. package/dist/automation/abort.js +7 -7
  4. package/dist/automation/close.js +7 -7
  5. package/dist/automation/get-results.js +2 -2
  6. package/dist/automation/utils/{extract-renderer-key.js → to-environment-key.js} +4 -8
  7. package/dist/automation/utils/uniquify-environments.js +27 -0
  8. package/dist/classic/check-and-close.js +36 -35
  9. package/dist/classic/check.js +36 -35
  10. package/dist/classic/get-base-eyes.js +3 -12
  11. package/dist/classic/open-eyes.js +7 -7
  12. package/dist/classic/utils/extract-default-environments.js +70 -0
  13. package/dist/classic/utils/take-screenshots.js +1 -1
  14. package/dist/close-batch.js +3 -3
  15. package/dist/close.js +3 -3
  16. package/dist/core.js +2 -2
  17. package/dist/delete-test.js +3 -3
  18. package/dist/extract-text.js +3 -3
  19. package/dist/get-account-info.js +3 -3
  20. package/dist/get-manager-results.js +1 -1
  21. package/dist/locate-text.js +3 -3
  22. package/dist/locate.js +3 -3
  23. package/dist/log-event.js +3 -3
  24. package/dist/open-eyes.js +18 -18
  25. package/dist/ufg/check-and-close.js +39 -39
  26. package/dist/ufg/check.js +39 -39
  27. package/dist/ufg/get-base-eyes.js +4 -4
  28. package/dist/ufg/open-eyes.js +5 -5
  29. package/dist/ufg/utils/{extract-default-renderers.js → extract-default-environment.js} +3 -3
  30. package/dist/ufg/utils/take-dom-snapshots.js +17 -17
  31. package/dist/universal/core-server.js +12 -13
  32. package/dist/utils/{extract-environment.js → extract-test-environment.js} +3 -3
  33. package/package.json +28 -25
  34. package/types/abort.d.ts +3 -3
  35. package/types/automation/abort.d.ts +3 -3
  36. package/types/automation/close.d.ts +3 -3
  37. package/types/automation/types.d.ts +23 -26
  38. package/types/automation/utils/to-environment-key.d.ts +2 -0
  39. package/types/automation/utils/uniquify-environments.d.ts +2 -0
  40. package/types/classic/check-and-close.d.ts +5 -5
  41. package/types/classic/check.d.ts +3 -3
  42. package/types/classic/utils/extract-default-environments.d.ts +9 -0
  43. package/types/classic/utils/take-screenshots.d.ts +2 -2
  44. package/types/close.d.ts +3 -3
  45. package/types/get-typed-eyes.d.ts +1 -4
  46. package/types/types.d.ts +1 -1
  47. package/types/ufg/check-and-close.d.ts +5 -5
  48. package/types/ufg/check.d.ts +3 -3
  49. package/types/ufg/core.d.ts +1 -1
  50. package/types/ufg/utils/extract-default-environment.d.ts +5 -0
  51. package/types/ufg/utils/take-dom-snapshots.d.ts +3 -4
  52. package/types/utils/extract-test-environment.d.ts +2 -0
  53. package/dist/automation/utils/uniquify-renderers.js +0 -27
  54. package/dist/classic/utils/extract-default-renderers.js +0 -72
  55. package/types/automation/utils/extract-renderer-key.d.ts +0 -2
  56. package/types/automation/utils/uniquify-renderers.d.ts +0 -2
  57. package/types/classic/utils/extract-default-renderers.d.ts +0 -9
  58. package/types/ufg/utils/extract-default-renderers.d.ts +0 -5
  59. package/types/utils/extract-environment.d.ts +0 -2
package/dist/ufg/check.js CHANGED
@@ -30,12 +30,12 @@ exports.makeCheck = void 0;
30
30
  const driver_1 = require("@applitools/driver");
31
31
  const take_dom_snapshots_1 = require("./utils/take-dom-snapshots");
32
32
  const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
33
- const uniquify_renderers_1 = require("../automation/utils/uniquify-renderers");
34
- const extract_renderer_key_1 = require("../automation/utils/extract-renderer-key");
33
+ const uniquify_environments_1 = require("../automation/utils/uniquify-environments");
34
+ const to_environment_key_1 = require("../automation/utils/to-environment-key");
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({ eyes, target: defaultTarget, renderers: defaultRenderers = [], spec, signal, logger: mainLogger, }) {
38
+ function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironments = [], spec, signal, logger: mainLogger, }) {
39
39
  return async function check({ target = defaultTarget, settings = {}, logger = mainLogger, } = {}) {
40
40
  var _a, _b, _c;
41
41
  logger = logger.extend(mainLogger);
@@ -47,7 +47,7 @@ function makeCheck({ eyes, target: defaultTarget, renderers: defaultRenderers =
47
47
  const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
48
48
  settings,
49
49
  });
50
- const uniqueRenderers = (0, uniquify_renderers_1.uniquifyRenderers)((_a = settings.renderers) !== null && _a !== void 0 ? _a : defaultRenderers);
50
+ const uniqueEnvironments = (0, uniquify_environments_1.uniquifyEnvironments)((_a = settings.environments) !== null && _a !== void 0 ? _a : defaultEnvironments);
51
51
  const ufgClient = await eyes.core.getUFGClient({
52
52
  settings: {
53
53
  ...eyes.test.ufgServer,
@@ -76,7 +76,7 @@ function makeCheck({ eyes, target: defaultTarget, renderers: defaultRenderers =
76
76
  waitBeforeCapture: settings.waitBeforeCapture,
77
77
  disableBrowserFetching: settings.disableBrowserFetching,
78
78
  layoutBreakpoints: settings.layoutBreakpoints,
79
- renderers: uniqueRenderers,
79
+ environments: uniqueEnvironments,
80
80
  skipResources: ufgClient.getCachedResourceUrls(),
81
81
  lazyLoad: settings.lazyLoad,
82
82
  calculateRegionsOptions: {
@@ -95,14 +95,14 @@ function makeCheck({ eyes, target: defaultTarget, renderers: defaultRenderers =
95
95
  else {
96
96
  const nmlClient = await eyes.core.getNMLClient({
97
97
  driver,
98
- settings: { ...eyes.test.eyesServer, renderEnvironmentsUrl: eyes.test.renderEnvironmentsUrl },
98
+ settings: { ...eyes.test.eyesServer, supportedEnvironmentsUrl: eyes.test.supportedEnvironmentsUrl },
99
99
  logger,
100
100
  });
101
101
  const snapshots = (await nmlClient.takeSnapshots({
102
102
  settings: {
103
103
  ...eyes.test.eyesServer,
104
104
  waitBeforeCapture: settings.waitBeforeCapture,
105
- renderers: uniqueRenderers,
105
+ environments: uniqueEnvironments,
106
106
  },
107
107
  logger,
108
108
  }));
@@ -124,20 +124,20 @@ function makeCheck({ eyes, target: defaultTarget, renderers: defaultRenderers =
124
124
  snapshotTitle = await driver.getTitle();
125
125
  }
126
126
  else {
127
- snapshotResults = !utils.types.isArray(target) ? Array(uniqueRenderers.length).fill(target) : target;
127
+ snapshotResults = !utils.types.isArray(target) ? Array(uniqueEnvironments.length).fill(target) : target;
128
128
  snapshotUrl = utils.types.has((_c = snapshotResults[0]) === null || _c === void 0 ? void 0 : _c.snapshot, 'url') ? snapshotResults[0].snapshot.url : undefined;
129
129
  }
130
- const promises = uniqueRenderers.map(async (renderer, index) => {
131
- var _a;
132
- const rendererLogger = logger.extend({ tags: [`renderer-${utils.general.shortid()}`] });
133
- const ufgRenderer = renderer;
134
- if (utils.types.has(ufgRenderer, 'name') && ufgRenderer.name === 'edge') {
130
+ const promises = uniqueEnvironments.map(async (environment, index) => {
131
+ var _a, _b, _c, _d, _e, _f, _g, _h;
132
+ const environmentLogger = logger.extend({ tags: [`environment-${utils.general.shortid()}`] });
133
+ const ufgEnvironment = environment;
134
+ if (utils.types.has(ufgEnvironment, 'name') && ufgEnvironment.name === 'edge') {
135
135
  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.`);
136
- rendererLogger.console.log(message);
136
+ environmentLogger.console.log(message);
137
137
  }
138
138
  try {
139
139
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
140
- rendererLogger.warn('Command "check" was aborted before rendering');
140
+ environmentLogger.warn('Command "check" was aborted before rendering');
141
141
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
142
142
  }
143
143
  const { snapshot: snapshotFromResult, selectorsToCalculate: selectorsToCalculateFromSnapshot, regionToTarget, scrollRootSelector, } = snapshotResults[index];
@@ -147,13 +147,13 @@ function makeCheck({ eyes, target: defaultTarget, renderers: defaultRenderers =
147
147
  originalSelector: selector,
148
148
  safeSelector: selector,
149
149
  }));
150
- if (utils.types.has(ufgRenderer, 'iosDeviceInfo') || utils.types.has(ufgRenderer, 'androidDeviceInfo')) {
151
- ufgRenderer.type = utils.types.has(snapshot, 'cdt') ? 'web' : 'native';
150
+ if (utils.types.has(ufgEnvironment, 'iosDeviceInfo') || utils.types.has(ufgEnvironment, 'androidDeviceInfo')) {
151
+ ufgEnvironment.type = utils.types.has(snapshot, 'cdt') ? 'web' : 'native';
152
152
  }
153
153
  const renderTargetPromise = ufgClient.createRenderTarget({
154
154
  snapshot,
155
155
  settings: {
156
- renderer: ufgRenderer,
156
+ environment: ufgEnvironment,
157
157
  cookies,
158
158
  headers: {
159
159
  Referer: snapshotUrl,
@@ -163,26 +163,26 @@ function makeCheck({ eyes, target: defaultTarget, renderers: defaultRenderers =
163
163
  proxy: eyes.test.eyesServer.proxy,
164
164
  autProxy: settings.autProxy,
165
165
  },
166
- logger: rendererLogger,
166
+ logger: environmentLogger,
167
167
  });
168
- const baseEyes = await eyes.getBaseEyes({ settings: { renderer }, logger: rendererLogger });
168
+ const baseEyes = await eyes.getBaseEyes({ settings: { environment }, logger: environmentLogger });
169
169
  try {
170
170
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
171
- rendererLogger.warn('Command "check" was aborted before rendering');
171
+ environmentLogger.warn('Command "check" was aborted before rendering');
172
172
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
173
173
  }
174
174
  else if (!baseEyes.running) {
175
- rendererLogger.warn(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
176
- throw new abort_error_1.AbortError(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
175
+ environmentLogger.warn(`Render on environment with id "${(_b = baseEyes.test.environment) === null || _b === void 0 ? void 0 : _b.environmentId}" was aborted during one of the previous steps`);
176
+ throw new abort_error_1.AbortError(`Render on environment with id "${(_c = baseEyes.test.environment) === null || _c === void 0 ? void 0 : _c.environmentId}" was aborted during one of the previous steps`);
177
177
  }
178
178
  const renderTarget = await renderTargetPromise;
179
179
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
180
- rendererLogger.warn('Command "check" was aborted before rendering');
180
+ environmentLogger.warn('Command "check" was aborted before rendering');
181
181
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
182
182
  }
183
183
  else if (!baseEyes.running) {
184
- rendererLogger.warn(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
185
- throw new abort_error_1.AbortError(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
184
+ environmentLogger.warn(`Render on environment with id "${(_d = baseEyes.test.environment) === null || _d === void 0 ? void 0 : _d.environmentId}" was aborted during one of the previous steps`);
185
+ throw new abort_error_1.AbortError(`Render on environment with id "${(_e = baseEyes.test.environment) === null || _e === void 0 ? void 0 : _e.environmentId}" was aborted during one of the previous steps`);
186
186
  }
187
187
  const { renderId, selectorRegions, ...baseTarget } = await ufgClient.render({
188
188
  target: renderTarget,
@@ -192,13 +192,13 @@ function makeCheck({ eyes, target: defaultTarget, renderers: defaultRenderers =
192
192
  scrollRootElement: scrollRootSelector,
193
193
  selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
194
194
  includeFullPageSize: Boolean(settings.pageId),
195
- renderer: ufgRenderer,
196
- renderEnvironmentId: baseEyes.test.renderEnvironmentId,
195
+ environment: ufgEnvironment,
196
+ environmentId: baseEyes.test.environment.environmentId,
197
197
  uploadUrl: baseEyes.test.uploadUrl,
198
198
  stitchingServiceUrl: baseEyes.test.stitchingServiceUrl,
199
199
  },
200
200
  signal,
201
- logger: rendererLogger,
201
+ logger: environmentLogger,
202
202
  });
203
203
  let offset = 0;
204
204
  const baseSettings = getBaseCheckSettings({
@@ -211,35 +211,35 @@ function makeCheck({ eyes, target: defaultTarget, renderers: defaultRenderers =
211
211
  baseTarget.source = snapshotUrl;
212
212
  baseTarget.name = snapshotTitle;
213
213
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
214
- rendererLogger.warn('Command "check" was aborted after rendering');
214
+ environmentLogger.warn('Command "check" was aborted after rendering');
215
215
  throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
216
216
  }
217
217
  else if (!baseEyes.running) {
218
- rendererLogger.warn(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
219
- throw new abort_error_1.AbortError(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
218
+ environmentLogger.warn(`Render on environment with id "${(_f = baseEyes.test.environment) === null || _f === void 0 ? void 0 : _f.environmentId}" was aborted during one of the previous steps`);
219
+ throw new abort_error_1.AbortError(`Render on environment with id "${(_g = baseEyes.test.environment) === null || _g === void 0 ? void 0 : _g.environmentId}" was aborted during one of the previous steps`);
220
220
  }
221
221
  await baseEyes.check({
222
222
  target: { ...baseTarget, isTransformed: true },
223
223
  settings: baseSettings,
224
- logger: rendererLogger,
224
+ logger: environmentLogger,
225
225
  });
226
226
  }
227
227
  catch (error) {
228
- rendererLogger.error(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" failed due to an error`, error);
228
+ environmentLogger.error(`Render on environment with id "${(_h = baseEyes.test.environment) === null || _h === void 0 ? void 0 : _h.environmentId}" failed due to an error`, error);
229
229
  if (baseEyes.running && !(signal === null || signal === void 0 ? void 0 : signal.aborted))
230
- await baseEyes.abort({ logger: rendererLogger });
230
+ await baseEyes.abort({ logger: environmentLogger });
231
231
  error.info = { eyes: baseEyes };
232
232
  throw error;
233
233
  }
234
234
  }
235
235
  catch (error) {
236
- rendererLogger.error(`Renderer with id ${ufgRenderer.id} failed before rendering started due to an error`, error);
237
- error.info = { ...error.info, userTestId: eyes.test.userTestId, renderer: ufgRenderer };
236
+ environmentLogger.error(`Environment with id ${ufgEnvironment.environmentId} failed before rendering started due to an error`, error);
237
+ error.info = { ...error.info, userTestId: eyes.test.userTestId, environment: ufgEnvironment };
238
238
  throw error;
239
239
  }
240
240
  });
241
- uniqueRenderers.forEach((renderer, index) => {
242
- const key = (0, extract_renderer_key_1.extractRendererKey)(renderer);
241
+ uniqueEnvironments.forEach((environment, index) => {
242
+ const key = (0, to_environment_key_1.toEnvironmentKey)(environment);
243
243
  let item = eyes.storage.get(key);
244
244
  if (!item) {
245
245
  item = { eyes: utils.promises.makeControlledPromise(), jobs: [] };
@@ -27,7 +27,7 @@ exports.makeGetBaseEyes = void 0;
27
27
  const utils = __importStar(require("@applitools/utils"));
28
28
  function makeGetBaseEyes({ settings: defaultSettings, eyes, logger: mainLogger, }) {
29
29
  const getBaseEyesWithCache = utils.general.wrap(getBaseEyes, (getBaseEyes, options) => {
30
- const key = JSON.stringify(options.settings.renderer);
30
+ const key = JSON.stringify(options.settings.environment);
31
31
  let item = eyes.storage.get(key);
32
32
  if (!item) {
33
33
  item = { eyes: utils.promises.makeControlledPromise(), jobs: [] };
@@ -49,14 +49,14 @@ function makeGetBaseEyes({ settings: defaultSettings, eyes, logger: mainLogger,
49
49
  },
50
50
  logger,
51
51
  });
52
- const environment = await ufgClient.getRenderEnvironment({
53
- settings: { renderer: settings.renderer },
52
+ const environment = await ufgClient.getActualEnvironment({
53
+ settings: { environment: settings.environment },
54
54
  logger,
55
55
  });
56
56
  return eyes.core.base.openEyes({
57
57
  settings: {
58
58
  ...defaultSettings,
59
- environment: { ...defaultSettings.environment, ...environment, properties: settings.renderer.properties },
59
+ environment: { ...defaultSettings.environment, ...environment, properties: settings.environment.properties },
60
60
  },
61
61
  logger,
62
62
  });
@@ -31,7 +31,7 @@ const check_and_close_1 = require("./check-and-close");
31
31
  const close_1 = require("../automation/close");
32
32
  const abort_1 = require("../automation/abort");
33
33
  const get_results_1 = require("../automation/get-results");
34
- const extract_default_renderers_1 = require("./utils/extract-default-renderers");
34
+ const extract_default_environment_1 = require("./utils/extract-default-environment");
35
35
  const abort_controller_1 = require("abort-controller");
36
36
  const utils = __importStar(require("@applitools/utils"));
37
37
  function makeOpenEyes({ core, spec, logger: mainLogger }) {
@@ -50,7 +50,7 @@ function makeOpenEyes({ core, spec, logger: mainLogger }) {
50
50
  settings.environment.ecSessionId = (_c = (await driver.getSessionId())) !== null && _c !== void 0 ? _c : undefined;
51
51
  }
52
52
  }
53
- const renderers = await (0, extract_default_renderers_1.extractDefaultRenderers)({ driver });
53
+ const environments = await (0, extract_default_environment_1.extractDefaultEnvironments)({ driver });
54
54
  const controller = new abort_controller_1.AbortController();
55
55
  const account = await core.getAccountInfo({ settings, logger });
56
56
  return utils.general.extend({}, eyes => {
@@ -66,14 +66,14 @@ function makeOpenEyes({ core, spec, logger: mainLogger }) {
66
66
  ufgServer: account.ufgServer,
67
67
  uploadUrl: account.uploadUrl,
68
68
  stitchingServiceUrl: account.stitchingServiceUrl,
69
- renderEnvironmentsUrl: account.renderEnvironmentsUrl,
69
+ supportedEnvironmentsUrl: account.supportedEnvironmentsUrl,
70
70
  account,
71
71
  },
72
72
  running: true,
73
73
  storage,
74
74
  getBaseEyes: (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, logger }),
75
- check: (0, check_1.makeCheck)({ eyes, target: driver, renderers, spec, signal: controller.signal, logger }),
76
- checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, renderers, spec, signal: controller.signal, logger }),
75
+ check: (0, check_1.makeCheck)({ eyes, target: driver, environments, spec, signal: controller.signal, logger }),
76
+ checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, environments, spec, signal: controller.signal, logger }),
77
77
  close: (0, close_1.makeClose)({ eyes, target: driver, logger }),
78
78
  abort: (0, abort_1.makeAbort)({ eyes, target: driver, spec, controller, logger }),
79
79
  getResults: (0, get_results_1.makeGetResults)({ eyes, logger }),
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractDefaultRenderers = void 0;
4
- async function extractDefaultRenderers({ driver, }) {
3
+ exports.extractDefaultEnvironments = void 0;
4
+ async function extractDefaultEnvironments({ driver, }) {
5
5
  if (!driver)
6
6
  return [];
7
7
  const currentContext = driver.currentContext;
@@ -19,4 +19,4 @@ async function extractDefaultRenderers({ driver, }) {
19
19
  await currentContext.focus();
20
20
  }
21
21
  }
22
- exports.extractDefaultRenderers = extractDefaultRenderers;
22
+ exports.extractDefaultEnvironments = extractDefaultEnvironments;
@@ -31,10 +31,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
31
  Object.defineProperty(exports, "__esModule", { value: true });
32
32
  exports.takeDomSnapshots = void 0;
33
33
  const take_dom_snapshot_1 = require("./take-dom-snapshot");
34
- const utils = __importStar(require("@applitools/utils"));
35
- const chalk_1 = __importDefault(require("chalk"));
36
34
  const calculate_regions_1 = require("./calculate-regions");
37
35
  const wait_for_lazy_load_1 = require("../../automation/utils/wait-for-lazy-load");
36
+ const chalk_1 = __importDefault(require("chalk"));
37
+ const utils = __importStar(require("@applitools/utils"));
38
38
  __exportStar(require("./take-dom-snapshot"), exports);
39
39
  async function takeDomSnapshots({ driver, settings, hooks, provides, logger, }) {
40
40
  var _a, _b, _c, _d, _e, _f, _g;
@@ -67,19 +67,19 @@ async function takeDomSnapshots({ driver, settings, hooks, provides, logger, })
67
67
  await waitBeforeCapture();
68
68
  const snapshot = await (0, take_dom_snapshot_1.takeDomSnapshot)({ context: currentContext, settings, logger });
69
69
  await ((_c = calculateRegionsResults === null || calculateRegionsResults === void 0 ? void 0 : calculateRegionsResults.cleanupGeneratedSelectors) === null || _c === void 0 ? void 0 : _c.call(calculateRegionsResults));
70
- return Array(settings.renderers.length).fill({ snapshot, ...calculateRegionsResults });
70
+ return Array(settings.environments.length).fill({ snapshot, ...calculateRegionsResults });
71
71
  }
72
72
  const isStrictBreakpoints = utils.types.isArray((_d = settings.layoutBreakpoints) === null || _d === void 0 ? void 0 : _d.breakpoints);
73
- const requiredWidths = await settings.renderers.reduce(async (prev, renderer, index) => {
74
- const { name, width } = (await extractRendererInfo({ renderer }));
73
+ const requiredWidths = await settings.environments.reduce(async (prev, environment, index) => {
74
+ const { name, width } = (await extractEnvironmentInfo(environment));
75
75
  const requiredWidths = await prev;
76
76
  const requiredWidth = isStrictBreakpoints
77
77
  ? calculateBreakpoint({ breakpoints: settings.layoutBreakpoints.breakpoints, value: width })
78
78
  : width;
79
- let renderers = requiredWidths.get(requiredWidth);
80
- if (!renderers)
81
- requiredWidths.set(requiredWidth, (renderers = []));
82
- renderers.push({ name, width, index });
79
+ let environments = requiredWidths.get(requiredWidth);
80
+ if (!environments)
81
+ requiredWidths.set(requiredWidth, (environments = []));
82
+ environments.push({ name, width, index });
83
83
  return requiredWidths;
84
84
  }, Promise.resolve(new Map()));
85
85
  const smallestBreakpoint = Math.min(...(isStrictBreakpoints ? settings.layoutBreakpoints.breakpoints : []));
@@ -94,7 +94,7 @@ async function takeDomSnapshots({ driver, settings, hooks, provides, logger, })
94
94
  logger.log(`taking multiple dom snapshots for breakpoints:`, settings.layoutBreakpoints.breakpoints);
95
95
  logger.log(`required widths: ${[...requiredWidths.keys()].join(', ')}`);
96
96
  const viewportSize = await driver.getViewportSize();
97
- const snapshotsResults = Array(settings.renderers.length);
97
+ const snapshotsResults = Array(settings.environments.length);
98
98
  if (requiredWidths.has(viewportSize.width)) {
99
99
  logger.log(`taking dom snapshot for existing width ${viewportSize.width}`);
100
100
  await ((_e = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _e === void 0 ? void 0 : _e.call(hooks));
@@ -162,19 +162,19 @@ async function takeDomSnapshots({ driver, settings, hooks, provides, logger, })
162
162
  else
163
163
  return breakpoints[nextBreakpointIndex - 1];
164
164
  }
165
- async function extractRendererInfo({ renderer }) {
166
- if (utils.types.has(renderer, ['width', 'height'])) {
167
- const { name, width, height } = renderer;
165
+ async function extractEnvironmentInfo(environment) {
166
+ if (utils.types.has(environment, ['width', 'height'])) {
167
+ const { name, width, height } = environment;
168
168
  return { name: name !== null && name !== void 0 ? name : 'default', width, height };
169
169
  }
170
- else if (utils.types.has(renderer, 'chromeEmulationInfo')) {
170
+ else if (utils.types.has(environment, 'chromeEmulationInfo')) {
171
171
  const devices = await provides.getChromeEmulationDevices();
172
- const { deviceName, screenOrientation = 'portrait' } = renderer.chromeEmulationInfo;
172
+ const { deviceName, screenOrientation = 'portrait' } = environment.chromeEmulationInfo;
173
173
  return { name: deviceName, screenOrientation, ...devices[deviceName][screenOrientation] };
174
174
  }
175
- else if (utils.types.has(renderer, 'iosDeviceInfo')) {
175
+ else if (utils.types.has(environment, 'iosDeviceInfo')) {
176
176
  const devices = await provides.getIOSDevices();
177
- const { deviceName, screenOrientation = 'portrait' } = renderer.iosDeviceInfo;
177
+ const { deviceName, screenOrientation = 'portrait' } = environment.iosDeviceInfo;
178
178
  return { name: deviceName, screenOrientation, ...devices[deviceName][screenOrientation] };
179
179
  }
180
180
  }
@@ -34,7 +34,7 @@ printStdout = false, isProcess = false, ...handlerOptions } = {}) {
34
34
  const { server, port } = await (0, ws_server_1.makeServer)({ ...handlerOptions, debug });
35
35
  if (isProcess) {
36
36
  // eslint-disable-next-line no-console
37
- console.log(port); // NOTE: this is a part of the generic protocol
37
+ console.log(port.toString()); // NOTE: this is a part of the generic protocol
38
38
  (_b = process.send) === null || _b === void 0 ? void 0 : _b.call(process, { name: 'port', payload: { port } }); // NOTE: this is a part of the js specific protocol
39
39
  }
40
40
  if (!server) {
@@ -142,20 +142,8 @@ printStdout = false, isProcess = false, ...handlerOptions } = {}) {
142
142
  const client = await core.getECClient(options);
143
143
  return { url: client.url };
144
144
  });
145
- // TODO remove
146
- socket.command('Core.makeECClient', async (options) => {
147
- const core = await corePromise;
148
- const client = await core.getECClient(options);
149
- return { url: client.url };
150
- });
151
145
  socket.command('Core.makeManager', async (options) => {
152
- var _a, _b, _c, _d;
153
- var _e, _f, _g;
154
146
  const core = await corePromise;
155
- (_a = options.settings) !== null && _a !== void 0 ? _a : (options.settings = {});
156
- (_b = (_e = options.settings).concurrency) !== null && _b !== void 0 ? _b : (_e.concurrency = options.concurrency);
157
- (_c = (_f = options.settings).legacyConcurrency) !== null && _c !== void 0 ? _c : (_f.legacyConcurrency = options.legacyConcurrency);
158
- (_d = (_g = options.settings).agentId) !== null && _d !== void 0 ? _d : (_g.agentId = options.agentId);
159
147
  return refer.ref(await core.makeManager(options));
160
148
  });
161
149
  socket.command('EyesManager.openEyes', async ({ manager, ...options }) => {
@@ -192,6 +180,17 @@ printStdout = false, isProcess = false, ...handlerOptions } = {}) {
192
180
  return getHistory();
193
181
  });
194
182
  });
183
+ process.on('unhandledRejection', error => {
184
+ baseLogger.error('Unhandled promise rejection', error);
185
+ /* eslint-disable-next-line no-console */
186
+ console.error('Unhandled promise rejection', error);
187
+ });
188
+ process.on('uncaughtException', error => {
189
+ baseLogger.error('Uncaught error terminating the process', error);
190
+ /* eslint-disable-next-line no-console */
191
+ console.error('Uncaught error terminating the process', error);
192
+ process.exit(1);
193
+ });
195
194
  return { port, close: () => server.close() };
196
195
  }
197
196
  exports.makeCoreServer = makeCoreServer;
@@ -23,9 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.extractCIProvider = exports.extractEnvironment = void 0;
26
+ exports.extractCIProvider = exports.extractTestEnvironment = void 0;
27
27
  const os = __importStar(require("os"));
28
- function extractEnvironment(baseEnvironment) {
28
+ function extractTestEnvironment(baseEnvironment) {
29
29
  return {
30
30
  ...baseEnvironment,
31
31
  versions: {
@@ -39,7 +39,7 @@ function extractEnvironment(baseEnvironment) {
39
39
  ci: extractCIProvider(),
40
40
  };
41
41
  }
42
- exports.extractEnvironment = extractEnvironment;
42
+ exports.extractTestEnvironment = extractTestEnvironment;
43
43
  function extractCIProvider() {
44
44
  if (process.env.TF_BUILD)
45
45
  return 'Azure';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/core",
3
- "version": "3.11.8",
3
+ "version": "4.0.1",
4
4
  "homepage": "https://applitools.com",
5
5
  "bugs": {
6
6
  "url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -44,12 +44,10 @@
44
44
  "lint": "run --top-level eslint '**/*.ts'",
45
45
  "build": "yarn build:dist",
46
46
  "build:dist": "run --top-level tsc --project ./tsconfig.build.json",
47
- "build:x64": "yarn build:dist && yarn build:bin:x64",
48
- "build:arm64": "yarn build:dist && yarn build:bin:arm64",
49
- "build:bin:x64": "rm -rf ../spec-driver-webdriver/node_modules/webdriver && pkg . --target node14-linux-x64,node14-alpine-x64,node14-macos-x64,node14-win-x64",
50
- "build:bin:arm64": "rm -rf ../spec-driver-webdriver/node_modules/webdriver && pkg . --target node14-linux-arm64 --output ./bin/core-linux-arm64",
47
+ "build:bin": "sea",
51
48
  "build:bin:zip": "zip -j ./bin/core.zip $(find ./bin -type f -not -name '*.zip' -not -name '*.tar.gz' | xargs)",
52
49
  "build:bin:tgz": "tar -czf ./bin/core.tar.gz $(find ./bin -type f -not -name '*.zip' -not -name '*.tar.gz' | xargs)",
50
+ "build:full": "yarn build:dist && yarn build:bin",
53
51
  "test": "run --top-level mocha './test/**/*.spec.ts' --exclude './test/bin/**' --parallel --jobs ${MOCHA_JOBS:-15} --exit",
54
52
  "test:local": "MOCHA_OMIT_TAGS=sauce run test",
55
53
  "test:sauce": "MOCHA_ONLY_TAGS=sauce run test",
@@ -59,26 +57,31 @@
59
57
  "test:unit": "MOCHA_GROUP=unit run --top-level mocha './test/unit/**/*.spec.ts'",
60
58
  "setup": "run --top-level browsers:setup"
61
59
  },
62
- "pkg": {
63
- "scripts": "./dist/cli/cli.js",
64
- "outputPath": "./bin",
65
- "compress": "GZip"
60
+ "sea": {
61
+ "bin": "eyes",
62
+ "targets": {
63
+ "node20-linux-x64-glibc-217": "./bin/core-linux",
64
+ "node20-linux-x64-musl": "./bin/core-alpine",
65
+ "node20-linux-arm64": "./bin/core-linux-arm64",
66
+ "node20-darwin-x64": "./bin/core-macos",
67
+ "node20-win-x64": "./bin/core-win.exe"
68
+ }
66
69
  },
67
70
  "dependencies": {
68
- "@applitools/core-base": "1.7.1",
71
+ "@applitools/core-base": "1.7.2",
69
72
  "@applitools/dom-capture": "11.2.3",
70
- "@applitools/dom-snapshot": "4.7.11",
71
- "@applitools/driver": "1.14.3",
72
- "@applitools/ec-client": "1.7.12",
73
- "@applitools/logger": "2.0.11",
74
- "@applitools/nml-client": "1.5.13",
75
- "@applitools/req": "1.6.1",
76
- "@applitools/screenshoter": "3.8.13",
73
+ "@applitools/dom-snapshot": "4.7.12",
74
+ "@applitools/driver": "1.14.4",
75
+ "@applitools/ec-client": "1.7.14",
76
+ "@applitools/logger": "2.0.12",
77
+ "@applitools/nml-client": "1.5.14",
78
+ "@applitools/req": "1.6.2",
79
+ "@applitools/screenshoter": "3.8.14",
77
80
  "@applitools/snippets": "2.4.24",
78
- "@applitools/socket": "1.1.11",
79
- "@applitools/spec-driver-webdriver": "1.0.47",
80
- "@applitools/ufg-client": "1.9.5",
81
- "@applitools/utils": "1.6.1",
81
+ "@applitools/socket": "1.1.12",
82
+ "@applitools/spec-driver-webdriver": "1.0.48",
83
+ "@applitools/ufg-client": "1.9.6",
84
+ "@applitools/utils": "1.6.2",
82
85
  "@types/ws": "8.5.5",
83
86
  "abort-controller": "3.0.0",
84
87
  "chalk": "4.1.2",
@@ -89,17 +92,17 @@
89
92
  },
90
93
  "devDependencies": {
91
94
  "@applitools/bongo": "^5.7.0",
92
- "@applitools/spec-driver-puppeteer": "^1.2.3",
93
- "@applitools/spec-driver-selenium": "^1.5.61",
95
+ "@applitools/sea": "^1.0.0",
96
+ "@applitools/spec-driver-puppeteer": "^1.2.4",
97
+ "@applitools/spec-driver-selenium": "^1.5.62",
94
98
  "@applitools/test-server": "^1.2.2",
95
99
  "@applitools/test-utils": "^1.5.17",
96
- "@applitools/tunnel-client": "^1.2.3",
100
+ "@applitools/tunnel-client": "^1.3.0",
97
101
  "@types/node": "^12.20.55",
98
102
  "@types/selenium-webdriver": "^4.1.2",
99
103
  "@types/yargs": "^17.0.22",
100
104
  "chromedriver": "^115.0.1",
101
105
  "nock": "^13.3.2",
102
- "pkg": "^5.8.0",
103
106
  "png-async": "^0.9.4",
104
107
  "puppeteer": "^19.11.1",
105
108
  "selenium-webdriver": "4.4"
package/types/abort.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- import type { Eyes, AbortSettings, Renderer } from './types';
1
+ import type { Eyes, AbortSettings, Environment } from './types';
2
2
  import { type SpecType } from '@applitools/driver';
3
3
  import { type Logger } from '@applitools/logger';
4
4
  type Options<TSpec extends SpecType, TType extends 'classic' | 'ufg'> = {
5
5
  eyes: Eyes<TSpec, TType>;
6
- renderers?: Renderer[];
6
+ environments?: Environment[];
7
7
  logger: Logger;
8
8
  };
9
- export declare function makeAbort<TSpec extends SpecType, TType extends 'classic' | 'ufg'>({ eyes, renderers: defaultRenderers, logger: mainLogger, }: Options<TSpec, TType>): ({ settings, logger, }?: {
9
+ export declare function makeAbort<TSpec extends SpecType, TType extends 'classic' | 'ufg'>({ eyes, environments: defaultEnvironments, logger: mainLogger, }: Options<TSpec, TType>): ({ settings, logger, }?: {
10
10
  settings?: AbortSettings<TType> | undefined;
11
11
  logger?: Logger | undefined;
12
12
  }) => Promise<void>;
@@ -1,4 +1,4 @@
1
- import type { DriverTarget, Eyes, AbortSettings, Renderer } from './types';
1
+ import type { DriverTarget, Eyes, AbortSettings, Environment } from './types';
2
2
  import { type Logger } from '@applitools/logger';
3
3
  import { type AbortController } from 'abort-controller';
4
4
  import { type SpecType, type SpecDriver } from '@applitools/driver';
@@ -6,11 +6,11 @@ type Options<TSpec extends SpecType> = {
6
6
  eyes: Eyes<TSpec>;
7
7
  target?: DriverTarget<TSpec>;
8
8
  controller: AbortController;
9
- renderers?: Renderer[];
9
+ environments?: Environment[];
10
10
  spec?: SpecDriver<TSpec>;
11
11
  logger: Logger;
12
12
  };
13
- export declare function makeAbort<TSpec extends SpecType>({ eyes, target, controller, renderers: defaultRenderers, spec, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }?: {
13
+ export declare function makeAbort<TSpec extends SpecType>({ eyes, target, controller, environments: defaultEnvironments, spec, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }?: {
14
14
  settings?: AbortSettings | undefined;
15
15
  logger?: Logger | undefined;
16
16
  }) => Promise<void>;
@@ -1,14 +1,14 @@
1
- import type { DriverTarget, Eyes, CloseSettings, Renderer } from '../ufg/types';
1
+ import type { DriverTarget, Eyes, CloseSettings, Environment } from '../ufg/types';
2
2
  import { type Logger } from '@applitools/logger';
3
3
  import { type SpecType, type SpecDriver } from '@applitools/driver';
4
4
  type Options<TSpec extends SpecType> = {
5
5
  eyes: Eyes<TSpec>;
6
6
  target?: DriverTarget<TSpec>;
7
- renderers?: Renderer[];
7
+ environments?: Environment[];
8
8
  spec?: SpecDriver<TSpec>;
9
9
  logger: Logger;
10
10
  };
11
- export declare function makeClose<TSpec extends SpecType>({ eyes, target, renderers: defaultRenderers, spec, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }?: {
11
+ export declare function makeClose<TSpec extends SpecType>({ eyes, target, environments: defaultEnvironments, spec, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }?: {
12
12
  settings?: CloseSettings | undefined;
13
13
  logger?: Logger | undefined;
14
14
  }) => Promise<void>;