@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.
- package/CHANGELOG.md +135 -0
- package/dist/abort.js +3 -3
- package/dist/automation/abort.js +7 -7
- package/dist/automation/close.js +7 -7
- package/dist/automation/get-results.js +2 -2
- package/dist/automation/utils/{extract-renderer-key.js → to-environment-key.js} +4 -8
- package/dist/automation/utils/uniquify-environments.js +27 -0
- package/dist/classic/check-and-close.js +36 -35
- package/dist/classic/check.js +36 -35
- package/dist/classic/get-base-eyes.js +3 -12
- package/dist/classic/open-eyes.js +7 -7
- package/dist/classic/utils/extract-default-environments.js +70 -0
- package/dist/classic/utils/take-screenshots.js +1 -1
- package/dist/close-batch.js +3 -3
- package/dist/close.js +3 -3
- package/dist/core.js +2 -2
- package/dist/delete-test.js +3 -3
- package/dist/extract-text.js +3 -3
- package/dist/get-account-info.js +3 -3
- package/dist/get-manager-results.js +1 -1
- package/dist/locate-text.js +3 -3
- package/dist/locate.js +3 -3
- package/dist/log-event.js +3 -3
- package/dist/open-eyes.js +18 -18
- package/dist/ufg/check-and-close.js +39 -39
- package/dist/ufg/check.js +39 -39
- package/dist/ufg/get-base-eyes.js +4 -4
- package/dist/ufg/open-eyes.js +5 -5
- package/dist/ufg/utils/{extract-default-renderers.js → extract-default-environment.js} +3 -3
- package/dist/ufg/utils/take-dom-snapshots.js +17 -17
- package/dist/universal/core-server.js +12 -13
- package/dist/utils/{extract-environment.js → extract-test-environment.js} +3 -3
- package/package.json +28 -25
- package/types/abort.d.ts +3 -3
- package/types/automation/abort.d.ts +3 -3
- package/types/automation/close.d.ts +3 -3
- package/types/automation/types.d.ts +23 -26
- package/types/automation/utils/to-environment-key.d.ts +2 -0
- package/types/automation/utils/uniquify-environments.d.ts +2 -0
- package/types/classic/check-and-close.d.ts +5 -5
- package/types/classic/check.d.ts +3 -3
- package/types/classic/utils/extract-default-environments.d.ts +9 -0
- package/types/classic/utils/take-screenshots.d.ts +2 -2
- package/types/close.d.ts +3 -3
- package/types/get-typed-eyes.d.ts +1 -4
- package/types/types.d.ts +1 -1
- package/types/ufg/check-and-close.d.ts +5 -5
- package/types/ufg/check.d.ts +3 -3
- package/types/ufg/core.d.ts +1 -1
- package/types/ufg/utils/extract-default-environment.d.ts +5 -0
- package/types/ufg/utils/take-dom-snapshots.d.ts +3 -4
- package/types/utils/extract-test-environment.d.ts +2 -0
- package/dist/automation/utils/uniquify-renderers.js +0 -27
- package/dist/classic/utils/extract-default-renderers.js +0 -72
- package/types/automation/utils/extract-renderer-key.d.ts +0 -2
- package/types/automation/utils/uniquify-renderers.d.ts +0 -2
- package/types/classic/utils/extract-default-renderers.d.ts +0 -9
- package/types/ufg/utils/extract-default-renderers.d.ts +0 -5
- 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
|
|
34
|
-
const
|
|
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,
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
131
|
-
var _a;
|
|
132
|
-
const
|
|
133
|
-
const
|
|
134
|
-
if (utils.types.has(
|
|
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
|
-
|
|
136
|
+
environmentLogger.console.log(message);
|
|
137
137
|
}
|
|
138
138
|
try {
|
|
139
139
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
140
|
-
|
|
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(
|
|
151
|
-
|
|
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
|
-
|
|
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:
|
|
166
|
+
logger: environmentLogger,
|
|
167
167
|
});
|
|
168
|
-
const baseEyes = await eyes.getBaseEyes({ settings: {
|
|
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
|
-
|
|
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
|
-
|
|
176
|
-
throw new abort_error_1.AbortError(`Render on environment with id "${baseEyes.test.
|
|
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
|
-
|
|
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
|
-
|
|
185
|
-
throw new abort_error_1.AbortError(`Render on environment with id "${baseEyes.test.
|
|
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
|
-
|
|
196
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
219
|
-
throw new abort_error_1.AbortError(`Render on environment with id "${baseEyes.test.
|
|
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:
|
|
224
|
+
logger: environmentLogger,
|
|
225
225
|
});
|
|
226
226
|
}
|
|
227
227
|
catch (error) {
|
|
228
|
-
|
|
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:
|
|
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
|
-
|
|
237
|
-
error.info = { ...error.info, userTestId: eyes.test.userTestId,
|
|
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
|
-
|
|
242
|
-
const key = (0,
|
|
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.
|
|
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.
|
|
53
|
-
settings: {
|
|
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.
|
|
59
|
+
environment: { ...defaultSettings.environment, ...environment, properties: settings.environment.properties },
|
|
60
60
|
},
|
|
61
61
|
logger,
|
|
62
62
|
});
|
package/dist/ufg/open-eyes.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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,
|
|
76
|
-
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver,
|
|
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.
|
|
4
|
-
async function
|
|
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.
|
|
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.
|
|
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.
|
|
74
|
-
const { name, width } = (await
|
|
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
|
|
80
|
-
if (!
|
|
81
|
-
requiredWidths.set(requiredWidth, (
|
|
82
|
-
|
|
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.
|
|
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
|
|
166
|
-
if (utils.types.has(
|
|
167
|
-
const { name, width, height } =
|
|
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(
|
|
170
|
+
else if (utils.types.has(environment, 'chromeEmulationInfo')) {
|
|
171
171
|
const devices = await provides.getChromeEmulationDevices();
|
|
172
|
-
const { deviceName, screenOrientation = 'portrait' } =
|
|
172
|
+
const { deviceName, screenOrientation = 'portrait' } = environment.chromeEmulationInfo;
|
|
173
173
|
return { name: deviceName, screenOrientation, ...devices[deviceName][screenOrientation] };
|
|
174
174
|
}
|
|
175
|
-
else if (utils.types.has(
|
|
175
|
+
else if (utils.types.has(environment, 'iosDeviceInfo')) {
|
|
176
176
|
const devices = await provides.getIOSDevices();
|
|
177
|
-
const { deviceName, screenOrientation = 'portrait' } =
|
|
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.
|
|
26
|
+
exports.extractCIProvider = exports.extractTestEnvironment = void 0;
|
|
27
27
|
const os = __importStar(require("os"));
|
|
28
|
-
function
|
|
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.
|
|
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
|
+
"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:
|
|
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
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
|
|
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.
|
|
71
|
+
"@applitools/core-base": "1.7.2",
|
|
69
72
|
"@applitools/dom-capture": "11.2.3",
|
|
70
|
-
"@applitools/dom-snapshot": "4.7.
|
|
71
|
-
"@applitools/driver": "1.14.
|
|
72
|
-
"@applitools/ec-client": "1.7.
|
|
73
|
-
"@applitools/logger": "2.0.
|
|
74
|
-
"@applitools/nml-client": "1.5.
|
|
75
|
-
"@applitools/req": "1.6.
|
|
76
|
-
"@applitools/screenshoter": "3.8.
|
|
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.
|
|
79
|
-
"@applitools/spec-driver-webdriver": "1.0.
|
|
80
|
-
"@applitools/ufg-client": "1.9.
|
|
81
|
-
"@applitools/utils": "1.6.
|
|
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/
|
|
93
|
-
"@applitools/spec-driver-
|
|
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.
|
|
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,
|
|
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
|
-
|
|
6
|
+
environments?: Environment[];
|
|
7
7
|
logger: Logger;
|
|
8
8
|
};
|
|
9
|
-
export declare function makeAbort<TSpec extends SpecType, TType extends 'classic' | 'ufg'>({ eyes,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
7
|
+
environments?: Environment[];
|
|
8
8
|
spec?: SpecDriver<TSpec>;
|
|
9
9
|
logger: Logger;
|
|
10
10
|
};
|
|
11
|
-
export declare function makeClose<TSpec extends SpecType>({ eyes, target,
|
|
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>;
|