@applitools/core 4.54.2 → 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,12 @@
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
+
3
10
  ## [4.54.2](https://github.com/Applitools-Dev/sdk/compare/js/core@4.54.1...js/core@4.54.2) (2026-01-11)
4
11
 
5
12
 
@@ -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 }),
@@ -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.2",
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"
@@ -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"];