@applitools/eyes-browser 1.5.15 → 1.5.16
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 +81 -0
- package/dist/index.js +674 -176
- package/package.json +2 -2
- package/types/enums/AndroidMultiDeviceTarget.d.ts +9 -0
- package/types/enums/IosDeviceName.d.ts +11 -2
- package/types/enums/IosMultiDeviceTarget.d.ts +42 -39
- package/types/index.d.ts +5 -1
- package/types/input/AndroidDeviceTarget.d.ts +35 -0
- package/types/input/Configuration.d.ts +39 -2
- package/types/input/IosDeviceTarget.d.ts +35 -0
- package/types/input/RenderInfo.d.ts +11 -3
package/dist/index.js
CHANGED
|
@@ -13585,7 +13585,7 @@ var init_agent_browser = __esm({
|
|
|
13585
13585
|
});
|
|
13586
13586
|
|
|
13587
13587
|
// ../req/dist/req-errors.js
|
|
13588
|
-
var AbortCode, RequestTimeoutError, ConnectionTimeoutError;
|
|
13588
|
+
var AbortCode, RequestTimeoutError, ConnectionTimeoutError, RetryTimeoutError;
|
|
13589
13589
|
var init_req_errors = __esm({
|
|
13590
13590
|
"../req/dist/req-errors.js"() {
|
|
13591
13591
|
"use strict";
|
|
@@ -13596,6 +13596,7 @@ var init_req_errors = __esm({
|
|
|
13596
13596
|
(function(AbortCode2) {
|
|
13597
13597
|
AbortCode2["requestTimeout"] = "STUCK_REQUEST";
|
|
13598
13598
|
AbortCode2["connectionTimeout"] = "MAX_TIMEOUT_REACHED";
|
|
13599
|
+
AbortCode2["retryTimeout"] = "RETRY_DURATION_EXCEEDED";
|
|
13599
13600
|
})(AbortCode || (AbortCode = {}));
|
|
13600
13601
|
RequestTimeoutError = class extends Error {
|
|
13601
13602
|
constructor() {
|
|
@@ -13611,6 +13612,13 @@ var init_req_errors = __esm({
|
|
|
13611
13612
|
this.name = "ConnectionTimeoutError";
|
|
13612
13613
|
}
|
|
13613
13614
|
};
|
|
13615
|
+
RetryTimeoutError = class extends Error {
|
|
13616
|
+
constructor(timeout) {
|
|
13617
|
+
super(`Retry duration of ${timeout} ms was exceeded.`);
|
|
13618
|
+
this.code = AbortCode.retryTimeout;
|
|
13619
|
+
this.name = "RetryTimeoutError";
|
|
13620
|
+
}
|
|
13621
|
+
};
|
|
13614
13622
|
}
|
|
13615
13623
|
});
|
|
13616
13624
|
|
|
@@ -13621,6 +13629,7 @@ function makeReq(baseOptions) {
|
|
|
13621
13629
|
async function req(input, ...requestOptions) {
|
|
13622
13630
|
const options = mergeOptions({}, ...requestOptions);
|
|
13623
13631
|
let abortCode;
|
|
13632
|
+
let retryStartTime = null;
|
|
13624
13633
|
if (options.baseUrl && !options.baseUrl.endsWith("/"))
|
|
13625
13634
|
options.baseUrl += "/";
|
|
13626
13635
|
if (options.headers)
|
|
@@ -13649,121 +13658,189 @@ async function req(input, ...requestOptions) {
|
|
|
13649
13658
|
if (connectionTimer)
|
|
13650
13659
|
clearTimeout(connectionTimer);
|
|
13651
13660
|
}
|
|
13652
|
-
|
|
13653
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
13654
|
-
const url = new URL(String((_a = input2.url) !== null && _a !== void 0 ? _a : input2), options2.baseUrl);
|
|
13655
|
-
const fetch2 = (_b = options2.fetch) !== null && _b !== void 0 ? _b : fetch_browser_default;
|
|
13656
|
-
let optionsFallbacks = [];
|
|
13657
|
-
if (options2.fallbacks)
|
|
13658
|
-
optionsFallbacks = utils28.types.isArray(options2.fallbacks) ? options2.fallbacks : [options2.fallbacks];
|
|
13659
|
-
const fb = optionsFallbacks.find((fallback) => {
|
|
13660
|
-
var _a2;
|
|
13661
|
-
return (_a2 = fallback.cache) === null || _a2 === void 0 ? void 0 : _a2.get(url.origin);
|
|
13662
|
-
});
|
|
13663
|
-
if (fb === null || fb === void 0 ? void 0 : fb.updateOptions)
|
|
13664
|
-
options2 = await fb.updateOptions({ options: options2 });
|
|
13661
|
+
function setupRequestController(opts) {
|
|
13665
13662
|
const requestController = new AbortController2();
|
|
13666
|
-
const timeout = calculateTimeout(
|
|
13663
|
+
const timeout = calculateTimeout(opts.requestTimeout, opts.body, opts);
|
|
13667
13664
|
const requestTimer = timeout ? setTimeout(() => {
|
|
13668
13665
|
abortCode !== null && abortCode !== void 0 ? abortCode : abortCode = AbortCode.requestTimeout;
|
|
13669
13666
|
requestController.abort();
|
|
13670
13667
|
}, timeout) : null;
|
|
13668
|
+
const abortHandler = () => requestController.abort();
|
|
13671
13669
|
if (connectionController.signal.aborted)
|
|
13672
13670
|
requestController.abort();
|
|
13673
|
-
connectionController.signal.
|
|
13674
|
-
if (
|
|
13675
|
-
if (
|
|
13671
|
+
connectionController.signal.addEventListener("abort", abortHandler);
|
|
13672
|
+
if (opts.signal) {
|
|
13673
|
+
if (opts.signal.aborted)
|
|
13676
13674
|
requestController.abort();
|
|
13677
|
-
|
|
13675
|
+
opts.signal.addEventListener("abort", abortHandler);
|
|
13678
13676
|
}
|
|
13679
|
-
|
|
13680
|
-
|
|
13677
|
+
return { requestController, requestTimer, abortHandler };
|
|
13678
|
+
}
|
|
13679
|
+
async function buildRequest(input2, opts, requestController) {
|
|
13680
|
+
var _a, _b, _c, _d, _e;
|
|
13681
|
+
const url = new URL(String((_a = input2.url) !== null && _a !== void 0 ? _a : input2), opts.baseUrl);
|
|
13682
|
+
if (opts.query) {
|
|
13683
|
+
Object.entries(opts.query).forEach(([key, value]) => {
|
|
13681
13684
|
if (!utils28.types.isNull(value))
|
|
13682
13685
|
url.searchParams.set(key, String(value));
|
|
13683
13686
|
});
|
|
13684
13687
|
}
|
|
13685
13688
|
const extraHeaders = {};
|
|
13686
|
-
if (utils28.types.isPlainObject(
|
|
13687
|
-
|
|
13689
|
+
if (utils28.types.isPlainObject(opts.body) || utils28.types.isArray(opts.body) || opts.body === null) {
|
|
13690
|
+
opts.body = JSON.stringify(opts.body);
|
|
13688
13691
|
extraHeaders["content-type"] = "application/json";
|
|
13689
13692
|
}
|
|
13690
13693
|
let request = new Request(url, {
|
|
13691
|
-
method: (
|
|
13694
|
+
method: (_b = opts.method) !== null && _b !== void 0 ? _b : input2.method,
|
|
13692
13695
|
headers: {
|
|
13693
13696
|
...extraHeaders,
|
|
13694
|
-
...Object.fromEntries((
|
|
13695
|
-
...Object.fromEntries(new Headers(
|
|
13697
|
+
...Object.fromEntries((_d = (_c = input2.headers) === null || _c === void 0 ? void 0 : _c.entries()) !== null && _d !== void 0 ? _d : []),
|
|
13698
|
+
...Object.fromEntries(new Headers(opts.headers).entries())
|
|
13696
13699
|
},
|
|
13697
|
-
body: (
|
|
13700
|
+
body: (_e = opts.body) !== null && _e !== void 0 ? _e : input2.body,
|
|
13698
13701
|
highWaterMark: 1024 * 1024 * 100 + 1,
|
|
13699
13702
|
agent: makeAgent({
|
|
13700
|
-
proxy:
|
|
13701
|
-
useDnsCache:
|
|
13702
|
-
keepAliveOptions:
|
|
13703
|
+
proxy: opts.proxy,
|
|
13704
|
+
useDnsCache: opts.useDnsCache,
|
|
13705
|
+
keepAliveOptions: opts.keepAliveOptions
|
|
13703
13706
|
}),
|
|
13704
13707
|
signal: requestController.signal
|
|
13705
13708
|
});
|
|
13706
|
-
request = await beforeRequest({ request, options:
|
|
13707
|
-
|
|
13708
|
-
|
|
13709
|
-
|
|
13710
|
-
|
|
13711
|
-
|
|
13712
|
-
|
|
13713
|
-
|
|
13714
|
-
|
|
13715
|
-
|
|
13716
|
-
|
|
13717
|
-
|
|
13718
|
-
|
|
13719
|
-
|
|
13720
|
-
|
|
13721
|
-
|
|
13722
|
-
|
|
13723
|
-
|
|
13709
|
+
request = await beforeRequest({ request, options: opts });
|
|
13710
|
+
return request;
|
|
13711
|
+
}
|
|
13712
|
+
async function tryFallback(request, response, opts, optionsFallbacks) {
|
|
13713
|
+
var _a, _b;
|
|
13714
|
+
if (response.ok || optionsFallbacks.length === 0)
|
|
13715
|
+
return null;
|
|
13716
|
+
const fallbackStrategy = optionsFallbacks[0];
|
|
13717
|
+
const shouldFallback = await fallbackStrategy.shouldFallbackCondition({ request, response });
|
|
13718
|
+
const fallbackOptions = shouldFallback && await ((_a = fallbackStrategy === null || fallbackStrategy === void 0 ? void 0 : fallbackStrategy.updateOptions) === null || _a === void 0 ? void 0 : _a.call(fallbackStrategy, {
|
|
13719
|
+
options: { ...opts, fallbacks: optionsFallbacks.slice(1) }
|
|
13720
|
+
}));
|
|
13721
|
+
if (fallbackOptions) {
|
|
13722
|
+
const fallbackStrategyResponse = await singleReq(request, fallbackOptions);
|
|
13723
|
+
(_b = fallbackStrategy.cache) !== null && _b !== void 0 ? _b : fallbackStrategy.cache = /* @__PURE__ */ new Map();
|
|
13724
|
+
fallbackStrategy.cache.set(new URL(request.url).origin, fallbackStrategyResponse.ok);
|
|
13725
|
+
return fallbackStrategyResponse;
|
|
13726
|
+
}
|
|
13727
|
+
return null;
|
|
13728
|
+
}
|
|
13729
|
+
async function findApplicableRetry(opts, context) {
|
|
13730
|
+
const retries = opts.retry;
|
|
13731
|
+
if (!retries)
|
|
13732
|
+
return null;
|
|
13733
|
+
if (context.response) {
|
|
13734
|
+
return await retries.reduce(async (prev, retry) => {
|
|
13735
|
+
var _a, _b;
|
|
13724
13736
|
const result = await prev;
|
|
13725
|
-
return result !== null && result !== void 0 ? result : (((
|
|
13726
|
-
}, Promise.resolve(null))
|
|
13727
|
-
|
|
13728
|
-
|
|
13729
|
-
|
|
13730
|
-
await utils28.general.sleep(delay);
|
|
13731
|
-
retry.attempt += 1;
|
|
13732
|
-
const retryRequest = await beforeRetry({ request, response, attempt: retry.attempt, stop, options: options2 });
|
|
13733
|
-
if (retryRequest !== stop) {
|
|
13734
|
-
return singleReq(retryRequest, options2);
|
|
13735
|
-
}
|
|
13736
|
-
}
|
|
13737
|
-
response = await afterResponse({ request, response, options: options2 });
|
|
13738
|
-
return response;
|
|
13739
|
-
} catch (error) {
|
|
13740
|
-
if (abortCode === AbortCode.requestTimeout)
|
|
13741
|
-
error = new RequestTimeoutError();
|
|
13742
|
-
else if (abortCode === AbortCode.connectionTimeout)
|
|
13743
|
-
error = new ConnectionTimeoutError();
|
|
13744
|
-
const retry = await ((_m = options2.retry) === null || _m === void 0 ? void 0 : _m.reduce((prev, retry2) => {
|
|
13737
|
+
return result !== null && result !== void 0 ? result : (((_a = retry.statuses) === null || _a === void 0 ? void 0 : _a.includes(context.response.status)) || await ((_b = retry.validate) === null || _b === void 0 ? void 0 : _b.call(retry, { response: context.response }))) && (!retry.limit || !retry.attempt || retry.attempt < retry.limit) ? retry : null;
|
|
13738
|
+
}, Promise.resolve(null));
|
|
13739
|
+
}
|
|
13740
|
+
if (context.error) {
|
|
13741
|
+
return await retries.reduce((prev, retry) => {
|
|
13745
13742
|
return prev.then(async (result) => {
|
|
13746
|
-
var
|
|
13747
|
-
return (result !== null && result !== void 0 ? result : (((
|
|
13743
|
+
var _a, _b;
|
|
13744
|
+
return (result !== null && result !== void 0 ? result : (((_a = retry.codes) === null || _a === void 0 ? void 0 : _a.includes(context.error.code)) || await ((_b = retry.validate) === null || _b === void 0 ? void 0 : _b.call(retry, { error: context.error }))) && (!retry.limit || !retry.attempt || retry.attempt < retry.limit)) ? retry : null;
|
|
13748
13745
|
});
|
|
13749
|
-
}, Promise.resolve(null))
|
|
13750
|
-
|
|
13751
|
-
|
|
13752
|
-
|
|
13753
|
-
|
|
13754
|
-
|
|
13755
|
-
|
|
13756
|
-
|
|
13757
|
-
|
|
13758
|
-
|
|
13759
|
-
|
|
13760
|
-
|
|
13761
|
-
|
|
13762
|
-
|
|
13763
|
-
|
|
13764
|
-
|
|
13765
|
-
|
|
13766
|
-
|
|
13746
|
+
}, Promise.resolve(null));
|
|
13747
|
+
}
|
|
13748
|
+
return null;
|
|
13749
|
+
}
|
|
13750
|
+
function calculateRetryDelay(retry, response) {
|
|
13751
|
+
var _a, _b;
|
|
13752
|
+
if (response === null || response === void 0 ? void 0 : response.headers.has("Retry-After")) {
|
|
13753
|
+
return Number(response.headers.get("Retry-After")) * 1e3;
|
|
13754
|
+
}
|
|
13755
|
+
if (utils28.types.isArray(retry.timeout)) {
|
|
13756
|
+
return retry.timeout[Math.min((_a = retry.attempt) !== null && _a !== void 0 ? _a : 0, retry.timeout.length - 1)];
|
|
13757
|
+
}
|
|
13758
|
+
return (_b = retry.timeout) !== null && _b !== void 0 ? _b : 0;
|
|
13759
|
+
}
|
|
13760
|
+
function checkRetryTimeout() {
|
|
13761
|
+
if (options.retryTimeout && retryStartTime && Date.now() - retryStartTime >= options.retryTimeout) {
|
|
13762
|
+
throw new RetryTimeoutError(options.retryTimeout);
|
|
13763
|
+
}
|
|
13764
|
+
}
|
|
13765
|
+
async function handleRetry(request, retry, context, opts) {
|
|
13766
|
+
var _a;
|
|
13767
|
+
(_a = retry.attempt) !== null && _a !== void 0 ? _a : retry.attempt = 0;
|
|
13768
|
+
retryStartTime !== null && retryStartTime !== void 0 ? retryStartTime : retryStartTime = Date.now();
|
|
13769
|
+
checkRetryTimeout();
|
|
13770
|
+
const delay = calculateRetryDelay(retry, context.response);
|
|
13771
|
+
await utils28.general.sleep(delay);
|
|
13772
|
+
retry.attempt += 1;
|
|
13773
|
+
return await beforeRetry({
|
|
13774
|
+
request,
|
|
13775
|
+
...context,
|
|
13776
|
+
attempt: retry.attempt,
|
|
13777
|
+
stop,
|
|
13778
|
+
options: opts
|
|
13779
|
+
});
|
|
13780
|
+
}
|
|
13781
|
+
function normalizeAbortError(error) {
|
|
13782
|
+
if (abortCode === AbortCode.requestTimeout)
|
|
13783
|
+
return new RequestTimeoutError();
|
|
13784
|
+
if (abortCode === AbortCode.connectionTimeout)
|
|
13785
|
+
return new ConnectionTimeoutError();
|
|
13786
|
+
return error;
|
|
13787
|
+
}
|
|
13788
|
+
function cleanupRequest(opts, requestTimer, abortHandler) {
|
|
13789
|
+
if (requestTimer)
|
|
13790
|
+
clearTimeout(requestTimer);
|
|
13791
|
+
connectionController.signal.removeEventListener("abort", abortHandler);
|
|
13792
|
+
if (opts.signal) {
|
|
13793
|
+
opts.signal.removeEventListener("abort", abortHandler);
|
|
13794
|
+
}
|
|
13795
|
+
}
|
|
13796
|
+
async function singleReq(input2, options2) {
|
|
13797
|
+
var _a, _b;
|
|
13798
|
+
const fetch2 = (_a = options2.fetch) !== null && _a !== void 0 ? _a : fetch_browser_default;
|
|
13799
|
+
let optionsFallbacks = [];
|
|
13800
|
+
if (options2.fallbacks)
|
|
13801
|
+
optionsFallbacks = utils28.types.isArray(options2.fallbacks) ? options2.fallbacks : [options2.fallbacks];
|
|
13802
|
+
const url = new URL(String((_b = input2.url) !== null && _b !== void 0 ? _b : input2), options2.baseUrl);
|
|
13803
|
+
const fb = optionsFallbacks.find((fallback) => {
|
|
13804
|
+
var _a2;
|
|
13805
|
+
return (_a2 = fallback.cache) === null || _a2 === void 0 ? void 0 : _a2.get(url.origin);
|
|
13806
|
+
});
|
|
13807
|
+
if (fb === null || fb === void 0 ? void 0 : fb.updateOptions)
|
|
13808
|
+
options2 = await fb.updateOptions({ options: options2 });
|
|
13809
|
+
while (true) {
|
|
13810
|
+
const { requestController, requestTimer, abortHandler } = setupRequestController(options2);
|
|
13811
|
+
const request = await buildRequest(input2, options2, requestController);
|
|
13812
|
+
try {
|
|
13813
|
+
let response = await fetch2(request);
|
|
13814
|
+
const fallbackResponse = await tryFallback(request, response, options2, optionsFallbacks);
|
|
13815
|
+
if (fallbackResponse)
|
|
13816
|
+
return fallbackResponse;
|
|
13817
|
+
const retry = await findApplicableRetry(options2, { response });
|
|
13818
|
+
if (retry) {
|
|
13819
|
+
const retryRequest = await handleRetry(request, retry, { response }, options2);
|
|
13820
|
+
if (retryRequest !== stop) {
|
|
13821
|
+
cleanupRequest(options2, requestTimer, abortHandler);
|
|
13822
|
+
input2 = retryRequest;
|
|
13823
|
+
continue;
|
|
13824
|
+
}
|
|
13825
|
+
}
|
|
13826
|
+
response = await afterResponse({ request, response, options: options2 });
|
|
13827
|
+
return response;
|
|
13828
|
+
} catch (error) {
|
|
13829
|
+
error = normalizeAbortError(error);
|
|
13830
|
+
const retry = await findApplicableRetry(options2, { error });
|
|
13831
|
+
if (retry) {
|
|
13832
|
+
const retryRequest = await handleRetry(request, retry, { error }, options2);
|
|
13833
|
+
if (retryRequest !== stop) {
|
|
13834
|
+
cleanupRequest(options2, requestTimer, abortHandler);
|
|
13835
|
+
input2 = retryRequest;
|
|
13836
|
+
continue;
|
|
13837
|
+
}
|
|
13838
|
+
}
|
|
13839
|
+
error = await afterError({ request, error, options: options2 });
|
|
13840
|
+
throw error;
|
|
13841
|
+
} finally {
|
|
13842
|
+
cleanupRequest(options2, requestTimer, abortHandler);
|
|
13843
|
+
}
|
|
13767
13844
|
}
|
|
13768
13845
|
}
|
|
13769
13846
|
}
|
|
@@ -13868,7 +13945,7 @@ function calculateTimeout(requestTimeout, body, options) {
|
|
|
13868
13945
|
return base + perByte * body.byteLength;
|
|
13869
13946
|
if (global.Blob && utils28.types.instanceOf(body, Blob))
|
|
13870
13947
|
return base + perByte * body.size;
|
|
13871
|
-
if (global.Buffer && utils28.types.instanceOf(body,
|
|
13948
|
+
if (global.Buffer && utils28.types.instanceOf(body, import_buffer68.Buffer))
|
|
13872
13949
|
return base + perByte * body.byteLength;
|
|
13873
13950
|
const allHooks = (_a = options === null || options === void 0 ? void 0 : options.hooks) !== null && _a !== void 0 ? _a : [];
|
|
13874
13951
|
allHooks.forEach((hooks) => {
|
|
@@ -13879,7 +13956,7 @@ function calculateTimeout(requestTimeout, body, options) {
|
|
|
13879
13956
|
}
|
|
13880
13957
|
return requestTimeout;
|
|
13881
13958
|
}
|
|
13882
|
-
var utils28,
|
|
13959
|
+
var utils28, import_buffer68, disableHttpAgentReuse;
|
|
13883
13960
|
var init_req = __esm({
|
|
13884
13961
|
"../req/dist/req.js"() {
|
|
13885
13962
|
"use strict";
|
|
@@ -13893,7 +13970,7 @@ var init_req = __esm({
|
|
|
13893
13970
|
init_req_errors();
|
|
13894
13971
|
init_fetch_browser();
|
|
13895
13972
|
utils28 = __toESM(require_browser3(), 1);
|
|
13896
|
-
|
|
13973
|
+
import_buffer68 = __toESM(require_buffer(), 1);
|
|
13897
13974
|
disableHttpAgentReuse = process.env.APPLITOOLS_DISABLE_AGENT_CACHIFY;
|
|
13898
13975
|
}
|
|
13899
13976
|
});
|
|
@@ -13901,9 +13978,12 @@ var init_req = __esm({
|
|
|
13901
13978
|
// ../req/dist/index.js
|
|
13902
13979
|
var dist_exports = {};
|
|
13903
13980
|
__export(dist_exports, {
|
|
13981
|
+
ConnectionTimeoutError: () => ConnectionTimeoutError,
|
|
13904
13982
|
Headers: () => Headers,
|
|
13905
13983
|
Request: () => Request,
|
|
13984
|
+
RequestTimeoutError: () => RequestTimeoutError,
|
|
13906
13985
|
Response: () => Response,
|
|
13986
|
+
RetryTimeoutError: () => RetryTimeoutError,
|
|
13907
13987
|
default: () => req,
|
|
13908
13988
|
makeReq: () => makeReq,
|
|
13909
13989
|
req: () => req,
|
|
@@ -13919,6 +13999,7 @@ var init_dist = __esm({
|
|
|
13919
13999
|
init_fetch_browser();
|
|
13920
14000
|
init_req();
|
|
13921
14001
|
init_req();
|
|
14002
|
+
init_req_errors();
|
|
13922
14003
|
}
|
|
13923
14004
|
});
|
|
13924
14005
|
|
|
@@ -14461,6 +14542,24 @@ var require_mask = __commonJS({
|
|
|
14461
14542
|
}
|
|
14462
14543
|
});
|
|
14463
14544
|
|
|
14545
|
+
// ../core-base/dist/utils/addRetryTimeout.js
|
|
14546
|
+
var require_addRetryTimeout = __commonJS({
|
|
14547
|
+
"../core-base/dist/utils/addRetryTimeout.js"(exports) {
|
|
14548
|
+
"use strict";
|
|
14549
|
+
init_process();
|
|
14550
|
+
init_setImmediate();
|
|
14551
|
+
init_buffer();
|
|
14552
|
+
init_setInterval();
|
|
14553
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14554
|
+
exports.addRetryTimeout = void 0;
|
|
14555
|
+
var DEFAULT_RETRY_TIMEOUT_MINUTES = 60;
|
|
14556
|
+
function addRetryTimeout(retryTimeout) {
|
|
14557
|
+
return retryTimeout !== void 0 ? { retryTimeout } : { retryTimeout: DEFAULT_RETRY_TIMEOUT_MINUTES * 60 * 1e3 };
|
|
14558
|
+
}
|
|
14559
|
+
exports.addRetryTimeout = addRetryTimeout;
|
|
14560
|
+
}
|
|
14561
|
+
});
|
|
14562
|
+
|
|
14464
14563
|
// ../core-base/dist/server/req-eyes.js
|
|
14465
14564
|
var require_req_eyes = __commonJS({
|
|
14466
14565
|
"../core-base/dist/server/req-eyes.js"(exports) {
|
|
@@ -14509,10 +14608,41 @@ var require_req_eyes = __commonJS({
|
|
|
14509
14608
|
var missingApiKeyError_1 = require_missingApiKeyError();
|
|
14510
14609
|
var invalidApiKeyError_1 = require_invalidApiKeyError();
|
|
14511
14610
|
var mask_1 = require_mask();
|
|
14611
|
+
var addRetryTimeout_1 = require_addRetryTimeout();
|
|
14612
|
+
var backoffDelays = [
|
|
14613
|
+
1e3,
|
|
14614
|
+
1150,
|
|
14615
|
+
1300,
|
|
14616
|
+
1500,
|
|
14617
|
+
1700,
|
|
14618
|
+
2e3,
|
|
14619
|
+
2300,
|
|
14620
|
+
2700,
|
|
14621
|
+
3100,
|
|
14622
|
+
3500,
|
|
14623
|
+
4e3,
|
|
14624
|
+
4700,
|
|
14625
|
+
5400,
|
|
14626
|
+
6200,
|
|
14627
|
+
7100,
|
|
14628
|
+
8100,
|
|
14629
|
+
9400,
|
|
14630
|
+
10800,
|
|
14631
|
+
12400,
|
|
14632
|
+
14200,
|
|
14633
|
+
16400,
|
|
14634
|
+
18800,
|
|
14635
|
+
18800,
|
|
14636
|
+
21600,
|
|
14637
|
+
24900,
|
|
14638
|
+
28600,
|
|
14639
|
+
3e4
|
|
14640
|
+
];
|
|
14512
14641
|
function makeReqEyes({ settings, fetch: fetch2, logger }) {
|
|
14513
|
-
var _a, _b, _c;
|
|
14642
|
+
var _a, _b, _c, _d;
|
|
14514
14643
|
const retryLimit = process.env.EYES_NETWORK_RETRY_LIMIT ? Number(process.env.EYES_NETWORK_RETRY_LIMIT) : 5;
|
|
14515
14644
|
const retryTimeout = process.env.EYES_NETWORK_RETRY_TIMEOUT ? Number(process.env.EYES_NETWORK_RETRY_TIMEOUT) : 200;
|
|
14645
|
+
const retryDuration = process.env.EYES_NETWORK_RETRY_DURATION ? Number(process.env.EYES_NETWORK_RETRY_DURATION) : void 0;
|
|
14516
14646
|
return (0, req_1.makeReq)({
|
|
14517
14647
|
baseUrl: settings.eyesServerUrl,
|
|
14518
14648
|
query: { removeSession: settings.removeSession },
|
|
@@ -14527,7 +14657,8 @@ var require_req_eyes = __commonJS({
|
|
|
14527
14657
|
useDnsCache: settings.useDnsCache,
|
|
14528
14658
|
connectionTimeout: (_a = settings.connectionTimeout) !== null && _a !== void 0 ? _a : 3e5,
|
|
14529
14659
|
requestTimeout: (_b = settings.requestTimeout) !== null && _b !== void 0 ? _b : 3e4,
|
|
14530
|
-
|
|
14660
|
+
retryTimeout: (_c = settings.retryTimeout) !== null && _c !== void 0 ? _c : retryDuration,
|
|
14661
|
+
retry: (_d = settings.retry) !== null && _d !== void 0 ? _d : [
|
|
14531
14662
|
// retry on network issues
|
|
14532
14663
|
{
|
|
14533
14664
|
limit: retryLimit,
|
|
@@ -14543,8 +14674,8 @@ var require_req_eyes = __commonJS({
|
|
|
14543
14674
|
"ENOMEM"
|
|
14544
14675
|
],
|
|
14545
14676
|
validate(options) {
|
|
14546
|
-
var _a2, _b2, _c2,
|
|
14547
|
-
return [404, 502, 503, 504, 500].includes((_b2 = (_a2 = options === null || options === void 0 ? void 0 : options.response) === null || _a2 === void 0 ? void 0 : _a2.status) !== null && _b2 !== void 0 ? _b2 : 0) && !((
|
|
14677
|
+
var _a2, _b2, _c2, _d2;
|
|
14678
|
+
return [404, 502, 503, 504, 500].includes((_b2 = (_a2 = options === null || options === void 0 ? void 0 : options.response) === null || _a2 === void 0 ? void 0 : _a2.status) !== null && _b2 !== void 0 ? _b2 : 0) && !((_d2 = (_c2 = options === null || options === void 0 ? void 0 : options.response) === null || _c2 === void 0 ? void 0 : _c2.headers) === null || _d2 === void 0 ? void 0 : _d2.get("x-applitools-dont-retry"));
|
|
14548
14679
|
}
|
|
14549
14680
|
}
|
|
14550
14681
|
],
|
|
@@ -14622,6 +14753,7 @@ var require_req_eyes = __commonJS({
|
|
|
14622
14753
|
request.headers.set("Eyes-Date", (/* @__PURE__ */ new Date()).toUTCString());
|
|
14623
14754
|
},
|
|
14624
14755
|
async afterResponse({ response, options }) {
|
|
14756
|
+
var _a;
|
|
14625
14757
|
const logger = options.logger;
|
|
14626
14758
|
logger === null || logger === void 0 ? void 0 : logger.log(`Location header: ${response.headers.has("Location") ? response.headers.get("Location") : "not found"}`);
|
|
14627
14759
|
if (response.status === 202 && response.headers.has("Location")) {
|
|
@@ -14629,16 +14761,18 @@ var require_req_eyes = __commonJS({
|
|
|
14629
14761
|
await utils34.general.sleep(Number(response.headers.get("Retry-After")) * 1e3);
|
|
14630
14762
|
}
|
|
14631
14763
|
const resultUrl = updateOriginAndPath(response.headers.get("Location"), settings.eyesServerUrl);
|
|
14632
|
-
|
|
14764
|
+
const currentRetryTimeout = (_a = options === null || options === void 0 ? void 0 : options.retryTimeout) !== null && _a !== void 0 ? _a : settings.retryTimeout;
|
|
14765
|
+
logger === null || logger === void 0 ? void 0 : logger.log(`Polling started for location: ${resultUrl}, with retryTimeout: ${currentRetryTimeout}`);
|
|
14633
14766
|
const pollResponse = await req2(resultUrl, options !== null && options !== void 0 ? options : {}, {
|
|
14634
14767
|
method: "GET",
|
|
14635
14768
|
body: void 0,
|
|
14769
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(currentRetryTimeout),
|
|
14636
14770
|
expected: [200, 201, 202, 203, 204, 205, 206, 207, 208, 502, 503, 504],
|
|
14637
14771
|
retry: {
|
|
14638
|
-
timeout:
|
|
14772
|
+
timeout: backoffDelays,
|
|
14639
14773
|
validate: async ({ response: response2 }) => {
|
|
14640
|
-
var
|
|
14641
|
-
return !(response2 === null || response2 === void 0 ? void 0 : response2.headers.get("x-applitools-dont-retry")) && ![400, 401, 403, 500].includes((
|
|
14774
|
+
var _a2;
|
|
14775
|
+
return !(response2 === null || response2 === void 0 ? void 0 : response2.headers.get("x-applitools-dont-retry")) && ![400, 401, 403, 500].includes((_a2 = response2 === null || response2 === void 0 ? void 0 : response2.status) !== null && _a2 !== void 0 ? _a2 : 400);
|
|
14642
14776
|
}
|
|
14643
14777
|
},
|
|
14644
14778
|
connectionTimeout: 0,
|
|
@@ -21807,7 +21941,7 @@ var require_server_region_converter = __commonJS({
|
|
|
21807
21941
|
function toAccessibilityRegions(regions) {
|
|
21808
21942
|
return regions === null || regions === void 0 ? void 0 : regions.map((region) => {
|
|
21809
21943
|
const serverRegion = toServerRegion(region);
|
|
21810
|
-
if (utils34.types.has(region, "type")) {
|
|
21944
|
+
if (utils34.types.has(region, "type") && region.type !== void 0) {
|
|
21811
21945
|
serverRegion.type = region.type;
|
|
21812
21946
|
}
|
|
21813
21947
|
return serverRegion;
|
|
@@ -21816,7 +21950,7 @@ var require_server_region_converter = __commonJS({
|
|
|
21816
21950
|
function toDynamicRegions(regions) {
|
|
21817
21951
|
return regions === null || regions === void 0 ? void 0 : regions.map((region) => {
|
|
21818
21952
|
const serverRegion = toServerRegion(region);
|
|
21819
|
-
if (utils34.types.has(region, "type")) {
|
|
21953
|
+
if (utils34.types.has(region, "type") && region.type !== void 0) {
|
|
21820
21954
|
serverRegion.dynamicSettings = {
|
|
21821
21955
|
ignorePatterns: utils34.types.isArray(region.type) ? region.type : [region.type]
|
|
21822
21956
|
};
|
|
@@ -21828,7 +21962,9 @@ var require_server_region_converter = __commonJS({
|
|
|
21828
21962
|
var _a;
|
|
21829
21963
|
const options = {};
|
|
21830
21964
|
if (utils34.types.has(region, "region")) {
|
|
21831
|
-
|
|
21965
|
+
if (region.regionId !== void 0) {
|
|
21966
|
+
options.regionId = region.regionId;
|
|
21967
|
+
}
|
|
21832
21968
|
if (utils34.types.has(region, "offset")) {
|
|
21833
21969
|
const offset = region.offset;
|
|
21834
21970
|
options.maxUpOffset = offset.top;
|
|
@@ -21970,6 +22106,7 @@ var require_requests = __commonJS({
|
|
|
21970
22106
|
var mask_1 = require_mask();
|
|
21971
22107
|
var chalk_1 = __importDefault(require_source());
|
|
21972
22108
|
var server_concurrency_converter_1 = require_server_concurrency_converter();
|
|
22109
|
+
var addRetryTimeout_1 = require_addRetryTimeout();
|
|
21973
22110
|
exports.makeCoreRequestsWithCache = utils34.general.cachify(makeCoreRequests, () => "default");
|
|
21974
22111
|
function makeCoreRequests({ fetch: fetch2, logger: defaultLogger } = {}) {
|
|
21975
22112
|
const mainLogger = (0, logger_1.makeLogger)({ logger: defaultLogger, format: { label: "core-requests" } });
|
|
@@ -22005,7 +22142,7 @@ var require_requests = __commonJS({
|
|
|
22005
22142
|
logger.log('Request "openEyes" called with settings', settings);
|
|
22006
22143
|
const account = await getAccountInfoWithCache({ settings });
|
|
22007
22144
|
if (account.processKeepaliveIntervalSec) {
|
|
22008
|
-
heartbeat.
|
|
22145
|
+
heartbeat.acquire({
|
|
22009
22146
|
eyesServerUrl: settings.eyesServerUrl,
|
|
22010
22147
|
apiKey: settings.apiKey,
|
|
22011
22148
|
proxy: settings.proxy,
|
|
@@ -22062,7 +22199,7 @@ var require_requests = __commonJS({
|
|
|
22062
22199
|
return makeEyesRequests({ core, test, req: req2, logger });
|
|
22063
22200
|
}
|
|
22064
22201
|
async function openFunctionalSession({ settings, logger = mainLogger }) {
|
|
22065
|
-
var _a, _b, _c, _d,
|
|
22202
|
+
var _a, _b, _c, _d, _f;
|
|
22066
22203
|
logger = logger.extend(mainLogger, { tags: [`core-request-${utils34.general.shortid()}`] });
|
|
22067
22204
|
const req2 = (0, req_eyes_1.makeReqEyes)({ settings, fetch: fetch2, logger });
|
|
22068
22205
|
logger.log('Request "openFunctionalSession" called with settings', settings);
|
|
@@ -22090,7 +22227,7 @@ var require_requests = __commonJS({
|
|
|
22090
22227
|
properties: settings.batch.properties,
|
|
22091
22228
|
buildId: settings.batch.buildId
|
|
22092
22229
|
},
|
|
22093
|
-
egSessionId: (
|
|
22230
|
+
egSessionId: (_f = (_d = settings.environment) === null || _d === void 0 ? void 0 : _d.ecSessionId) !== null && _f !== void 0 ? _f : null,
|
|
22094
22231
|
environment: settings.environment && (settings.environment.rawEnvironment ? {
|
|
22095
22232
|
...settings.environment.rawEnvironment,
|
|
22096
22233
|
os: settings.environment.os,
|
|
@@ -22135,7 +22272,7 @@ var require_requests = __commonJS({
|
|
|
22135
22272
|
return makeFunctionalSessionRequests({ core, test, req: req2, logger });
|
|
22136
22273
|
}
|
|
22137
22274
|
async function openCheckAndClose({ target, settings, logger = mainLogger }) {
|
|
22138
|
-
var _a, _b, _c, _d,
|
|
22275
|
+
var _a, _b, _c, _d, _f, _g, _h, _j, _k;
|
|
22139
22276
|
const req2 = (0, req_eyes_1.makeReqEyes)({ settings, fetch: fetch2, logger });
|
|
22140
22277
|
logger.log('Request "openCheckAndClose" called with settings', settings);
|
|
22141
22278
|
const account = await getAccountInfoWithCache({ settings, logger });
|
|
@@ -22171,13 +22308,13 @@ var require_requests = __commonJS({
|
|
|
22171
22308
|
properties: settings.batch.properties,
|
|
22172
22309
|
buildId: settings.batch.buildId
|
|
22173
22310
|
},
|
|
22174
|
-
egSessionId: (
|
|
22311
|
+
egSessionId: (_f = (_d = settings.environment) === null || _d === void 0 ? void 0 : _d.ecSessionId) !== null && _f !== void 0 ? _f : null,
|
|
22175
22312
|
environment: settings.environment && (settings.environment.rawEnvironment ? {
|
|
22176
22313
|
...settings.environment.rawEnvironment,
|
|
22177
|
-
os: (
|
|
22178
|
-
osInfo: (
|
|
22179
|
-
hostingApp: (
|
|
22180
|
-
hostingAppInfo: (
|
|
22314
|
+
os: (_g = settings.environment.os) !== null && _g !== void 0 ? _g : settings.environment.rawEnvironment.os,
|
|
22315
|
+
osInfo: (_h = settings.environment.displayOs) !== null && _h !== void 0 ? _h : settings.environment.rawEnvironment.osInfo,
|
|
22316
|
+
hostingApp: (_j = settings.environment.hostingApp) !== null && _j !== void 0 ? _j : settings.environment.rawEnvironment.hostingApp,
|
|
22317
|
+
hostingAppInfo: (_k = settings.environment.displayHostingApp) !== null && _k !== void 0 ? _k : settings.environment.rawEnvironment.hostingAppInfo
|
|
22181
22318
|
} : {
|
|
22182
22319
|
deviceInfo: settings.environment.deviceName,
|
|
22183
22320
|
os: settings.environment.os,
|
|
@@ -22213,6 +22350,7 @@ var require_requests = __commonJS({
|
|
|
22213
22350
|
updateBaselineIfDifferent: settings.updateBaselineIfDifferent
|
|
22214
22351
|
},
|
|
22215
22352
|
expected: [200, 201],
|
|
22353
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(settings.retryTimeout),
|
|
22216
22354
|
logger
|
|
22217
22355
|
});
|
|
22218
22356
|
return openCheckAndCloseResponse.then(() => {
|
|
@@ -22473,6 +22611,7 @@ var require_requests = __commonJS({
|
|
|
22473
22611
|
accessToken: settings.secretToken
|
|
22474
22612
|
},
|
|
22475
22613
|
expected: 200,
|
|
22614
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(settings.retryTimeout),
|
|
22476
22615
|
logger
|
|
22477
22616
|
});
|
|
22478
22617
|
logger.log('Request "deleteTest" finished successfully');
|
|
@@ -22545,7 +22684,7 @@ var require_requests = __commonJS({
|
|
|
22545
22684
|
logger.log('Request "openCheckAndClose" called for target', target, "with settings", settings);
|
|
22546
22685
|
const account = await getAccountInfoWithCache({ settings });
|
|
22547
22686
|
if (account.processKeepaliveIntervalSec) {
|
|
22548
|
-
heartbeat.
|
|
22687
|
+
heartbeat.acquire({
|
|
22549
22688
|
eyesServerUrl: settings.eyesServerUrl,
|
|
22550
22689
|
apiKey: settings.apiKey,
|
|
22551
22690
|
proxy: settings.proxy,
|
|
@@ -22588,6 +22727,7 @@ var require_requests = __commonJS({
|
|
|
22588
22727
|
}
|
|
22589
22728
|
},
|
|
22590
22729
|
expected: [200, 404],
|
|
22730
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(settings.retryTimeout),
|
|
22591
22731
|
logger
|
|
22592
22732
|
}).then(async (response) => {
|
|
22593
22733
|
if (response.status === 404) {
|
|
@@ -22639,7 +22779,7 @@ var require_requests = __commonJS({
|
|
|
22639
22779
|
let resultResponsePromise;
|
|
22640
22780
|
let supportsCheckAndClose = true;
|
|
22641
22781
|
let abortReason;
|
|
22642
|
-
const req2 = defaultReq !== null && defaultReq !== void 0 ? defaultReq : (0, req_eyes_1.makeReqEyes)({ settings: test.eyesServer, fetch: fetch2, logger: mainLogger });
|
|
22782
|
+
const req2 = defaultReq !== null && defaultReq !== void 0 ? defaultReq : (0, req_eyes_1.makeReqEyes)({ settings: { ...test.eyesServer }, fetch: fetch2, logger: mainLogger });
|
|
22643
22783
|
const upload = (0, upload_1.makeUpload)({
|
|
22644
22784
|
settings: { uploadUrl: test.account.uploadUrl, proxy: test.eyesServer.proxy },
|
|
22645
22785
|
logger: mainLogger
|
|
@@ -22668,6 +22808,7 @@ var require_requests = __commonJS({
|
|
|
22668
22808
|
]);
|
|
22669
22809
|
const response = await req2(`./api/sessions/running/${encodeURIComponent(test.testId)}`, {
|
|
22670
22810
|
name: "check",
|
|
22811
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(settings.retryTimeout),
|
|
22671
22812
|
method: "POST",
|
|
22672
22813
|
body: toServerMatchOptions({ target, settings }),
|
|
22673
22814
|
expected: 200,
|
|
@@ -22697,6 +22838,7 @@ var require_requests = __commonJS({
|
|
|
22697
22838
|
resultResponsePromise = req2(`./api/sessions/running/${encodeURIComponent(test.testId)}/matchandend`, {
|
|
22698
22839
|
name: "checkAndClose",
|
|
22699
22840
|
method: "POST",
|
|
22841
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(settings.retryTimeout),
|
|
22700
22842
|
body: {
|
|
22701
22843
|
...matchOptions,
|
|
22702
22844
|
options: {
|
|
@@ -22735,6 +22877,7 @@ var require_requests = __commonJS({
|
|
|
22735
22877
|
resultResponsePromise = report({ settings, logger }).then(() => req2(`./api/sessions/running/${encodeURIComponent(test.testId)}`, {
|
|
22736
22878
|
name: "close",
|
|
22737
22879
|
method: "DELETE",
|
|
22880
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(settings === null || settings === void 0 ? void 0 : settings.retryTimeout),
|
|
22738
22881
|
query: {
|
|
22739
22882
|
aborted: false,
|
|
22740
22883
|
updateBaseline: test.isNew ? settings === null || settings === void 0 ? void 0 : settings.updateBaselineIfNew : settings === null || settings === void 0 ? void 0 : settings.updateBaselineIfDifferent
|
|
@@ -22744,7 +22887,7 @@ var require_requests = __commonJS({
|
|
|
22744
22887
|
}));
|
|
22745
22888
|
return resultResponsePromise.then(() => {
|
|
22746
22889
|
logger.log('Request "close" finished successfully');
|
|
22747
|
-
}).catch(() => void 0);
|
|
22890
|
+
}).catch((_e) => void 0);
|
|
22748
22891
|
}
|
|
22749
22892
|
async function abort({ settings, logger = mainLogger } = {}) {
|
|
22750
22893
|
logger = logger.extend(mainLogger, { tags: [`core-request-${utils34.general.shortid()}`] });
|
|
@@ -22760,6 +22903,7 @@ var require_requests = __commonJS({
|
|
|
22760
22903
|
query: {
|
|
22761
22904
|
aborted: true
|
|
22762
22905
|
},
|
|
22906
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(settings === null || settings === void 0 ? void 0 : settings.retryTimeout),
|
|
22763
22907
|
expected: 200,
|
|
22764
22908
|
logger
|
|
22765
22909
|
}));
|
|
@@ -22845,6 +22989,7 @@ var require_requests = __commonJS({
|
|
|
22845
22989
|
return req2(`./api/sessions/running/${encodeURIComponent(test.testId)}`, {
|
|
22846
22990
|
name: "close",
|
|
22847
22991
|
method: "DELETE",
|
|
22992
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(settings === null || settings === void 0 ? void 0 : settings.retryTimeout),
|
|
22848
22993
|
query: { aborted: false, nonVisualStatus: (_a = settings === null || settings === void 0 ? void 0 : settings.status) !== null && _a !== void 0 ? _a : "Completed" },
|
|
22849
22994
|
expected: 200,
|
|
22850
22995
|
logger
|
|
@@ -22864,6 +23009,7 @@ var require_requests = __commonJS({
|
|
|
22864
23009
|
resultResponsePromise = report({ settings, logger }).then(() => req2(`./api/sessions/running/${encodeURIComponent(test.testId)}`, {
|
|
22865
23010
|
name: "abort",
|
|
22866
23011
|
method: "DELETE",
|
|
23012
|
+
...(0, addRetryTimeout_1.addRetryTimeout)(settings === null || settings === void 0 ? void 0 : settings.retryTimeout),
|
|
22867
23013
|
query: {
|
|
22868
23014
|
aborted: true
|
|
22869
23015
|
},
|
|
@@ -22918,7 +23064,7 @@ var require_requests = __commonJS({
|
|
|
22918
23064
|
}
|
|
22919
23065
|
exports.makeFunctionalSessionRequests = makeFunctionalSessionRequests;
|
|
22920
23066
|
function toStartInfo({ settings }) {
|
|
22921
|
-
var _a, _b, _c, _d,
|
|
23067
|
+
var _a, _b, _c, _d, _f, _g, _h, _j, _k;
|
|
22922
23068
|
return {
|
|
22923
23069
|
agentId: settings.agentId,
|
|
22924
23070
|
agentSessionId: settings.userTestId,
|
|
@@ -22937,13 +23083,13 @@ var require_requests = __commonJS({
|
|
|
22937
23083
|
properties: settings.batch.properties,
|
|
22938
23084
|
buildId: settings.batch.buildId
|
|
22939
23085
|
},
|
|
22940
|
-
egSessionId: (
|
|
23086
|
+
egSessionId: (_f = (_d = settings.environment) === null || _d === void 0 ? void 0 : _d.ecSessionId) !== null && _f !== void 0 ? _f : null,
|
|
22941
23087
|
environment: settings.environment && (settings.environment.rawEnvironment ? {
|
|
22942
23088
|
...settings.environment.rawEnvironment,
|
|
22943
|
-
os: (
|
|
22944
|
-
osInfo: (
|
|
22945
|
-
hostingApp: (
|
|
22946
|
-
hostingAppInfo: (
|
|
23089
|
+
os: (_g = settings.environment.os) !== null && _g !== void 0 ? _g : settings.environment.rawEnvironment.os,
|
|
23090
|
+
osInfo: (_h = settings.environment.displayOs) !== null && _h !== void 0 ? _h : settings.environment.rawEnvironment.osInfo,
|
|
23091
|
+
hostingApp: (_j = settings.environment.hostingApp) !== null && _j !== void 0 ? _j : settings.environment.rawEnvironment.hostingApp,
|
|
23092
|
+
hostingAppInfo: (_k = settings.environment.displayHostingApp) !== null && _k !== void 0 ? _k : settings.environment.rawEnvironment.hostingAppInfo
|
|
22947
23093
|
} : {
|
|
22948
23094
|
deviceInfo: settings.environment.deviceName,
|
|
22949
23095
|
os: settings.environment.os,
|
|
@@ -66217,7 +66363,7 @@ var require_check_and_close = __commonJS({
|
|
|
66217
66363
|
var transform_target_1 = require_transform_target();
|
|
66218
66364
|
var transform_dom_mapping_1 = require_transform_dom_mapping();
|
|
66219
66365
|
var utils34 = __importStar(require_browser3());
|
|
66220
|
-
function makeCheckAndClose({ requests, done, signal, logger: mainLogger }) {
|
|
66366
|
+
function makeCheckAndClose({ requests, done, signal, heartbeat, logger: mainLogger }) {
|
|
66221
66367
|
return async function checkAndClose({ target, settings, logger = mainLogger }) {
|
|
66222
66368
|
var _a, _b, _c, _d, _e;
|
|
66223
66369
|
logger = logger.extend(mainLogger, { tags: [`check-and-close-base-${utils34.general.shortid()}`] });
|
|
@@ -66233,7 +66379,7 @@ var require_check_and_close = __commonJS({
|
|
|
66233
66379
|
if (signal.aborted) {
|
|
66234
66380
|
throw new Error('Command "checkAndClose" was aborted');
|
|
66235
66381
|
}
|
|
66236
|
-
return requests.checkAndClose({ target, settings, logger }).finally(done);
|
|
66382
|
+
return requests.checkAndClose({ target, settings, logger }).finally(done).finally(() => heartbeat === null || heartbeat === void 0 ? void 0 : heartbeat.release());
|
|
66237
66383
|
};
|
|
66238
66384
|
}
|
|
66239
66385
|
exports.makeCheckAndClose = makeCheckAndClose;
|
|
@@ -66283,11 +66429,11 @@ var require_close = __commonJS({
|
|
|
66283
66429
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66284
66430
|
exports.makeClose = void 0;
|
|
66285
66431
|
var utils34 = __importStar(require_browser3());
|
|
66286
|
-
function makeClose({ requests, done, logger: mainLogger }) {
|
|
66432
|
+
function makeClose({ requests, done, heartbeat, logger: mainLogger }) {
|
|
66287
66433
|
return async function close({ settings, logger = mainLogger } = {}) {
|
|
66288
66434
|
logger = logger.extend(mainLogger, { tags: [`close-base-${utils34.general.shortid()}`] });
|
|
66289
66435
|
logger.log('Command "close" is called with settings', settings);
|
|
66290
|
-
void requests.close({ settings, logger }).finally(done);
|
|
66436
|
+
void requests.close({ settings, logger }).finally(done).finally(() => heartbeat === null || heartbeat === void 0 ? void 0 : heartbeat.release());
|
|
66291
66437
|
};
|
|
66292
66438
|
}
|
|
66293
66439
|
exports.makeClose = makeClose;
|
|
@@ -66337,12 +66483,12 @@ var require_abort = __commonJS({
|
|
|
66337
66483
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66338
66484
|
exports.makeAbort = void 0;
|
|
66339
66485
|
var utils34 = __importStar(require_browser3());
|
|
66340
|
-
function makeAbort({ requests, done, controller, logger: mainLogger }) {
|
|
66486
|
+
function makeAbort({ requests, done, controller, heartbeat, logger: mainLogger }) {
|
|
66341
66487
|
return async function abort({ settings, logger = mainLogger } = {}) {
|
|
66342
66488
|
logger = logger.extend(mainLogger, { tags: [`abort-base-${utils34.general.shortid()}`] });
|
|
66343
66489
|
logger.log('Command "abort" is called with settings', settings);
|
|
66344
66490
|
controller.abort();
|
|
66345
|
-
void requests.abort({ settings, logger }).finally(done);
|
|
66491
|
+
void requests.abort({ settings, logger }).finally(done).finally(() => heartbeat === null || heartbeat === void 0 ? void 0 : heartbeat.release());
|
|
66346
66492
|
};
|
|
66347
66493
|
}
|
|
66348
66494
|
exports.makeAbort = makeAbort;
|
|
@@ -66646,9 +66792,10 @@ var require_open_eyes = __commonJS({
|
|
|
66646
66792
|
};
|
|
66647
66793
|
resolve(utils34.general.extend(eyesRequests, {
|
|
66648
66794
|
check: (0, check_1.makeCheck)({ requests: eyesRequests, signal: controller.signal, logger }),
|
|
66649
|
-
|
|
66650
|
-
|
|
66651
|
-
|
|
66795
|
+
// eslint-disable-next-line prettier/prettier
|
|
66796
|
+
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ requests: eyesRequests, done, signal: controller.signal, heartbeat, logger }),
|
|
66797
|
+
close: (0, close_1.makeClose)({ requests: eyesRequests, done, heartbeat, logger }),
|
|
66798
|
+
abort: (0, abort_1.makeAbort)({ requests: eyesRequests, done, controller, heartbeat, logger }),
|
|
66652
66799
|
getResults: (0, get_results_1.makeGetResults)({ requests: eyesRequests, logger })
|
|
66653
66800
|
}));
|
|
66654
66801
|
} catch (error) {
|
|
@@ -67172,33 +67319,61 @@ var require_heartbeat = __commonJS({
|
|
|
67172
67319
|
exports.makeHeartbeat = void 0;
|
|
67173
67320
|
var utils34 = __importStar(require_browser3());
|
|
67174
67321
|
var processId = utils34.general.guid();
|
|
67175
|
-
var
|
|
67322
|
+
var isRunning = false;
|
|
67176
67323
|
var intervalId;
|
|
67324
|
+
var refCount = 0;
|
|
67177
67325
|
function makeHeartbeat({ requests, logger: mainLogger }) {
|
|
67178
67326
|
const logger = mainLogger.extend(mainLogger, { tags: [`heartbeat-base-${utils34.general.shortid()}`] });
|
|
67179
|
-
|
|
67180
|
-
|
|
67181
|
-
|
|
67182
|
-
|
|
67327
|
+
function stopHeartbeats() {
|
|
67328
|
+
logger.log("Stopping heartbeats");
|
|
67329
|
+
isRunning = false;
|
|
67330
|
+
if (intervalId) {
|
|
67331
|
+
clearInterval(intervalId);
|
|
67332
|
+
intervalId = void 0;
|
|
67333
|
+
}
|
|
67334
|
+
}
|
|
67335
|
+
async function startHeartbeats(settings) {
|
|
67336
|
+
if (!isRunning) {
|
|
67337
|
+
processId = utils34.general.guid();
|
|
67338
|
+
isRunning = true;
|
|
67339
|
+
logger.log("Starting heartbeats with new processId:", processId);
|
|
67340
|
+
await requests.sendHeartbeat({ settings: { ...settings, processId }, logger }).catch((error) => {
|
|
67341
|
+
logger.error("Failed to send heartbeat:", error);
|
|
67342
|
+
});
|
|
67183
67343
|
intervalId = setIntervalBrowser(async () => {
|
|
67184
67344
|
try {
|
|
67185
67345
|
await requests.sendHeartbeat({ settings: { ...settings, processId }, logger });
|
|
67186
67346
|
} catch (error) {
|
|
67187
67347
|
if (error.message === "This process is expired. All its sessions were abandoned") {
|
|
67188
|
-
|
|
67189
|
-
processId = utils34.general.guid();
|
|
67190
|
-
clearInterval(intervalId);
|
|
67348
|
+
stopHeartbeats();
|
|
67191
67349
|
}
|
|
67192
67350
|
}
|
|
67193
67351
|
}, settings.interval);
|
|
67194
67352
|
intervalId.unref();
|
|
67195
67353
|
}
|
|
67196
67354
|
}
|
|
67355
|
+
function acquire(settings) {
|
|
67356
|
+
refCount++;
|
|
67357
|
+
logger.log("Heartbeat acquired, refCount:", refCount);
|
|
67358
|
+
void startHeartbeats(settings).catch((error) => {
|
|
67359
|
+
logger.error("Failed to start heartbeats:", error);
|
|
67360
|
+
});
|
|
67361
|
+
}
|
|
67362
|
+
function release() {
|
|
67363
|
+
if (refCount > 0) {
|
|
67364
|
+
refCount--;
|
|
67365
|
+
logger.log("Heartbeat released, refCount:", refCount);
|
|
67366
|
+
if (refCount === 0) {
|
|
67367
|
+
stopHeartbeats();
|
|
67368
|
+
}
|
|
67369
|
+
}
|
|
67370
|
+
}
|
|
67197
67371
|
return {
|
|
67198
67372
|
get processId() {
|
|
67199
67373
|
return processId;
|
|
67200
67374
|
},
|
|
67201
|
-
|
|
67375
|
+
acquire,
|
|
67376
|
+
release
|
|
67202
67377
|
};
|
|
67203
67378
|
}
|
|
67204
67379
|
exports.makeHeartbeat = makeHeartbeat;
|
|
@@ -73931,7 +74106,7 @@ ${l2}`}`, { bundledCss: i2, unfetchedResources: u2 };
|
|
|
73931
74106
|
return d4 && (N3.shadowRoot = d4), N3;
|
|
73932
74107
|
}
|
|
73933
74108
|
}(t4);
|
|
73934
|
-
d2(i2.doCaptureDoc), l2(i2.waitForImages), await Promise.all(f2), d2(i2.waitForImages), N2.version = "1.3.0", N2.scriptVersion = "11.6.
|
|
74109
|
+
d2(i2.doCaptureDoc), l2(i2.waitForImages), await Promise.all(f2), d2(i2.waitForImages), N2.version = "1.3.0", N2.scriptVersion = "11.6.7";
|
|
73935
74110
|
const S2 = h2.length ? `${h2.join("\n")}
|
|
73936
74111
|
` : "", A2 = m2.size ? `${Array.from(m2).join("\n")}
|
|
73937
74112
|
` : "", _2 = JSON.stringify({ separator: y2, cssStartToken: g2, cssEndToken: g2, iframeStartToken: `"${p2}`, iframeEndToken: `${p2}"` });
|
|
@@ -80812,7 +80987,7 @@ var require_captureDomPollForIE = __commonJS({
|
|
|
80812
80987
|
case 23:
|
|
80813
80988
|
return I2 = e5.sent, A2(w2.prefetchCss), L2 = N0({ parseCss: U0, CSSImportRule, getCssFromCache: I2, absolutizeUrl: L0, unfetchedToken: R2 }), j2 = B0({ getCssFromCache: I2, absolutizeUrl: L0 }), k2 = z0({ extractCssFromNode: j2, getBundledCssFromCssText: L2, unfetchedToken: R2 }), E2(w2.doCaptureDoc), C2 = V2(i3), A2(w2.doCaptureDoc), E2(w2.waitForImages), e5.next = 34, Promise.all(S2);
|
|
80814
80989
|
case 34:
|
|
80815
|
-
return A2(w2.waitForImages), C2.version = "1.3.0", C2.scriptVersion = "11.6.
|
|
80990
|
+
return A2(w2.waitForImages), C2.version = "1.3.0", C2.scriptVersion = "11.6.7", M2 = x2.length ? x2.join("\n") + "\n" : "", N2 = O2.size ? Array.from(O2).join("\n") + "\n" : "", U2 = JSON.stringify({ separator: _2, cssStartToken: R2, cssEndToken: R2, iframeStartToken: '"' + T2, iframeEndToken: T2 + '"' }), A2(w2.total), F2 = U2 + "\n" + N2 + _2 + "\n" + M2 + _2 + "\n" + JSON.stringify(C2) + D2(), console.log("[captureFrame]", JSON.stringify(w2)), e5.abrupt("return", F2);
|
|
80816
80991
|
case 44:
|
|
80817
80992
|
case "end":
|
|
80818
80993
|
return e5.stop();
|
|
@@ -87433,7 +87608,7 @@ var require_requests2 = __commonJS({
|
|
|
87433
87608
|
brokerUrl = result.nextPath;
|
|
87434
87609
|
}
|
|
87435
87610
|
async function takeScreenshots({ settings: settings2, logger = mainLogger }) {
|
|
87436
|
-
var _a;
|
|
87611
|
+
var _a, _b;
|
|
87437
87612
|
logger = logger.extend(mainLogger, { tags: [`nml-request-${utils34.general.shortid()}`] });
|
|
87438
87613
|
logger.log('Request "takeScreenshots" called with settings', settings2);
|
|
87439
87614
|
const { localEnvironment, renderEnvironments, environmentSettings } = await (0, get_environments_info_1.getNMLEnvironmentsInfo)({
|
|
@@ -87466,24 +87641,32 @@ var require_requests2 = __commonJS({
|
|
|
87466
87641
|
let screenshots;
|
|
87467
87642
|
if (Number(result.protocolVersion) >= 2) {
|
|
87468
87643
|
logger.log(`Request "takeScreenshots" was performed on applitools lib v${result.nmlVersion} through protocol v${result.protocolVersion} on device`, result.payload.debugInfo);
|
|
87469
|
-
|
|
87470
|
-
|
|
87471
|
-
|
|
87472
|
-
|
|
87473
|
-
|
|
87474
|
-
|
|
87475
|
-
|
|
87476
|
-
|
|
87477
|
-
|
|
87478
|
-
|
|
87644
|
+
if ((_b = result.payload.result) === null || _b === void 0 ? void 0 : _b.some((res) => res.error)) {
|
|
87645
|
+
const errors = result.payload.result.filter((res) => res.error);
|
|
87646
|
+
let errMessage = "There were problems in taking screenshots for";
|
|
87647
|
+
if (localEnvironment) {
|
|
87648
|
+
errMessage += ` local environment ${JSON.stringify(localEnvironment)}:
|
|
87649
|
+
`;
|
|
87650
|
+
errMessage += ` ${JSON.stringify(errors)}`;
|
|
87651
|
+
} else {
|
|
87652
|
+
errMessage += " environments:";
|
|
87653
|
+
errMessage += `
|
|
87654
|
+
${errors.map((err, index) => `Environment ${JSON.stringify(renderEnvironments[index])}: ${JSON.stringify(err)}`).join("\n ")}`;
|
|
87479
87655
|
}
|
|
87656
|
+
throw new Error(errMessage);
|
|
87657
|
+
}
|
|
87658
|
+
screenshots = renderEnvironments.map((environment, index) => {
|
|
87480
87659
|
return {
|
|
87481
87660
|
image: result.payload.result[index].result.screenshotUrl,
|
|
87482
87661
|
calculateRegions: result.payload.result[index].result.selectorRegions,
|
|
87483
87662
|
dom: result.payload.result[index].result.dom,
|
|
87484
|
-
environment
|
|
87663
|
+
environment: localEnvironment || environment
|
|
87485
87664
|
};
|
|
87486
87665
|
});
|
|
87666
|
+
if (localEnvironment && renderEnvironments.length > 1) {
|
|
87667
|
+
logger.warn(`Local environment detected with ${renderEnvironments.length} rendered environment(s). Using local environment ${JSON.stringify(localEnvironment)} and ignoring rendered environments: ${JSON.stringify(renderEnvironments)}. Note - this warning shouldn't appear in normal usage.`);
|
|
87668
|
+
screenshots = [screenshots[0]];
|
|
87669
|
+
}
|
|
87487
87670
|
} else {
|
|
87488
87671
|
screenshots = localEnvironment ? [
|
|
87489
87672
|
{
|
|
@@ -88342,13 +88525,13 @@ var require_check2 = __commonJS({
|
|
|
88342
88525
|
let driver = void 0;
|
|
88343
88526
|
if ((0, driver_1.isDriver)(target, spec)) {
|
|
88344
88527
|
driver = await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger });
|
|
88345
|
-
if (settings.
|
|
88346
|
-
logger.log(`
|
|
88528
|
+
if (settings.matchTimeout) {
|
|
88529
|
+
logger.log(`Match timeout is set to ${settings.matchTimeout}ms - will retry checking until it passes or timeout is reached`);
|
|
88347
88530
|
const start = Date.now();
|
|
88348
88531
|
const environmentLogger = logger.extend({ tags: [`environment-${utils34.general.shortid()}`] });
|
|
88349
88532
|
const baseEyes = await Promise.all(uniqueEnvironments.map((environment) => getBaseEyes({ environment, driver, logger: environmentLogger })));
|
|
88350
88533
|
if (baseEyes.map((baseEye) => baseEye.test.isNew).some((isNew) => isNew)) {
|
|
88351
|
-
await new Promise((resolve) => setTimeout(resolve, settings.
|
|
88534
|
+
await new Promise((resolve) => setTimeout(resolve, settings.matchTimeout));
|
|
88352
88535
|
}
|
|
88353
88536
|
let asExpected = false, retries = 0;
|
|
88354
88537
|
do {
|
|
@@ -88375,7 +88558,7 @@ var require_check2 = __commonJS({
|
|
|
88375
88558
|
putInStorage(exactEnvironment, eyes, Promise.resolve());
|
|
88376
88559
|
});
|
|
88377
88560
|
}
|
|
88378
|
-
} while (!asExpected && Date.now() - start < settings.
|
|
88561
|
+
} while (!asExpected && Date.now() - start < settings.matchTimeout);
|
|
88379
88562
|
} else {
|
|
88380
88563
|
const baseScreenshotsAndSettings = await generateBaseScreenshotsAndSettings(settings, uniqueEnvironments, eyes, logger, driver);
|
|
88381
88564
|
baseScreenshotsAndSettings.forEach(({ exactEnvironment: environment, baseSetting, baseTarget }) => {
|
|
@@ -95358,7 +95541,7 @@ creating temp style for access.`), r3 = $h(e3);
|
|
|
95358
95541
|
function B2(e3) {
|
|
95359
95542
|
return n4.defaultView && n4.defaultView.frameElement && n4.defaultView.frameElement.getAttribute(e3);
|
|
95360
95543
|
}
|
|
95361
|
-
}(t3).then((e3) => (h2.log("processPage end"), e3.scriptVersion = "4.15.
|
|
95544
|
+
}(t3).then((e3) => (h2.log("processPage end"), e3.scriptVersion = "4.15.1", e3));
|
|
95362
95545
|
}, window[x], "domSnapshotResult");
|
|
95363
95546
|
return function(e3) {
|
|
95364
95547
|
try {
|
|
@@ -119051,7 +119234,7 @@ var require_check4 = __commonJS({
|
|
|
119051
119234
|
(_g = settings.sendDom) !== null && _g !== void 0 ? _g : settings.sendDom = eyes.test.account.rcaEnabled || settings.matchLevel === "Layout" || settings.matchLevel === "Dynamic" || settings.enablePatterns || settings.useDom || !utils34.types.isEmpty(settings.dynamicRegions) || !utils34.types.isEmpty(settings.layoutRegions) || !utils34.types.isEmpty(settings.accessibilitySettings);
|
|
119052
119235
|
(_h = settings.autProxy) !== null && _h !== void 0 ? _h : settings.autProxy = eyes.test.eyesServer.proxy;
|
|
119053
119236
|
(_j = settings.useDom) !== null && _j !== void 0 ? _j : settings.useDom = false;
|
|
119054
|
-
(_k = (_r = settings).
|
|
119237
|
+
(_k = (_r = settings).matchTimeout) !== null && _k !== void 0 ? _k : _r.matchTimeout = 0;
|
|
119055
119238
|
settings.lazyLoad = settings.lazyLoad === true ? {} : settings.lazyLoad;
|
|
119056
119239
|
if (settings.lazyLoad) {
|
|
119057
119240
|
(_l = (_s = settings.lazyLoad).scrollLength) !== null && _l !== void 0 ? _l : _s.scrollLength = defaults_1.DEFAULT_LAZY_LOAD.scrollLength;
|
|
@@ -120279,7 +120462,7 @@ var require_package3 = __commonJS({
|
|
|
120279
120462
|
"../core/package.json"(exports, module) {
|
|
120280
120463
|
module.exports = {
|
|
120281
120464
|
name: "@applitools/core",
|
|
120282
|
-
version: "4.
|
|
120465
|
+
version: "4.53.0",
|
|
120283
120466
|
homepage: "https://applitools.com",
|
|
120284
120467
|
bugs: {
|
|
120285
120468
|
url: "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
@@ -127189,7 +127372,7 @@ var require_package4 = __commonJS({
|
|
|
127189
127372
|
"../eyes/package.json"(exports, module) {
|
|
127190
127373
|
module.exports = {
|
|
127191
127374
|
name: "@applitools/eyes",
|
|
127192
|
-
version: "1.36.
|
|
127375
|
+
version: "1.36.16",
|
|
127193
127376
|
keywords: [
|
|
127194
127377
|
"applitools",
|
|
127195
127378
|
"eyes",
|
|
@@ -127426,10 +127609,15 @@ var IosDeviceNameEnum = /* @__PURE__ */ ((IosDeviceNameEnum2) => {
|
|
|
127426
127609
|
IosDeviceNameEnum2["iPad_10"] = "iPad (10th generation)";
|
|
127427
127610
|
IosDeviceNameEnum2["iPad_mini_6"] = "iPad mini (6th generation)";
|
|
127428
127611
|
IosDeviceNameEnum2["iPad_Air_4"] = "iPad Air (4th generation)";
|
|
127612
|
+
IosDeviceNameEnum2["iPad_Air_11_inch_M3"] = "iPad Air 11-inch (M3)";
|
|
127613
|
+
IosDeviceNameEnum2["iPad_Air_13_inch_M3"] = "iPad Air 13-inch (M3)";
|
|
127614
|
+
IosDeviceNameEnum2["iPad_A16"] = "iPad (A16)";
|
|
127429
127615
|
IosDeviceNameEnum2["iPad_Pro_3"] = "iPad Pro (12.9-inch) (3rd generation)";
|
|
127430
|
-
IosDeviceNameEnum2["iPad_Pro_12_9_inch_3"] = "iPad Pro (12.9-inch) (3rd generation)";
|
|
127431
127616
|
IosDeviceNameEnum2["iPad_Pro_4"] = "iPad Pro (11-inch) (4th generation)";
|
|
127432
127617
|
IosDeviceNameEnum2["iPad_Pro_11_inch_4"] = "iPad Pro (11-inch) (4th generation)";
|
|
127618
|
+
IosDeviceNameEnum2["iPad_Pro_11_inch_M5"] = "iPad Pro 11-inch (M5)";
|
|
127619
|
+
IosDeviceNameEnum2["iPad_Pro_13_inch_M5"] = "iPad Pro 13-inch (M5)";
|
|
127620
|
+
IosDeviceNameEnum2["iPad_Pro_12_9_inch_3"] = "iPad Pro (12.9-inch) (3rd generation)";
|
|
127433
127621
|
IosDeviceNameEnum2["iPhone_SE_2"] = "iPhone SE (2nd generation)";
|
|
127434
127622
|
IosDeviceNameEnum2["iPhone_SE_3"] = "iPhone SE (3rd generation)";
|
|
127435
127623
|
IosDeviceNameEnum2["iPhone_XR"] = "iPhone XR";
|
|
@@ -127458,9 +127646,259 @@ var IosDeviceNameEnum = /* @__PURE__ */ ((IosDeviceNameEnum2) => {
|
|
|
127458
127646
|
IosDeviceNameEnum2["iPhone_16_Pro_Max"] = "iPhone 16 Pro Max";
|
|
127459
127647
|
IosDeviceNameEnum2["iPhone_16_Pro"] = "iPhone 16 Pro";
|
|
127460
127648
|
IosDeviceNameEnum2["iPhone_16_Plus"] = "iPhone 16 Plus";
|
|
127649
|
+
IosDeviceNameEnum2["iPhone_17"] = "iPhone 17";
|
|
127650
|
+
IosDeviceNameEnum2["iPhone_17_Pro"] = "iPhone 17 Pro";
|
|
127651
|
+
IosDeviceNameEnum2["iPhone_17_Pro_Max"] = "iPhone 17 Pro Max";
|
|
127652
|
+
IosDeviceNameEnum2["iPhone_Air"] = "iPhone Air";
|
|
127461
127653
|
return IosDeviceNameEnum2;
|
|
127462
127654
|
})(IosDeviceNameEnum || {});
|
|
127463
127655
|
|
|
127656
|
+
// ../eyes/src/enums/IosMultiDeviceTarget.ts
|
|
127657
|
+
init_process();
|
|
127658
|
+
init_setImmediate();
|
|
127659
|
+
init_buffer();
|
|
127660
|
+
init_setInterval();
|
|
127661
|
+
|
|
127662
|
+
// ../eyes/src/input/IosDeviceTarget.ts
|
|
127663
|
+
init_process();
|
|
127664
|
+
init_setImmediate();
|
|
127665
|
+
init_buffer();
|
|
127666
|
+
init_setInterval();
|
|
127667
|
+
|
|
127668
|
+
// ../eyes/src/enums/ScreenOrientation.ts
|
|
127669
|
+
init_process();
|
|
127670
|
+
init_setImmediate();
|
|
127671
|
+
init_buffer();
|
|
127672
|
+
init_setInterval();
|
|
127673
|
+
var ScreenOrientationEnum = /* @__PURE__ */ ((ScreenOrientationEnum2) => {
|
|
127674
|
+
ScreenOrientationEnum2["PORTRAIT"] = "portrait";
|
|
127675
|
+
ScreenOrientationEnum2["LANDSCAPE"] = "landscape";
|
|
127676
|
+
return ScreenOrientationEnum2;
|
|
127677
|
+
})(ScreenOrientationEnum || {});
|
|
127678
|
+
|
|
127679
|
+
// ../eyes/src/input/IosDeviceTarget.ts
|
|
127680
|
+
var IosDeviceTarget = class {
|
|
127681
|
+
constructor(deviceName) {
|
|
127682
|
+
this.deviceName = deviceName;
|
|
127683
|
+
}
|
|
127684
|
+
/**
|
|
127685
|
+
* Sets the device orientation to landscape.
|
|
127686
|
+
* @returns this instance for method chaining
|
|
127687
|
+
*/
|
|
127688
|
+
landscape() {
|
|
127689
|
+
this.screenOrientation = "landscape" /* LANDSCAPE */;
|
|
127690
|
+
return this;
|
|
127691
|
+
}
|
|
127692
|
+
/**
|
|
127693
|
+
* Sets the device orientation to portrait.
|
|
127694
|
+
* @returns this instance for method chaining
|
|
127695
|
+
*/
|
|
127696
|
+
portrait() {
|
|
127697
|
+
this.screenOrientation = "portrait" /* PORTRAIT */;
|
|
127698
|
+
return this;
|
|
127699
|
+
}
|
|
127700
|
+
/**
|
|
127701
|
+
* Gets the configured orientation for this device target.
|
|
127702
|
+
* @returns the screen orientation, or undefined if not set
|
|
127703
|
+
*/
|
|
127704
|
+
getOrientation() {
|
|
127705
|
+
return this.screenOrientation;
|
|
127706
|
+
}
|
|
127707
|
+
/**
|
|
127708
|
+
* Gets the device name.
|
|
127709
|
+
* @returns the device name string
|
|
127710
|
+
*/
|
|
127711
|
+
getDeviceName() {
|
|
127712
|
+
return this.deviceName;
|
|
127713
|
+
}
|
|
127714
|
+
/**
|
|
127715
|
+
* String representation of this device target.
|
|
127716
|
+
* @returns the device name
|
|
127717
|
+
*/
|
|
127718
|
+
toString() {
|
|
127719
|
+
return this.deviceName;
|
|
127720
|
+
}
|
|
127721
|
+
};
|
|
127722
|
+
|
|
127723
|
+
// ../eyes/src/enums/IosMultiDeviceTarget.ts
|
|
127724
|
+
var IosMultiDeviceTarget = {
|
|
127725
|
+
get iPhone_SE_1() {
|
|
127726
|
+
return new IosDeviceTarget("iPhone SE (1st generation)");
|
|
127727
|
+
},
|
|
127728
|
+
get iPhone_SE_2() {
|
|
127729
|
+
return new IosDeviceTarget("iPhone SE (2nd generation)");
|
|
127730
|
+
},
|
|
127731
|
+
get iPhone_SE_3() {
|
|
127732
|
+
return new IosDeviceTarget("iPhone SE (3rd generation)");
|
|
127733
|
+
},
|
|
127734
|
+
get iPhone_6() {
|
|
127735
|
+
return new IosDeviceTarget("iPhone 6");
|
|
127736
|
+
},
|
|
127737
|
+
get iPhone_6_Plus() {
|
|
127738
|
+
return new IosDeviceTarget("iPhone 6 Plus");
|
|
127739
|
+
},
|
|
127740
|
+
get iPhone_7() {
|
|
127741
|
+
return new IosDeviceTarget("iPhone 7");
|
|
127742
|
+
},
|
|
127743
|
+
get iPhone_7_Plus() {
|
|
127744
|
+
return new IosDeviceTarget("iPhone 7 Plus");
|
|
127745
|
+
},
|
|
127746
|
+
get iPhone_8() {
|
|
127747
|
+
return new IosDeviceTarget("iPhone 8");
|
|
127748
|
+
},
|
|
127749
|
+
get iPhone_8_Plus() {
|
|
127750
|
+
return new IosDeviceTarget("iPhone 8 Plus");
|
|
127751
|
+
},
|
|
127752
|
+
get iPhone_X() {
|
|
127753
|
+
return new IosDeviceTarget("iPhone X");
|
|
127754
|
+
},
|
|
127755
|
+
get iPhone_XR() {
|
|
127756
|
+
return new IosDeviceTarget("iPhone XR");
|
|
127757
|
+
},
|
|
127758
|
+
get iPhone_Xs() {
|
|
127759
|
+
return new IosDeviceTarget("iPhone Xs");
|
|
127760
|
+
},
|
|
127761
|
+
get iPhone_Xs_Max() {
|
|
127762
|
+
return new IosDeviceTarget("iPhone Xs Max");
|
|
127763
|
+
},
|
|
127764
|
+
get iPhone_11() {
|
|
127765
|
+
return new IosDeviceTarget("iPhone 11");
|
|
127766
|
+
},
|
|
127767
|
+
get iPhone_11_Pro() {
|
|
127768
|
+
return new IosDeviceTarget("iPhone 11 Pro");
|
|
127769
|
+
},
|
|
127770
|
+
get iPhone_11_Pro_Max() {
|
|
127771
|
+
return new IosDeviceTarget("iPhone 11 Pro Max");
|
|
127772
|
+
},
|
|
127773
|
+
get iPhone_12() {
|
|
127774
|
+
return new IosDeviceTarget("iPhone 12");
|
|
127775
|
+
},
|
|
127776
|
+
get iPhone_12_mini() {
|
|
127777
|
+
return new IosDeviceTarget("iPhone 12 mini");
|
|
127778
|
+
},
|
|
127779
|
+
get iPhone_12_Pro() {
|
|
127780
|
+
return new IosDeviceTarget("iPhone 12 Pro");
|
|
127781
|
+
},
|
|
127782
|
+
get iPhone_12_Pro_Max() {
|
|
127783
|
+
return new IosDeviceTarget("iPhone 12 Pro Max");
|
|
127784
|
+
},
|
|
127785
|
+
get iPhone_13() {
|
|
127786
|
+
return new IosDeviceTarget("iPhone 13");
|
|
127787
|
+
},
|
|
127788
|
+
get iPhone_13_mini() {
|
|
127789
|
+
return new IosDeviceTarget("iPhone 13 mini");
|
|
127790
|
+
},
|
|
127791
|
+
get iPhone_13_Pro() {
|
|
127792
|
+
return new IosDeviceTarget("iPhone 13 Pro");
|
|
127793
|
+
},
|
|
127794
|
+
get iPhone_13_Pro_Max() {
|
|
127795
|
+
return new IosDeviceTarget("iPhone 13 Pro Max");
|
|
127796
|
+
},
|
|
127797
|
+
get iPhone_14() {
|
|
127798
|
+
return new IosDeviceTarget("iPhone 14");
|
|
127799
|
+
},
|
|
127800
|
+
get iPhone_14_Pro() {
|
|
127801
|
+
return new IosDeviceTarget("iPhone 14 Pro");
|
|
127802
|
+
},
|
|
127803
|
+
get iPhone_14_Plus() {
|
|
127804
|
+
return new IosDeviceTarget("iPhone 14 Plus");
|
|
127805
|
+
},
|
|
127806
|
+
get iPhone_14_Pro_Max() {
|
|
127807
|
+
return new IosDeviceTarget("iPhone 14 Pro Max");
|
|
127808
|
+
},
|
|
127809
|
+
get iPhone_15() {
|
|
127810
|
+
return new IosDeviceTarget("iPhone 15");
|
|
127811
|
+
},
|
|
127812
|
+
get iPhone_15_Pro() {
|
|
127813
|
+
return new IosDeviceTarget("iPhone 15 Pro");
|
|
127814
|
+
},
|
|
127815
|
+
get iPhone_15_Plus() {
|
|
127816
|
+
return new IosDeviceTarget("iPhone 15 Plus");
|
|
127817
|
+
},
|
|
127818
|
+
get iPhone_15_Pro_Max() {
|
|
127819
|
+
return new IosDeviceTarget("iPhone 15 Pro Max");
|
|
127820
|
+
},
|
|
127821
|
+
get iPhone_16() {
|
|
127822
|
+
return new IosDeviceTarget("iPhone 16");
|
|
127823
|
+
},
|
|
127824
|
+
get iPhone_16_Pro() {
|
|
127825
|
+
return new IosDeviceTarget("iPhone 16 Pro");
|
|
127826
|
+
},
|
|
127827
|
+
get iPhone_16_Plus() {
|
|
127828
|
+
return new IosDeviceTarget("iPhone 16 Plus");
|
|
127829
|
+
},
|
|
127830
|
+
get iPhone_16_Pro_Max() {
|
|
127831
|
+
return new IosDeviceTarget("iPhone 16 Pro Max");
|
|
127832
|
+
}
|
|
127833
|
+
};
|
|
127834
|
+
|
|
127835
|
+
// ../eyes/src/enums/AndroidMultiDeviceTarget.ts
|
|
127836
|
+
init_process();
|
|
127837
|
+
init_setImmediate();
|
|
127838
|
+
init_buffer();
|
|
127839
|
+
init_setInterval();
|
|
127840
|
+
|
|
127841
|
+
// ../eyes/src/input/AndroidDeviceTarget.ts
|
|
127842
|
+
init_process();
|
|
127843
|
+
init_setImmediate();
|
|
127844
|
+
init_buffer();
|
|
127845
|
+
init_setInterval();
|
|
127846
|
+
var AndroidDeviceTarget = class {
|
|
127847
|
+
constructor(deviceName) {
|
|
127848
|
+
this.deviceName = deviceName;
|
|
127849
|
+
}
|
|
127850
|
+
/**
|
|
127851
|
+
* Sets the device orientation to landscape.
|
|
127852
|
+
* @returns this instance for method chaining
|
|
127853
|
+
*/
|
|
127854
|
+
landscape() {
|
|
127855
|
+
this.screenOrientation = "landscape" /* LANDSCAPE */;
|
|
127856
|
+
return this;
|
|
127857
|
+
}
|
|
127858
|
+
/**
|
|
127859
|
+
* Sets the device orientation to portrait.
|
|
127860
|
+
* @returns this instance for method chaining
|
|
127861
|
+
*/
|
|
127862
|
+
portrait() {
|
|
127863
|
+
this.screenOrientation = "portrait" /* PORTRAIT */;
|
|
127864
|
+
return this;
|
|
127865
|
+
}
|
|
127866
|
+
/**
|
|
127867
|
+
* Gets the configured orientation for this device target.
|
|
127868
|
+
* @returns the screen orientation, or undefined if not set
|
|
127869
|
+
*/
|
|
127870
|
+
getOrientation() {
|
|
127871
|
+
return this.screenOrientation;
|
|
127872
|
+
}
|
|
127873
|
+
/**
|
|
127874
|
+
* Gets the device name.
|
|
127875
|
+
* @returns the device name string
|
|
127876
|
+
*/
|
|
127877
|
+
getDeviceName() {
|
|
127878
|
+
return this.deviceName;
|
|
127879
|
+
}
|
|
127880
|
+
/**
|
|
127881
|
+
* String representation of this device target.
|
|
127882
|
+
* @returns the device name
|
|
127883
|
+
*/
|
|
127884
|
+
toString() {
|
|
127885
|
+
return this.deviceName;
|
|
127886
|
+
}
|
|
127887
|
+
};
|
|
127888
|
+
|
|
127889
|
+
// ../eyes/src/enums/AndroidMultiDeviceTarget.ts
|
|
127890
|
+
var AndroidMultiDeviceTarget = {
|
|
127891
|
+
get Galaxy_S25() {
|
|
127892
|
+
return new AndroidDeviceTarget("Galaxy S25");
|
|
127893
|
+
},
|
|
127894
|
+
get Galaxy_S25_Ultra() {
|
|
127895
|
+
return new AndroidDeviceTarget("Galaxy S25 Ultra");
|
|
127896
|
+
},
|
|
127897
|
+
get Pixel_9() {
|
|
127898
|
+
return new AndroidDeviceTarget("Pixel 9");
|
|
127899
|
+
}
|
|
127900
|
+
};
|
|
127901
|
+
|
|
127464
127902
|
// ../eyes/src/enums/IosVersion.ts
|
|
127465
127903
|
init_process();
|
|
127466
127904
|
init_setImmediate();
|
|
@@ -127491,17 +127929,6 @@ var MatchLevelEnum = /* @__PURE__ */ ((MatchLevelEnum2) => {
|
|
|
127491
127929
|
return MatchLevelEnum2;
|
|
127492
127930
|
})(MatchLevelEnum || {});
|
|
127493
127931
|
|
|
127494
|
-
// ../eyes/src/enums/ScreenOrientation.ts
|
|
127495
|
-
init_process();
|
|
127496
|
-
init_setImmediate();
|
|
127497
|
-
init_buffer();
|
|
127498
|
-
init_setInterval();
|
|
127499
|
-
var ScreenOrientationEnum = /* @__PURE__ */ ((ScreenOrientationEnum2) => {
|
|
127500
|
-
ScreenOrientationEnum2["PORTRAIT"] = "portrait";
|
|
127501
|
-
ScreenOrientationEnum2["LANDSCAPE"] = "landscape";
|
|
127502
|
-
return ScreenOrientationEnum2;
|
|
127503
|
-
})(ScreenOrientationEnum || {});
|
|
127504
|
-
|
|
127505
127932
|
// ../eyes/src/enums/SessionType.ts
|
|
127506
127933
|
init_process();
|
|
127507
127934
|
init_setImmediate();
|
|
@@ -129306,7 +129733,7 @@ var CheckSettingsAutomationFluent = class extends CheckSettingsBaseFluent {
|
|
|
129306
129733
|
pageId: this._settings.pageId,
|
|
129307
129734
|
lazyLoad: this._settings.lazyLoad,
|
|
129308
129735
|
waitBeforeCapture: this._settings.waitBeforeCapture,
|
|
129309
|
-
|
|
129736
|
+
matchTimeout: this._settings.timeout,
|
|
129310
129737
|
userCommandId: this._settings.variationGroupId,
|
|
129311
129738
|
densityMetrics: this._settings.densityMetrics,
|
|
129312
129739
|
assumesMutability: this.assumesMutability(),
|
|
@@ -130100,12 +130527,79 @@ var ConfigurationData = class {
|
|
|
130100
130527
|
this.browsersInfo.push({ chromeEmulationInfo: { deviceName, screenOrientation } });
|
|
130101
130528
|
return this;
|
|
130102
130529
|
}
|
|
130103
|
-
|
|
130530
|
+
/**
|
|
130531
|
+
* Add iOS and/or Android devices for multi-device testing.
|
|
130532
|
+
*
|
|
130533
|
+
* @param devices - Device targets. Supports three formats:
|
|
130534
|
+
* - Plain strings: `'iPhone 13'`, `'Galaxy S25'`
|
|
130535
|
+
* - Enum values: `IosMultiDeviceTarget.iPhone_13`, `AndroidMultiDeviceTarget.Galaxy_S25`
|
|
130536
|
+
* - Fluent API: `IosMultiDeviceTarget.iPhone_13.landscape()`, `AndroidMultiDeviceTarget.Galaxy_S25.portrait()`
|
|
130537
|
+
*
|
|
130538
|
+
* @example
|
|
130539
|
+
* ```typescript
|
|
130540
|
+
* // Plain strings (backward compatible)
|
|
130541
|
+
* config.addMultiDeviceTarget('iPhone 13', 'Galaxy S25')
|
|
130542
|
+
*
|
|
130543
|
+
* // Enum values
|
|
130544
|
+
* config.addMultiDeviceTarget(IosMultiDeviceTarget.iPhone_13, AndroidMultiDeviceTargetEnum.Galaxy_S25)
|
|
130545
|
+
*
|
|
130546
|
+
* // Fluent API with orientation
|
|
130547
|
+
* config.addMultiDeviceTarget(
|
|
130548
|
+
* IosMultiDeviceTarget.iPhone_13.landscape(),
|
|
130549
|
+
* AndroidMultiDeviceTarget.Galaxy_S25.portrait()
|
|
130550
|
+
* )
|
|
130551
|
+
*
|
|
130552
|
+
* // Mix all three styles
|
|
130553
|
+
* config.addMultiDeviceTarget(
|
|
130554
|
+
* 'iPhone 14',
|
|
130555
|
+
* IosMultiDeviceTarget.iPhone_15,
|
|
130556
|
+
* IosMultiDeviceTarget.iPhone_16.landscape()
|
|
130557
|
+
* )
|
|
130558
|
+
* ```
|
|
130559
|
+
*/
|
|
130560
|
+
addMultiDeviceTarget(...devices) {
|
|
130104
130561
|
if (!this.browsersInfo)
|
|
130105
130562
|
this.browsersInfo = [];
|
|
130106
|
-
|
|
130563
|
+
for (const device of devices) {
|
|
130564
|
+
if (device instanceof IosDeviceTarget || device instanceof AndroidDeviceTarget) {
|
|
130565
|
+
const deviceName = device.getDeviceName();
|
|
130566
|
+
const screenOrientation = device.getOrientation();
|
|
130567
|
+
if (device instanceof IosDeviceTarget || this._isIosDevice(deviceName)) {
|
|
130568
|
+
this.browsersInfo.push({
|
|
130569
|
+
iosDeviceInfo: {
|
|
130570
|
+
deviceName,
|
|
130571
|
+
...screenOrientation && { screenOrientation }
|
|
130572
|
+
}
|
|
130573
|
+
});
|
|
130574
|
+
} else {
|
|
130575
|
+
this.browsersInfo.push({
|
|
130576
|
+
androidDeviceInfo: {
|
|
130577
|
+
deviceName,
|
|
130578
|
+
...screenOrientation && { screenOrientation }
|
|
130579
|
+
}
|
|
130580
|
+
});
|
|
130581
|
+
}
|
|
130582
|
+
} else {
|
|
130583
|
+
const deviceName = device;
|
|
130584
|
+
if (this._isIosDevice(deviceName)) {
|
|
130585
|
+
this.browsersInfo.push({ iosDeviceInfo: { deviceName } });
|
|
130586
|
+
} else if (this._isAndroidDevice(deviceName)) {
|
|
130587
|
+
this.browsersInfo.push({ androidDeviceInfo: { deviceName } });
|
|
130588
|
+
} else {
|
|
130589
|
+
throw new Error(
|
|
130590
|
+
`Invalid device name: "${deviceName}". Supported iOS devices: ${Object.values(IosMultiDeviceTarget).map((d) => d.getDeviceName()).join(", ")}. Supported Android devices: ${Object.values(AndroidMultiDeviceTarget).map((d) => d.getDeviceName()).join(", ")}.`
|
|
130591
|
+
);
|
|
130592
|
+
}
|
|
130593
|
+
}
|
|
130594
|
+
}
|
|
130107
130595
|
return this;
|
|
130108
130596
|
}
|
|
130597
|
+
_isIosDevice(deviceName) {
|
|
130598
|
+
return Object.values(IosMultiDeviceTarget).map((target) => target.getDeviceName()).includes(deviceName);
|
|
130599
|
+
}
|
|
130600
|
+
_isAndroidDevice(deviceName) {
|
|
130601
|
+
return Object.values(AndroidMultiDeviceTarget).map((target) => target.getDeviceName()).includes(deviceName);
|
|
130602
|
+
}
|
|
130109
130603
|
get captureStatusBar() {
|
|
130110
130604
|
return this._config.captureStatusBar;
|
|
130111
130605
|
}
|
|
@@ -131007,7 +131501,7 @@ var ConfigurationData = class {
|
|
|
131007
131501
|
disableBrowserFetching: this.disableBrowserFetching,
|
|
131008
131502
|
autProxy: this.autProxy,
|
|
131009
131503
|
sendDom: this.sendDom,
|
|
131010
|
-
|
|
131504
|
+
matchTimeout: this.matchTimeout,
|
|
131011
131505
|
matchLevel: (_e = this.defaultMatchSettings) == null ? void 0 : _e.matchLevel,
|
|
131012
131506
|
ignoreCaret: (_f = this.defaultMatchSettings) == null ? void 0 : _f.ignoreCaret,
|
|
131013
131507
|
ignoreDisplacements: (_g = this.defaultMatchSettings) == null ? void 0 : _g.ignoreDisplacements,
|
|
@@ -132681,6 +133175,8 @@ export {
|
|
|
132681
133175
|
AccessibilityMatchSettingsData as AccessibilityMatchSettings,
|
|
132682
133176
|
AccessibilityRegionTypeEnum as AccessibilityRegionType,
|
|
132683
133177
|
AccessibilityStatusEnum as AccessibilityStatus,
|
|
133178
|
+
AndroidDeviceTarget,
|
|
133179
|
+
AndroidMultiDeviceTarget,
|
|
132684
133180
|
ApiUrlsData as ApiUrls,
|
|
132685
133181
|
AppUrlsData as AppUrls,
|
|
132686
133182
|
BatchClose,
|
|
@@ -132707,6 +133203,8 @@ export {
|
|
|
132707
133203
|
ImageMatchSettingsData as ImageMatchSettings,
|
|
132708
133204
|
ImageRotationData as ImageRotation,
|
|
132709
133205
|
IosDeviceNameEnum as IosDeviceName,
|
|
133206
|
+
IosDeviceTarget,
|
|
133207
|
+
IosMultiDeviceTarget,
|
|
132710
133208
|
IosVersionEnum as IosVersion,
|
|
132711
133209
|
LocationData as Location,
|
|
132712
133210
|
LogHandlerData as LogHandler,
|