@applitools/core 4.54.1 → 4.54.3-debug

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.54.3](https://github.com/Applitools-Dev/sdk/compare/js/core@4.54.2...js/core@4.54.3) (2026-01-14)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * `close`/`getResults` race condition ([#3450](https://github.com/Applitools-Dev/sdk/issues/3450)) ([2e5437d](https://github.com/Applitools-Dev/sdk/commit/2e5437dcfde6fda58d76227659ee249bfa3885a7))
9
+
10
+ ## [4.54.2](https://github.com/Applitools-Dev/sdk/compare/js/core@4.54.1...js/core@4.54.2) (2026-01-11)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * per-API key heartbeat management | FLD-3889 ([#3406](https://github.com/Applitools-Dev/sdk/issues/3406)) ([5d7f380](https://github.com/Applitools-Dev/sdk/commit/5d7f38037f17006dcc923c4a3dc925e8dded25d8))
16
+ * preserve response body in broker handler ([e1bec23](https://github.com/Applitools-Dev/sdk/commit/e1bec23eabf8e8b73db7ec7cd2febb054047f7a7))
17
+
18
+
19
+ ### Dependencies
20
+
21
+ * @applitools/driver bumped to 1.24.4
22
+ #### Bug Fixes
23
+
24
+ * scrolling element fallback logic | FLD-3959 ([#3442](https://github.com/Applitools-Dev/sdk/issues/3442)) ([36348b4](https://github.com/Applitools-Dev/sdk/commit/36348b46e6a127c99d4ccfa58bf386a8e414fb40))
25
+ * @applitools/nml-client bumped to 1.11.14
26
+ #### Bug Fixes
27
+
28
+ * nml broker retry mechanism | FLD-3968 FLD-3963 FLD-3950 ([#3430](https://github.com/Applitools-Dev/sdk/issues/3430)) ([42617e0](https://github.com/Applitools-Dev/sdk/commit/42617e021f43a89f8a8f2cb914f489ac8d215714))
29
+
30
+
31
+
32
+ * @applitools/dom-snapshot bumped to 4.15.5
33
+
34
+ * @applitools/dom-capture bumped to 11.6.8
35
+ #### Bug Fixes
36
+
37
+ * added support for `font-style` attribute | AD-12435 ([#3458](https://github.com/Applitools-Dev/sdk/issues/3458)) ([f121c2a](https://github.com/Applitools-Dev/sdk/commit/f121c2acdea9285b8b53846466dcb4e2c97820e4))
38
+ * @applitools/spec-driver-webdriver bumped to 1.5.4
39
+
40
+ * @applitools/spec-driver-selenium bumped to 1.7.10
41
+
42
+ * @applitools/spec-driver-puppeteer bumped to 1.6.10
43
+
44
+ * @applitools/screenshoter bumped to 3.12.11
45
+
46
+ * @applitools/core-base bumped to 1.31.1
47
+ #### Bug Fixes
48
+
49
+ * per-API key heartbeat management | FLD-3889 ([#3406](https://github.com/Applitools-Dev/sdk/issues/3406)) ([5d7f380](https://github.com/Applitools-Dev/sdk/commit/5d7f38037f17006dcc923c4a3dc925e8dded25d8))
50
+ * @applitools/ec-client bumped to 1.12.16
51
+
52
+
3
53
  ## [4.54.1](https://github.com/Applitools-Dev/sdk/compare/js/core@4.54.0...js/core@4.54.1) (2025-12-28)
4
54
 
5
55
 
@@ -30,22 +30,25 @@ function makeClose({ eyes, driver, environments: defaultEnvironments, logger: ma
30
30
  logger.log('Command "close" starting filler tests for environments', settings.environments);
31
31
  await Promise.all(uniqueEnvironments.map(environment => eyes.getBaseEyes({ settings: { environment }, logger })));
32
32
  }
33
- eyes.storage.forEach(async (item) => {
34
- var _a, _b;
35
- try {
36
- const [eyes] = await Promise.all([item.eyes, ...item.jobs]);
33
+ eyes.storage.forEach(item => {
34
+ const closePromise = (async () => {
35
+ var _a, _b;
37
36
  try {
38
- await eyes.close({ settings, logger });
37
+ const [eyes] = await Promise.all([item.eyes, ...item.jobs]);
38
+ try {
39
+ await eyes.close({ settings, logger });
40
+ }
41
+ catch (error) {
42
+ logger.warn('Command "close" received an error during performing, trying to perform abort instead', error);
43
+ await eyes.abort({ settings, logger });
44
+ }
39
45
  }
40
46
  catch (error) {
41
- logger.warn('Command "close" received an error during performing, trying to perform abort instead', error);
42
- await eyes.abort({ settings, logger });
47
+ logger.warn('Command "close" received an error during waiting for eyes instances in background', error);
48
+ await ((_b = (_a = error.info) === null || _a === void 0 ? void 0 : _a.eyes) === null || _b === void 0 ? void 0 : _b.abort({ settings, logger }));
43
49
  }
44
- }
45
- catch (error) {
46
- logger.warn('Command "close" received an error during waiting for eyes instances in background', error);
47
- await ((_b = (_a = error.info) === null || _a === void 0 ? void 0 : _a.eyes) === null || _b === void 0 ? void 0 : _b.abort({ settings, logger }));
48
- }
50
+ })();
51
+ item.jobs.push(closePromise);
49
52
  });
50
53
  };
51
54
  }
@@ -12,9 +12,9 @@ const open_eyes_1 = require("./open-eyes");
12
12
  const open_check_and_close_1 = require("./open-check-and-close");
13
13
  const register_default_scripts_1 = require("../ufg/utils/register-default-scripts");
14
14
  const calculate_estimated_time_1 = require("./calculate-estimated-time");
15
- function makeAutonomousCore({ spec, clients, base: defaultBase, asyncCache, agentId = 'core-autonomous', logger: defaultLogger, } = {}) {
15
+ function makeAutonomousCore({ spec, clients, base: defaultBase, asyncCache, fetchConcurrency, agentId = 'core-autonomous', logger: defaultLogger, } = {}) {
16
16
  const logger = (0, logger_1.makeLogger)({ logger: defaultLogger, format: { label: 'core-autonomous' } });
17
- const core = (0, core_1.makeCore)({ spec, clients, base: defaultBase, asyncCache, agentId, logger });
17
+ const core = (0, core_1.makeCore)({ spec, clients, base: defaultBase, asyncCache, fetchConcurrency, agentId, logger });
18
18
  return {
19
19
  type: 'autonomous',
20
20
  takeSnapshots: spec && (0, take_snapshots_1.makeTakeSnapshots)({ core, spec, logger }),
@@ -339,7 +339,9 @@ async function runOfflineSnapshots(options) {
339
339
  },
340
340
  logger: checkLogger,
341
341
  heartbeat: {
342
- processId: processId,
342
+ getOrCreateProcessId() {
343
+ return processId;
344
+ },
343
345
  acquire(settings) {
344
346
  logger.log('acquire | heartbeat is not used (offline)', settings);
345
347
  return processId;
@@ -27,6 +27,7 @@ function makeTakeSnapshots({ core, spec, signal, logger: mainLogger }) {
27
27
  const { elementReferencesToMark, getGeneratedSelectors } = (0, to_generated_selectors_1.toGeneratedSelectors)({
28
28
  elementReferences,
29
29
  logger,
30
+ logDeprecations,
30
31
  // dead code - `transformElementReference` was used for NMG but it's not longer used anywhere
31
32
  transformElementReference: elementReference => { var _a; return ((0, driver_1.isSelector)(elementReference) && ((_a = spec === null || spec === void 0 ? void 0 : spec.toSimpleCommonSelector) === null || _a === void 0 ? void 0 : _a.call(spec, elementReference))) || undefined; },
32
33
  });
@@ -78,6 +79,7 @@ function makeTakeSnapshots({ core, spec, signal, logger: mainLogger }) {
78
79
  }
79
80
  else {
80
81
  // dead code - used for NMG
82
+ logDeprecations('takeSnapshots: taking native snapshots is no longer supported. How did you reach this message? (dead code)');
81
83
  const nmlClient = await core.getNMLClient({
82
84
  driver,
83
85
  settings: { ...account.eyesServer, supportedEnvironmentsUrl: account.supportedEnvironmentsUrl },
@@ -125,6 +127,18 @@ function makeTakeSnapshots({ core, spec, signal, logger: mainLogger }) {
125
127
  title,
126
128
  userAgent,
127
129
  }));
130
+ function logDeprecations(...args) {
131
+ core.logEvent({
132
+ settings: {
133
+ level: 'Error',
134
+ event: {
135
+ type: 'SDK.unreachableCodeReached',
136
+ message: args.join(' '),
137
+ },
138
+ ...account.eyesServer,
139
+ },
140
+ });
141
+ }
128
142
  };
129
143
  }
130
144
  exports.makeTakeSnapshots = makeTakeSnapshots;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toGeneratedSelectors = void 0;
4
- function toGeneratedSelectors({ elementReferences, logger, transformElementReference, }) {
4
+ function toGeneratedSelectors({ elementReferences, logger, transformElementReference, logDeprecations, }) {
5
5
  var _a, _b, _c;
6
6
  const elementReferencesToMark = [
7
7
  (_a = elementReferences.target) !== null && _a !== void 0 ? _a : [],
@@ -51,8 +51,9 @@ function toGeneratedSelectors({ elementReferences, logger, transformElementRefer
51
51
  };
52
52
  });
53
53
  }
54
- else {
54
+ else if (target || scrolling || calculate.length) {
55
55
  // the entire else statement should be a dead code that was used for NMG, will be removed later
56
+ logDeprecations('toGeneratedSelectors: `transformElementReference` was unexpectedly called.');
56
57
  target = elementReferences.target && transformElementReference(elementReferences.target);
57
58
  scrolling = elementReferences.scrolling && transformElementReference(elementReferences.scrolling);
58
59
  calculate = ((_c = elementReferences.calculate) !== null && _c !== void 0 ? _c : []).map(elementReference => {
@@ -61,7 +62,7 @@ function toGeneratedSelectors({ elementReferences, logger, transformElementRefer
61
62
  return { originalSelector: selector, safeSelector: selector };
62
63
  });
63
64
  }
64
- return { target: target, scrolling, calculate };
65
+ return { target, scrolling, calculate };
65
66
  }
66
67
  }
67
68
  exports.toGeneratedSelectors = toGeneratedSelectors;
@@ -47,9 +47,10 @@ function toSafeCheckSettings({ settings }) {
47
47
  const { region, ...options } = utils.types.has(reference, 'region') ? reference : { region: reference };
48
48
  if (isRegion(region))
49
49
  return reference;
50
- const { originalSelector, safeSelector } = selectors.calculate.shift();
51
- if (!safeSelector)
50
+ const selectorInfo = selectors.calculate.shift();
51
+ if (!(selectorInfo === null || selectorInfo === void 0 ? void 0 : selectorInfo.safeSelector))
52
52
  return [];
53
+ const { originalSelector, safeSelector } = selectorInfo;
53
54
  return {
54
55
  region: safeSelector,
55
56
  regionId: utils.types.isString(originalSelector) ? originalSelector : originalSelector === null || originalSelector === void 0 ? void 0 : originalSelector.selector,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/core",
3
- "version": "4.54.1",
3
+ "version": "4.54.3-debug",
4
4
  "homepage": "https://applitools.com",
5
5
  "bugs": {
6
6
  "url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -80,18 +80,18 @@
80
80
  }
81
81
  },
82
82
  "dependencies": {
83
- "@applitools/core-base": "1.31.0",
84
- "@applitools/dom-capture": "11.6.7",
85
- "@applitools/dom-snapshot": "4.15.4",
86
- "@applitools/driver": "1.24.3",
87
- "@applitools/ec-client": "1.12.15",
83
+ "@applitools/core-base": "1.31.1",
84
+ "@applitools/dom-capture": "11.6.8",
85
+ "@applitools/dom-snapshot": "4.15.5",
86
+ "@applitools/driver": "1.24.4",
87
+ "@applitools/ec-client": "1.12.16",
88
88
  "@applitools/logger": "2.2.7",
89
- "@applitools/nml-client": "1.11.13",
89
+ "@applitools/nml-client": "1.11.14",
90
90
  "@applitools/req": "1.8.7",
91
- "@applitools/screenshoter": "3.12.10",
91
+ "@applitools/screenshoter": "3.12.11",
92
92
  "@applitools/snippets": "2.7.0",
93
93
  "@applitools/socket": "1.3.8",
94
- "@applitools/spec-driver-webdriver": "1.5.3",
94
+ "@applitools/spec-driver-webdriver": "1.5.4",
95
95
  "@applitools/ufg-client": "1.18.3",
96
96
  "@applitools/utils": "1.14.1",
97
97
  "@types/ws": "8.5.5",
@@ -107,8 +107,8 @@
107
107
  "devDependencies": {
108
108
  "@applitools/bongo": "^5.10.0",
109
109
  "@applitools/sea": "^1.0.0",
110
- "@applitools/spec-driver-puppeteer": "^1.6.9",
111
- "@applitools/spec-driver-selenium": "^1.7.9",
110
+ "@applitools/spec-driver-puppeteer": "^1.6.10",
111
+ "@applitools/spec-driver-selenium": "^1.7.10",
112
112
  "@applitools/test-server": "^1.3.5",
113
113
  "@applitools/test-utils": "^1.5.17",
114
114
  "@applitools/tunnel-client": "^1.11.5",
@@ -12,8 +12,9 @@ type Options<TSpec extends SpecType> = {
12
12
  };
13
13
  base?: BaseCore;
14
14
  asyncCache?: AsyncCache;
15
+ fetchConcurrency?: number;
15
16
  agentId?: string;
16
17
  logger?: Logger;
17
18
  };
18
- export declare function makeAutonomousCore<TSpec extends SpecType>({ spec, clients, base: defaultBase, asyncCache, agentId, logger: defaultLogger, }?: Options<TSpec>): AutonomousCore<TSpec>;
19
+ export declare function makeAutonomousCore<TSpec extends SpecType>({ spec, clients, base: defaultBase, asyncCache, fetchConcurrency, agentId, logger: defaultLogger, }?: Options<TSpec>): AutonomousCore<TSpec>;
19
20
  export {};
@@ -1,7 +1,7 @@
1
1
  import { type SpecType, type ElementReference } from '@applitools/driver';
2
2
  import type { Logger } from '@applitools/logger';
3
3
  import { type Selector as UFGSelector } from '@applitools/ufg-client';
4
- export declare function toGeneratedSelectors<TSpec extends SpecType>({ elementReferences, logger, transformElementReference, }: {
4
+ export declare function toGeneratedSelectors<TSpec extends SpecType>({ elementReferences, logger, transformElementReference, logDeprecations, }: {
5
5
  elementReferences: {
6
6
  target?: ElementReference<TSpec>;
7
7
  scrolling?: ElementReference<TSpec>;
@@ -9,6 +9,7 @@ export declare function toGeneratedSelectors<TSpec extends SpecType>({ elementRe
9
9
  };
10
10
  transformElementReference: (elementReference: ElementReference<TSpec>) => UFGSelector | undefined;
11
11
  logger: Logger;
12
+ logDeprecations: (...args: string[]) => void;
12
13
  }): {
13
14
  elementReferencesToMark: (string | TSpec["element"] | TSpec["secondary"]["element"] | TSpec["selector"] | TSpec["secondary"]["selector"] | {
14
15
  selector: string | TSpec["selector"] | TSpec["secondary"]["selector"];