@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 +7 -0
- package/dist/automation/close.js +15 -12
- package/dist/autonomous/core.js +2 -2
- package/dist/ufg/take-snapshots.js +14 -0
- package/dist/ufg/utils/to-generated-selectors.js +4 -3
- package/dist/ufg/utils/to-safe-check-settings.js +3 -2
- package/package.json +1 -1
- package/types/autonomous/core.d.ts +2 -1
- package/types/ufg/utils/to-generated-selectors.d.ts +2 -1
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
|
|
package/dist/automation/close.js
CHANGED
|
@@ -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(
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
}
|
package/dist/autonomous/core.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
@@ -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"];
|