@applitools/core 1.3.7 → 1.4.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.
- package/dist/classic/abort.js +13 -0
- package/dist/classic/close.js +13 -0
- package/dist/classic/open-eyes.js +5 -0
- package/dist/core.js +2 -0
- package/dist/make-eg-client.js +43 -0
- package/dist/ufg/abort.js +6 -3
- package/dist/ufg/check.js +15 -11
- package/dist/ufg/close.js +5 -2
- package/dist/ufg/open-eyes.js +11 -6
- package/dist/ufg/utils/add-key-to-duplicated-values-in-array.js +20 -0
- package/package.json +18 -16
- package/types/classic/abort.d.ts +16 -0
- package/types/classic/close.d.ts +16 -0
- package/types/make-eg-client.d.ts +12 -0
- package/types/types.d.ts +5 -0
- package/types/ufg/abort.d.ts +8 -3
- package/types/ufg/close.d.ts +6 -2
- package/types/ufg/utils/add-key-to-duplicated-values-in-array.d.ts +3 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeAbort = void 0;
|
|
4
|
+
const driver_1 = require("@applitools/driver");
|
|
5
|
+
function makeAbort({ eyes, target, spec, logger: defaultLogger, }) {
|
|
6
|
+
return async function ({ settings, logger = defaultLogger, } = {}) {
|
|
7
|
+
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
8
|
+
const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
|
|
9
|
+
const [baseEyes] = await eyes.getBaseEyes();
|
|
10
|
+
return await baseEyes.abort({ settings: { ...settings, testMetadata }, logger });
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
exports.makeAbort = makeAbort;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeClose = void 0;
|
|
4
|
+
const driver_1 = require("@applitools/driver");
|
|
5
|
+
function makeClose({ eyes, target, spec, logger: defaultLogger, }) {
|
|
6
|
+
return async function ({ settings, logger = defaultLogger, } = {}) {
|
|
7
|
+
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
8
|
+
const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
|
|
9
|
+
const baseEyes = await eyes.getBaseEyes();
|
|
10
|
+
return (await Promise.all(baseEyes.map(baseEyes => baseEyes.close({ settings: { ...settings, testMetadata }, logger })))).flat();
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
exports.makeClose = makeClose;
|
|
@@ -30,6 +30,8 @@ const check_1 = require("./check");
|
|
|
30
30
|
const check_and_close_1 = require("./check-and-close");
|
|
31
31
|
const locate_text_1 = require("./locate-text");
|
|
32
32
|
const extract_text_1 = require("./extract-text");
|
|
33
|
+
const close_1 = require("./close");
|
|
34
|
+
const abort_1 = require("./abort");
|
|
33
35
|
const utils = __importStar(require("@applitools/utils"));
|
|
34
36
|
function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
|
|
35
37
|
return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
|
|
@@ -40,6 +42,7 @@ function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
|
|
|
40
42
|
if (driver && !eyes) {
|
|
41
43
|
const currentContext = driver.currentContext;
|
|
42
44
|
(_a = settings.environment) !== null && _a !== void 0 ? _a : (settings.environment = {});
|
|
45
|
+
settings.environment.egSessionId = (driver === null || driver === void 0 ? void 0 : driver.isExecutionGrid) ? driver.sessionId : null;
|
|
43
46
|
if (!settings.environment.viewportSize || driver.isMobile) {
|
|
44
47
|
const size = await driver.getViewportSize();
|
|
45
48
|
settings.environment.viewportSize = utils.geometry.scale(size, driver.viewportScale);
|
|
@@ -83,6 +86,8 @@ function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
|
|
|
83
86
|
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, spec, logger }),
|
|
84
87
|
locateText: (0, locate_text_1.makeLocateText)({ eyes, target: driver, spec, logger }),
|
|
85
88
|
extractText: (0, extract_text_1.makeExtractText)({ eyes, target: driver, spec, logger }),
|
|
89
|
+
close: (0, close_1.makeClose)({ eyes, target: driver, spec, logger }),
|
|
90
|
+
abort: (0, abort_1.makeAbort)({ eyes, target: driver, spec, logger }),
|
|
86
91
|
}));
|
|
87
92
|
};
|
|
88
93
|
}
|
package/dist/core.js
CHANGED
|
@@ -33,6 +33,7 @@ const open_eyes_1 = require("./open-eyes");
|
|
|
33
33
|
const make_manager_1 = require("./make-manager");
|
|
34
34
|
const close_batch_1 = require("./close-batch");
|
|
35
35
|
const delete_test_1 = require("./delete-test");
|
|
36
|
+
const make_eg_client_1 = require("./make-eg-client");
|
|
36
37
|
const utils = __importStar(require("@applitools/utils"));
|
|
37
38
|
function makeCore({ spec, concurrency, core, agentId = 'core', cwd = process.cwd(), logger, } = {}) {
|
|
38
39
|
var _a;
|
|
@@ -50,6 +51,7 @@ function makeCore({ spec, concurrency, core, agentId = 'core', cwd = process.cwd
|
|
|
50
51
|
makeManager: (0, make_manager_1.makeMakeManager)({ spec, concurrency, agentId, logger }),
|
|
51
52
|
closeBatch: (0, close_batch_1.makeCloseBatch)({ core, logger }),
|
|
52
53
|
deleteTest: (0, delete_test_1.makeDeleteTest)({ core, logger }),
|
|
54
|
+
makeEGClient: (0, make_eg_client_1.makeMakeEGClient)({ core, logger }),
|
|
53
55
|
});
|
|
54
56
|
}
|
|
55
57
|
exports.makeCore = makeCore;
|
|
@@ -0,0 +1,43 @@
|
|
|
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.makeMakeEGClient = void 0;
|
|
27
|
+
const execution_grid_client_1 = require("@applitools/execution-grid-client");
|
|
28
|
+
const utils = __importStar(require("@applitools/utils"));
|
|
29
|
+
function makeMakeEGClient({ core, logger: defaultLogger }) {
|
|
30
|
+
return async function _makeEGClient({ settings, logger = defaultLogger, } = {}) {
|
|
31
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
32
|
+
var _j, _k;
|
|
33
|
+
const serverUrl = (_c = (_b = (_a = settings.capabilities.eyesServerUrl) !== null && _a !== void 0 ? _a : utils.general.getEnvValue('EYES_SERVER_URL')) !== null && _b !== void 0 ? _b : utils.general.getEnvValue('SERVER_URL')) !== null && _c !== void 0 ? _c : 'https://eyesapi.applitools.com';
|
|
34
|
+
const apiKey = ((_d = (_j = settings.capabilities).apiKey) !== null && _d !== void 0 ? _d : (_j.apiKey = utils.general.getEnvValue('API_KEY')));
|
|
35
|
+
const proxy = (_e = settings.proxy) !== null && _e !== void 0 ? _e : (utils.general.getEnvValue('PROXY_URL') && { url: utils.general.getEnvValue('PROXY_URL') });
|
|
36
|
+
const _account = await core.getAccountInfo({ settings: { serverUrl, apiKey, proxy }, logger });
|
|
37
|
+
(_f = settings.capabilities) !== null && _f !== void 0 ? _f : (settings.capabilities = {});
|
|
38
|
+
(_g = (_k = settings.capabilities).useSelfHealing) !== null && _g !== void 0 ? _g : (_k.useSelfHealing = (_h = utils.general.getEnvValue('USE_SELF_HEALING', 'boolean')) !== null && _h !== void 0 ? _h : false); // TODO replace with account.selfHealingEnabled
|
|
39
|
+
const client = await (0, execution_grid_client_1.makeEGClient)({ settings, logger });
|
|
40
|
+
return client;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
exports.makeMakeEGClient = makeMakeEGClient;
|
package/dist/ufg/abort.js
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeAbort = void 0;
|
|
4
4
|
const abort_error_1 = require("../errors/abort-error");
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const driver_1 = require("@applitools/driver");
|
|
6
|
+
function makeAbort({ storage, target, spec, controller, logger: defaultLogger, }) {
|
|
7
|
+
return async function ({ settings, logger = defaultLogger, } = {}) {
|
|
7
8
|
controller.abort();
|
|
8
9
|
const tests = storage.reduce((tests, { renderer, promise }) => {
|
|
9
10
|
const key = JSON.stringify(renderer);
|
|
@@ -26,7 +27,9 @@ function makeAbort({ storage, controller, logger: defaultLogger }) {
|
|
|
26
27
|
throw error;
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
const
|
|
30
|
+
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
31
|
+
const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
|
|
32
|
+
const [result] = await eyes.abort({ settings: { ...settings, testMetadata }, logger });
|
|
30
33
|
return { ...result, renderer };
|
|
31
34
|
}));
|
|
32
35
|
};
|
package/dist/ufg/check.js
CHANGED
|
@@ -34,10 +34,11 @@ const to_base_check_settings_1 = require("../utils/to-base-check-settings");
|
|
|
34
34
|
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
|
+
const add_key_to_duplicated_values_in_array_1 = __importDefault(require("./utils/add-key-to-duplicated-values-in-array"));
|
|
37
38
|
const chalk_1 = __importDefault(require("chalk"));
|
|
38
39
|
function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger: defaultLogger, }) {
|
|
39
40
|
return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
|
|
40
|
-
var _a, _b, _c;
|
|
41
|
+
var _a, _b, _c, _d;
|
|
41
42
|
logger.log('Command "check" is called with settings', settings);
|
|
42
43
|
if (signal.aborted) {
|
|
43
44
|
logger.warn('Command "check" was called after test was already aborted');
|
|
@@ -45,12 +46,13 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
45
46
|
}
|
|
46
47
|
const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
|
|
47
48
|
let snapshots, snapshotUrl, snapshotTitle, userAgent, regionToTarget, selectorsToCalculate;
|
|
49
|
+
const uniqueRenderers = (0, add_key_to_duplicated_values_in_array_1.default)((_a = settings.renderers) !== null && _a !== void 0 ? _a : []);
|
|
48
50
|
if ((0, driver_1.isDriver)(target, spec)) {
|
|
49
51
|
const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
|
|
50
|
-
await driver.currentContext.setScrollingElement((
|
|
51
|
-
if (driver.isWeb &&
|
|
52
|
+
await driver.currentContext.setScrollingElement((_b = settings.scrollRootElement) !== null && _b !== void 0 ? _b : null);
|
|
53
|
+
if (driver.isWeb && uniqueRenderers.length === 0) {
|
|
52
54
|
const viewportSize = await driver.getViewportSize();
|
|
53
|
-
|
|
55
|
+
uniqueRenderers.push({ name: 'chrome', ...viewportSize });
|
|
54
56
|
}
|
|
55
57
|
let cleanupGeneratedSelectors;
|
|
56
58
|
if (driver.isWeb) {
|
|
@@ -61,7 +63,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
61
63
|
});
|
|
62
64
|
cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
|
|
63
65
|
if (elementReferenceToTarget) {
|
|
64
|
-
regionToTarget = (
|
|
66
|
+
regionToTarget = (_c = generated.selectors[0]) === null || _c === void 0 ? void 0 : _c.safeSelector;
|
|
65
67
|
if (!regionToTarget)
|
|
66
68
|
throw new Error('Target element not found');
|
|
67
69
|
selectorsToCalculate = generated.selectors.slice(1);
|
|
@@ -78,7 +80,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
78
80
|
waitBeforeCapture: settings.waitBeforeCapture,
|
|
79
81
|
disableBrowserFetching: settings.disableBrowserFetching,
|
|
80
82
|
layoutBreakpoints: settings.layoutBreakpoints,
|
|
81
|
-
renderers:
|
|
83
|
+
renderers: uniqueRenderers,
|
|
82
84
|
skipResources: client.getCachedResourceUrls(),
|
|
83
85
|
},
|
|
84
86
|
hooks: {
|
|
@@ -104,15 +106,15 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
104
106
|
await (cleanupGeneratedSelectors === null || cleanupGeneratedSelectors === void 0 ? void 0 : cleanupGeneratedSelectors());
|
|
105
107
|
}
|
|
106
108
|
else {
|
|
107
|
-
snapshots = !utils.types.isArray(target) ? Array(
|
|
109
|
+
snapshots = !utils.types.isArray(target) ? Array(uniqueRenderers.length).fill(target) : target;
|
|
108
110
|
snapshotUrl = utils.types.has(snapshots[0], 'url') ? snapshots[0].url : undefined;
|
|
109
111
|
}
|
|
110
|
-
regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (
|
|
112
|
+
regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_d = elementReferenceToTarget) !== null && _d !== void 0 ? _d : settings.region);
|
|
111
113
|
selectorsToCalculate !== null && selectorsToCalculate !== void 0 ? selectorsToCalculate : (selectorsToCalculate = elementReferencesToCalculate.map(selector => ({
|
|
112
114
|
originalSelector: selector,
|
|
113
115
|
safeSelector: selector,
|
|
114
116
|
})));
|
|
115
|
-
const promises =
|
|
117
|
+
const promises = uniqueRenderers.map(async (renderer, index) => {
|
|
116
118
|
if (utils.types.has(renderer, 'name') && renderer.name === 'edge') {
|
|
117
119
|
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.`);
|
|
118
120
|
logger.console.log(message);
|
|
@@ -193,7 +195,9 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
193
195
|
return { ...result, eyes: baseEyes, renderer };
|
|
194
196
|
}
|
|
195
197
|
catch (error) {
|
|
196
|
-
await
|
|
198
|
+
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
199
|
+
const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
|
|
200
|
+
await baseEyes.abort({ settings: { testMetadata } });
|
|
197
201
|
error.info = { eyes: baseEyes };
|
|
198
202
|
throw error;
|
|
199
203
|
}
|
|
@@ -203,7 +207,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
203
207
|
throw error;
|
|
204
208
|
}
|
|
205
209
|
});
|
|
206
|
-
return
|
|
210
|
+
return uniqueRenderers.map((renderer, index) => ({
|
|
207
211
|
asExpected: true,
|
|
208
212
|
userTestId: eyes.test.userTestId,
|
|
209
213
|
renderer,
|
package/dist/ufg/close.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeClose = void 0;
|
|
4
|
-
|
|
4
|
+
const driver_1 = require("@applitools/driver");
|
|
5
|
+
function makeClose({ storage, target, spec, logger: defaultLogger, }) {
|
|
5
6
|
return async function ({ settings, logger = defaultLogger, } = {}) {
|
|
6
7
|
const tests = storage.reduce((tests, { renderer, promise }) => {
|
|
7
8
|
var _a;
|
|
@@ -14,7 +15,9 @@ function makeClose({ storage, logger: defaultLogger }) {
|
|
|
14
15
|
var _a, _b;
|
|
15
16
|
try {
|
|
16
17
|
const [{ eyes, renderer }] = await Promise.all(promises);
|
|
17
|
-
const
|
|
18
|
+
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
19
|
+
const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
|
|
20
|
+
const [result] = await eyes.close({ settings: { ...settings, testMetadata }, logger });
|
|
18
21
|
return { ...result, renderer };
|
|
19
22
|
}
|
|
20
23
|
catch (error) {
|
package/dist/ufg/open-eyes.js
CHANGED
|
@@ -35,12 +35,14 @@ const abort_controller_1 = require("abort-controller");
|
|
|
35
35
|
const utils = __importStar(require("@applitools/utils"));
|
|
36
36
|
function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
|
|
37
37
|
return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
|
|
38
|
-
var _a, _b;
|
|
38
|
+
var _a, _b, _c;
|
|
39
39
|
logger.log(`Command "openEyes" is called with ${target ? 'default driver and' : ''}`, ...(settings ? ['settings', settings] : []), eyes ? 'predefined eyes' : '');
|
|
40
40
|
const driver = target && (await (0, driver_1.makeDriver)({ spec, driver: target, logger, customConfig: { disableHelper: true } }));
|
|
41
|
+
(_a = settings.environment) !== null && _a !== void 0 ? _a : (settings.environment = {});
|
|
42
|
+
settings.environment.egSessionId = (driver === null || driver === void 0 ? void 0 : driver.isExecutionGrid) ? driver.sessionId : null;
|
|
41
43
|
if (driver && !eyes) {
|
|
42
44
|
const currentContext = driver.currentContext;
|
|
43
|
-
if ((
|
|
45
|
+
if ((_b = settings.environment) === null || _b === void 0 ? void 0 : _b.viewportSize) {
|
|
44
46
|
await driver.setViewportSize(settings.environment.viewportSize);
|
|
45
47
|
}
|
|
46
48
|
await currentContext.focus();
|
|
@@ -49,7 +51,7 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
|
|
|
49
51
|
const account = await core.getAccountInfo({ settings, logger });
|
|
50
52
|
client !== null && client !== void 0 ? client : (client = (0, ufg_client_1.makeUFGClient)({
|
|
51
53
|
config: { ...account.ufg, ...account, proxy: settings.proxy },
|
|
52
|
-
concurrency: (
|
|
54
|
+
concurrency: (_c = settings.renderConcurrency) !== null && _c !== void 0 ? _c : 5,
|
|
53
55
|
logger,
|
|
54
56
|
}));
|
|
55
57
|
const getBaseEyes = (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, core, client, logger });
|
|
@@ -80,19 +82,22 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
|
|
|
80
82
|
// check with indexing and storage
|
|
81
83
|
check: utils.general.wrap((0, check_1.makeCheck)({ eyes, client, target: driver, spec, signal: controller.signal, logger }), async (check, options = {}) => {
|
|
82
84
|
const results = await check(options);
|
|
83
|
-
storage.push(...results.map(result => ({
|
|
85
|
+
storage.push(...results.map(result => ({
|
|
86
|
+
promise: result.promise,
|
|
87
|
+
renderer: result.renderer,
|
|
88
|
+
})));
|
|
84
89
|
return results;
|
|
85
90
|
}),
|
|
86
91
|
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, client, target: driver, spec, signal: controller.signal, logger }),
|
|
87
92
|
// close only once
|
|
88
|
-
close: utils.general.wrap((0, close_1.makeClose)({ storage, logger }), async (close, options) => {
|
|
93
|
+
close: utils.general.wrap((0, close_1.makeClose)({ storage, target: driver, logger }), async (close, options) => {
|
|
89
94
|
if (closed || aborted)
|
|
90
95
|
return [];
|
|
91
96
|
closed = true;
|
|
92
97
|
return close(options);
|
|
93
98
|
}),
|
|
94
99
|
// abort only once
|
|
95
|
-
abort: utils.general.wrap((0, abort_1.makeAbort)({ storage, controller, logger }), async (abort, options) => {
|
|
100
|
+
abort: utils.general.wrap((0, abort_1.makeAbort)({ storage, target: driver, spec, controller, logger }), async (abort, options) => {
|
|
96
101
|
if (aborted || closed)
|
|
97
102
|
return [];
|
|
98
103
|
aborted = true;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function addKeyToDuplicatedValuesInArray(array) {
|
|
4
|
+
const result = [];
|
|
5
|
+
const duplicates = new Map();
|
|
6
|
+
for (const value of array) {
|
|
7
|
+
let index = 0;
|
|
8
|
+
const key = JSON.stringify(value);
|
|
9
|
+
if (duplicates.has(key)) {
|
|
10
|
+
index = duplicates.get(key) + 1;
|
|
11
|
+
result.push({ ...value, id: `${typeof value.id !== 'undefined' ? value.id + '-' : ''}${index}` });
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
result.push(value);
|
|
15
|
+
}
|
|
16
|
+
duplicates.set(key, index);
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
exports.default = addKeyToDuplicatedValuesInArray;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"homepage": "https://applitools.com",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
@@ -61,30 +61,32 @@
|
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@applitools/core-base": "1.1.
|
|
64
|
+
"@applitools/core-base": "1.1.29",
|
|
65
65
|
"@applitools/dom-capture": "11.2.0",
|
|
66
66
|
"@applitools/dom-snapshot": "4.7.3",
|
|
67
|
-
"@applitools/driver": "1.11.
|
|
68
|
-
"@applitools/
|
|
69
|
-
"@applitools/
|
|
70
|
-
"@applitools/
|
|
71
|
-
"@applitools/
|
|
72
|
-
"@applitools/
|
|
73
|
-
"@applitools/
|
|
74
|
-
"@applitools/
|
|
67
|
+
"@applitools/driver": "1.11.25",
|
|
68
|
+
"@applitools/execution-grid-client": "1.2.2",
|
|
69
|
+
"@applitools/logger": "1.1.40",
|
|
70
|
+
"@applitools/nml-client": "1.3.26",
|
|
71
|
+
"@applitools/req": "1.1.27",
|
|
72
|
+
"@applitools/screenshoter": "3.7.22",
|
|
73
|
+
"@applitools/snippets": "2.4.13",
|
|
74
|
+
"@applitools/ufg-client": "1.1.18",
|
|
75
|
+
"@applitools/utils": "1.3.26",
|
|
75
76
|
"abort-controller": "3.0.0",
|
|
76
77
|
"chalk": "4.1.2",
|
|
77
78
|
"node-fetch": "2.6.7",
|
|
78
79
|
"throat": "6.0.1"
|
|
79
80
|
},
|
|
80
81
|
"devDependencies": {
|
|
81
|
-
"@applitools/bongo": "^2.2.
|
|
82
|
+
"@applitools/bongo": "^2.2.2",
|
|
83
|
+
"@applitools/execution-grid-client": "^1.1.39",
|
|
82
84
|
"@applitools/sdk-fake-eyes-server": "^2.1.3",
|
|
83
|
-
"@applitools/spec-driver-puppeteer": "^1.1.
|
|
84
|
-
"@applitools/spec-driver-selenium": "^1.5.
|
|
85
|
-
"@applitools/spec-driver-webdriverio": "^1.4.
|
|
86
|
-
"@applitools/test-server": "^1.1.
|
|
87
|
-
"@applitools/test-utils": "^1.5.
|
|
85
|
+
"@applitools/spec-driver-puppeteer": "^1.1.36",
|
|
86
|
+
"@applitools/spec-driver-selenium": "^1.5.23",
|
|
87
|
+
"@applitools/spec-driver-webdriverio": "^1.4.20",
|
|
88
|
+
"@applitools/test-server": "^1.1.20",
|
|
89
|
+
"@applitools/test-utils": "^1.5.8",
|
|
88
90
|
"@types/mocha": "^9.1.1",
|
|
89
91
|
"@types/node": "12",
|
|
90
92
|
"@types/selenium-webdriver": "^4.1.2",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AbortSettings, TestResult } from './types';
|
|
2
|
+
import type { Eyes } from './types';
|
|
3
|
+
import { type Logger } from '@applitools/logger';
|
|
4
|
+
import type { DriverTarget } from './types';
|
|
5
|
+
import { type SpecDriver } from '@applitools/driver';
|
|
6
|
+
type Options<TDriver, TContext, TElement, TSelector> = {
|
|
7
|
+
eyes: Eyes<TDriver, TContext, TElement, TSelector>;
|
|
8
|
+
target?: DriverTarget<TDriver, TContext, TElement, TSelector>;
|
|
9
|
+
spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
10
|
+
logger: Logger;
|
|
11
|
+
};
|
|
12
|
+
export declare function makeAbort<TDriver, TContext, TElement, TSelector>({ eyes, target, spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ settings, logger, }?: {
|
|
13
|
+
settings?: AbortSettings;
|
|
14
|
+
logger?: Logger;
|
|
15
|
+
}) => Promise<TestResult[]>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CloseSettings, TestResult } from './types';
|
|
2
|
+
import type { Eyes } from './types';
|
|
3
|
+
import { type Logger } from '@applitools/logger';
|
|
4
|
+
import type { DriverTarget } from './types';
|
|
5
|
+
import { type SpecDriver } from '@applitools/driver';
|
|
6
|
+
type Options<TDriver, TContext, TElement, TSelector> = {
|
|
7
|
+
eyes: Eyes<TDriver, TContext, TElement, TSelector>;
|
|
8
|
+
target?: DriverTarget<TDriver, TContext, TElement, TSelector>;
|
|
9
|
+
spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
10
|
+
logger: Logger;
|
|
11
|
+
};
|
|
12
|
+
export declare function makeClose<TDriver, TContext, TElement, TSelector>({ eyes, target, spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ settings, logger, }?: {
|
|
13
|
+
settings?: CloseSettings;
|
|
14
|
+
logger?: Logger;
|
|
15
|
+
}) => Promise<TestResult[]>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Core as BaseCore } from '@applitools/core-base';
|
|
2
|
+
import { type Logger } from '@applitools/logger';
|
|
3
|
+
import { type EGClient, type EGClientSettings } from '@applitools/execution-grid-client';
|
|
4
|
+
type Options = {
|
|
5
|
+
core: BaseCore;
|
|
6
|
+
logger: Logger;
|
|
7
|
+
};
|
|
8
|
+
export declare function makeMakeEGClient({ core, logger: defaultLogger }: Options): ({ settings, logger, }?: {
|
|
9
|
+
settings?: EGClientSettings;
|
|
10
|
+
logger?: Logger;
|
|
11
|
+
}) => Promise<EGClient>;
|
|
12
|
+
export {};
|
package/types/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MaybeArray } from '@applitools/utils';
|
|
2
|
+
import type { EGClient } from '@applitools/execution-grid-client';
|
|
2
3
|
import type * as AutomationCore from './automation/types';
|
|
3
4
|
import type * as ClassicCore from './classic/types';
|
|
4
5
|
import type * as UFGCore from './ufg/types';
|
|
@@ -10,6 +11,10 @@ export type TypedCore<TDriver, TContext, TElement, TSelector, TType extends 'cla
|
|
|
10
11
|
export type TypedEyes<TDriver, TContext, TElement, TSelector, TType extends 'classic' | 'ufg', TTarget = Target<TDriver, TContext, TElement, TSelector, TType>> = TType extends 'ufg' ? UFGCore.Eyes<TDriver, TContext, TElement, TSelector, TTarget> : ClassicCore.Eyes<TDriver, TContext, TElement, TSelector, TTarget>;
|
|
11
12
|
export type Target<TDriver, TContext, TElement, TSelector, TType extends 'classic' | 'ufg'> = TType extends 'ufg' ? UFGCore.UFGTarget<TDriver, TContext, TElement, TSelector> : ClassicCore.ClassicTarget<TDriver, TContext, TElement, TSelector>;
|
|
12
13
|
export interface Core<TDriver, TContext, TElement, TSelector> extends AutomationCore.Core<TDriver, TContext, TElement, TSelector> {
|
|
14
|
+
makeEGClient(options?: {
|
|
15
|
+
settings?: any;
|
|
16
|
+
logger?: Logger;
|
|
17
|
+
}): Promise<EGClient>;
|
|
13
18
|
makeManager<TType extends 'classic' | 'ufg' = 'classic'>(options?: {
|
|
14
19
|
type: TType;
|
|
15
20
|
concurrency?: TType extends 'ufg' ? number : never;
|
package/types/ufg/abort.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { TestResult } from './types';
|
|
1
|
+
import type { AbortSettings, TestResult } from './types';
|
|
2
2
|
import type { Eyes as BaseEyes } from '@applitools/core-base';
|
|
3
3
|
import { type Logger } from '@applitools/logger';
|
|
4
4
|
import { type Renderer } from '@applitools/ufg-client';
|
|
5
5
|
import { type AbortController } from 'abort-controller';
|
|
6
|
-
type
|
|
6
|
+
import type { DriverTarget } from './types';
|
|
7
|
+
import { type SpecDriver } from '@applitools/driver';
|
|
8
|
+
type Options<TDriver, TContext, TElement, TSelector> = {
|
|
7
9
|
storage: {
|
|
8
10
|
renderer: Renderer;
|
|
9
11
|
promise: Promise<{
|
|
@@ -12,9 +14,12 @@ type Options = {
|
|
|
12
14
|
}>;
|
|
13
15
|
}[];
|
|
14
16
|
controller: AbortController;
|
|
17
|
+
target?: DriverTarget<TDriver, TContext, TElement, TSelector>;
|
|
18
|
+
spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
15
19
|
logger: Logger;
|
|
16
20
|
};
|
|
17
|
-
export declare function makeAbort({ storage, controller, logger: defaultLogger }: Options): ({ logger, }?: {
|
|
21
|
+
export declare function makeAbort<TDriver, TContext, TElement, TSelector>({ storage, target, spec, controller, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ settings, logger, }?: {
|
|
22
|
+
settings?: AbortSettings;
|
|
18
23
|
logger?: Logger;
|
|
19
24
|
}) => Promise<TestResult[]>;
|
|
20
25
|
export {};
|
package/types/ufg/close.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import type { CloseSettings, TestResult } from './types';
|
|
|
2
2
|
import type { Eyes as BaseEyes } from '@applitools/core-base';
|
|
3
3
|
import { type Logger } from '@applitools/logger';
|
|
4
4
|
import { type Renderer } from '@applitools/ufg-client';
|
|
5
|
-
type
|
|
5
|
+
import type { DriverTarget } from './types';
|
|
6
|
+
import { type SpecDriver } from '@applitools/driver';
|
|
7
|
+
type Options<TDriver, TContext, TElement, TSelector> = {
|
|
6
8
|
storage: {
|
|
7
9
|
renderer: Renderer;
|
|
8
10
|
promise: Promise<{
|
|
@@ -10,9 +12,11 @@ type Options = {
|
|
|
10
12
|
renderer: Renderer;
|
|
11
13
|
}>;
|
|
12
14
|
}[];
|
|
15
|
+
target?: DriverTarget<TDriver, TContext, TElement, TSelector>;
|
|
16
|
+
spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
13
17
|
logger: Logger;
|
|
14
18
|
};
|
|
15
|
-
export declare function makeClose({ storage, logger: defaultLogger }: Options): ({ settings, logger, }?: {
|
|
19
|
+
export declare function makeClose<TDriver, TContext, TElement, TSelector>({ storage, target, spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ settings, logger, }?: {
|
|
16
20
|
settings?: CloseSettings;
|
|
17
21
|
logger?: Logger;
|
|
18
22
|
}) => Promise<TestResult[]>;
|