browserstack-node-sdk 1.62.0 → 1.63.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ats/src/cloudproviders/AWS.js +1 -1
- package/ats/src/cloudproviders/Azure.js +1 -1
- package/ats/src/cloudproviders/CloudProvider.js +1 -1
- package/ats/src/cloudproviders/GoogleCloudProvider.js +1 -1
- package/ats/src/cloudproviders/utils.js +1 -1
- package/ats/src/commands/configure.js +1 -1
- package/ats/src/commands/connect.js +1 -1
- package/ats/src/commands/connect_commands/grid.js +1 -1
- package/ats/src/commands/create.js +1 -1
- package/ats/src/commands/create_commands/grid.js +1 -1
- package/ats/src/commands/delete.js +1 -1
- package/ats/src/commands/delete_commands/grid.js +1 -1
- package/ats/src/commands/init.js +1 -1
- package/ats/src/commands/list.js +1 -1
- package/ats/src/commands/list_commands/grid_profiles.js +1 -1
- package/ats/src/commands/list_commands/grids.js +1 -1
- package/ats/src/commands/precheck.js +1 -1
- package/ats/src/commands/precheck_commands/setup_precheck.js +1 -1
- package/ats/src/commands/start.js +1 -1
- package/ats/src/commands/start_commands/grid.js +1 -1
- package/ats/src/commands/stop.js +1 -1
- package/ats/src/commands/stop_commands/grid.js +1 -1
- package/ats/src/config/constants.js +1 -1
- package/ats/src/config/logger.js +1 -1
- package/ats/src/index.js +1 -1
- package/ats/src/utils/AWSUtils.js +1 -1
- package/ats/src/utils/createAutoscalerStack.js +1 -1
- package/ats/src/utils/createClusterStack.js +1 -1
- package/ats/src/utils/createHubHaStack.js +1 -1
- package/ats/src/utils/createk8sClient.js +1 -1
- package/ats/src/utils/deleteEFSMountTargets.js +1 -1
- package/ats/src/utils/deleteStack.js +1 -1
- package/ats/src/utils/describeStack.js +1 -1
- package/ats/src/utils/gridComponents.js +1 -1
- package/ats/src/utils/hstUtils.js +1 -1
- package/ats/src/utils/instrumentationUtils.js +1 -1
- package/ats/src/utils/userInput.js +1 -1
- package/ats/src/utils/utilityMethods.js +1 -1
- package/ats/src/utils/webSocketUtils.js +1 -1
- package/package.json +1 -1
- package/src/ai-sdk-node/bundle.js +1 -1
- package/src/bin/codeceptjs/BrowserStackPlugin.js +1 -1
- package/src/bin/codeceptjs/command.js +1 -1
- package/src/bin/codeceptjs/helper.js +1 -1
- package/src/bin/codeceptjs/o11yHelper.js +1 -1
- package/src/bin/cucumber-js/command.js +1 -1
- package/src/bin/cucumber-js/formatter/custom_formatter.js +1 -1
- package/src/bin/cucumber-js/formatter/custom_formatter_old_versions.js +1 -1
- package/src/bin/cucumber-js/test-observability.js +1 -1
- package/src/bin/cucumber-js/test.setup.js +1 -1
- package/src/bin/cucumber-js/test_old.setup.js +1 -1
- package/src/bin/cucumber-js/timeout.setup.js +1 -1
- package/src/bin/integrations/command.js +1 -1
- package/src/bin/integrations/constants.js +1 -1
- package/src/bin/jasmine/bstack-reporter/customReporter.js +1 -1
- package/src/bin/jasmine/command.js +1 -1
- package/src/bin/jasmine/test.setup.js +1 -1
- package/src/bin/jasmine/testRunMap.js +1 -1
- package/src/bin/jest/command.js +1 -1
- package/src/bin/jest/customImplements/customCircus.js +1 -1
- package/src/bin/jest/customImplements/customEnvironment.js +1 -1
- package/src/bin/jest/customImplements/customJestAdapterInit.js +1 -1
- package/src/bin/jest/customImplements/customSequencer.js +1 -1
- package/src/bin/jest/customImplements/customTestRunnerTemplate.js +1 -1
- package/src/bin/jest/jest.setup.js +1 -1
- package/src/bin/jest/test-observability/data-hooks.js +1 -1
- package/src/bin/jest/test-observability/helper.js +1 -1
- package/src/bin/jest/test-observability/obsReporter.js +1 -1
- package/src/bin/jest/test-observability/test-details.js +1 -1
- package/src/bin/jest/test.setup.js +1 -1
- package/src/bin/jest/test_before.setup.js +1 -1
- package/src/bin/launcher/launcher.js +1 -1
- package/src/bin/load/index.js +1 -1
- package/src/bin/load/load/index.js +193 -12
- package/src/bin/load/load/loadErrors.js +248 -0
- package/src/bin/load/loadErrors.js +1 -0
- package/src/bin/load/loadUtils.js +1 -1
- package/src/bin/mocha/accessibility-automation/helper.js +1 -1
- package/src/bin/mocha/bstack-reporter/customReporter.js +1 -1
- package/src/bin/mocha/command.js +1 -1
- package/src/bin/mocha/test-observability/builderPatch.js +1 -1
- package/src/bin/mocha/test-observability/data-hooks.js +1 -1
- package/src/bin/mocha/test-observability/mochaUtils.js +1 -1
- package/src/bin/mocha/test.setup.js +1 -1
- package/src/bin/newman/command.js +1 -1
- package/src/bin/newman/helper.js +1 -1
- package/src/bin/newman/reporter/index.js +1 -1
- package/src/bin/newman/scriptRunner.js +1 -1
- package/src/bin/nightwatch/command.js +1 -1
- package/src/bin/playwright/accessibility-helper.js +1 -1
- package/src/bin/playwright/command.js +1 -1
- package/src/bin/playwright/globalSetup.js +1 -1
- package/src/bin/playwright/mock-process.js +1 -1
- package/src/bin/playwright/modifyPlaywrightConf.js +1 -1
- package/src/bin/playwright/patches.js +1 -1
- package/src/bin/playwright/reporter/pwUtils.js +1 -1
- package/src/bin/playwright/reporter/reporter.js +1 -1
- package/src/bin/playwright/reporter/test-details.js +1 -1
- package/src/bin/playwright/sessionDetails.js +1 -1
- package/src/bin/puppeteer/patches.js +1 -1
- package/src/bin/puppeteer/sessionDetails.js +1 -1
- package/src/bin/puppeteer/test.setup.js +1 -1
- package/src/bin/runner.js +1 -1
- package/src/bin/setup.js +1 -1
- package/src/bin/test-runner/index.js +1 -1
- package/src/bin/test-runner/runTest.js +1 -1
- package/src/bin/test-runner/testWorker.js +1 -1
- package/src/bin/testcafe/a11y-runner.js +1 -1
- package/src/bin/testcafe/command.js +1 -1
- package/src/bin/testcafe/reporter/index.js +1 -1
- package/src/bin/testcafe/reporter/tcUtils.js +1 -1
- package/src/bin/testcafe/session-registry.js +1 -1
- package/src/bin/testcafe/stdout-interceptor.js +1 -1
- package/src/bin/testcafe/testcafe-action-patcher.js +1 -1
- package/src/bin/testcafe/w3c-driver.js +1 -1
- package/src/bin/utils/apiUtilityMethods.js +1 -1
- package/src/bin/utils/clientTroubleshootingService.js +1 -1
- package/src/bin/utils/constants.js +1 -1
- package/src/bin/utils/log4jsAppender.js +1 -1
- package/src/bin/utils/logPatcher.js +1 -1
- package/src/bin/utils/logReportingAPI.js +1 -1
- package/src/bin/utils/playwright-patcher.js +1 -1
- package/src/bin/utils/puppeteer-patcher.js +1 -1
- package/src/bin/utils/sharedPlaywrightSessionDetails.js +1 -1
- package/src/bin/utils/sharedUtils.js +1 -1
- package/src/bin/v2/TestInfo.js +1 -1
- package/src/bin/v2/browserstackCLI.js +1 -1
- package/src/bin/v2/cliUtils.js +1 -1
- package/src/bin/v2/customTagManager.js +1 -1
- package/src/bin/v2/eventDispatcher.js +1 -1
- package/src/bin/v2/framework/automationFramework.js +1 -1
- package/src/bin/v2/framework/constants/automationFrameworkConstants.js +1 -1
- package/src/bin/v2/framework/constants/testFrameworkConstants.js +1 -1
- package/src/bin/v2/framework/cucumberTestFramework.js +1 -1
- package/src/bin/v2/framework/jestTestFramework.js +1 -1
- package/src/bin/v2/framework/newmanTestFramework.js +1 -1
- package/src/bin/v2/framework/playwrightAutomationFramework.js +1 -1
- package/src/bin/v2/framework/playwrightTestFramework.js +1 -1
- package/src/bin/v2/framework/puppeteerAutomationFramework.js +1 -1
- package/src/bin/v2/framework/testFramework.js +1 -1
- package/src/bin/v2/framework/testcafeAutomationFramework.js +1 -1
- package/src/bin/v2/framework/testcafeTestFramework.js +1 -1
- package/src/bin/v2/grpcClient.js +1 -1
- package/src/bin/v2/instances/automationFrameworkInstance.js +1 -1
- package/src/bin/v2/instances/testFrameworkInstance.js +1 -1
- package/src/bin/v2/instances/trackedContext.js +1 -1
- package/src/bin/v2/instances/trackedInstance.js +1 -1
- package/src/bin/v2/modules/accessibilityModule.js +1 -1
- package/src/bin/v2/modules/baseModule.js +1 -1
- package/src/bin/v2/modules/loadTestModule.js +1 -1
- package/src/bin/v2/modules/observabilityModule.js +1 -1
- package/src/bin/v2/modules/playwrightDriverModule.js +1 -1
- package/src/bin/v2/modules/puppeteerDriverModule.js +1 -1
- package/src/bin/v2/modules/testcafeDriverModule.js +1 -1
- package/src/bin/v2/modules/testhubModule.js +1 -1
- package/src/bin/v2/sdkErrorHandler.js +1 -0
- package/src/bin/v2/state/automationFrameworkState.js +1 -1
- package/src/bin/v2/state/hookState.js +1 -1
- package/src/bin/v2/state/testFrameworkState.js +1 -1
- package/src/bin/v2/uploadAttachmentsManager.js +1 -1
- package/src/bin/v2/utils/cucumber-utils.js +1 -1
- package/src/bin/v2/utils/jest-utils.js +1 -1
- package/src/bin/vanilla-js/command.js +1 -1
- package/src/browserStackSdk.js +1 -1
- package/src/helpers/BrowserStackSetup.js +1 -1
- package/src/helpers/accessibility-automation/accessibilityRetryHelper.js +1 -1
- package/src/helpers/accessibility-automation/constants.js +1 -1
- package/src/helpers/accessibility-automation/helper.js +1 -1
- package/src/helpers/accessibility-automation/scripts.js +1 -1
- package/src/helpers/ai-sdk/aiSdkWrapper.js +1 -1
- package/src/helpers/ai-sdk/autoHealHelper.js +1 -1
- package/src/helpers/ats/constants.js +1 -1
- package/src/helpers/ats/helper.js +1 -1
- package/src/helpers/caCertHelper.js +1 -1
- package/src/helpers/capsMapping.js +1 -1
- package/src/helpers/central-scanner/constants.js +1 -1
- package/src/helpers/central-scanner/helpers.js +1 -1
- package/src/helpers/classLogger.js +1 -1
- package/src/helpers/driverInitErrorReporter.js +1 -1
- package/src/helpers/globals.js +1 -1
- package/src/helpers/helper.js +1 -1
- package/src/helpers/logger.js +1 -1
- package/src/helpers/metadata.js +1 -1
- package/src/helpers/patchHelper.js +1 -1
- package/src/helpers/patchHelpers.js +1 -1
- package/src/helpers/percy/Percy.js +1 -1
- package/src/helpers/percy/PercyBinary.js +1 -1
- package/src/helpers/percy/PercyCaptureMap.js +1 -1
- package/src/helpers/percy/PercyCaptureModes.js +1 -1
- package/src/helpers/percy/PercySDK.js +1 -1
- package/src/helpers/percy/index.js +1 -1
- package/src/helpers/percy/utils.js +1 -1
- package/src/helpers/performance/constants.js +1 -1
- package/src/helpers/performance/performance-tester.js +1 -1
- package/src/helpers/playwright-helper.js +1 -1
- package/src/helpers/processHelper.js +1 -1
- package/src/helpers/puppeteer-helper.js +1 -1
- package/src/helpers/request-spy.js +1 -1
- package/src/helpers/setKeepAlive.js +1 -1
- package/src/helpers/stackFrameUtils.js +1 -1
- package/src/helpers/test-observability/constants.js +1 -1
- package/src/helpers/test-observability/error-handler.js +1 -1
- package/src/helpers/test-observability/requestQueueHandler.js +1 -1
- package/src/helpers/test-observability/sessionHandler.js +1 -1
- package/src/helpers/test-observability/utils.js +1 -1
- package/src/helpers/test-orchestration/constants.js +1 -1
- package/src/helpers/test-orchestration/failfastManager.js +1 -1
- package/src/helpers/test-orchestration/fileHelper.js +1 -1
- package/src/helpers/test-orchestration/orchestrationUtils.js +1 -1
- package/src/helpers/test-orchestration/requestUtils.js +1 -1
- package/src/helpers/test-orchestration/testOrchestrationHandler.js +1 -1
- package/src/helpers/test-orchestration/testOrderingServerHandler.js +1 -1
- package/src/helpers/testhub/constants.js +1 -1
- package/src/helpers/testhub/testhubHandler.js +1 -1
- package/src/helpers/testhub/utils.js +1 -1
- package/src/helpers/timeoutPromise.js +1 -1
- package/src/helpers/utilities.js +1 -1
- package/src/helpers/w3cMapping.js +1 -1
- package/src/hubAllocationMethods.js +1 -1
- package/src/index.js +1 -1
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Error taxonomy for the Load Testing (LT / LTS) CLI flow — SDK-6442.
|
|
5
|
+
*
|
|
6
|
+
* The standalone `browserstack load` flow historically collapsed every distinct
|
|
7
|
+
* failure (network, proxy/SSL, HTTP error, corrupt download, filesystem,
|
|
8
|
+
* disk-full, config-parse) into a single misleading "Authentication incomplete"
|
|
9
|
+
* message, hiding the real cause at logger.debug. This module is the single
|
|
10
|
+
* source of truth that maps a low-level error to a stable code + an actionable,
|
|
11
|
+
* user-facing message, so the entry, download and exit-code paths all speak the
|
|
12
|
+
* same language instead of ad-hoc strings.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const ERROR_CODES = {
|
|
16
|
+
AUTH_INVALID: 'AUTH_INVALID',
|
|
17
|
+
NETWORK: 'NETWORK',
|
|
18
|
+
SSL: 'SSL',
|
|
19
|
+
DOWNLOAD_HTTP: 'DOWNLOAD_HTTP',
|
|
20
|
+
EXTRACT_CORRUPT: 'EXTRACT_CORRUPT',
|
|
21
|
+
FS_PERMISSION: 'FS_PERMISSION',
|
|
22
|
+
DISK_FULL: 'DISK_FULL',
|
|
23
|
+
CONFIG_PARSE: 'CONFIG_PARSE',
|
|
24
|
+
UPDATE_CHECK_FAILED: 'UPDATE_CHECK_FAILED',
|
|
25
|
+
UNSUPPORTED_RUNTIME: 'UNSUPPORTED_RUNTIME',
|
|
26
|
+
UNKNOWN: 'UNKNOWN'
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// SDK-side exit code used when the load preflight rejects the runtime, so CI and
|
|
30
|
+
// downstream tooling can distinguish "unsupported runtime" from a generic failure.
|
|
31
|
+
const LT_EXIT_UNSUPPORTED_RUNTIME = 78;
|
|
32
|
+
|
|
33
|
+
// Node/libuv error codes grouped by the user-facing class they map to.
|
|
34
|
+
const NETWORK_ERROR_CODES = [
|
|
35
|
+
'ECONNREFUSED', 'ECONNRESET', 'ENOTFOUND', 'EAI_AGAIN', 'ETIMEDOUT',
|
|
36
|
+
'ENETUNREACH', 'EHOSTUNREACH', 'EPIPE', 'ECONNABORTED', 'ESOCKETTIMEDOUT'
|
|
37
|
+
];
|
|
38
|
+
const FS_PERMISSION_CODES = ['EACCES', 'EPERM', 'EROFS'];
|
|
39
|
+
// Common OpenSSL/Node TLS failure codes (mirrors helpers/utils SSL_ERROR_CODES intent).
|
|
40
|
+
const SSL_ERROR_CODES = [
|
|
41
|
+
'CERT_HAS_EXPIRED', 'DEPTH_ZERO_SELF_SIGNED_CERT', 'SELF_SIGNED_CERT_IN_CHAIN',
|
|
42
|
+
'UNABLE_TO_VERIFY_LEAF_SIGNATURE', 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',
|
|
43
|
+
'ERR_TLS_CERT_ALTNAME_INVALID', 'CERT_UNTRUSTED'
|
|
44
|
+
];
|
|
45
|
+
// Specific TLS phrases only — bare 'ssl'/'tls' are too broad and, because SSL is
|
|
46
|
+
// classified before network/HTTP, would mislabel any error whose message merely
|
|
47
|
+
// contains those substrings. Genuine TLS errors also carry an SSL_ERROR_CODES code.
|
|
48
|
+
const SSL_MESSAGE_HINTS = [
|
|
49
|
+
'self signed certificate', 'self-signed certificate', 'unable to verify',
|
|
50
|
+
'unable to get local issuer', 'certificate has expired',
|
|
51
|
+
'ssl routines', 'ssl alert', 'tls handshake', 'wrong version number'
|
|
52
|
+
];
|
|
53
|
+
// yauzl / zlib signals that the downloaded archive is not a valid/complete zip.
|
|
54
|
+
const ZIP_MESSAGE_HINTS = [
|
|
55
|
+
'central directory', 'not a valid zip', 'end of central', 'invalid signature',
|
|
56
|
+
'invalid local file header', 'compressed/uncompressed size', 'invalid comment length'
|
|
57
|
+
];
|
|
58
|
+
// Dropped the bare 'access key' token: it matched benign text like
|
|
59
|
+
// "using access key from environment". The specific 'invalid access key' remains.
|
|
60
|
+
const AUTH_MESSAGE_HINTS = [
|
|
61
|
+
'unauthor', 'forbidden', 'access denied', 'invalid username', 'invalid access key',
|
|
62
|
+
'authentication failed', 'invalid credential'
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* A typed error for the LT flow. Carries a stable `code` and a user-facing
|
|
67
|
+
* `userMessage` so callers can log the actionable message at logger.error while
|
|
68
|
+
* keeping the raw cause at logger.debug.
|
|
69
|
+
*/
|
|
70
|
+
class LoadError extends Error {
|
|
71
|
+
constructor(code, userMessage, options = {}) {
|
|
72
|
+
super(userMessage || code);
|
|
73
|
+
this.name = 'LoadError';
|
|
74
|
+
this.code = ERROR_CODES[code] ? code : ERROR_CODES.UNKNOWN;
|
|
75
|
+
this.userMessage = userMessage || defaultMessageFor(this.code, options);
|
|
76
|
+
this.isAuth = this.code === ERROR_CODES.AUTH_INVALID;
|
|
77
|
+
if (options.statusCode) { this.statusCode = options.statusCode }
|
|
78
|
+
if (options.cause !== undefined) { this.cause = options.cause }
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Build a LoadError without `new` at every call site. */
|
|
83
|
+
function makeLoadError(code, options = {}) {
|
|
84
|
+
return new LoadError(code, options.userMessage, options);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Extract a short human-readable cause string from any thrown value. */
|
|
88
|
+
function rawCauseString(err) {
|
|
89
|
+
if (err === null || err === undefined) { return '' }
|
|
90
|
+
if (typeof err === 'string') { return err }
|
|
91
|
+
if (err.userMessage || err.message || err.error || err.reason) {
|
|
92
|
+
return err.userMessage || err.message || err.error || err.reason;
|
|
93
|
+
}
|
|
94
|
+
try { return JSON.stringify(err) } catch (_) { return String(err) }
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Default actionable message for a taxonomy code. */
|
|
98
|
+
function defaultMessageFor(code, options = {}) {
|
|
99
|
+
const status = options.statusCode ? ` (HTTP ${options.statusCode})` : '';
|
|
100
|
+
switch (code) {
|
|
101
|
+
case ERROR_CODES.AUTH_INVALID:
|
|
102
|
+
return 'Authentication failed: your BrowserStack username/access key was rejected' + status +
|
|
103
|
+
'. Check BROWSERSTACK_USERNAME / BROWSERSTACK_ACCESS_KEY (or the credentials in your browserstack.yml) and try again.';
|
|
104
|
+
case ERROR_CODES.NETWORK:
|
|
105
|
+
return 'Could not reach BrowserStack to set up the Load Testing CLI. Check your network/proxy connectivity and retry. ' +
|
|
106
|
+
'If sdk-assets.browserstack.com is blocked by your firewall, allowlist it.';
|
|
107
|
+
case ERROR_CODES.SSL:
|
|
108
|
+
return 'SSL/TLS error while contacting BrowserStack. If you are behind an SSL-inspecting proxy, set ' +
|
|
109
|
+
'NODE_EXTRA_CA_CERTS (or BROWSERSTACK_EXTRA_CA_CERTS) to your corporate CA bundle and retry.';
|
|
110
|
+
case ERROR_CODES.DOWNLOAD_HTTP:
|
|
111
|
+
return 'Failed to download the Load Testing CLI binary' + status +
|
|
112
|
+
'. Please retry; if this persists, contact BrowserStack support.';
|
|
113
|
+
case ERROR_CODES.EXTRACT_CORRUPT:
|
|
114
|
+
return 'The downloaded Load Testing CLI binary could not be extracted (the archive appears corrupt or incomplete). ' +
|
|
115
|
+
'Delete the cached binary under ~/.browserstack/cli and retry.';
|
|
116
|
+
case ERROR_CODES.FS_PERMISSION:
|
|
117
|
+
return 'Permission denied while writing the Load Testing CLI binary. Ensure the SDK can write to ~/.browserstack ' +
|
|
118
|
+
'(or set BROWSERSTACK_FILES_DIR to a writable directory) and retry.';
|
|
119
|
+
case ERROR_CODES.DISK_FULL:
|
|
120
|
+
return 'Not enough disk space to download the Load Testing CLI binary. Free up disk space and retry.';
|
|
121
|
+
case ERROR_CODES.CONFIG_PARSE:
|
|
122
|
+
return 'Could not read your Load Testing configuration. Check that the browserstack.yml / browserstack-load.yml ' +
|
|
123
|
+
'file exists and is valid YAML.';
|
|
124
|
+
case ERROR_CODES.UPDATE_CHECK_FAILED:
|
|
125
|
+
return 'BrowserStack returned an error while checking for the latest Load Testing CLI' + status +
|
|
126
|
+
'. Please retry; if this persists, contact BrowserStack support.';
|
|
127
|
+
case ERROR_CODES.UNSUPPORTED_RUNTIME:
|
|
128
|
+
return 'Your Node.js runtime is not supported by BrowserStack Load Testing. ' +
|
|
129
|
+
'Switch to a supported Node.js version and re-run. See the BrowserStack Load Testing docs for the supported version matrix.';
|
|
130
|
+
default:
|
|
131
|
+
return 'The Load Testing CLI could not be started. Re-run with DEBUG=true for details, ' +
|
|
132
|
+
'or contact BrowserStack support if this persists.';
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Classify any thrown value into { code, userMessage, isAuth, cause }.
|
|
138
|
+
*
|
|
139
|
+
* Heuristics, in priority order:
|
|
140
|
+
* 1. Already-typed LoadError / objects carrying a known taxonomy `code`.
|
|
141
|
+
* 2. HTTP status (401/403 -> auth, 5xx -> update-check, other 4xx -> download).
|
|
142
|
+
* 3. SSL (TLS error codes or message hints).
|
|
143
|
+
* 4. Filesystem: ENOSPC -> disk-full, EACCES/EPERM/EROFS -> permission.
|
|
144
|
+
* 5. Network (transport error codes).
|
|
145
|
+
* 6. Corrupt archive (yauzl/zlib message hints).
|
|
146
|
+
* 7. Auth-ish API error body messages.
|
|
147
|
+
* 8. Fallback -> UNKNOWN.
|
|
148
|
+
*
|
|
149
|
+
* `nodeRequest` (helpers/helper.js) throws the *parsed response body* for HTTP
|
|
150
|
+
* errors (which loses the status) and the raw error for transport failures, so
|
|
151
|
+
* classify keys off both `err.code` and a (best-effort) preserved `statusCode`.
|
|
152
|
+
*/
|
|
153
|
+
function classify(err) {
|
|
154
|
+
const cause = rawCauseString(err);
|
|
155
|
+
|
|
156
|
+
// 1. Already a typed taxonomy error.
|
|
157
|
+
if (err && typeof err.code === 'string' && ERROR_CODES[err.code]) {
|
|
158
|
+
const userMessage = err.userMessage || defaultMessageFor(err.code, {statusCode: err.statusCode});
|
|
159
|
+
|
|
160
|
+
return {code: err.code, userMessage, isAuth: err.code === ERROR_CODES.AUTH_INVALID, cause};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const nodeCode = err && typeof err.code === 'string' ? err.code : '';
|
|
164
|
+
const status = err && (err.statusCode || (err.response && err.response.statusCode)) || undefined;
|
|
165
|
+
const msg = (err && (err.message || err.error)) ? String(err.message || err.error).toLowerCase() : '';
|
|
166
|
+
|
|
167
|
+
const result = (code, statusCode) => ({
|
|
168
|
+
code,
|
|
169
|
+
userMessage: defaultMessageFor(code, {statusCode}),
|
|
170
|
+
isAuth: code === ERROR_CODES.AUTH_INVALID,
|
|
171
|
+
cause
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// 2/3. SSL takes priority over generic status/network because TLS failures can
|
|
175
|
+
// surface with both a code and a transport error.
|
|
176
|
+
if ((nodeCode && SSL_ERROR_CODES.includes(nodeCode)) || SSL_MESSAGE_HINTS.some(h => msg.includes(h))) {
|
|
177
|
+
return result(ERROR_CODES.SSL);
|
|
178
|
+
}
|
|
179
|
+
if (status === 401 || status === 403) { return result(ERROR_CODES.AUTH_INVALID, status) }
|
|
180
|
+
|
|
181
|
+
// 4. Filesystem.
|
|
182
|
+
if (nodeCode === 'ENOSPC') { return result(ERROR_CODES.DISK_FULL) }
|
|
183
|
+
if (nodeCode && FS_PERMISSION_CODES.includes(nodeCode)) { return result(ERROR_CODES.FS_PERMISSION) }
|
|
184
|
+
|
|
185
|
+
// 5. Network transport.
|
|
186
|
+
if (nodeCode && NETWORK_ERROR_CODES.includes(nodeCode)) { return result(ERROR_CODES.NETWORK) }
|
|
187
|
+
|
|
188
|
+
// 6. Corrupt archive.
|
|
189
|
+
if (ZIP_MESSAGE_HINTS.some(h => msg.includes(h))) { return result(ERROR_CODES.EXTRACT_CORRUPT) }
|
|
190
|
+
|
|
191
|
+
// 7. Remaining HTTP statuses.
|
|
192
|
+
if (status && status >= 500) { return result(ERROR_CODES.UPDATE_CHECK_FAILED, status) }
|
|
193
|
+
if (status && status >= 400) { return result(ERROR_CODES.DOWNLOAD_HTTP, status) }
|
|
194
|
+
|
|
195
|
+
// 8. Auth-ish API body message (when status was stripped by nodeRequest).
|
|
196
|
+
if (AUTH_MESSAGE_HINTS.some(h => msg.includes(h))) { return result(ERROR_CODES.AUTH_INVALID) }
|
|
197
|
+
|
|
198
|
+
return result(ERROR_CODES.UNKNOWN);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Map a non-zero exit code from the Load Testing Go binary to an actionable
|
|
203
|
+
* message.
|
|
204
|
+
*
|
|
205
|
+
* NOTE: the authoritative exit-code contract from the LT Go binary is not yet
|
|
206
|
+
* confirmed (SDK-6442 open question). Keep EXIT_CODE_MESSAGES empty / minimal
|
|
207
|
+
* until backend confirms specific codes; everything falls back to a generic but
|
|
208
|
+
* actionable message. Extend this table — do not invent codes — once confirmed.
|
|
209
|
+
*/
|
|
210
|
+
const EXIT_CODE_MESSAGES = {
|
|
211
|
+
// Example shape once the binary's contract is confirmed:
|
|
212
|
+
// 3: 'Your Node.js/runtime version is not supported by Load Testing. See <docs>.',
|
|
213
|
+
// 4: 'Invalid Load Testing configuration. Check your browserstack.yml `load:` section.',
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
function messageForExitCode(code) {
|
|
217
|
+
if (Object.prototype.hasOwnProperty.call(EXIT_CODE_MESSAGES, code)) {
|
|
218
|
+
return EXIT_CODE_MESSAGES[code];
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return `Load test failed (exit code ${code}). Re-run with DEBUG=true for details, ` +
|
|
222
|
+
'or contact BrowserStack support if this persists.';
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Build the actionable "Node version not supported" message for the preflight.
|
|
227
|
+
* `detectedMajor` is the running Node major; `range` is constants.LT_SUPPORTED_NODE.
|
|
228
|
+
*/
|
|
229
|
+
function runtimeNotSupportedMessage(detectedMajor, range = {}) {
|
|
230
|
+
const min = range.hardMinMajor;
|
|
231
|
+
const max = range.maxTestedMajor;
|
|
232
|
+
const supported = (min && max) ? ` (supported: Node ${min}+, validated up to Node ${max})` : '';
|
|
233
|
+
|
|
234
|
+
return `Node.js v${detectedMajor} is not supported by BrowserStack Load Testing${supported}. ` +
|
|
235
|
+
'Switch to a supported Node.js version and re-run, or set BROWSERSTACK_SKIP_NODE_CHECK=true to bypass this check.';
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
module.exports = {
|
|
239
|
+
ERROR_CODES,
|
|
240
|
+
LT_EXIT_UNSUPPORTED_RUNTIME,
|
|
241
|
+
LoadError,
|
|
242
|
+
makeLoadError,
|
|
243
|
+
classify,
|
|
244
|
+
defaultMessageFor,
|
|
245
|
+
messageForExitCode,
|
|
246
|
+
runtimeNotSupportedMessage,
|
|
247
|
+
EXIT_CODE_MESSAGES
|
|
248
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';const a33_0x38ea1f=a33_0x5ac6;(function(_0x2881cd,_0x131c42){const _0x369fad=a33_0x5ac6,_0x296885=_0x2881cd();while(!![]){try{const _0x37c7dd=parseInt(_0x369fad(0x204))/0x1+parseInt(_0x369fad(0x1cb))/0x2+-parseInt(_0x369fad(0x219))/0x3*(parseInt(_0x369fad(0x209))/0x4)+-parseInt(_0x369fad(0x1b7))/0x5+-parseInt(_0x369fad(0x18d))/0x6*(-parseInt(_0x369fad(0x21f))/0x7)+parseInt(_0x369fad(0x19f))/0x8*(-parseInt(_0x369fad(0x19d))/0x9)+parseInt(_0x369fad(0x1dd))/0xa;if(_0x37c7dd===_0x131c42)break;else _0x296885['push'](_0x296885['shift']());}catch(_0x437ff9){_0x296885['push'](_0x296885['shift']());}}}(a33_0x5384,0x52969));function a33_0x5384(){const _0x2bebbb=['387084PRhRVy','CERT_HAS_EXPIRED','oTtCd','unable\x20to\x20get\x20local\x20issuer','classify','ESOCKETTIMEDOUT','invalid\x20signature','tVOzo','DISK_FULL','BrowserStack\x20returned\x20an\x20error\x20while\x20checking\x20for\x20the\x20latest\x20Load\x20Testing\x20CLI','wrong\x20version\x20number','unable\x20to\x20verify','osgIz','RZOEo','Could\x20not\x20reach\x20BrowserStack\x20to\x20set\x20up\x20the\x20Load\x20Testing\x20CLI.\x20Check\x20your\x20network/proxy\x20connectivity\x20and\x20retry.\x20','mpgYX','self\x20signed\x20certificate','call','7985970IFezGl','Delete\x20the\x20cached\x20binary\x20under\x20~/.browserstack/cli\x20and\x20retry.','certificate\x20has\x20expired','ECONNRESET','unauthor','AUTH_INVALID','self-signed\x20certificate','SSL','QsTIw','CsyMs','response','ekIkS','authentication\x20failed','ArCKf','thWwn','message','nfFUy','VSSnd','CERT_UNTRUSTED','SufOH','rTCTz','DOWNLOAD_HTTP','hkNZP','ECONNREFUSED','vKFiR','tls\x20handshake','includes','pzQud','messageForExitCode','error','.\x20Please\x20retry;\x20if\x20this\x20persists,\x20contact\x20BrowserStack\x20support.','invalid\x20username','reason','.\x20Check\x20BROWSERSTACK_USERNAME\x20/\x20BROWSERSTACK_ACCESS_KEY\x20(or\x20the\x20credentials\x20in\x20your\x20browserstack.yml)\x20and\x20try\x20again.','hVxue','makeLoadError','IpftL','not\x20a\x20valid\x20zip','maxTestedMajor','45194YoSXeA','ECONNABORTED','forbidden','SkIVT','UNABLE_TO_VERIFY_LEAF_SIGNATURE','4idThBf','hDPde','statusCode','UNSUPPORTED_RUNTIME','wsQpW','XBNgj','CONFIG_PARSE','Your\x20Node.js\x20runtime\x20is\x20not\x20supported\x20by\x20BrowserStack\x20Load\x20Testing.\x20','LoadError','FS_PERMISSION','EXIT_CODE_MESSAGES','Node.js\x20v','cOLBk','some','nnDDw','EAI_AGAIN','113811jPEfka','file\x20exists\x20and\x20is\x20valid\x20YAML.','SELF_SIGNED_CERT_IN_CHAIN','hardMinMajor','Switch\x20to\x20a\x20supported\x20Node.js\x20version\x20and\x20re-run,\x20or\x20set\x20BROWSERSTACK_SKIP_NODE_CHECK=true\x20to\x20bypass\x20this\x20check.','Could\x20not\x20read\x20your\x20Load\x20Testing\x20configuration.\x20Check\x20that\x20the\x20browserstack.yml\x20/\x20browserstack-load.yml\x20','56VPjYdQ','DEPTH_ZERO_SELF_SIGNED_CERT','YESId','qIcyq','central\x20directory','defaultMessageFor','ssl\x20routines','UNKNOWN','HDRtX','cQtSc','104310BtxUYc','userMessage','runtimeNotSupportedMessage','NODE_EXTRA_CA_CERTS\x20(or\x20BROWSERSTACK_EXTRA_CA_CERTS)\x20to\x20your\x20corporate\x20CA\x20bundle\x20and\x20retry.','stringify','Load\x20test\x20failed\x20(exit\x20code\x20','EROFS','toLowerCase','NETWORK','JqEAo','juGAh','hasOwnProperty','vxoko','string','eUijC',').\x20Re-run\x20with\x20DEBUG=true\x20for\x20details,\x20','63wvHDcU','kArUV','715624ziQCRv','end\x20of\x20central','OrKYQ','prototype','fAPnC','(or\x20set\x20BROWSERSTACK_FILES_DIR\x20to\x20a\x20writable\x20directory)\x20and\x20retry.','hKJaB','CUGwj','access\x20denied','cause','invalid\x20comment\x20length','AkOIG','SSL/TLS\x20error\x20while\x20contacting\x20BrowserStack.\x20If\x20you\x20are\x20behind\x20an\x20SSL-inspecting\x20proxy,\x20set\x20','UPDATE_CHECK_FAILED','Authentication\x20failed:\x20your\x20BrowserStack\x20username/access\x20key\x20was\x20rejected','KRbfi','code','If\x20sdk-assets.browserstack.com\x20is\x20blocked\x20by\x20your\x20firewall,\x20allowlist\x20it.','+,\x20validated\x20up\x20to\x20Node\x20','ENOTFOUND','EHOSTUNREACH','EACCES','ERR_TLS_CERT_ALTNAME_INVALID','isAuth','870120vqoQAa','EPERM','dJYrn','badmC','envOJ','xDPMe','Failed\x20to\x20download\x20the\x20Load\x20Testing\x20CLI\x20binary','uoCCf','ENETUNREACH','PWFPn','compressed/uncompressed\x20size','hMNoe','IqJtE','ajDwD','ssl\x20alert','EXTRACT_CORRUPT','The\x20downloaded\x20Load\x20Testing\x20CLI\x20binary\x20could\x20not\x20be\x20extracted\x20(the\x20archive\x20appears\x20corrupt\x20or\x20incomplete).\x20','ENOSPC','or\x20contact\x20BrowserStack\x20support\x20if\x20this\x20persists.','invalid\x20access\x20key'];a33_0x5384=function(){return _0x2bebbb;};return a33_0x5384();}const a33_0x42db9f={};a33_0x42db9f[a33_0x38ea1f(0x1e2)]=a33_0x38ea1f(0x1e2),a33_0x42db9f[a33_0x38ea1f(0x195)]='NETWORK',a33_0x42db9f['SSL']=a33_0x38ea1f(0x1e4),a33_0x42db9f[a33_0x38ea1f(0x1f2)]=a33_0x38ea1f(0x1f2),a33_0x42db9f[a33_0x38ea1f(0x1c6)]='EXTRACT_CORRUPT',a33_0x42db9f[a33_0x38ea1f(0x212)]=a33_0x38ea1f(0x212),a33_0x42db9f['DISK_FULL']=a33_0x38ea1f(0x1d3),a33_0x42db9f[a33_0x38ea1f(0x20f)]=a33_0x38ea1f(0x20f),a33_0x42db9f[a33_0x38ea1f(0x1ac)]=a33_0x38ea1f(0x1ac),a33_0x42db9f[a33_0x38ea1f(0x20c)]='UNSUPPORTED_RUNTIME',a33_0x42db9f[a33_0x38ea1f(0x226)]=a33_0x38ea1f(0x226);const ERROR_CODES=a33_0x42db9f,LT_EXIT_UNSUPPORTED_RUNTIME=0x4e,NETWORK_ERROR_CODES=[a33_0x38ea1f(0x1f4),a33_0x38ea1f(0x1e0),a33_0x38ea1f(0x1b2),a33_0x38ea1f(0x218),'ETIMEDOUT',a33_0x38ea1f(0x1bf),a33_0x38ea1f(0x1b3),'EPIPE',a33_0x38ea1f(0x205),a33_0x38ea1f(0x1d0)],FS_PERMISSION_CODES=[a33_0x38ea1f(0x1b4),a33_0x38ea1f(0x1b8),a33_0x38ea1f(0x193)],SSL_ERROR_CODES=[a33_0x38ea1f(0x1cc),a33_0x38ea1f(0x220),a33_0x38ea1f(0x21b),a33_0x38ea1f(0x208),'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',a33_0x38ea1f(0x1b5),a33_0x38ea1f(0x1ef)],SSL_MESSAGE_HINTS=[a33_0x38ea1f(0x1db),a33_0x38ea1f(0x1e3),a33_0x38ea1f(0x1d6),a33_0x38ea1f(0x1ce),a33_0x38ea1f(0x1df),a33_0x38ea1f(0x225),a33_0x38ea1f(0x1c5),a33_0x38ea1f(0x1f6),a33_0x38ea1f(0x1d5)],ZIP_MESSAGE_HINTS=[a33_0x38ea1f(0x223),a33_0x38ea1f(0x202),a33_0x38ea1f(0x1a0),a33_0x38ea1f(0x1d1),'invalid\x20local\x20file\x20header',a33_0x38ea1f(0x1c1),a33_0x38ea1f(0x1a9)],AUTH_MESSAGE_HINTS=[a33_0x38ea1f(0x1e1),a33_0x38ea1f(0x206),a33_0x38ea1f(0x1a7),a33_0x38ea1f(0x1fc),a33_0x38ea1f(0x1ca),a33_0x38ea1f(0x1e9),'invalid\x20credential'];class LoadError extends Error{constructor(_0x3e1892,_0x11c85b,_0x46499c={}){const _0x86dc9c=a33_0x38ea1f,_0x1928fe={'HDRtX':'1|3|5|4|2|6|0','kArUV':function(_0x2521d8,_0x14b791){return _0x2521d8!==_0x14b791;},'IpftL':function(_0x4525de,_0x283a6c){return _0x4525de||_0x283a6c;},'dJYrn':function(_0x334a1e,_0x18a06f){return _0x334a1e===_0x18a06f;},'CsyMs':_0x86dc9c(0x211),'hKJaB':function(_0x26e3d8,_0x595a44,_0x56c365){return _0x26e3d8(_0x595a44,_0x56c365);}},_0x49439f=_0x1928fe[_0x86dc9c(0x227)]['split']('|');let _0x2001ba=0x0;while(!![]){switch(_0x49439f[_0x2001ba++]){case'0':_0x1928fe[_0x86dc9c(0x19e)](_0x46499c['cause'],undefined)&&(this[_0x86dc9c(0x1a8)]=_0x46499c[_0x86dc9c(0x1a8)]);continue;case'1':super(_0x1928fe[_0x86dc9c(0x201)](_0x11c85b,_0x3e1892));continue;case'2':this[_0x86dc9c(0x1b6)]=_0x1928fe[_0x86dc9c(0x1b9)](this[_0x86dc9c(0x1af)],ERROR_CODES[_0x86dc9c(0x1e2)]);continue;case'3':this['name']=_0x1928fe[_0x86dc9c(0x1e6)];continue;case'4':this[_0x86dc9c(0x18e)]=_0x11c85b||_0x1928fe[_0x86dc9c(0x1a5)](defaultMessageFor,this[_0x86dc9c(0x1af)],_0x46499c);continue;case'5':this[_0x86dc9c(0x1af)]=ERROR_CODES[_0x3e1892]?_0x3e1892:ERROR_CODES[_0x86dc9c(0x226)];continue;case'6':_0x46499c['statusCode']&&(this['statusCode']=_0x46499c[_0x86dc9c(0x20b)]);continue;}break;}}}function makeLoadError(_0x55666e,_0x32e8da={}){const _0x36029b=a33_0x38ea1f;return new LoadError(_0x55666e,_0x32e8da[_0x36029b(0x18e)],_0x32e8da);}function rawCauseString(_0x1099ad){const _0x17265f=a33_0x38ea1f,_0x254c7e={'cOLBk':function(_0x590192,_0x25b470){return _0x590192===_0x25b470;},'CUGwj':function(_0x47535a,_0x5995ef){return _0x47535a===_0x5995ef;},'CKdPz':_0x17265f(0x19a),'lUrbA':function(_0xc29024,_0x5e5a8f){return _0xc29024(_0x5e5a8f);}};if(_0x254c7e[_0x17265f(0x215)](_0x1099ad,null)||_0x254c7e[_0x17265f(0x1a6)](_0x1099ad,undefined))return'';if(_0x254c7e[_0x17265f(0x215)](typeof _0x1099ad,_0x254c7e['CKdPz']))return _0x1099ad;if(_0x1099ad[_0x17265f(0x18e)]||_0x1099ad[_0x17265f(0x1ec)]||_0x1099ad[_0x17265f(0x1fa)]||_0x1099ad[_0x17265f(0x1fd)])return _0x1099ad[_0x17265f(0x18e)]||_0x1099ad[_0x17265f(0x1ec)]||_0x1099ad[_0x17265f(0x1fa)]||_0x1099ad['reason'];try{return JSON[_0x17265f(0x191)](_0x1099ad);}catch(_0x40dd38){return _0x254c7e['lUrbA'](String,_0x1099ad);}}function a33_0x5ac6(_0x1be2b2,_0x424e10){const _0x53840c=a33_0x5384();return a33_0x5ac6=function(_0x5ac688,_0x4cf19d){_0x5ac688=_0x5ac688-0x18c;let _0x397a8f=_0x53840c[_0x5ac688];return _0x397a8f;},a33_0x5ac6(_0x1be2b2,_0x424e10);}function defaultMessageFor(_0x470e02,_0x5d5ed0={}){const _0x1b03ed=a33_0x38ea1f,_0x3bb4e8={};_0x3bb4e8[_0x1b03ed(0x1eb)]=function(_0x2c4ad3,_0x40f60d){return _0x2c4ad3+_0x40f60d;},_0x3bb4e8[_0x1b03ed(0x197)]=function(_0x22e8f1,_0x54854b){return _0x22e8f1+_0x54854b;},_0x3bb4e8[_0x1b03ed(0x1f0)]=_0x1b03ed(0x1ad),_0x3bb4e8[_0x1b03ed(0x1c3)]=_0x1b03ed(0x1fe),_0x3bb4e8[_0x1b03ed(0x1da)]=_0x1b03ed(0x1d9),_0x3bb4e8['oTtCd']=_0x1b03ed(0x1b0),_0x3bb4e8[_0x1b03ed(0x1f5)]=function(_0xdd3228,_0x11f4dd){return _0xdd3228+_0x11f4dd;},_0x3bb4e8[_0x1b03ed(0x1c0)]=_0x1b03ed(0x1ab),_0x3bb4e8['JqEAo']=_0x1b03ed(0x190),_0x3bb4e8[_0x1b03ed(0x207)]=_0x1b03ed(0x1bd),_0x3bb4e8[_0x1b03ed(0x1f1)]=_0x1b03ed(0x1fb),_0x3bb4e8[_0x1b03ed(0x1ae)]=_0x1b03ed(0x1c7),_0x3bb4e8[_0x1b03ed(0x18c)]=_0x1b03ed(0x1de),_0x3bb4e8[_0x1b03ed(0x1ed)]='Permission\x20denied\x20while\x20writing\x20the\x20Load\x20Testing\x20CLI\x20binary.\x20Ensure\x20the\x20SDK\x20can\x20write\x20to\x20~/.browserstack\x20',_0x3bb4e8[_0x1b03ed(0x1a3)]=_0x1b03ed(0x1a4),_0x3bb4e8[_0x1b03ed(0x1ee)]='Not\x20enough\x20disk\x20space\x20to\x20download\x20the\x20Load\x20Testing\x20CLI\x20binary.\x20Free\x20up\x20disk\x20space\x20and\x20retry.',_0x3bb4e8[_0x1b03ed(0x20a)]=function(_0xda49ba,_0x3ed376){return _0xda49ba+_0x3ed376;},_0x3bb4e8[_0x1b03ed(0x1bb)]=_0x1b03ed(0x21e),_0x3bb4e8['QsTIw']=_0x1b03ed(0x21a),_0x3bb4e8[_0x1b03ed(0x1f3)]=_0x1b03ed(0x1d4),_0x3bb4e8[_0x1b03ed(0x1ff)]=function(_0x48157b,_0x1752b3){return _0x48157b+_0x1752b3;},_0x3bb4e8[_0x1b03ed(0x1f8)]=_0x1b03ed(0x210),_0x3bb4e8['qIcyq']='Switch\x20to\x20a\x20supported\x20Node.js\x20version\x20and\x20re-run.\x20See\x20the\x20BrowserStack\x20Load\x20Testing\x20docs\x20for\x20the\x20supported\x20version\x20matrix.',_0x3bb4e8[_0x1b03ed(0x199)]='The\x20Load\x20Testing\x20CLI\x20could\x20not\x20be\x20started.\x20Re-run\x20with\x20DEBUG=true\x20for\x20details,\x20',_0x3bb4e8[_0x1b03ed(0x20d)]=_0x1b03ed(0x1c9);const _0x459202=_0x3bb4e8,_0x51e954=_0x5d5ed0[_0x1b03ed(0x20b)]?'\x20(HTTP\x20'+_0x5d5ed0['statusCode']+')':'';switch(_0x470e02){case ERROR_CODES[_0x1b03ed(0x1e2)]:return _0x459202[_0x1b03ed(0x1eb)](_0x459202['juGAh'](_0x459202[_0x1b03ed(0x1f0)],_0x51e954),_0x459202[_0x1b03ed(0x1c3)]);case ERROR_CODES[_0x1b03ed(0x195)]:return _0x459202[_0x1b03ed(0x1eb)](_0x459202['mpgYX'],_0x459202[_0x1b03ed(0x1cd)]);case ERROR_CODES[_0x1b03ed(0x1e4)]:return _0x459202[_0x1b03ed(0x1f5)](_0x459202[_0x1b03ed(0x1c0)],_0x459202[_0x1b03ed(0x196)]);case ERROR_CODES[_0x1b03ed(0x1f2)]:return _0x459202['vKFiR'](_0x459202[_0x1b03ed(0x197)](_0x459202[_0x1b03ed(0x207)],_0x51e954),_0x459202[_0x1b03ed(0x1f1)]);case ERROR_CODES[_0x1b03ed(0x1c6)]:return _0x459202[_0x1b03ed(0x197)](_0x459202[_0x1b03ed(0x1ae)],_0x459202['cQtSc']);case ERROR_CODES[_0x1b03ed(0x212)]:return _0x459202[_0x1b03ed(0x1f5)](_0x459202[_0x1b03ed(0x1ed)],_0x459202[_0x1b03ed(0x1a3)]);case ERROR_CODES['DISK_FULL']:return _0x459202[_0x1b03ed(0x1ee)];case ERROR_CODES[_0x1b03ed(0x20f)]:return _0x459202[_0x1b03ed(0x20a)](_0x459202['envOJ'],_0x459202[_0x1b03ed(0x1e5)]);case ERROR_CODES['UPDATE_CHECK_FAILED']:return _0x459202['thWwn'](_0x459202[_0x1b03ed(0x1eb)](_0x459202['hkNZP'],_0x51e954),_0x459202[_0x1b03ed(0x1f1)]);case ERROR_CODES[_0x1b03ed(0x20c)]:return _0x459202[_0x1b03ed(0x1ff)](_0x459202[_0x1b03ed(0x1f8)],_0x459202[_0x1b03ed(0x222)]);default:return _0x459202['hVxue'](_0x459202['vxoko'],_0x459202[_0x1b03ed(0x20d)]);}}function classify(_0x4cf52e){const _0x5d7d5b=a33_0x38ea1f,_0x34c356={'YESId':function(_0x5d9a32,_0x1baba4){return _0x5d9a32(_0x1baba4);},'OrKYQ':function(_0x12c398,_0x50afd6){return _0x12c398===_0x50afd6;},'hMNoe':_0x5d7d5b(0x19a),'badmC':function(_0x3b3a2d,_0x2e681d,_0x5e7d9f){return _0x3b3a2d(_0x2e681d,_0x5e7d9f);},'XBNgj':function(_0x47fe4c,_0xc253d9){return _0x47fe4c===_0xc253d9;},'tVOzo':function(_0x7bd375,_0x2d011e){return _0x7bd375(_0x2d011e);},'ajDwD':_0x5d7d5b(0x1c8),'RZOEo':function(_0x3985b3,_0x1b6a89){return _0x3985b3(_0x1b6a89);},'AkOIG':function(_0x3c5547,_0x5251cb){return _0x3c5547(_0x5251cb);},'xDPMe':function(_0x430a16,_0x98feb2){return _0x430a16(_0x98feb2);},'nnDDw':function(_0x317d6c,_0x575da5){return _0x317d6c>=_0x575da5;}},_0x45837a=_0x34c356[_0x5d7d5b(0x221)](rawCauseString,_0x4cf52e);if(_0x4cf52e&&_0x34c356['OrKYQ'](typeof _0x4cf52e[_0x5d7d5b(0x1af)],_0x34c356['hMNoe'])&&ERROR_CODES[_0x4cf52e[_0x5d7d5b(0x1af)]]){const _0x1f7a0d=_0x4cf52e[_0x5d7d5b(0x18e)]||_0x34c356[_0x5d7d5b(0x1ba)](defaultMessageFor,_0x4cf52e[_0x5d7d5b(0x1af)],{'statusCode':_0x4cf52e['statusCode']});return{'code':_0x4cf52e['code'],'userMessage':_0x1f7a0d,'isAuth':_0x34c356[_0x5d7d5b(0x1a1)](_0x4cf52e[_0x5d7d5b(0x1af)],ERROR_CODES[_0x5d7d5b(0x1e2)]),'cause':_0x45837a};}const _0x5cdd2=_0x4cf52e&&_0x34c356[_0x5d7d5b(0x20e)](typeof _0x4cf52e[_0x5d7d5b(0x1af)],_0x34c356[_0x5d7d5b(0x1c2)])?_0x4cf52e[_0x5d7d5b(0x1af)]:'',_0x1525ce=_0x4cf52e&&(_0x4cf52e['statusCode']||_0x4cf52e['response']&&_0x4cf52e[_0x5d7d5b(0x1e7)][_0x5d7d5b(0x20b)])||undefined,_0x8fa431=_0x4cf52e&&(_0x4cf52e[_0x5d7d5b(0x1ec)]||_0x4cf52e[_0x5d7d5b(0x1fa)])?_0x34c356['tVOzo'](String,_0x4cf52e[_0x5d7d5b(0x1ec)]||_0x4cf52e[_0x5d7d5b(0x1fa)])[_0x5d7d5b(0x194)]():'',_0x59e94e=(_0x4dabfc,_0x4b667d)=>({'code':_0x4dabfc,'userMessage':defaultMessageFor(_0x4dabfc,{'statusCode':_0x4b667d}),'isAuth':_0x4dabfc===ERROR_CODES[_0x5d7d5b(0x1e2)],'cause':_0x45837a});if(_0x5cdd2&&SSL_ERROR_CODES[_0x5d7d5b(0x1f7)](_0x5cdd2)||SSL_MESSAGE_HINTS[_0x5d7d5b(0x216)](_0x205ca6=>_0x8fa431[_0x5d7d5b(0x1f7)](_0x205ca6)))return _0x34c356[_0x5d7d5b(0x1d2)](_0x59e94e,ERROR_CODES[_0x5d7d5b(0x1e4)]);if(_0x34c356[_0x5d7d5b(0x20e)](_0x1525ce,0x191)||_0x34c356[_0x5d7d5b(0x1a1)](_0x1525ce,0x193))return _0x34c356['badmC'](_0x59e94e,ERROR_CODES['AUTH_INVALID'],_0x1525ce);if(_0x34c356[_0x5d7d5b(0x1a1)](_0x5cdd2,_0x34c356[_0x5d7d5b(0x1c4)]))return _0x34c356[_0x5d7d5b(0x1d8)](_0x59e94e,ERROR_CODES[_0x5d7d5b(0x1d3)]);if(_0x5cdd2&&FS_PERMISSION_CODES[_0x5d7d5b(0x1f7)](_0x5cdd2))return _0x34c356[_0x5d7d5b(0x1aa)](_0x59e94e,ERROR_CODES['FS_PERMISSION']);if(_0x5cdd2&&NETWORK_ERROR_CODES['includes'](_0x5cdd2))return _0x34c356[_0x5d7d5b(0x1bc)](_0x59e94e,ERROR_CODES[_0x5d7d5b(0x195)]);if(ZIP_MESSAGE_HINTS[_0x5d7d5b(0x216)](_0x35fbb3=>_0x8fa431[_0x5d7d5b(0x1f7)](_0x35fbb3)))return _0x34c356[_0x5d7d5b(0x1d8)](_0x59e94e,ERROR_CODES[_0x5d7d5b(0x1c6)]);if(_0x1525ce&&_0x34c356['nnDDw'](_0x1525ce,0x1f4))return _0x34c356[_0x5d7d5b(0x1ba)](_0x59e94e,ERROR_CODES['UPDATE_CHECK_FAILED'],_0x1525ce);if(_0x1525ce&&_0x34c356[_0x5d7d5b(0x217)](_0x1525ce,0x190))return _0x34c356[_0x5d7d5b(0x1ba)](_0x59e94e,ERROR_CODES[_0x5d7d5b(0x1f2)],_0x1525ce);if(AUTH_MESSAGE_HINTS[_0x5d7d5b(0x216)](_0x26da02=>_0x8fa431[_0x5d7d5b(0x1f7)](_0x26da02)))return _0x34c356[_0x5d7d5b(0x1bc)](_0x59e94e,ERROR_CODES[_0x5d7d5b(0x1e2)]);return _0x34c356[_0x5d7d5b(0x221)](_0x59e94e,ERROR_CODES[_0x5d7d5b(0x226)]);}const EXIT_CODE_MESSAGES={};function messageForExitCode(_0x20d9b0){const _0x280398=a33_0x38ea1f,_0x7efaf3={};_0x7efaf3[_0x280398(0x1be)]=function(_0x26907a,_0x3986c5){return _0x26907a+_0x3986c5;},_0x7efaf3['ArCKf']='or\x20contact\x20BrowserStack\x20support\x20if\x20this\x20persists.';const _0x42e5f1=_0x7efaf3;if(Object[_0x280398(0x1a2)][_0x280398(0x198)][_0x280398(0x1dc)](EXIT_CODE_MESSAGES,_0x20d9b0))return EXIT_CODE_MESSAGES[_0x20d9b0];return _0x42e5f1[_0x280398(0x1be)](_0x280398(0x192)+_0x20d9b0+_0x280398(0x19c),_0x42e5f1[_0x280398(0x1ea)]);}function runtimeNotSupportedMessage(_0x1d4dc6,_0x567240={}){const _0x241f44=a33_0x38ea1f,_0x1663f4={};_0x1663f4[_0x241f44(0x1d7)]=function(_0x47a846,_0x50dffc){return _0x47a846&&_0x50dffc;},_0x1663f4['eUijC']=function(_0x391b1a,_0x3c4661){return _0x391b1a+_0x3c4661;},_0x1663f4['ekIkS']=_0x241f44(0x21d);const _0x568b5d=_0x1663f4,_0x58c172=_0x567240[_0x241f44(0x21c)],_0x2ec31a=_0x567240[_0x241f44(0x203)],_0x537406=_0x568b5d['osgIz'](_0x58c172,_0x2ec31a)?'\x20(supported:\x20Node\x20'+_0x58c172+_0x241f44(0x1b1)+_0x2ec31a+')':'';return _0x568b5d[_0x241f44(0x19b)](_0x241f44(0x214)+_0x1d4dc6+'\x20is\x20not\x20supported\x20by\x20BrowserStack\x20Load\x20Testing'+_0x537406+'.\x20',_0x568b5d[_0x241f44(0x1e8)]);}const a33_0x79502b={};a33_0x79502b['ERROR_CODES']=ERROR_CODES,a33_0x79502b['LT_EXIT_UNSUPPORTED_RUNTIME']=LT_EXIT_UNSUPPORTED_RUNTIME,a33_0x79502b[a33_0x38ea1f(0x211)]=LoadError,a33_0x79502b[a33_0x38ea1f(0x200)]=makeLoadError,a33_0x79502b[a33_0x38ea1f(0x1cf)]=classify,a33_0x79502b[a33_0x38ea1f(0x224)]=defaultMessageFor,a33_0x79502b[a33_0x38ea1f(0x1f9)]=messageForExitCode,a33_0x79502b[a33_0x38ea1f(0x18f)]=runtimeNotSupportedMessage,a33_0x79502b[a33_0x38ea1f(0x213)]=EXIT_CODE_MESSAGES,module['exports']=a33_0x79502b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';const
|
|
1
|
+
'use strict';const a34_0x1dd2ad=a34_0x3b68;function a34_0x3b68(_0x956bcc,_0x1012a4){const _0x1ae195=a34_0x1ae1();return a34_0x3b68=function(_0x3b68d2,_0x432094){_0x3b68d2=_0x3b68d2-0x18e;let _0x44a859=_0x1ae195[_0x3b68d2];return _0x44a859;},a34_0x3b68(_0x956bcc,_0x1012a4);}(function(_0x410322,_0x1b1e57){const _0x4ad272=a34_0x3b68,_0x221df4=_0x410322();while(!![]){try{const _0x1a83c2=parseInt(_0x4ad272(0x18f))/0x1*(-parseInt(_0x4ad272(0x1b1))/0x2)+parseInt(_0x4ad272(0x1b2))/0x3*(-parseInt(_0x4ad272(0x19f))/0x4)+parseInt(_0x4ad272(0x19e))/0x5+parseInt(_0x4ad272(0x199))/0x6+parseInt(_0x4ad272(0x1ae))/0x7+-parseInt(_0x4ad272(0x195))/0x8+-parseInt(_0x4ad272(0x194))/0x9*(-parseInt(_0x4ad272(0x19a))/0xa);if(_0x1a83c2===_0x1b1e57)break;else _0x221df4['push'](_0x221df4['shift']());}catch(_0x544527){_0x221df4['push'](_0x221df4['shift']());}}}(a34_0x1ae1,0xe8552));const fs=require('fs'),path=require('path'),logger=require('../../helpers/logger')[a34_0x1dd2ad(0x191)];function getLoadConfigPath(_0x455493){const _0x20e8ec=a34_0x1dd2ad,_0xd90cc1={};_0xd90cc1['DDTdB']=function(_0xd18b8f,_0x536880){return _0xd18b8f===_0x536880;},_0xd90cc1[_0x20e8ec(0x1a4)]=_0x20e8ec(0x1ad),_0xd90cc1[_0x20e8ec(0x1ba)]=function(_0x58be76,_0x4ec572){return _0x58be76===_0x4ec572;},_0xd90cc1['UkQVg']='run',_0xd90cc1[_0x20e8ec(0x1bb)]=_0x20e8ec(0x1a6),_0xd90cc1[_0x20e8ec(0x1b9)]='.yml',_0xd90cc1[_0x20e8ec(0x1a8)]=_0x20e8ec(0x193),_0xd90cc1[_0x20e8ec(0x1ac)]=_0x20e8ec(0x1a1),_0xd90cc1[_0x20e8ec(0x19d)]=_0x20e8ec(0x1b0),_0xd90cc1[_0x20e8ec(0x198)]='browserstack.yml',_0xd90cc1[_0x20e8ec(0x1b4)]=_0x20e8ec(0x1b7),_0xd90cc1[_0x20e8ec(0x196)]=_0x20e8ec(0x1a3);const _0x5f5d09=_0xd90cc1;logger['debug'](_0x20e8ec(0x1b5)+JSON[_0x20e8ec(0x1b8)](_0x455493));try{const _0x391a0b=_0x455493['_']||[],_0x4458c6=_0x5f5d09[_0x20e8ec(0x18e)](_0x455493['_'][0x0],_0x5f5d09[_0x20e8ec(0x1a4)])&&_0x5f5d09[_0x20e8ec(0x1ba)](_0x455493[_0x20e8ec(0x190)],_0x5f5d09[_0x20e8ec(0x19b)]);if(_0x4458c6){if(_0x455493[_0x5f5d09[_0x20e8ec(0x1bb)]]||_0x455493['cf']){const _0x103d77=_0x455493[_0x5f5d09[_0x20e8ec(0x1bb)]]||_0x455493['cf'],_0x282c7f=path[_0x20e8ec(0x1af)](_0x103d77);logger[_0x20e8ec(0x1ab)](_0x20e8ec(0x1be)+_0x103d77+_0x20e8ec(0x1bc)+_0x282c7f);if(_0x282c7f['endsWith'](_0x5f5d09[_0x20e8ec(0x1b9)])||_0x282c7f[_0x20e8ec(0x1b3)](_0x5f5d09['IIDEU']))return logger['info'](_0x20e8ec(0x1a9)+_0x282c7f),_0x282c7f;}}const _0x580e4b=[_0x5f5d09['GQxqx'],_0x5f5d09[_0x20e8ec(0x19d)],_0x5f5d09[_0x20e8ec(0x198)],_0x5f5d09['WCUZY']];logger[_0x20e8ec(0x1ab)](_0x5f5d09[_0x20e8ec(0x196)]);for(const _0x4e6c94 of _0x580e4b){const _0x56e384=path[_0x20e8ec(0x1a2)](process[_0x20e8ec(0x1b6)](),_0x4e6c94);logger[_0x20e8ec(0x1ab)](_0x20e8ec(0x1a0)+_0x56e384);if(fs[_0x20e8ec(0x1a7)](_0x56e384))return logger[_0x20e8ec(0x1ab)](_0x20e8ec(0x19c)+_0x56e384),_0x56e384;}}catch(_0x374bf8){logger[_0x20e8ec(0x192)](_0x20e8ec(0x197)+_0x374bf8['message']);}}function sleep(){return new Promise(_0x2ed805=>setTimeout(_0x2ed805,0x64));}function a34_0x1ae1(){const _0xf3e5e1=['join','Checking\x20for\x20config\x20in\x20default\x20config\x20files...','wYbnW','exports','config-file','existsSync','IIDEU','Using\x20specified\x20config\x20file:\x20','sleep','debug','GQxqx','load','2337671lDvESs','resolve','browserstack-load.yaml','34GXKWdB','810LIgCLX','endsWith','WCUZY','Checking\x20for\x20config\x20file\x20with\x20arguments:\x20','cwd','browserstack.yaml','stringify','mfTig','TddmP','YQiEp','\x20and\x20Resolved\x20path:\x20','getLoadConfigPath','Config\x20file\x20specified:\x20','DDTdB','28523pGcYqR','subcommand','winstonLogger','error','.yaml','6633ocmFpD','13236144cOMXrT','MTyqz','Failed\x20to\x20load\x20browserstack\x20config:\x20','qXXew','7425540UAAtvh','7050hEoJaV','UkQVg','Found\x20config\x20file:\x20','tpPxS','6107925oCHlWU','3284WKqhuO','Checking\x20for:\x20','browserstack-load.yml'];a34_0x1ae1=function(){return _0xf3e5e1;};return a34_0x1ae1();}const a34_0x3e08d3={};a34_0x3e08d3[a34_0x1dd2ad(0x1bd)]=getLoadConfigPath,a34_0x3e08d3[a34_0x1dd2ad(0x1aa)]=sleep,module[a34_0x1dd2ad(0x1a5)]=a34_0x3e08d3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function a34_0xadff(){const _0x2f40c0=['isBrowserstackInfra','browserName','isFinite','\x20browser\x20version\x20greater\x20than\x20','latest','nkZcR','ZJsje','Accessibility\x20Automation\x20will\x20run\x20only\x20on\x20Chrome\x20or\x20ChromeForTesting\x20browsers.','Accessibility\x20Automation\x20will\x20run\x20only\x20on\x20Desktop\x20browsers\x20or\x20Android\x20Chrome.','capabilities','--headless=','split','ZCkCs','IOQwN','OuFZs','setAccessibilityCapabilities','../../../helpers/globals','chromeOptions_','accessibility','info','format','get','isMobileScanningEnabledForGroup','__cloud_provider___','40kCHdvI','isVersionSupported','aEoYq','7321494OAxywt','Accessibility\x20Automation\x20is\x20enabled\x20for\x20Android\x20mobile\x20browser\x20(Chrome).\x20Skipping\x20extension\x20setup.','YLWdQ','util','getPlatformVersion','args','Exception\x20while\x20setting\x20Accessibility\x20Automation\x20capabilities.\x20Error\x20','wzFRv','5987990sdxjjv','browserVersion','4737gWSHjj','getBrowserVersion','isMobilePlatform','getMinVersionForBrowser','includes','2828350NmvDlF','RouwP','Exception\x20in\x20setExtension\x20Error:\x20','warn','BS_A11Y_JWT','dCmDz','isAccessibilityPlatform','JbENT','toLowerCase','../../../helpers/accessibility-automation/helper','keys','isArray','goog:chromeOptions','env','Accessibility\x20Automation\x20will\x20run\x20only\x20on\x20','requireModule','setGlobal','requiresChromeOptionsValidation','selenium-webdriver','path','jjLQn','757018KTQEoX','isUndefined','1864gBAQPY','BROWSERSTACK_TEST_ACCESSIBILITY_CONFIGURATION_YML','platformName','some','chromeOptions','platform','on\x20non-BrowserStack\x20infrastructure\x20','nestedKeyValue','accessibilityOptions','ntOFq','authToken','winstonLogger','getPlatform','parse','android','MOYEy','browser_version','length','HElGS','deviceName','capability','scannerVersion','getBrowserName','3010401qwPTCN','jaoST','OJwZS','QkrPv','2AgnzyW','getBrowserDisplayName','BSFgh','3|4|1|2|0','STACf','tRlPv','browserstack.accessibility','bstack:options','qcyaB','options_','capabilities_','LmTdu','7694960eksMqJ','isBrowserSupportedForAccessibility','debug'];a34_0xadff=function(){return _0x2f40c0;};return a34_0xadff();}const a34_0x4e5a2f=a34_0x20e8;function a34_0x20e8(_0x368d57,_0x48aacc){const _0xadfff0=a34_0xadff();return a34_0x20e8=function(_0x20e82c,_0x5ca06b){_0x20e82c=_0x20e82c-0x1b7;let _0x5a533e=_0xadfff0[_0x20e82c];return _0x5a533e;},a34_0x20e8(_0x368d57,_0x48aacc);}(function(_0x5dd0fd,_0x12a44b){const _0x45dfed=a34_0x20e8,_0x2c1591=_0x5dd0fd();while(!![]){try{const _0x28f6c6=parseInt(_0x45dfed(0x1d6))/0x1*(-parseInt(_0x45dfed(0x1b9))/0x2)+-parseInt(_0x45dfed(0x20a))/0x3*(-parseInt(_0x45dfed(0x1bb))/0x4)+parseInt(_0x45dfed(0x208))/0x5+-parseInt(_0x45dfed(0x200))/0x6+parseInt(_0x45dfed(0x20f))/0x7+-parseInt(_0x45dfed(0x1e2))/0x8+-parseInt(_0x45dfed(0x1d2))/0x9*(-parseInt(_0x45dfed(0x1fd))/0xa);if(_0x28f6c6===_0x12a44b)break;else _0x2c1591['push'](_0x2c1591['shift']());}catch(_0x1bfad8){_0x2c1591['push'](_0x2c1591['shift']());}}}(a34_0xadff,0xb3c19));const path=require(a34_0x4e5a2f(0x1b7)),os=require('os'),util=require(a34_0x4e5a2f(0x203)),bsSetupHelper=require('../../../helpers/helper'),globals=require(a34_0x4e5a2f(0x1f5)),accessibilityHelper=require(a34_0x4e5a2f(0x218)),logger=require('../../../helpers/logger')[a34_0x4e5a2f(0x1c6)];exports[a34_0x4e5a2f(0x1f4)]=_0x1ec63f=>{const _0x25fe8b=a34_0x4e5a2f,_0x6bdacf={};_0x6bdacf[_0x25fe8b(0x1eb)]=function(_0x48b488,_0x3b187e){return _0x48b488>_0x3b187e;},_0x6bdacf[_0x25fe8b(0x216)]=function(_0x572e53,_0x2eb17b){return _0x572e53>_0x2eb17b;},_0x6bdacf[_0x25fe8b(0x1f1)]=_0x25fe8b(0x1dd),_0x6bdacf[_0x25fe8b(0x207)]=_0x25fe8b(0x1dc),_0x6bdacf[_0x25fe8b(0x1d4)]=_0x25fe8b(0x215),_0x6bdacf[_0x25fe8b(0x1cd)]='browserstack.accessibilityOptions';const _0x443a65=_0x6bdacf;try{const _0x38e424=_0x443a65['ZJsje'](Object[_0x25fe8b(0x219)](_0x1ec63f['capability'])[_0x25fe8b(0x1cc)],0x0)?_0x1ec63f[_0x25fe8b(0x1cf)]:_0x443a65[_0x25fe8b(0x216)](Object[_0x25fe8b(0x219)](_0x1ec63f['capabilities'])[_0x25fe8b(0x1cc)],0x0)?_0x1ec63f[_0x25fe8b(0x1ee)][0x0]:{};if(_0x38e424[_0x443a65[_0x25fe8b(0x1f1)]]&&_0x38e424[_0x443a65[_0x25fe8b(0x1f1)]][_0x25fe8b(0x1f7)]||_0x1ec63f[_0x25fe8b(0x1cf)][_0x443a65[_0x25fe8b(0x207)]]){globals[_0x25fe8b(0x21f)](_0x443a65['OJwZS'],!![]);if(_0x38e424[_0x443a65[_0x25fe8b(0x1f1)]]){if(_0x38e424[_0x443a65[_0x25fe8b(0x1f1)]][_0x25fe8b(0x1c3)])_0x38e424[_0x443a65[_0x25fe8b(0x1f1)]][_0x25fe8b(0x1c3)][_0x25fe8b(0x1c5)]=process['env'][_0x25fe8b(0x213)];else{const _0x10088e={};_0x10088e[_0x25fe8b(0x1c5)]=process['env'][_0x25fe8b(0x213)],_0x38e424[_0x443a65['ZCkCs']][_0x25fe8b(0x1c3)]=_0x10088e;}_0x38e424[_0x443a65[_0x25fe8b(0x1f1)]][_0x25fe8b(0x1c3)][_0x25fe8b(0x1d0)]=JSON[_0x25fe8b(0x1c8)](process[_0x25fe8b(0x21c)][_0x25fe8b(0x1bc)])[_0x25fe8b(0x1d0)];}else{if(_0x1ec63f[_0x25fe8b(0x1cf)][_0x443a65[_0x25fe8b(0x207)]]){if(_0x38e424[_0x443a65[_0x25fe8b(0x1cd)]])_0x38e424[_0x443a65['HElGS']][_0x25fe8b(0x1c5)]=process[_0x25fe8b(0x21c)][_0x25fe8b(0x213)];else{const _0xf48257={};_0xf48257[_0x25fe8b(0x1c5)]=process['env'][_0x25fe8b(0x213)],_0x38e424[_0x443a65[_0x25fe8b(0x1cd)]]=_0xf48257;}_0x38e424[_0x443a65[_0x25fe8b(0x1cd)]][_0x25fe8b(0x1d0)]=JSON['parse'](process[_0x25fe8b(0x21c)]['BROWSERSTACK_TEST_ACCESSIBILITY_CONFIGURATION_YML'])[_0x25fe8b(0x1d0)];}}}}catch(_0x387e19){logger[_0x25fe8b(0x1e4)](_0x25fe8b(0x206)+_0x387e19);}},exports['setExtension']=(_0x54d55b,_0x5c22bc)=>{const _0x35c7aa=a34_0x4e5a2f,_0x186d3d={'IOQwN':_0x35c7aa(0x1dd),'RouwP':function(_0x4fd4e6,_0xae95d9){return _0x4fd4e6!==_0xae95d9;},'LmTdu':function(_0x58d02b,_0x109f37){return _0x58d02b===_0x109f37;},'SLaBq':_0x35c7aa(0x1c9),'STACf':'chrome','YLWdQ':_0x35c7aa(0x1d9),'aEoYq':_0x35c7aa(0x215),'MOYEy':_0x35c7aa(0x20c),'hqQwb':_0x35c7aa(0x201),'OuFZs':_0x35c7aa(0x1ed),'MnXwF':_0x35c7aa(0x1ec),'TBArk':_0x35c7aa(0x1e9),'dCmDz':_0x35c7aa(0x1c1),'jjLQn':function(_0x30c3bb,_0x14d1cb){return _0x30c3bb(_0x14d1cb);},'dVRFl':function(_0x47513f,_0x2166a3){return _0x47513f-_0x2166a3;},'BSFgh':'selenium-webdriver/chrome.js','tRlPv':_0x35c7aa(0x221),'NPBWs':_0x35c7aa(0x1df),'QkrPv':_0x35c7aa(0x205),'jaoST':_0x35c7aa(0x1bf),'aOpmI':_0x35c7aa(0x21b),'ntOFq':'Accessibility\x20Automation\x20will\x20not\x20run\x20on\x20legacy\x20headless\x20mode.\x20Switch\x20to\x20new\x20headless\x20mode\x20or\x20avoid\x20using\x20headless\x20mode.'};try{const _0x284496=_0x5c22bc['capability']||{},_0x89d495=(_0x284496[_0x186d3d[_0x35c7aa(0x1f2)]]?_0x284496[_0x186d3d[_0x35c7aa(0x1f2)]][_0x35c7aa(0x1ce)]:_0x284496['device'])||'';if(_0x186d3d['RouwP'](_0x89d495,'')){const _0x452d7b=_0x284496[_0x186d3d[_0x35c7aa(0x1f2)]],_0x333de7=(_0x452d7b?_0x452d7b[_0x35c7aa(0x1bd)]||_0x452d7b['platform']:_0x284496[_0x35c7aa(0x1bd)]||_0x284496[_0x35c7aa(0x1c0)])||'',_0x152db7=_0x284496[_0x35c7aa(0x1e6)]||_0x54d55b['capabilities_']['getBrowserName']()||'';if(_0x186d3d[_0x35c7aa(0x1e1)](_0x333de7['toLowerCase'](),_0x186d3d['SLaBq'])&&_0x152db7[_0x35c7aa(0x217)]()[_0x35c7aa(0x20e)](_0x186d3d[_0x35c7aa(0x1da)])){const _0x3f92da=_0x186d3d[_0x35c7aa(0x202)][_0x35c7aa(0x1f0)]('|');let _0x2b7c80=0x0;while(!![]){switch(_0x3f92da[_0x2b7c80++]){case'0':return!![];case'1':globals[_0x35c7aa(0x21f)](_0x186d3d[_0x35c7aa(0x1ff)],!![]);continue;case'2':globals[_0x35c7aa(0x21f)](_0x186d3d[_0x35c7aa(0x1ca)],!![]);continue;case'3':if(!accessibilityHelper[_0x35c7aa(0x1fb)]())return logger[_0x35c7aa(0x212)](accessibilityHelper['MOBILE_SCANNING_DISABLED_WARNING']),![];continue;case'4':logger[_0x35c7aa(0x1f8)](_0x186d3d['hqQwb']);continue;}break;}}return logger['warn'](_0x186d3d[_0x35c7aa(0x1f3)]),![];}const _0x2b4d93=_0x284496[_0x35c7aa(0x1e6)]||_0x54d55b[_0x35c7aa(0x1e0)]['getBrowserName'](),_0x17dda1=_0x284496[_0x35c7aa(0x209)]||_0x284496[_0x35c7aa(0x1cb)]||_0x54d55b[_0x35c7aa(0x1e0)][_0x35c7aa(0x20b)]();if(!accessibilityHelper[_0x35c7aa(0x1e3)](_0x2b4d93))return logger[_0x35c7aa(0x212)](_0x186d3d['MnXwF']),![];if(!bsSetupHelper[_0x35c7aa(0x1ba)](_0x17dda1)&&_0x186d3d[_0x35c7aa(0x210)](_0x17dda1,_0x186d3d['TBArk'])){const _0x220c15=bsSetupHelper[_0x35c7aa(0x1e5)](),_0x553d2f=accessibilityHelper[_0x35c7aa(0x20d)](_0x2b4d93,_0x220c15),_0x9cb043=accessibilityHelper[_0x35c7aa(0x1d7)](_0x2b4d93);if(!accessibilityHelper[_0x35c7aa(0x1fe)](_0x17dda1,_0x553d2f)){const _0x58b277=_0x220c15?'':_0x186d3d[_0x35c7aa(0x214)],_0x11a4cb=Number[_0x35c7aa(0x1e7)](_0x186d3d[_0x35c7aa(0x1b8)](parseFloat,_0x553d2f))?_0x186d3d['dVRFl'](_0x186d3d[_0x35c7aa(0x1b8)](parseFloat,_0x553d2f),0x1):_0x553d2f;return logger[_0x35c7aa(0x212)](_0x35c7aa(0x21d)+_0x9cb043+_0x35c7aa(0x1e8)+_0x11a4cb+'\x20'+_0x58b277+'.'),![];}}if(!accessibilityHelper[_0x35c7aa(0x220)](_0x2b4d93))return!![];let _0x5f23bb;try{_0x5f23bb=bsSetupHelper[_0x35c7aa(0x21e)](_0x186d3d[_0x35c7aa(0x1d8)],_0x186d3d[_0x35c7aa(0x1db)]);}catch(_0x4fffce){return![];}const _0x3ec28e=new _0x5f23bb['Options'](_0x54d55b[_0x35c7aa(0x1f6)]),_0x20c74c=bsSetupHelper[_0x35c7aa(0x1c2)](_0x3ec28e,[_0x186d3d['NPBWs'],_0x186d3d['QkrPv']])||bsSetupHelper['nestedKeyValue'](_0x54d55b[_0x35c7aa(0x1e0)][_0x35c7aa(0x1fa)](_0x186d3d[_0x35c7aa(0x1f2)]),[_0x186d3d['jaoST'],_0x186d3d[_0x35c7aa(0x1d5)]])||bsSetupHelper[_0x35c7aa(0x1c2)](_0x54d55b[_0x35c7aa(0x1e0)]['get'](_0x186d3d[_0x35c7aa(0x1d3)]),[_0x186d3d[_0x35c7aa(0x1d5)]])||bsSetupHelper['nestedKeyValue'](_0x54d55b[_0x35c7aa(0x1e0)]['get'](_0x186d3d['aOpmI']),[_0x186d3d[_0x35c7aa(0x1d5)]])||[],_0x1bf9be=Array[_0x35c7aa(0x21a)](_0x20c74c)?_0x20c74c:[];if(_0x1bf9be[_0x35c7aa(0x1be)](_0x3d434b=>typeof _0x3d434b==='string'&&(_0x3d434b==='--headless'||_0x3d434b['startsWith'](_0x35c7aa(0x1ef))&&_0x3d434b!=='--headless=new')))return logger[_0x35c7aa(0x212)](_0x186d3d[_0x35c7aa(0x1c4)]),![];return!![];}catch(_0x12c18a){logger['debug'](_0x35c7aa(0x211)+util[_0x35c7aa(0x1f9)](_0x12c18a));}return![];},exports['fetchPlatformDetails']=async _0x7f133b=>{const _0x4ae1aa=a34_0x4e5a2f,_0x278255={};_0x278255[_0x4ae1aa(0x1de)]=function(_0x1822cd,_0x11db1a){return _0x1822cd===_0x11db1a;},_0x278255[_0x4ae1aa(0x1ea)]='browserstack';const _0x4e17cc=_0x278255;let _0xc82896={};try{const _0x351db7=await _0x7f133b['getCapabilities']();_0xc82896={'os_name':_0x351db7[_0x4ae1aa(0x1c7)](),'os_version':bsSetupHelper[_0x4ae1aa(0x204)](_0x4e17cc[_0x4ae1aa(0x1de)](global[_0x4ae1aa(0x1fc)],_0x4e17cc[_0x4ae1aa(0x1ea)])),'browser_name':_0x351db7[_0x4ae1aa(0x1d1)](),'browser_version':_0x351db7['getBrowserVersion']()};}catch(_0x4e351e){logger[_0x4ae1aa(0x1e4)]('Exception\x20in\x20fetching\x20platform\x20details\x20with\x20error\x20:\x20'+_0x4e351e);}return _0xc82896;};
|
|
1
|
+
function a35_0x33e0(){const _0x10df4e=['goog:chromeOptions','hCewI','toLowerCase','44iOOicX','get','HPzhh','getBrowserVersion','version','selenium-webdriver/chrome.js','Exception\x20while\x20setting\x20Accessibility\x20Automation\x20capabilities.\x20Error\x20','158540ajSYHy','browserstack','isVersionSupported','441138rJeWIf','Exception\x20in\x20setExtension\x20Error:\x20','Aklft','eCkHK','browserVersion','chromeOptions','platform','dTMmU','Ytmzn','platformName','3|4|1|0|2','util','chromeOptions_','capabilities','debug','zDjKs','useW3C','getBrowserName','BS_A11Y_JWT','winstonLogger','PfpYl','yCxFp','accessibilityOptions','setAccessibilityCapabilities','YTKJQ','jJDeR','setGlobal','android','getPlatform','Oowph','getCapabilities','gWNhu','env','../../../helpers/accessibility-automation/helper','authToken','capabilities_','--headless=new','sCRPa','BkXKH','fXeKF','Accessibility\x20Automation\x20will\x20run\x20only\x20on\x20Desktop\x20browsers\x20or\x20Android\x20Chrome.','isMobileScanningEnabledForGroup','--headless','isArray','Exception\x20in\x20fetching\x20platform\x20details\x20with\x20error\x20:\x20','bstack:options','rRpVy','function','getPlatformVersion','vePIh','uKHEJ','isUndefined','33080289OlHlAQ','length','6KbcVgA','isFinite','Accessibility\x20Automation\x20will\x20run\x20only\x20on\x20Chrome\x20or\x20ChromeForTesting\x20browsers.','format','browserstack.accessibilityOptions','EjtSd','--headless=','browserName','MzNRJ','../../../helpers/globals','split','Options','__cloud_provider___','info','10bVsUWp','6908587aqWGGJ','isMobilePlatform','AkKQQ','scannerVersion','ipeGH','latest','10732923bvZtXb','setExtension','cadzV','xwxQS','502302YARwkX','tELtT','args','../../../helpers/helper','startsWith','oOslU','requireModule','path','GbORa','6RnRFaR','accessibility','4468488dAqXdP','XyakQ','capability','warn','getMinVersionForBrowser','parse','Mtfgd','keys','BROWSERSTACK_TEST_ACCESSIBILITY_CONFIGURATION_YML','isBrowserSupportedForAccessibility','Jacff','nestedKeyValue','isBrowserstackInfra','PJpzP','isAccessibilityPlatform','WxHii','\x20browser\x20version\x20greater\x20than\x20'];a35_0x33e0=function(){return _0x10df4e;};return a35_0x33e0();}const a35_0x554348=a35_0x179f;(function(_0x9c2d9a,_0x392ec6){const _0x4c6386=a35_0x179f,_0x137106=_0x9c2d9a();while(!![]){try{const _0x6d60fa=-parseInt(_0x4c6386(0xaf))/0x1+parseInt(_0x4c6386(0xfe))/0x2*(parseInt(_0x4c6386(0x107))/0x3)+-parseInt(_0x4c6386(0x11d))/0x4*(-parseInt(_0x4c6386(0x124))/0x5)+parseInt(_0x4c6386(0xe5))/0x6*(-parseInt(_0x4c6386(0xf4))/0x7)+-parseInt(_0x4c6386(0x109))/0x8+-parseInt(_0x4c6386(0xfa))/0x9+parseInt(_0x4c6386(0xf3))/0xa*(parseInt(_0x4c6386(0xe3))/0xb);if(_0x6d60fa===_0x392ec6)break;else _0x137106['push'](_0x137106['shift']());}catch(_0x2af144){_0x137106['push'](_0x137106['shift']());}}}(a35_0x33e0,0xa5d22));function a35_0x179f(_0x46eb84,_0x51d54a){const _0x33e099=a35_0x33e0();return a35_0x179f=function(_0x179f27,_0x3f21eb){_0x179f27=_0x179f27-0xae;let _0x54dec6=_0x33e099[_0x179f27];return _0x54dec6;},a35_0x179f(_0x46eb84,_0x51d54a);}const path=require(a35_0x554348(0x105)),os=require('os'),util=require(a35_0x554348(0xba)),bsSetupHelper=require(a35_0x554348(0x101)),globals=require(a35_0x554348(0xee)),accessibilityHelper=require(a35_0x554348(0xd0)),logger=require('../../../helpers/logger')[a35_0x554348(0xc2)];exports[a35_0x554348(0xc6)]=_0xf93163=>{const _0x7175c=a35_0x554348,_0x4932d2={};_0x4932d2['PJpzP']=function(_0x29b245,_0x319c6a){return _0x29b245>_0x319c6a;},_0x4932d2['ipeGH']=_0x7175c(0xdc),_0x4932d2[_0x7175c(0xc3)]='browserstack.accessibility',_0x4932d2[_0x7175c(0xc8)]=_0x7175c(0x117),_0x4932d2['HPzhh']=function(_0x3512bd,_0x6d2eb0){return _0x3512bd!==_0x6d2eb0;},_0x4932d2['dTMmU']=_0x7175c(0xe9);const _0x5879e1=_0x4932d2;try{const _0x38c1ee=_0x5879e1[_0x7175c(0x116)](Object[_0x7175c(0x110)](_0xf93163[_0x7175c(0x10b)])[_0x7175c(0xe4)],0x0)?_0xf93163[_0x7175c(0x10b)]:_0x5879e1[_0x7175c(0x116)](Object[_0x7175c(0x110)](_0xf93163[_0x7175c(0xbc)])[_0x7175c(0xe4)],0x0)?_0xf93163[_0x7175c(0xbc)][0x0]:{};if(_0x38c1ee[_0x5879e1[_0x7175c(0xf8)]]&&_0x38c1ee[_0x5879e1[_0x7175c(0xf8)]][_0x7175c(0x108)]||_0xf93163[_0x7175c(0x10b)][_0x5879e1['PfpYl']]){globals[_0x7175c(0xc9)](_0x5879e1[_0x7175c(0xc8)],!![]);const _0x850cb9=JSON[_0x7175c(0x10e)](process[_0x7175c(0xcf)][_0x7175c(0x111)])['scannerVersion'],_0x2edfe8=bsSetupHelper[_0x7175c(0xbf)](_0xf93163);if(_0x5879e1[_0x7175c(0x11f)](_0x2edfe8,![])&&_0x38c1ee[_0x5879e1[_0x7175c(0xf8)]]){if(_0x38c1ee[_0x5879e1[_0x7175c(0xf8)]][_0x7175c(0xc5)])_0x38c1ee[_0x5879e1[_0x7175c(0xf8)]][_0x7175c(0xc5)][_0x7175c(0xd1)]=process[_0x7175c(0xcf)][_0x7175c(0xc1)];else{const _0x46d28d={};_0x46d28d[_0x7175c(0xd1)]=process[_0x7175c(0xcf)][_0x7175c(0xc1)],_0x38c1ee[_0x5879e1[_0x7175c(0xf8)]][_0x7175c(0xc5)]=_0x46d28d;}_0x38c1ee[_0x5879e1[_0x7175c(0xf8)]][_0x7175c(0xc5)][_0x7175c(0xf7)]=_0x850cb9;}else{if(_0x38c1ee[_0x5879e1[_0x7175c(0xb6)]])_0x38c1ee[_0x5879e1[_0x7175c(0xb6)]][_0x7175c(0xd1)]=process[_0x7175c(0xcf)][_0x7175c(0xc1)];else{const _0x27b851={};_0x27b851[_0x7175c(0xd1)]=process[_0x7175c(0xcf)][_0x7175c(0xc1)],_0x38c1ee[_0x5879e1['dTMmU']]=_0x27b851;}_0x38c1ee[_0x5879e1[_0x7175c(0xb6)]]['scannerVersion']=_0x850cb9;}}}catch(_0xf15e39){logger[_0x7175c(0xbd)](_0x7175c(0x123)+_0xf15e39);}};const readCap=(_0xc11444,_0x1c0712,_0x6ef9a1)=>{const _0x4c3bd0=a35_0x554348,_0x31f4d0={};_0x31f4d0[_0x4c3bd0(0xd6)]=function(_0x214754,_0x3895bb){return _0x214754===_0x3895bb;},_0x31f4d0[_0x4c3bd0(0xfc)]=_0x4c3bd0(0xde),_0x31f4d0[_0x4c3bd0(0x106)]=function(_0x4316d8,_0x19deed){return _0x4316d8!==_0x19deed;},_0x31f4d0[_0x4c3bd0(0xb2)]=function(_0x51fc11,_0x1232b9){return _0x51fc11===_0x1232b9;},_0x31f4d0[_0x4c3bd0(0x10a)]=function(_0x530910,_0x29b3c1){return _0x530910!==_0x29b3c1;},_0x31f4d0['vePIh']=function(_0x1ef5e4,_0x1c722a){return _0x1ef5e4!==_0x1c722a;};const _0x564708=_0x31f4d0;try{if(_0xc11444&&_0x564708[_0x4c3bd0(0xd6)](typeof _0xc11444[_0x1c0712],_0x564708[_0x4c3bd0(0xfc)])){const _0x3b3a2f=_0xc11444[_0x1c0712]();if(_0x564708['GbORa'](_0x3b3a2f,undefined)&&_0x564708[_0x4c3bd0(0x106)](_0x3b3a2f,null))return _0x3b3a2f;}}catch(_0x7ccf6f){}try{if(_0xc11444&&_0x564708['eCkHK'](typeof _0xc11444['get'],_0x564708[_0x4c3bd0(0xfc)]))for(const _0x104c94 of _0x6ef9a1){const _0x2edbff=_0xc11444[_0x4c3bd0(0x11e)](_0x104c94);if(_0x564708[_0x4c3bd0(0x10a)](_0x2edbff,undefined)&&_0x564708[_0x4c3bd0(0xe0)](_0x2edbff,null))return _0x2edbff;}}catch(_0x568479){}return undefined;};exports[a35_0x554348(0xfb)]=(_0x3e8d70,_0x5e6a24)=>{const _0x3e189a=a35_0x554348,_0x181609={'oOslU':_0x3e189a(0xdc),'BBHBg':function(_0x40182f,_0x46774b){return _0x40182f!==_0x46774b;},'rRpVy':function(_0x26cfe3,_0x51bca0){return _0x26cfe3===_0x51bca0;},'Mtfgd':_0x3e189a(0xca),'AkKQQ':'chrome','ptCpX':_0x3e189a(0xb9),'YTKJQ':_0x3e189a(0xf5),'EVAzk':_0x3e189a(0x117),'Ytmzn':'Accessibility\x20Automation\x20is\x20enabled\x20for\x20Android\x20mobile\x20browser\x20(Chrome).\x20Skipping\x20extension\x20setup.','xwxQS':_0x3e189a(0xd7),'Aklft':function(_0x34341f,_0x4c9bca,_0x254445,_0x3cc538){return _0x34341f(_0x4c9bca,_0x254445,_0x3cc538);},'yCxFp':_0x3e189a(0xc0),'uKHEJ':_0x3e189a(0xec),'gWNhu':'getBrowserVersion','MFGIk':_0x3e189a(0xb3),'hWDsc':_0x3e189a(0x121),'ANAHH':_0x3e189a(0xe7),'WxHii':function(_0x3b1c69,_0x3c5d7d){return _0x3b1c69!==_0x3c5d7d;},'Oowph':_0x3e189a(0xf9),'wknHz':function(_0x120803,_0x786fc9){return _0x120803(_0x786fc9);},'BkXKH':'on\x20non-BrowserStack\x20infrastructure\x20','Oaxpy':function(_0x1f5311,_0x3ef843){return _0x1f5311(_0x3ef843);},'iskil':function(_0x19c735,_0x44674a){return _0x19c735-_0x44674a;},'sCRPa':_0x3e189a(0x122),'DplZs':'selenium-webdriver','Jacff':'options_','zDjKs':_0x3e189a(0x100),'MzNRJ':_0x3e189a(0xb4),'DkxiZ':_0x3e189a(0x11a),'tELtT':'Accessibility\x20Automation\x20will\x20not\x20run\x20on\x20legacy\x20headless\x20mode.\x20Switch\x20to\x20new\x20headless\x20mode\x20or\x20avoid\x20using\x20headless\x20mode.'};try{const _0x231f94=_0x5e6a24[_0x3e189a(0x10b)]||{},_0x36659d=(_0x231f94[_0x181609[_0x3e189a(0x103)]]?_0x231f94[_0x181609['oOslU']]['deviceName']:_0x231f94['device'])||'';if(_0x181609['BBHBg'](_0x36659d,'')){const _0x120dde=_0x231f94[_0x181609['oOslU']],_0x4a031e=(_0x120dde?_0x120dde[_0x3e189a(0xb8)]||_0x120dde[_0x3e189a(0xb5)]:_0x231f94['platformName']||_0x231f94[_0x3e189a(0xb5)])||'',_0x14fdeb=_0x231f94[_0x3e189a(0xec)]||_0x3e8d70[_0x3e189a(0xd2)][_0x3e189a(0xc0)]()||'';if(_0x181609[_0x3e189a(0xdd)](_0x4a031e[_0x3e189a(0x11c)](),_0x181609[_0x3e189a(0x10f)])&&_0x14fdeb[_0x3e189a(0x11c)]()['includes'](_0x181609[_0x3e189a(0xf6)])){const _0x527573=_0x181609['ptCpX'][_0x3e189a(0xef)]('|');let _0x1037b0=0x0;while(!![]){switch(_0x527573[_0x1037b0++]){case'0':globals[_0x3e189a(0xc9)](_0x181609[_0x3e189a(0xc7)],!![]);continue;case'1':globals[_0x3e189a(0xc9)](_0x181609['EVAzk'],!![]);continue;case'2':return!![];case'3':if(!accessibilityHelper[_0x3e189a(0xd8)]())return logger[_0x3e189a(0x10c)](accessibilityHelper['MOBILE_SCANNING_DISABLED_WARNING']),![];continue;case'4':logger[_0x3e189a(0xf2)](_0x181609[_0x3e189a(0xb7)]);continue;}break;}}return logger[_0x3e189a(0x10c)](_0x181609[_0x3e189a(0xfd)]),![];}const _0xab9e96=_0x231f94['browserName']||_0x181609['Aklft'](readCap,_0x3e8d70[_0x3e189a(0xd2)],_0x181609[_0x3e189a(0xc4)],[_0x181609[_0x3e189a(0xe1)]]),_0x943d1e=_0x231f94['browserVersion']||_0x231f94['browser_version']||_0x181609[_0x3e189a(0xb1)](readCap,_0x3e8d70[_0x3e189a(0xd2)],_0x181609[_0x3e189a(0xce)],[_0x181609['MFGIk'],_0x181609['hWDsc']]);if(!accessibilityHelper[_0x3e189a(0x112)](_0xab9e96))return logger['warn'](_0x181609['ANAHH']),![];if(!bsSetupHelper[_0x3e189a(0xe2)](_0x943d1e)&&_0x181609[_0x3e189a(0x118)](_0x943d1e,_0x181609[_0x3e189a(0xcc)])&&Number[_0x3e189a(0xe6)](_0x181609['wknHz'](parseFloat,_0x181609['wknHz'](String,_0x943d1e)))){const _0x16523d=bsSetupHelper[_0x3e189a(0x115)](),_0x1cc8ef=accessibilityHelper[_0x3e189a(0x10d)](_0xab9e96,_0x16523d),_0x45b90d=accessibilityHelper['getBrowserDisplayName'](_0xab9e96);if(!accessibilityHelper[_0x3e189a(0xae)](_0x943d1e,_0x1cc8ef)){const _0x1235ac=_0x16523d?'':_0x181609[_0x3e189a(0xd5)],_0x4fbcd1=Number[_0x3e189a(0xe6)](_0x181609['Oaxpy'](parseFloat,_0x1cc8ef))?_0x181609['iskil'](_0x181609['Oaxpy'](parseFloat,_0x1cc8ef),0x1):_0x1cc8ef;return logger[_0x3e189a(0x10c)]('Accessibility\x20Automation\x20will\x20run\x20only\x20on\x20'+_0x45b90d+_0x3e189a(0x119)+_0x4fbcd1+'\x20'+_0x1235ac+'.'),![];}}if(!accessibilityHelper['requiresChromeOptionsValidation'](_0xab9e96))return!![];let _0x339e43;try{_0x339e43=bsSetupHelper[_0x3e189a(0x104)](_0x181609[_0x3e189a(0xd4)],_0x181609['DplZs']);}catch(_0xa84960){return![];}const _0x2a8be5=new _0x339e43[(_0x3e189a(0xf0))](_0x3e8d70[_0x3e189a(0xbb)]),_0x193124=bsSetupHelper['nestedKeyValue'](_0x2a8be5,[_0x181609[_0x3e189a(0x113)],_0x181609[_0x3e189a(0xbe)]])||bsSetupHelper[_0x3e189a(0x114)](_0x3e8d70[_0x3e189a(0xd2)][_0x3e189a(0x11e)](_0x181609['oOslU']),[_0x181609['MzNRJ'],_0x181609[_0x3e189a(0xbe)]])||bsSetupHelper[_0x3e189a(0x114)](_0x3e8d70[_0x3e189a(0xd2)]['get'](_0x181609[_0x3e189a(0xed)]),[_0x181609[_0x3e189a(0xbe)]])||bsSetupHelper['nestedKeyValue'](_0x3e8d70[_0x3e189a(0xd2)][_0x3e189a(0x11e)](_0x181609['DkxiZ']),[_0x181609[_0x3e189a(0xbe)]])||[],_0x329339=Array[_0x3e189a(0xda)](_0x193124)?_0x193124:[];if(_0x329339['some'](_0x4657e6=>typeof _0x4657e6==='string'&&(_0x4657e6===_0x3e189a(0xd9)||_0x4657e6[_0x3e189a(0x102)](_0x3e189a(0xeb))&&_0x4657e6!==_0x3e189a(0xd3))))return logger[_0x3e189a(0x10c)](_0x181609[_0x3e189a(0xff)]),![];return!![];}catch(_0x40d1cb){logger[_0x3e189a(0xbd)](_0x3e189a(0xb0)+util[_0x3e189a(0xe8)](_0x40d1cb));}return![];},exports['fetchPlatformDetails']=async _0x2b1bac=>{const _0x5474c3=a35_0x554348,_0x14ea23={};_0x14ea23[_0x5474c3(0xea)]=function(_0x2cd48e,_0x234ec9){return _0x2cd48e===_0x234ec9;},_0x14ea23[_0x5474c3(0x11b)]=_0x5474c3(0x125);const _0x57936b=_0x14ea23;let _0x41e4b3={};try{const _0x2998f4=await _0x2b1bac[_0x5474c3(0xcd)]();_0x41e4b3={'os_name':_0x2998f4[_0x5474c3(0xcb)](),'os_version':bsSetupHelper[_0x5474c3(0xdf)](_0x57936b['EjtSd'](global[_0x5474c3(0xf1)],_0x57936b[_0x5474c3(0x11b)])),'browser_name':_0x2998f4['getBrowserName'](),'browser_version':_0x2998f4[_0x5474c3(0x120)]()};}catch(_0x5b7b0f){logger[_0x5474c3(0xbd)](_0x5474c3(0xdb)+_0x5b7b0f);}return _0x41e4b3;};
|