@applitools/eyes-browser 1.4.21 → 1.4.22
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 +13 -0
- package/dist/index.js +472 -147
- package/package.json +2 -2
- package/types/input/CheckSettings.d.ts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.4.22](https://github.com/Applitools-Dev/sdk/compare/js/eyes-browser@1.4.21...js/eyes-browser@1.4.22) (2025-03-06)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Dependencies
|
|
7
|
+
|
|
8
|
+
* @applitools/core bumped to 4.32.2
|
|
9
|
+
#### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* add environment variable aliases (_NAME suffix) ([#2791](https://github.com/Applitools-Dev/sdk/issues/2791)) ([67501a4](https://github.com/Applitools-Dev/sdk/commit/67501a4f5491319ca62949a56ee03face08a59e5))
|
|
12
|
+
* support test concurrency in offline mode ([#2831](https://github.com/Applitools-Dev/sdk/issues/2831)) ([3b7d137](https://github.com/Applitools-Dev/sdk/commit/3b7d137a9b34bb5c564e0a5c7d3fb2520ef8a167))
|
|
13
|
+
* @applitools/eyes bumped to 1.32.6
|
|
14
|
+
|
|
15
|
+
|
|
3
16
|
## [1.4.21](https://github.com/Applitools-Dev/sdk/compare/js/eyes-browser@1.4.20...js/eyes-browser@1.4.21) (2025-01-30)
|
|
4
17
|
|
|
5
18
|
|
package/dist/index.js
CHANGED
|
@@ -4392,7 +4392,7 @@ var require_general = __commonJS({
|
|
|
4392
4392
|
return result;
|
|
4393
4393
|
};
|
|
4394
4394
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4395
|
-
exports.pluralize = exports.extend = exports.wrap = exports.batchify = exports.cachify = exports.absolutizeUrl = exports.removeUndefinedProps = exports.toUriEncoding = exports.toUnAnchoredUri = exports.toString = exports.toJSON = exports.sleep = exports.jwtDecode = exports.shortid = exports.guid = exports.getEnvValue = void 0;
|
|
4395
|
+
exports.dedupAndMap = exports.deepEqual = exports.pluralize = exports.extend = exports.wrap = exports.batchify = exports.cachify = exports.absolutizeUrl = exports.removeUndefinedProps = exports.toUriEncoding = exports.toUnAnchoredUri = exports.toString = exports.toJSON = exports.sleep = exports.jwtDecode = exports.shortid = exports.guid = exports.getEnvValue = void 0;
|
|
4396
4396
|
var buffer_1 = require_buffer();
|
|
4397
4397
|
var types20 = __importStar(require_types());
|
|
4398
4398
|
function getEnvValue(name, type) {
|
|
@@ -4547,6 +4547,50 @@ var require_general = __commonJS({
|
|
|
4547
4547
|
return res;
|
|
4548
4548
|
}
|
|
4549
4549
|
exports.pluralize = pluralize;
|
|
4550
|
+
function deepEqual(value1, value2) {
|
|
4551
|
+
return _deepEqual(value1, value2, /* @__PURE__ */ new Set());
|
|
4552
|
+
}
|
|
4553
|
+
exports.deepEqual = deepEqual;
|
|
4554
|
+
function _deepEqual(value1, value2, visitedObjects) {
|
|
4555
|
+
if (value1 === value2)
|
|
4556
|
+
return true;
|
|
4557
|
+
if (visitedObjects.has(value1) && visitedObjects.has(value2))
|
|
4558
|
+
throw new Error("circular reference");
|
|
4559
|
+
if (typeof value1 === "object" && typeof value2 === "object") {
|
|
4560
|
+
visitedObjects.add(value1);
|
|
4561
|
+
visitedObjects.add(value2);
|
|
4562
|
+
}
|
|
4563
|
+
if (types20.isArray(value1) && types20.isArray(value2)) {
|
|
4564
|
+
if (value1.length !== value2.length)
|
|
4565
|
+
return false;
|
|
4566
|
+
for (let i = 0; i < value1.length; i++) {
|
|
4567
|
+
if (!_deepEqual(value1[i], value2[i], visitedObjects))
|
|
4568
|
+
return false;
|
|
4569
|
+
}
|
|
4570
|
+
return true;
|
|
4571
|
+
}
|
|
4572
|
+
if (types20.isObject(value1) && types20.isObject(value2)) {
|
|
4573
|
+
const keys1 = Object.keys(value1);
|
|
4574
|
+
const keys2 = Object.keys(value2);
|
|
4575
|
+
if (keys1.length !== keys2.length)
|
|
4576
|
+
return false;
|
|
4577
|
+
for (const key of keys1) {
|
|
4578
|
+
if (!_deepEqual(value1[key], value2[key], visitedObjects))
|
|
4579
|
+
return false;
|
|
4580
|
+
}
|
|
4581
|
+
return true;
|
|
4582
|
+
}
|
|
4583
|
+
return false;
|
|
4584
|
+
}
|
|
4585
|
+
async function dedupAndMap(items, transform, isEqual) {
|
|
4586
|
+
const firstIndecies = items.map((value) => items.findIndex((v) => isEqual(v, value)));
|
|
4587
|
+
const uniqueValues = items.filter((_, index) => firstIndecies.indexOf(index) === index);
|
|
4588
|
+
const results = await transform(uniqueValues);
|
|
4589
|
+
const resultMap = /* @__PURE__ */ new WeakMap();
|
|
4590
|
+
uniqueValues.forEach((val, index) => resultMap.set(val, results[index]));
|
|
4591
|
+
return items.map((_, index) => resultMap.get(items[firstIndecies[index]]));
|
|
4592
|
+
}
|
|
4593
|
+
exports.dedupAndMap = dedupAndMap;
|
|
4550
4594
|
}
|
|
4551
4595
|
});
|
|
4552
4596
|
|
|
@@ -67055,7 +67099,7 @@ creating temp style for access.`), r2 = Sf(e4);
|
|
|
67055
67099
|
function R2(e5) {
|
|
67056
67100
|
return t5.defaultView && t5.defaultView.frameElement && t5.defaultView.frameElement.getAttribute(e5);
|
|
67057
67101
|
}
|
|
67058
|
-
}(t4).then((e4) => (h2("processPage end"), e4.scriptVersion = "4.11.
|
|
67102
|
+
}(t4).then((e4) => (h2("processPage end"), e4.scriptVersion = "4.11.16", e4));
|
|
67059
67103
|
};
|
|
67060
67104
|
window[cg] = window[cg] || {};
|
|
67061
67105
|
const dg = lg(hg, window[cg], ug);
|
|
@@ -67826,6 +67870,52 @@ var require_to_generated_selectors = __commonJS({
|
|
|
67826
67870
|
}
|
|
67827
67871
|
});
|
|
67828
67872
|
|
|
67873
|
+
// ../core/dist/ufg/utils/filterStaleElements.js
|
|
67874
|
+
var require_filterStaleElements = __commonJS({
|
|
67875
|
+
"../core/dist/ufg/utils/filterStaleElements.js"(exports) {
|
|
67876
|
+
"use strict";
|
|
67877
|
+
init_process();
|
|
67878
|
+
init_setImmediate();
|
|
67879
|
+
init_buffer();
|
|
67880
|
+
init_setInterval();
|
|
67881
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
67882
|
+
exports.removeStaleElementsFromDomSnapshotsSettings = exports.filterStaleElements = exports.isStale = void 0;
|
|
67883
|
+
async function isStale({ context, element }) {
|
|
67884
|
+
try {
|
|
67885
|
+
await context.execute("return arguments[0]", element);
|
|
67886
|
+
} catch {
|
|
67887
|
+
return true;
|
|
67888
|
+
}
|
|
67889
|
+
return false;
|
|
67890
|
+
}
|
|
67891
|
+
exports.isStale = isStale;
|
|
67892
|
+
async function filterStaleElements({ context, elementReferences }) {
|
|
67893
|
+
if (!elementReferences)
|
|
67894
|
+
return [];
|
|
67895
|
+
const validElements = [];
|
|
67896
|
+
for (const element of elementReferences) {
|
|
67897
|
+
if (!await isStale({ context, element })) {
|
|
67898
|
+
validElements.push(element);
|
|
67899
|
+
}
|
|
67900
|
+
}
|
|
67901
|
+
return validElements;
|
|
67902
|
+
}
|
|
67903
|
+
exports.filterStaleElements = filterStaleElements;
|
|
67904
|
+
async function removeStaleElementsFromDomSnapshotsSettings({ context, settings, targetElement }) {
|
|
67905
|
+
if (await isStale({ context, element: targetElement })) {
|
|
67906
|
+
throw new Error("Target element is stale - please make sure the element is not detached from the DOM tree. Failed to recover from stale element");
|
|
67907
|
+
} else {
|
|
67908
|
+
settings.elementReferences = await filterStaleElements({
|
|
67909
|
+
context,
|
|
67910
|
+
elementReferences: settings.elementReferences
|
|
67911
|
+
});
|
|
67912
|
+
}
|
|
67913
|
+
return settings;
|
|
67914
|
+
}
|
|
67915
|
+
exports.removeStaleElementsFromDomSnapshotsSettings = removeStaleElementsFromDomSnapshotsSettings;
|
|
67916
|
+
}
|
|
67917
|
+
});
|
|
67918
|
+
|
|
67829
67919
|
// ../core/dist/ufg/take-snapshots.js
|
|
67830
67920
|
var require_take_snapshots2 = __commonJS({
|
|
67831
67921
|
"../core/dist/ufg/take-snapshots.js"(exports) {
|
|
@@ -67841,9 +67931,10 @@ var require_take_snapshots2 = __commonJS({
|
|
|
67841
67931
|
var to_safe_check_settings_1 = require_to_safe_check_settings();
|
|
67842
67932
|
var to_generated_selectors_1 = require_to_generated_selectors();
|
|
67843
67933
|
var abort_error_1 = require_abort_error();
|
|
67934
|
+
var filterStaleElements_1 = require_filterStaleElements();
|
|
67844
67935
|
function makeTakeSnapshots({ core, spec, signal, logger: mainLogger }) {
|
|
67845
67936
|
return async function takeSnapshots({ driver, settings = {}, account, logger = mainLogger }) {
|
|
67846
|
-
var _a;
|
|
67937
|
+
var _a, _b;
|
|
67847
67938
|
logger = logger.extend(mainLogger);
|
|
67848
67939
|
logger.log('Command "takeSnapshots" is called with settings', settings);
|
|
67849
67940
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
@@ -67876,7 +67967,7 @@ var require_take_snapshots2 = __commonJS({
|
|
|
67876
67967
|
},
|
|
67877
67968
|
logger
|
|
67878
67969
|
});
|
|
67879
|
-
|
|
67970
|
+
const takeSnapshotsSettings = {
|
|
67880
67971
|
driver,
|
|
67881
67972
|
settings: {
|
|
67882
67973
|
waitBeforeCapture: settings.waitBeforeCapture,
|
|
@@ -67892,7 +67983,23 @@ var require_take_snapshots2 = __commonJS({
|
|
|
67892
67983
|
getIOSDevices: ufgClient.getIOSDevices
|
|
67893
67984
|
},
|
|
67894
67985
|
logger
|
|
67895
|
-
}
|
|
67986
|
+
};
|
|
67987
|
+
try {
|
|
67988
|
+
snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)(takeSnapshotsSettings);
|
|
67989
|
+
} catch (err) {
|
|
67990
|
+
if ((_b = err === null || err === void 0 ? void 0 : err.message) === null || _b === void 0 ? void 0 : _b.includes("stale element")) {
|
|
67991
|
+
snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)({
|
|
67992
|
+
...takeSnapshotsSettings,
|
|
67993
|
+
settings: await (0, filterStaleElements_1.removeStaleElementsFromDomSnapshotsSettings)({
|
|
67994
|
+
settings: takeSnapshotsSettings.settings,
|
|
67995
|
+
context: currentContext,
|
|
67996
|
+
targetElement: elementReferences.target
|
|
67997
|
+
})
|
|
67998
|
+
});
|
|
67999
|
+
} else {
|
|
68000
|
+
throw err;
|
|
68001
|
+
}
|
|
68002
|
+
}
|
|
67896
68003
|
} else {
|
|
67897
68004
|
const nmlClient = await core.getNMLClient({
|
|
67898
68005
|
driver,
|
|
@@ -68134,15 +68241,20 @@ var require_requests3 = __commonJS({
|
|
|
68134
68241
|
__setModuleDefault(result, mod);
|
|
68135
68242
|
return result;
|
|
68136
68243
|
};
|
|
68244
|
+
var __importDefault = exports && exports.__importDefault || function(mod) {
|
|
68245
|
+
return mod && mod.__esModule ? mod : { "default": mod };
|
|
68246
|
+
};
|
|
68137
68247
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
68138
|
-
exports.makeUFGRequests = void 0;
|
|
68248
|
+
exports.toServerEnvironment = exports.makeUFGRequests = void 0;
|
|
68139
68249
|
var logger_1 = require_browser6();
|
|
68140
68250
|
var req_ufg_1 = require_req_ufg();
|
|
68141
68251
|
var to_render_result_1 = require_to_render_result();
|
|
68142
68252
|
var utils34 = __importStar(require_browser3());
|
|
68253
|
+
var throat_1 = __importDefault(require_throat());
|
|
68143
68254
|
function makeUFGRequests({ settings, logger }) {
|
|
68144
68255
|
const mainLogger = (0, logger_1.makeLogger)({ logger, format: { label: "ufg-requests" } });
|
|
68145
68256
|
const req2 = (0, req_ufg_1.makeReqUFG)({ settings, logger: mainLogger });
|
|
68257
|
+
const callRenderThrottled = (0, throat_1.default)(5, callRender);
|
|
68146
68258
|
const defaultAgentId = settings.agentId;
|
|
68147
68259
|
const getChromeEmulationDevicesWithCache = utils34.general.cachify(getChromeEmulationDevices);
|
|
68148
68260
|
const getIOSDevicesWithCache = utils34.general.cachify(getIOSDevices);
|
|
@@ -68157,64 +68269,72 @@ var require_requests3 = __commonJS({
|
|
|
68157
68269
|
getIOSDevices: getIOSDevicesWithCache,
|
|
68158
68270
|
getAndroidDevices: getAndroidDevicesWithCache
|
|
68159
68271
|
};
|
|
68272
|
+
async function callRender(chunk) {
|
|
68273
|
+
const res = await req2("./render", {
|
|
68274
|
+
name: "startRenders",
|
|
68275
|
+
method: "POST",
|
|
68276
|
+
body: chunk,
|
|
68277
|
+
expected: 200,
|
|
68278
|
+
logger
|
|
68279
|
+
});
|
|
68280
|
+
return res;
|
|
68281
|
+
}
|
|
68160
68282
|
async function startRenders({ renders, logger: logger2 = mainLogger }) {
|
|
68161
68283
|
logger2 = logger2.extend(mainLogger, { tags: [`start-render-request-${utils34.general.shortid()}`] });
|
|
68162
68284
|
logger2.log('Request "startRenders" called for requests', renders);
|
|
68163
|
-
const
|
|
68164
|
-
|
|
68165
|
-
|
|
68166
|
-
|
|
68167
|
-
|
|
68168
|
-
|
|
68169
|
-
|
|
68170
|
-
|
|
68171
|
-
|
|
68172
|
-
|
|
68173
|
-
|
|
68174
|
-
|
|
68175
|
-
|
|
68176
|
-
|
|
68177
|
-
|
|
68178
|
-
|
|
68179
|
-
|
|
68180
|
-
|
|
68181
|
-
|
|
68182
|
-
|
|
68183
|
-
|
|
68184
|
-
|
|
68185
|
-
|
|
68186
|
-
|
|
68187
|
-
|
|
68188
|
-
|
|
68189
|
-
|
|
68190
|
-
if (utils34.types.has(settings2.region, ["x", "y", "width", "height"])) {
|
|
68191
|
-
renderOptions.renderInfo.target = "region";
|
|
68192
|
-
renderOptions.renderInfo.region = settings2.region;
|
|
68193
|
-
} else {
|
|
68194
|
-
renderOptions.renderInfo.target = settings2.fully ? "full-selector" : "selector";
|
|
68195
|
-
renderOptions.renderInfo.selector = toServerSelector(settings2.region);
|
|
68196
|
-
}
|
|
68285
|
+
const rendersOptions = renders.map(({ target, settings: settings2 }) => {
|
|
68286
|
+
var _a;
|
|
68287
|
+
const renderOptions = {
|
|
68288
|
+
url: target.source,
|
|
68289
|
+
snapshot: target.snapshot,
|
|
68290
|
+
resources: target.resources,
|
|
68291
|
+
selectorsToFindRegionsFor: (_a = settings2.selectorsToCalculate) === null || _a === void 0 ? void 0 : _a.map(toServerSelector),
|
|
68292
|
+
options: settings2.ufgOptions,
|
|
68293
|
+
scriptHooks: settings2.hooks,
|
|
68294
|
+
agentId: defaultAgentId,
|
|
68295
|
+
prefixRenderId: settings2.prefixRenderId,
|
|
68296
|
+
webhook: settings2.uploadUrl,
|
|
68297
|
+
stitchingService: settings2.stitchingServiceUrl,
|
|
68298
|
+
sendDom: settings2.sendDom,
|
|
68299
|
+
includeFullPageSize: settings2.includeFullPageSize,
|
|
68300
|
+
enableMultipleResultsPerSelector: true,
|
|
68301
|
+
...toServerEnvironment(settings2.environment)
|
|
68302
|
+
};
|
|
68303
|
+
if (utils34.types.has(settings2.environment, "type") && settings2.environment.type === "native") {
|
|
68304
|
+
renderOptions.renderInfo.vhsType = target.vhsType;
|
|
68305
|
+
renderOptions.renderInfo.vhsCompatibilityParams = target.vhsCompatibilityParams;
|
|
68306
|
+
renderOptions.renderInfo.stitchMode = settings2.stitchMode;
|
|
68307
|
+
}
|
|
68308
|
+
if (settings2.region) {
|
|
68309
|
+
if (utils34.types.has(settings2.region, ["x", "y", "width", "height"])) {
|
|
68310
|
+
renderOptions.renderInfo.target = "region";
|
|
68311
|
+
renderOptions.renderInfo.region = settings2.region;
|
|
68197
68312
|
} else {
|
|
68198
|
-
renderOptions.renderInfo.target = settings2.fully ? "full-
|
|
68199
|
-
|
|
68200
|
-
renderOptions.renderInfo.selector = settings2.scrollRootElement;
|
|
68201
|
-
}
|
|
68313
|
+
renderOptions.renderInfo.target = settings2.fully ? "full-selector" : "selector";
|
|
68314
|
+
renderOptions.renderInfo.selector = toServerSelector(settings2.region);
|
|
68202
68315
|
}
|
|
68203
|
-
|
|
68204
|
-
|
|
68205
|
-
|
|
68206
|
-
|
|
68316
|
+
} else {
|
|
68317
|
+
renderOptions.renderInfo.target = settings2.fully ? "full-page" : "viewport";
|
|
68318
|
+
if (utils34.types.has(settings2.environment, "type") && settings2.environment.type === "native") {
|
|
68319
|
+
renderOptions.renderInfo.selector = settings2.scrollRootElement;
|
|
68320
|
+
}
|
|
68321
|
+
}
|
|
68322
|
+
return renderOptions;
|
|
68207
68323
|
});
|
|
68208
|
-
const
|
|
68209
|
-
|
|
68210
|
-
|
|
68211
|
-
|
|
68212
|
-
|
|
68213
|
-
|
|
68214
|
-
|
|
68215
|
-
|
|
68216
|
-
|
|
68217
|
-
|
|
68324
|
+
const chunks = [...Array(Math.ceil(rendersOptions.length / 50))].map((_) => rendersOptions.splice(0, 50));
|
|
68325
|
+
const chunksResponse = await Promise.all(chunks.map(async (chunk) => {
|
|
68326
|
+
const response2 = await callRenderThrottled(chunk);
|
|
68327
|
+
return response2.json();
|
|
68328
|
+
}));
|
|
68329
|
+
const response = chunksResponse.flat();
|
|
68330
|
+
const results = response.map((result) => {
|
|
68331
|
+
return {
|
|
68332
|
+
jobId: result.jobId,
|
|
68333
|
+
renderId: result.renderId,
|
|
68334
|
+
status: result.renderStatus,
|
|
68335
|
+
needMoreResources: result.needMoreResources,
|
|
68336
|
+
needMoreDom: result.needMoreDom
|
|
68337
|
+
};
|
|
68218
68338
|
});
|
|
68219
68339
|
logger2.log('Request "startRenders" finished successfully with body', results);
|
|
68220
68340
|
return results;
|
|
@@ -68287,32 +68407,35 @@ var require_requests3 = __commonJS({
|
|
|
68287
68407
|
async function getActualEnvironments({ settings: settings2, logger: logger2 = mainLogger }) {
|
|
68288
68408
|
logger2 = logger2.extend(mainLogger, { tags: [`get-actual-environments-${utils34.general.shortid()}`] });
|
|
68289
68409
|
logger2.log('Request "getActualEnvironments" called for with settings', settings2);
|
|
68290
|
-
const
|
|
68291
|
-
|
|
68292
|
-
|
|
68293
|
-
|
|
68294
|
-
|
|
68295
|
-
|
|
68296
|
-
|
|
68297
|
-
|
|
68298
|
-
|
|
68299
|
-
|
|
68300
|
-
|
|
68301
|
-
|
|
68302
|
-
|
|
68303
|
-
|
|
68304
|
-
|
|
68305
|
-
|
|
68306
|
-
const results = await response.json().then((results2) => {
|
|
68307
|
-
return results2.map((result, index) => {
|
|
68308
|
-
var _a;
|
|
68309
|
-
return {
|
|
68310
|
-
requested: (_a = settings2[index]) === null || _a === void 0 ? void 0 : _a.environment,
|
|
68311
|
-
environmentId: utils34.general.guid(),
|
|
68312
|
-
rawEnvironment: result.eyesEnvironment
|
|
68313
|
-
};
|
|
68410
|
+
const results = await utils34.general.dedupAndMap(settings2, async (settings3) => {
|
|
68411
|
+
const response = await req2("./job-info", {
|
|
68412
|
+
name: "getActualEnvironments",
|
|
68413
|
+
method: "POST",
|
|
68414
|
+
body: settings3.map((settings4) => {
|
|
68415
|
+
const renderOptions = {
|
|
68416
|
+
agentId: defaultAgentId,
|
|
68417
|
+
webhook: "",
|
|
68418
|
+
stitchingService: "",
|
|
68419
|
+
...toServerEnvironment(settings4.environment)
|
|
68420
|
+
};
|
|
68421
|
+
renderOptions.renderInfo.target = "viewport";
|
|
68422
|
+
return renderOptions;
|
|
68423
|
+
}),
|
|
68424
|
+
expected: 200,
|
|
68425
|
+
logger: logger2
|
|
68314
68426
|
});
|
|
68315
|
-
|
|
68427
|
+
const results2 = await response.json().then((results3) => {
|
|
68428
|
+
return results3.map((result, index) => {
|
|
68429
|
+
var _a;
|
|
68430
|
+
return {
|
|
68431
|
+
requested: (_a = settings3[index]) === null || _a === void 0 ? void 0 : _a.environment,
|
|
68432
|
+
environmentId: utils34.general.guid(),
|
|
68433
|
+
rawEnvironment: result.eyesEnvironment
|
|
68434
|
+
};
|
|
68435
|
+
});
|
|
68436
|
+
});
|
|
68437
|
+
return results2;
|
|
68438
|
+
}, utils34.general.deepEqual);
|
|
68316
68439
|
logger2.log('Request "getActualEnvironments" finished successfully with body', results);
|
|
68317
68440
|
return results;
|
|
68318
68441
|
}
|
|
@@ -68345,17 +68468,23 @@ var require_requests3 = __commonJS({
|
|
|
68345
68468
|
function toServerEnvironment(environment) {
|
|
68346
68469
|
var _a, _b;
|
|
68347
68470
|
if (utils34.types.has(environment, ["width", "height"])) {
|
|
68471
|
+
if (!environment.name) {
|
|
68472
|
+
throw new Error("Expected browser name to be defined when width and height are defined");
|
|
68473
|
+
}
|
|
68348
68474
|
return {
|
|
68349
68475
|
platform: { name: "linux", type: "web" },
|
|
68350
68476
|
browser: {
|
|
68351
|
-
name: environment.name
|
|
68477
|
+
name: replaceVersionsBack(environment.name)
|
|
68352
68478
|
},
|
|
68353
68479
|
renderInfo: { width: environment.width, height: environment.height }
|
|
68354
68480
|
};
|
|
68355
68481
|
} else if (utils34.types.has(environment, "chromeEmulationInfo")) {
|
|
68482
|
+
if (environment.name && !environment.name.includes("chrome")) {
|
|
68483
|
+
throw new Error("Expected browser name to be undefined or chrome when chromeEmulationInfo is defined");
|
|
68484
|
+
}
|
|
68356
68485
|
return {
|
|
68357
68486
|
platform: { name: "linux", type: "web" },
|
|
68358
|
-
browser: { name: "chrome" },
|
|
68487
|
+
browser: { name: replaceVersionsBack((_a = environment.name) !== null && _a !== void 0 ? _a : "chrome") },
|
|
68359
68488
|
renderInfo: {
|
|
68360
68489
|
emulationInfo: {
|
|
68361
68490
|
deviceName: environment.chromeEmulationInfo.deviceName,
|
|
@@ -68365,7 +68494,7 @@ var require_requests3 = __commonJS({
|
|
|
68365
68494
|
};
|
|
68366
68495
|
} else if (utils34.types.has(environment, "androidDeviceInfo")) {
|
|
68367
68496
|
return {
|
|
68368
|
-
platform: { name: "android", type: (
|
|
68497
|
+
platform: { name: "android", type: (_b = environment.type) !== null && _b !== void 0 ? _b : "native" },
|
|
68369
68498
|
browser: environment.type === "web" ? { name: "chrome" } : void 0,
|
|
68370
68499
|
renderInfo: {
|
|
68371
68500
|
androidDeviceInfo: {
|
|
@@ -68377,8 +68506,8 @@ var require_requests3 = __commonJS({
|
|
|
68377
68506
|
};
|
|
68378
68507
|
} else if (utils34.types.has(environment, "iosDeviceInfo")) {
|
|
68379
68508
|
return {
|
|
68380
|
-
platform: { name: "ios", type:
|
|
68381
|
-
browser:
|
|
68509
|
+
platform: { name: "ios", type: "web" },
|
|
68510
|
+
browser: { name: "safari" },
|
|
68382
68511
|
renderInfo: {
|
|
68383
68512
|
iosDeviceInfo: {
|
|
68384
68513
|
name: environment.iosDeviceInfo.deviceName,
|
|
@@ -68388,7 +68517,11 @@ var require_requests3 = __commonJS({
|
|
|
68388
68517
|
}
|
|
68389
68518
|
};
|
|
68390
68519
|
}
|
|
68520
|
+
function replaceVersionsBack(name) {
|
|
68521
|
+
return name.replace(/(one|two)-versions?-back$/, (_, num) => num === "one" ? "1" : "2");
|
|
68522
|
+
}
|
|
68391
68523
|
}
|
|
68524
|
+
exports.toServerEnvironment = toServerEnvironment;
|
|
68392
68525
|
function toServerSelector(selector) {
|
|
68393
68526
|
var _a;
|
|
68394
68527
|
if (utils34.types.isString(selector))
|
|
@@ -68682,7 +68815,6 @@ var require_create_render_target = __commonJS({
|
|
|
68682
68815
|
processResources({
|
|
68683
68816
|
resources: Object.fromEntries([
|
|
68684
68817
|
...((_a = snapshot.resourceUrls) !== null && _a !== void 0 ? _a : []).map((url) => {
|
|
68685
|
-
url = replaceResourceUrlIfNeeded(url, replaceResourceUrlsSettings);
|
|
68686
68818
|
return [url, (0, resource_1.makeResource)({ url, environment: settings === null || settings === void 0 ? void 0 : settings.environment })];
|
|
68687
68819
|
}),
|
|
68688
68820
|
...Object.entries((_b = snapshot.resourceContents) !== null && _b !== void 0 ? _b : {}).map(([url, resource]) => {
|
|
@@ -68702,7 +68834,8 @@ var require_create_render_target = __commonJS({
|
|
|
68702
68834
|
]),
|
|
68703
68835
|
settings: {
|
|
68704
68836
|
...settings,
|
|
68705
|
-
headers: { ...settings === null || settings === void 0 ? void 0 : settings.headers, Referer: utils34.types.has(snapshot, "url") ? snapshot.url : void 0 }
|
|
68837
|
+
headers: { ...settings === null || settings === void 0 ? void 0 : settings.headers, Referer: utils34.types.has(snapshot, "url") ? snapshot.url : void 0 },
|
|
68838
|
+
getUrlForUrlResource: replaceResourceUrlsSettings ? (url) => replaceResourceUrlIfNeeded(url, replaceResourceUrlsSettings) : void 0
|
|
68706
68839
|
},
|
|
68707
68840
|
logger
|
|
68708
68841
|
}),
|
|
@@ -68714,7 +68847,12 @@ var require_create_render_target = __commonJS({
|
|
|
68714
68847
|
const frameUrl = replaceResourceUrlIfNeeded(snapshot.frames[index].url, replaceResourceUrlsSettings);
|
|
68715
68848
|
return Object.assign(mapping, { [frameUrl]: resources.mapping[frameUrl] });
|
|
68716
68849
|
}, {});
|
|
68717
|
-
const
|
|
68850
|
+
const snapshotResourcesMapping = Object.keys(snapshotResources.mapping).reduce((mapping, resourceUrl) => {
|
|
68851
|
+
const url = replaceResourceUrlIfNeeded(resourceUrl, replaceResourceUrlsSettings);
|
|
68852
|
+
mapping[url] = snapshotResources.mapping[resourceUrl];
|
|
68853
|
+
return mapping;
|
|
68854
|
+
}, {});
|
|
68855
|
+
const resourceMappingWithoutDom = { ...snapshotResourcesMapping, ...frameDomResourceMapping };
|
|
68718
68856
|
if (utils34.types.has(snapshot, "url"))
|
|
68719
68857
|
snapshot.url = replaceResourceUrlIfNeeded(snapshot.url, replaceResourceUrlsSettings);
|
|
68720
68858
|
const domResource = utils34.types.has(snapshot, "cdt") ? {
|
|
@@ -85828,6 +85966,9 @@ var require_process_resources = __commonJS({
|
|
|
85828
85966
|
async function doProcessUrlResourceWithDependencies(resource2) {
|
|
85829
85967
|
const processedResource = await processUrlResource({ resource: resource2, settings, logger });
|
|
85830
85968
|
if (processedResource) {
|
|
85969
|
+
if (settings === null || settings === void 0 ? void 0 : settings.getUrlForUrlResource) {
|
|
85970
|
+
resource2.url = settings.getUrlForUrlResource(resource2.url);
|
|
85971
|
+
}
|
|
85831
85972
|
processedResourcesWithDependencies[resource2.url] = processedResource;
|
|
85832
85973
|
if (processedResource.dependencies) {
|
|
85833
85974
|
const dependencyResources = processedResource.dependencies.flatMap((dependencyUrl) => {
|
|
@@ -88635,6 +88776,27 @@ var require_types9 = __commonJS({
|
|
|
88635
88776
|
init_buffer();
|
|
88636
88777
|
init_setInterval();
|
|
88637
88778
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
88779
|
+
exports.BrowserNameEnum = void 0;
|
|
88780
|
+
var BrowserNameEnum;
|
|
88781
|
+
(function(BrowserNameEnum2) {
|
|
88782
|
+
BrowserNameEnum2["CHROME"] = "chrome";
|
|
88783
|
+
BrowserNameEnum2["CHROME_ONE_VERSION_BACK"] = "chrome-one-version-back";
|
|
88784
|
+
BrowserNameEnum2["CHROME_TWO_VERSIONS_BACK"] = "chrome-two-versions-back";
|
|
88785
|
+
BrowserNameEnum2["FIREFOX"] = "firefox";
|
|
88786
|
+
BrowserNameEnum2["FIREFOX_ONE_VERSION_BACK"] = "firefox-one-version-back";
|
|
88787
|
+
BrowserNameEnum2["FIREFOX_TWO_VERSIONS_BACK"] = "firefox-two-versions-back";
|
|
88788
|
+
BrowserNameEnum2["IE_11"] = "ie";
|
|
88789
|
+
BrowserNameEnum2["IE_10"] = "ie10";
|
|
88790
|
+
BrowserNameEnum2["EDGE"] = "edge";
|
|
88791
|
+
BrowserNameEnum2["EDGE_CHROMIUM"] = "edgechromium";
|
|
88792
|
+
BrowserNameEnum2["EDGE_LEGACY"] = "edgelegacy";
|
|
88793
|
+
BrowserNameEnum2["EDGE_CHROMIUM_ONE_VERSION_BACK"] = "edgechromium-one-version-back";
|
|
88794
|
+
BrowserNameEnum2["EDGE_CHROMIUM_TWO_VERSIONS_BACK"] = "edgechromium-two-versions-back";
|
|
88795
|
+
BrowserNameEnum2["SAFARI"] = "safari";
|
|
88796
|
+
BrowserNameEnum2["SAFARI_EARLY_ACCESS"] = "safari-earlyaccess";
|
|
88797
|
+
BrowserNameEnum2["SAFARI_ONE_VERSION_BACK"] = "safari-one-version-back";
|
|
88798
|
+
BrowserNameEnum2["SAFARI_TWO_VERSIONS_BACK"] = "safari-two-versions-back";
|
|
88799
|
+
})(BrowserNameEnum || (exports.BrowserNameEnum = BrowserNameEnum = {}));
|
|
88638
88800
|
}
|
|
88639
88801
|
});
|
|
88640
88802
|
|
|
@@ -89320,6 +89482,108 @@ var require_extract_default_environment = __commonJS({
|
|
|
89320
89482
|
}
|
|
89321
89483
|
});
|
|
89322
89484
|
|
|
89485
|
+
// ../core/dist/ufg/utils/verify-environment-info.js
|
|
89486
|
+
var require_verify_environment_info = __commonJS({
|
|
89487
|
+
"../core/dist/ufg/utils/verify-environment-info.js"(exports) {
|
|
89488
|
+
"use strict";
|
|
89489
|
+
init_process();
|
|
89490
|
+
init_setImmediate();
|
|
89491
|
+
init_buffer();
|
|
89492
|
+
init_setInterval();
|
|
89493
|
+
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
|
89494
|
+
if (k2 === void 0)
|
|
89495
|
+
k2 = k;
|
|
89496
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
89497
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
89498
|
+
desc = { enumerable: true, get: function() {
|
|
89499
|
+
return m[k];
|
|
89500
|
+
} };
|
|
89501
|
+
}
|
|
89502
|
+
Object.defineProperty(o, k2, desc);
|
|
89503
|
+
} : function(o, m, k, k2) {
|
|
89504
|
+
if (k2 === void 0)
|
|
89505
|
+
k2 = k;
|
|
89506
|
+
o[k2] = m[k];
|
|
89507
|
+
});
|
|
89508
|
+
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
|
|
89509
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
89510
|
+
} : function(o, v) {
|
|
89511
|
+
o["default"] = v;
|
|
89512
|
+
});
|
|
89513
|
+
var __importStar = exports && exports.__importStar || function(mod) {
|
|
89514
|
+
if (mod && mod.__esModule)
|
|
89515
|
+
return mod;
|
|
89516
|
+
var result = {};
|
|
89517
|
+
if (mod != null) {
|
|
89518
|
+
for (var k in mod)
|
|
89519
|
+
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
|
89520
|
+
__createBinding(result, mod, k);
|
|
89521
|
+
}
|
|
89522
|
+
__setModuleDefault(result, mod);
|
|
89523
|
+
return result;
|
|
89524
|
+
};
|
|
89525
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
89526
|
+
exports.verifyEnvironmentsInfo = void 0;
|
|
89527
|
+
var utils34 = __importStar(require_browser3());
|
|
89528
|
+
var ufg_client_1 = require_dist6();
|
|
89529
|
+
async function verifyEnvironmentsInfo({ environments, ufgClient }) {
|
|
89530
|
+
const invalid = [];
|
|
89531
|
+
await Promise.all(environments.map(async (environment) => {
|
|
89532
|
+
if (utils34.types.has(environment, ["width", "height"])) {
|
|
89533
|
+
const browserName = environment.name || "";
|
|
89534
|
+
if (!getAllBrowserNames().includes(browserName)) {
|
|
89535
|
+
invalid.push(browserName);
|
|
89536
|
+
}
|
|
89537
|
+
} else if (utils34.types.has(environment, "chromeEmulationInfo")) {
|
|
89538
|
+
const devices = await ufgClient.getChromeEmulationDevices();
|
|
89539
|
+
const deviceName = environment.chromeEmulationInfo.deviceName;
|
|
89540
|
+
if (!devices[deviceName]) {
|
|
89541
|
+
invalid.push(deviceName);
|
|
89542
|
+
}
|
|
89543
|
+
} else if (utils34.types.has(environment, "iosDeviceInfo")) {
|
|
89544
|
+
const devices = await ufgClient.getIOSDevices();
|
|
89545
|
+
const deviceName = environment.iosDeviceInfo.deviceName;
|
|
89546
|
+
if (!devices[deviceName]) {
|
|
89547
|
+
invalid.push(deviceName);
|
|
89548
|
+
}
|
|
89549
|
+
}
|
|
89550
|
+
}));
|
|
89551
|
+
if (invalid.length > 0) {
|
|
89552
|
+
throw new Error(`The specified UFG environment(s): ${invalid.map((item) => `"${item}"`).join(", ")} are either invalid or no longer supported.
|
|
89553
|
+
Refer to our current list of supported devices and browsers at: https://applitools.com/tutorials/concepts/test-execution/ultrafast-grid-devices-browsers
|
|
89554
|
+
If you continue to experience issues, ensure that your SDK is updated to the latest version.`);
|
|
89555
|
+
}
|
|
89556
|
+
}
|
|
89557
|
+
exports.verifyEnvironmentsInfo = verifyEnvironmentsInfo;
|
|
89558
|
+
function getAllBrowserNames() {
|
|
89559
|
+
return [
|
|
89560
|
+
...Object.values(ufg_client_1.BrowserNameEnum),
|
|
89561
|
+
"chrome-1",
|
|
89562
|
+
"firefox-1",
|
|
89563
|
+
"edgechromium-1",
|
|
89564
|
+
"safari-1",
|
|
89565
|
+
"chrome-2",
|
|
89566
|
+
"firefox-2",
|
|
89567
|
+
"edgechromium-2",
|
|
89568
|
+
"safari-2",
|
|
89569
|
+
"chrome-canary",
|
|
89570
|
+
"firefox-canary",
|
|
89571
|
+
"edgechromium-canary",
|
|
89572
|
+
"safari-canary",
|
|
89573
|
+
"chrome-one-versions-back",
|
|
89574
|
+
"firefox-one-versions-back",
|
|
89575
|
+
"edgechromium-one-versions-back",
|
|
89576
|
+
"safari-one-versions-back",
|
|
89577
|
+
"chrome-two-version-back",
|
|
89578
|
+
"firefox-two-version-back",
|
|
89579
|
+
"edgechromium-two-version-back",
|
|
89580
|
+
"safari-two-version-back",
|
|
89581
|
+
"ie11"
|
|
89582
|
+
];
|
|
89583
|
+
}
|
|
89584
|
+
}
|
|
89585
|
+
});
|
|
89586
|
+
|
|
89323
89587
|
// ../core/dist/ufg/open-eyes.js
|
|
89324
89588
|
var require_open_eyes3 = __commonJS({
|
|
89325
89589
|
"../core/dist/ufg/open-eyes.js"(exports) {
|
|
@@ -89370,11 +89634,12 @@ var require_open_eyes3 = __commonJS({
|
|
|
89370
89634
|
var abort_1 = require_abort2();
|
|
89371
89635
|
var get_results_1 = require_get_results2();
|
|
89372
89636
|
var extract_default_environment_1 = require_extract_default_environment();
|
|
89637
|
+
var verify_environment_info_1 = require_verify_environment_info();
|
|
89373
89638
|
var abort_controller_1 = (init_abort_controller(), __toCommonJS(abort_controller_exports));
|
|
89374
89639
|
var utils34 = __importStar(require_browser3());
|
|
89375
89640
|
function makeOpenEyes({ core, spec, logger: mainLogger }) {
|
|
89376
89641
|
return async function openEyes({ target, settings, storage = /* @__PURE__ */ new Map(), logger = mainLogger }) {
|
|
89377
|
-
var _a, _b, _c;
|
|
89642
|
+
var _a, _b, _c, _d;
|
|
89378
89643
|
logger = logger.extend(mainLogger);
|
|
89379
89644
|
logger.log(`Command "openEyes" is called with ${target ? "default driver" : ""}`, ...settings ? ["and settings", settings] : [], storage.size > 0 ? "and default eyes storage" : "");
|
|
89380
89645
|
const driver = target && await (0, driver_1.makeDriver)({ spec, driver: target, logger });
|
|
@@ -89392,8 +89657,17 @@ var require_open_eyes3 = __commonJS({
|
|
|
89392
89657
|
const controller = new abort_controller_1.AbortController();
|
|
89393
89658
|
const { signal } = controller;
|
|
89394
89659
|
const account = await core.getAccountInfo({ settings, logger });
|
|
89660
|
+
const ufgClient = await core.getUFGClient({
|
|
89661
|
+
settings: {
|
|
89662
|
+
...account.ufgServer,
|
|
89663
|
+
eyesServerUrl: account.eyesServer.eyesServerUrl,
|
|
89664
|
+
apiKey: account.eyesServer.apiKey
|
|
89665
|
+
},
|
|
89666
|
+
logger
|
|
89667
|
+
});
|
|
89668
|
+
await (0, verify_environment_info_1.verifyEnvironmentsInfo)({ environments: (_d = settings.environments) !== null && _d !== void 0 ? _d : [], ufgClient });
|
|
89395
89669
|
return utils34.general.extend({}, (eyes) => {
|
|
89396
|
-
var _a2, _b2, _c2,
|
|
89670
|
+
var _a2, _b2, _c2, _d2;
|
|
89397
89671
|
return {
|
|
89398
89672
|
type: "ufg",
|
|
89399
89673
|
core,
|
|
@@ -89403,7 +89677,7 @@ var require_open_eyes3 = __commonJS({
|
|
|
89403
89677
|
batchBuildId: (_b2 = settings.batch) === null || _b2 === void 0 ? void 0 : _b2.buildId,
|
|
89404
89678
|
keepBatchOpen: settings.keepBatchOpen,
|
|
89405
89679
|
eyesServer: account.eyesServer,
|
|
89406
|
-
ufgServer: { ...account.ufgServer, ufgServerUrl: (_c2 = settings.ufgServerUrl) !== null && _c2 !== void 0 ? _c2 : (
|
|
89680
|
+
ufgServer: { ...account.ufgServer, ufgServerUrl: (_c2 = settings.ufgServerUrl) !== null && _c2 !== void 0 ? _c2 : (_d2 = account.ufgServer) === null || _d2 === void 0 ? void 0 : _d2.ufgServerUrl },
|
|
89407
89681
|
uploadUrl: account.uploadUrl,
|
|
89408
89682
|
stitchingServiceUrl: account.stitchingServiceUrl,
|
|
89409
89683
|
supportedEnvironmentsUrl: account.supportedEnvironmentsUrl,
|
|
@@ -90508,31 +90782,31 @@ var require_open_eyes4 = __commonJS({
|
|
|
90508
90782
|
var extract_git_info_1 = require_extract_git_info();
|
|
90509
90783
|
function makeOpenEyes({ type: defaultType = "classic", clients, batch, removeDuplicateTests, core, cores, spec, environment, logger: mainLogger, asyncCache, cwd = process.cwd() }) {
|
|
90510
90784
|
return async function openEyes({ type = defaultType, settings: openSettings, config, target, logger = mainLogger }) {
|
|
90511
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
90512
|
-
var
|
|
90785
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
|
|
90786
|
+
var _2, _3, _4, _5, _6;
|
|
90513
90787
|
logger = logger.extend(mainLogger, { tags: [`eyes-${type}-${utils34.general.shortid()}`] });
|
|
90514
|
-
const settings = { ...config === null || config === void 0 ? void 0 : config.open, ...openSettings };
|
|
90788
|
+
const settings = { environments: config === null || config === void 0 ? void 0 : config.check.environments, ...config === null || config === void 0 ? void 0 : config.open, ...openSettings };
|
|
90515
90789
|
const eyesServerSettings = (0, populate_eyes_server_settings_1.populateEyesServerSettings)(settings);
|
|
90516
90790
|
logger.mask(eyesServerSettings.apiKey);
|
|
90517
90791
|
logger.mask(eyesServerSettings.eyesServerUrl);
|
|
90518
90792
|
(_a = settings.userTestId) !== null && _a !== void 0 ? _a : settings.userTestId = `${settings.testName}--${utils34.general.guid()}`;
|
|
90519
90793
|
settings.batch = { ...batch, ...settings.batch };
|
|
90520
|
-
(_b = (
|
|
90521
|
-
(_d = (
|
|
90522
|
-
(_e = (
|
|
90523
|
-
(_f = (
|
|
90524
|
-
(_g = (
|
|
90794
|
+
(_b = (_2 = settings.batch).id) !== null && _b !== void 0 ? _b : _2.id = (_c = utils34.general.getEnvValue("BATCH_ID")) !== null && _c !== void 0 ? _c : `generated-${utils34.general.guid()}`;
|
|
90795
|
+
(_d = (_3 = settings.batch).buildId) !== null && _d !== void 0 ? _d : _3.buildId = utils34.general.getEnvValue("BATCH_BUILD_ID");
|
|
90796
|
+
(_e = (_4 = settings.batch).name) !== null && _e !== void 0 ? _e : _4.name = utils34.general.getEnvValue("BATCH_NAME");
|
|
90797
|
+
(_f = (_5 = settings.batch).sequenceName) !== null && _f !== void 0 ? _f : _5.sequenceName = utils34.general.getEnvValue("BATCH_SEQUENCE");
|
|
90798
|
+
(_g = (_6 = settings.batch).notifyOnCompletion) !== null && _g !== void 0 ? _g : _6.notifyOnCompletion = utils34.general.getEnvValue("BATCH_NOTIFY", "boolean");
|
|
90525
90799
|
(_h = settings.keepBatchOpen) !== null && _h !== void 0 ? _h : settings.keepBatchOpen = utils34.general.getEnvValue("DONT_CLOSE_BATCHES", "boolean");
|
|
90526
|
-
(_j = settings.branchName) !== null && _j !== void 0 ? _j : settings.branchName = utils34.general.getEnvValue("BRANCH");
|
|
90527
|
-
(
|
|
90528
|
-
(
|
|
90529
|
-
(
|
|
90530
|
-
(
|
|
90531
|
-
(
|
|
90532
|
-
(
|
|
90533
|
-
(
|
|
90534
|
-
(
|
|
90535
|
-
(
|
|
90800
|
+
(_j = settings.branchName) !== null && _j !== void 0 ? _j : settings.branchName = (_k = utils34.general.getEnvValue("BRANCH")) !== null && _k !== void 0 ? _k : utils34.general.getEnvValue("BRANCH_NAME");
|
|
90801
|
+
(_l = settings.parentBranchName) !== null && _l !== void 0 ? _l : settings.parentBranchName = (_m = utils34.general.getEnvValue("PARENT_BRANCH")) !== null && _m !== void 0 ? _m : utils34.general.getEnvValue("PARENT_BRANCH_NAME");
|
|
90802
|
+
(_o = settings.baselineBranchName) !== null && _o !== void 0 ? _o : settings.baselineBranchName = (_p = utils34.general.getEnvValue("BASELINE_BRANCH")) !== null && _p !== void 0 ? _p : utils34.general.getEnvValue("BASELINE_BRANCH_NAME");
|
|
90803
|
+
(_q = settings.gitBranchingTimestamp) !== null && _q !== void 0 ? _q : settings.gitBranchingTimestamp = utils34.general.getEnvValue("GIT_MERGE_BASE_TIMESTAMP");
|
|
90804
|
+
(_r = settings.latestCommitInfo) !== null && _r !== void 0 ? _r : settings.latestCommitInfo = getLatestCommitInfoFromEnvVars(logger);
|
|
90805
|
+
(_s = settings.ufgServerUrl) !== null && _s !== void 0 ? _s : settings.ufgServerUrl = utils34.general.getEnvValue("UFG_SERVER_URL");
|
|
90806
|
+
(_t = settings.ignoreBaseline) !== null && _t !== void 0 ? _t : settings.ignoreBaseline = false;
|
|
90807
|
+
(_u = settings.compareWithParentBranch) !== null && _u !== void 0 ? _u : settings.compareWithParentBranch = false;
|
|
90808
|
+
(_v = settings.removeDuplicateTests) !== null && _v !== void 0 ? _v : settings.removeDuplicateTests = removeDuplicateTests;
|
|
90809
|
+
(_w = settings.latestCommitInfo) !== null && _w !== void 0 ? _w : settings.latestCommitInfo = await (0, extract_git_info_1.extractLatestCommitInfo)({ execOptions: { cwd }, logger });
|
|
90536
90810
|
if (settings.latestCommitInfo && !(0, extract_git_info_1.isISODate)(settings.latestCommitInfo.timestamp)) {
|
|
90537
90811
|
logger.warn(`latestCommitInfo.timestamp is an invalid ISO date string: ${settings.latestCommitInfo.timestamp}`);
|
|
90538
90812
|
settings.latestCommitInfo = void 0;
|
|
@@ -90560,6 +90834,15 @@ var require_open_eyes4 = __commonJS({
|
|
|
90560
90834
|
const driver = target && await (0, driver_1.makeDriver)({ spec, driver: target, logger, customConfig: settings });
|
|
90561
90835
|
const driverEnvironment = await (driver === null || driver === void 0 ? void 0 : driver.getEnvironment());
|
|
90562
90836
|
const driverUrl = await (driver === null || driver === void 0 ? void 0 : driver.getDriverUrl());
|
|
90837
|
+
const multiDeviceTargets = [];
|
|
90838
|
+
for (const checkEnv of (_x = settings.environments) !== null && _x !== void 0 ? _x : []) {
|
|
90839
|
+
if (utils34.types.has(checkEnv, "iosDeviceInfo") && ((_y = driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.applitoolsLib) === null || _y === void 0 ? void 0 : _y.instrumented)) {
|
|
90840
|
+
multiDeviceTargets.push({
|
|
90841
|
+
deviceInfo: checkEnv.iosDeviceInfo.deviceName,
|
|
90842
|
+
orientation: (_z = checkEnv.iosDeviceInfo.screenOrientation) !== null && _z !== void 0 ? _z : "portrait"
|
|
90843
|
+
});
|
|
90844
|
+
}
|
|
90845
|
+
}
|
|
90563
90846
|
void core.logEvent({
|
|
90564
90847
|
settings: {
|
|
90565
90848
|
...settings,
|
|
@@ -90567,7 +90850,7 @@ var require_open_eyes4 = __commonJS({
|
|
|
90567
90850
|
event: {
|
|
90568
90851
|
type: "openEyes",
|
|
90569
90852
|
userTestId: settings.userTestId,
|
|
90570
|
-
concurrency: (
|
|
90853
|
+
concurrency: (_0 = cores === null || cores === void 0 ? void 0 : cores[type].concurrency) !== null && _0 !== void 0 ? _0 : core.concurrency,
|
|
90571
90854
|
environment,
|
|
90572
90855
|
driver: {
|
|
90573
90856
|
deviceName: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.deviceName,
|
|
@@ -90575,10 +90858,11 @@ var require_open_eyes4 = __commonJS({
|
|
|
90575
90858
|
browserVersion: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.browserVersion,
|
|
90576
90859
|
platformName: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.platformName,
|
|
90577
90860
|
platformVersion: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.platformVersion,
|
|
90578
|
-
isApplitoolsLib: (
|
|
90861
|
+
isApplitoolsLib: (_1 = driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.applitoolsLib) === null || _1 === void 0 ? void 0 : _1.instrumented,
|
|
90579
90862
|
isEC: driverEnvironment === null || driverEnvironment === void 0 ? void 0 : driverEnvironment.isEC
|
|
90580
90863
|
},
|
|
90581
|
-
driverUrl
|
|
90864
|
+
driverUrl,
|
|
90865
|
+
multiDeviceTargets
|
|
90582
90866
|
}
|
|
90583
90867
|
},
|
|
90584
90868
|
logger
|
|
@@ -91191,7 +91475,7 @@ var require_package2 = __commonJS({
|
|
|
91191
91475
|
"../core/package.json"(exports, module) {
|
|
91192
91476
|
module.exports = {
|
|
91193
91477
|
name: "@applitools/core",
|
|
91194
|
-
version: "4.
|
|
91478
|
+
version: "4.32.2",
|
|
91195
91479
|
homepage: "https://applitools.com",
|
|
91196
91480
|
bugs: {
|
|
91197
91481
|
url: "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
@@ -95498,8 +95782,14 @@ var require_run_offline_snapshots = __commonJS({
|
|
|
95498
95782
|
var utils34 = __importStar(require_browser3());
|
|
95499
95783
|
var merge_configs_1 = require_merge_configs();
|
|
95500
95784
|
var format_results_1 = require_format_results();
|
|
95785
|
+
var throat_1 = __importDefault(require_throat());
|
|
95786
|
+
function getConsoleLogLimit() {
|
|
95787
|
+
var _a;
|
|
95788
|
+
return (_a = utils34.general.getEnvValue("OFFLINE_LOG_LIMIT", "number")) !== null && _a !== void 0 ? _a : 20;
|
|
95789
|
+
}
|
|
95501
95790
|
async function runOfflineSnapshots(options) {
|
|
95502
95791
|
var _a;
|
|
95792
|
+
const limitConsoleLogs = getConsoleLogLimit();
|
|
95503
95793
|
if (!options.offlineLocationPath)
|
|
95504
95794
|
throw new Error("offlineLocationPath is required");
|
|
95505
95795
|
const offlineLocationPath = path_1.default.resolve(options.offlineLocationPath);
|
|
@@ -95536,13 +95826,27 @@ var require_run_offline_snapshots = __commonJS({
|
|
|
95536
95826
|
return allTestResults;
|
|
95537
95827
|
async function runTests(testFolders2) {
|
|
95538
95828
|
logger.log("running tests", testFolders2);
|
|
95539
|
-
const
|
|
95829
|
+
const messages = [];
|
|
95830
|
+
const testPromises = testFolders2.map(async (testFolder) => {
|
|
95540
95831
|
const testLogger = logger.extend({ tags: [testFolder] });
|
|
95541
95832
|
const testPath = path_1.default.join(offlineLocationPath, testFolder);
|
|
95542
95833
|
const fileOpenSettings = await fs_1.default.promises.readFile(path_1.default.join(testPath, "settings.json"), "utf-8").then(JSON.parse);
|
|
95543
95834
|
const openSettings = (0, merge_configs_1.mergeConfigs)(fileOpenSettings, options.config.open);
|
|
95544
|
-
|
|
95545
|
-
return
|
|
95835
|
+
messages.push(`Running test: ${openSettings.testName} (${formatEnvironment(openSettings.environment)})`);
|
|
95836
|
+
return { testPath, openSettings, testLogger };
|
|
95837
|
+
});
|
|
95838
|
+
const preparedTests = await Promise.all(testPromises);
|
|
95839
|
+
if (messages.length > limitConsoleLogs) {
|
|
95840
|
+
const slice = messages.slice(0, limitConsoleLogs);
|
|
95841
|
+
logger.console.log(slice.join("\n") + `
|
|
95842
|
+
... ${messages.length - limitConsoleLogs} more tests`);
|
|
95843
|
+
} else {
|
|
95844
|
+
logger.console.log(messages.join("\n"));
|
|
95845
|
+
}
|
|
95846
|
+
const testConcurrency = utils34.general.getEnvValue("TEST_CONCURRENCY", "number");
|
|
95847
|
+
const runTestThrottled = testConcurrency ? (0, throat_1.default)(testConcurrency, runTest) : runTest;
|
|
95848
|
+
const results = await Promise.all(preparedTests.map(async ({ testPath, openSettings, testLogger }) => {
|
|
95849
|
+
return runTestThrottled(testPath, openSettings, testLogger);
|
|
95546
95850
|
}));
|
|
95547
95851
|
const batchIds = [...new Set(results.map((t) => t.batchId))];
|
|
95548
95852
|
const allTestResults2 = results.map((t) => t.results);
|
|
@@ -95550,8 +95854,8 @@ var require_run_offline_snapshots = __commonJS({
|
|
|
95550
95854
|
const keepBatchOpen = utils34.general.getEnvValue("DONT_CLOSE_BATCHES", "boolean") || options.config.open.keepBatchOpen;
|
|
95551
95855
|
if (!keepBatchOpen) {
|
|
95552
95856
|
await core.closeBatch({ settings: batchIds.map((batchId) => ({ batchId, ...account.eyesServer })) });
|
|
95857
|
+
logger.log("done closing batches");
|
|
95553
95858
|
}
|
|
95554
|
-
logger.log("done closing batches");
|
|
95555
95859
|
return allTestResults2;
|
|
95556
95860
|
}
|
|
95557
95861
|
async function runTest(testPath, openSettings, logger2) {
|
|
@@ -95569,20 +95873,25 @@ var require_run_offline_snapshots = __commonJS({
|
|
|
95569
95873
|
},
|
|
95570
95874
|
logger: logger2
|
|
95571
95875
|
});
|
|
95572
|
-
const
|
|
95573
|
-
|
|
95574
|
-
|
|
95575
|
-
|
|
95576
|
-
|
|
95577
|
-
|
|
95578
|
-
|
|
95579
|
-
|
|
95580
|
-
|
|
95581
|
-
|
|
95582
|
-
|
|
95583
|
-
|
|
95584
|
-
|
|
95585
|
-
|
|
95876
|
+
const closeSettingsPath = path_1.default.resolve(testPath, "close.json");
|
|
95877
|
+
if (fs_1.default.existsSync(closeSettingsPath)) {
|
|
95878
|
+
const checkFolders = (await fs_1.default.promises.readdir(testPath)).filter((folderpath) => folderpath.startsWith("check-"));
|
|
95879
|
+
logger2.log("running checks for test", testPath, ":", checkFolders);
|
|
95880
|
+
const targets = await Promise.all(checkFolders.map(async (checkFolder) => {
|
|
95881
|
+
const snapshot = await fs_1.default.promises.readFile(path_1.default.resolve(testPath, checkFolder, "snapshot.json"), "utf-8").then(JSON.parse);
|
|
95882
|
+
snapshot.settings.environment.environmentId = utils34.general.guid();
|
|
95883
|
+
return snapshot;
|
|
95884
|
+
}));
|
|
95885
|
+
await uploadResources(targets, logger2);
|
|
95886
|
+
logger2.log("uploaded resources for test", testPath);
|
|
95887
|
+
await Promise.all(targets.map((target, index) => runCheck(eyes, target, index, logger2)));
|
|
95888
|
+
const fileCloseSettings = await fs_1.default.promises.readFile(closeSettingsPath, "utf-8").then(JSON.parse);
|
|
95889
|
+
const closeSettings = (0, merge_configs_1.mergeConfigs)(fileCloseSettings, options.config.close);
|
|
95890
|
+
await eyes.close({ settings: closeSettings });
|
|
95891
|
+
} else {
|
|
95892
|
+
await eyes.abort();
|
|
95893
|
+
}
|
|
95894
|
+
logger2.log("done running test", testPath);
|
|
95586
95895
|
return { batchId: openSettings.batch.id, results: (await eyes.getResults({ logger: logger2 }))[0] };
|
|
95587
95896
|
}
|
|
95588
95897
|
async function uploadResources(targets, logger2) {
|
|
@@ -95686,16 +95995,16 @@ var require_run_offline_snapshots = __commonJS({
|
|
|
95686
95995
|
}
|
|
95687
95996
|
outputStr += "[EYES: TEST RESULTS]:\n\n";
|
|
95688
95997
|
if (passedOrNew.length > 0) {
|
|
95689
|
-
outputStr += testResultsOutput(passedOrNew, warnForUnsavedNewTests);
|
|
95998
|
+
outputStr += testResultsOutput(passedOrNew, warnForUnsavedNewTests, "Passed");
|
|
95690
95999
|
}
|
|
95691
96000
|
if (failedTests.length > 0) {
|
|
95692
|
-
outputStr += testResultsOutput(failedTests, warnForUnsavedNewTests);
|
|
96001
|
+
outputStr += testResultsOutput(failedTests, warnForUnsavedNewTests, "Failed");
|
|
95693
96002
|
}
|
|
95694
96003
|
if (unresolved.length > 0) {
|
|
95695
|
-
outputStr += testResultsOutput(unresolved, warnForUnsavedNewTests);
|
|
96004
|
+
outputStr += testResultsOutput(unresolved, warnForUnsavedNewTests, "Unresolved");
|
|
95696
96005
|
}
|
|
95697
96006
|
if (aborted.length > 0) {
|
|
95698
|
-
outputStr += testResultsOutput(aborted, warnForUnsavedNewTests);
|
|
96007
|
+
outputStr += testResultsOutput(aborted, warnForUnsavedNewTests, "Aborted");
|
|
95699
96008
|
}
|
|
95700
96009
|
if (errors.length) {
|
|
95701
96010
|
const sortedErrors = errors.sort((a, b) => a.title.localeCompare(b.title));
|
|
@@ -95759,29 +96068,40 @@ Total time: ${Math.round(totalTime / 1e3)} seconds
|
|
|
95759
96068
|
isSuccess
|
|
95760
96069
|
};
|
|
95761
96070
|
}
|
|
95762
|
-
function testResultsOutput(results, warnForUnsavedNewTests) {
|
|
95763
|
-
|
|
96071
|
+
function testResultsOutput(results, warnForUnsavedNewTests, tag) {
|
|
96072
|
+
const limitConsoleLogs = getConsoleLogLimit();
|
|
96073
|
+
const truncated = [];
|
|
96074
|
+
let limitCount = 0;
|
|
95764
96075
|
const sortedTestResults = results.sort((a, b) => a.name.localeCompare(b.name));
|
|
95765
96076
|
sortedTestResults.forEach((result) => {
|
|
95766
96077
|
const testTitle = `${result.name} [${result.hostApp}] [${result.hostDisplaySize.width}x${result.hostDisplaySize.height}] - `;
|
|
95767
96078
|
if (result.isAborted) {
|
|
95768
|
-
|
|
96079
|
+
const str = `${testTitle}${chalk_1.default.keyword("red")(`Aborted`)}
|
|
95769
96080
|
`;
|
|
96081
|
+
truncated.push(str);
|
|
95770
96082
|
} else if (result.isNew) {
|
|
95771
96083
|
const newResColor = warnForUnsavedNewTests ? "orange" : "blue";
|
|
95772
|
-
|
|
96084
|
+
const str = `${testTitle}${chalk_1.default.keyword(newResColor)("New")}
|
|
95773
96085
|
`;
|
|
96086
|
+
truncated.push(str);
|
|
95774
96087
|
} else if (result.status === "Passed") {
|
|
95775
|
-
|
|
96088
|
+
const str = `${testTitle}${chalk_1.default.green("Passed")}
|
|
95776
96089
|
`;
|
|
96090
|
+
truncated.push(str);
|
|
95777
96091
|
} else if (result.status === "Failed") {
|
|
95778
|
-
|
|
96092
|
+
const str = `${testTitle}${chalk_1.default.keyword("red")("Failed")}
|
|
95779
96093
|
`;
|
|
96094
|
+
truncated.push(str);
|
|
95780
96095
|
} else {
|
|
95781
|
-
|
|
96096
|
+
const str = `${testTitle}${chalk_1.default.keyword("orange")(`Unresolved`)}
|
|
95782
96097
|
`;
|
|
96098
|
+
truncated.push(str);
|
|
95783
96099
|
}
|
|
96100
|
+
if (limitCount < limitConsoleLogs)
|
|
96101
|
+
limitCount++;
|
|
95784
96102
|
});
|
|
96103
|
+
let outputStr = truncated.slice(0, limitConsoleLogs).join("");
|
|
96104
|
+
outputStr += results.length - limitCount > 0 ? `... ${results.length - limitCount} more ${tag} tests` : "";
|
|
95785
96105
|
outputStr += "\n";
|
|
95786
96106
|
return outputStr;
|
|
95787
96107
|
}
|
|
@@ -95873,7 +96193,7 @@ var require_package3 = __commonJS({
|
|
|
95873
96193
|
"../eyes/package.json"(exports, module) {
|
|
95874
96194
|
module.exports = {
|
|
95875
96195
|
name: "@applitools/eyes",
|
|
95876
|
-
version: "1.32.
|
|
96196
|
+
version: "1.32.6",
|
|
95877
96197
|
keywords: [
|
|
95878
96198
|
"applitools",
|
|
95879
96199
|
"eyes",
|
|
@@ -97912,6 +98232,10 @@ var CheckSettingsAutomationFluent = class extends CheckSettingsBaseFluent {
|
|
|
97912
98232
|
this._settings.densityMetrics = options;
|
|
97913
98233
|
return this;
|
|
97914
98234
|
}
|
|
98235
|
+
stitchMode(stitchMode) {
|
|
98236
|
+
this._settings.stitchMode = stitchMode;
|
|
98237
|
+
return this;
|
|
98238
|
+
}
|
|
97915
98239
|
/** @internal */
|
|
97916
98240
|
toJSON() {
|
|
97917
98241
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
@@ -97950,7 +98274,8 @@ var CheckSettingsAutomationFluent = class extends CheckSettingsBaseFluent {
|
|
|
97950
98274
|
retryTimeout: this._settings.timeout,
|
|
97951
98275
|
userCommandId: this._settings.variationGroupId,
|
|
97952
98276
|
densityMetrics: this._settings.densityMetrics,
|
|
97953
|
-
assumesMutability: this.assumesMutability()
|
|
98277
|
+
assumesMutability: this.assumesMutability(),
|
|
98278
|
+
stitchMode: this._settings.stitchMode
|
|
97954
98279
|
})
|
|
97955
98280
|
};
|
|
97956
98281
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/eyes-browser",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.22",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"applitools",
|
|
6
6
|
"browser",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"test": "run --top-level mocha './test/**/*.spec.ts'"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@applitools/eyes": "1.32.
|
|
51
|
+
"@applitools/eyes": "1.32.6"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/node": "^12.20.55",
|
|
@@ -10,6 +10,7 @@ import { LazyLoadOptions } from './LazyLoadOptions';
|
|
|
10
10
|
import { DensityMetrics } from './DensityMetrics';
|
|
11
11
|
import * as utils from '@applitools/utils';
|
|
12
12
|
import { DynamicTextType } from '../enums/DynamicTextType';
|
|
13
|
+
import { type StitchMode } from '../enums/StitchMode';
|
|
13
14
|
type RegionReference<TSpec extends Core.SpecType> = Region | LegacyRegion | ElementReference<TSpec>;
|
|
14
15
|
type ElementReference<TSpec extends Core.SpecType> = TSpec['element'] | SelectorReference<TSpec>;
|
|
15
16
|
type SelectorReference<TSpec extends Core.SpecType> = EyesSelector<TSpec['selector']>;
|
|
@@ -70,6 +71,7 @@ export type CheckSettingsBase<TRegion = never> = {
|
|
|
70
71
|
pageId?: string;
|
|
71
72
|
variationGroupId?: string;
|
|
72
73
|
densityMetrics?: DensityMetrics;
|
|
74
|
+
stitchMode?: StitchMode;
|
|
73
75
|
};
|
|
74
76
|
export type CheckSettingsImage = CheckSettingsBase;
|
|
75
77
|
export type CheckSettingsAutomation<TSpec extends Core.SpecType> = CheckSettingsBase<RegionReference<TSpec>> & {
|
|
@@ -233,6 +235,7 @@ export declare class CheckSettingsAutomationFluent<TSpec extends Core.SpecType =
|
|
|
233
235
|
waitBeforeCapture(waitBeforeCapture: number): typeof this;
|
|
234
236
|
lazyLoad(options?: LazyLoadOptions | boolean): typeof this;
|
|
235
237
|
densityMetrics(options: DensityMetrics): typeof this;
|
|
238
|
+
stitchMode(stitchMode: StitchMode): typeof this;
|
|
236
239
|
/** @internal */
|
|
237
240
|
toJSON(): {
|
|
238
241
|
target: undefined;
|