browserstack-node-sdk 1.62.0 → 1.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/ats/src/cloudproviders/AWS.js +1 -1
  2. package/ats/src/cloudproviders/Azure.js +1 -1
  3. package/ats/src/cloudproviders/CloudProvider.js +1 -1
  4. package/ats/src/cloudproviders/GoogleCloudProvider.js +1 -1
  5. package/ats/src/cloudproviders/utils.js +1 -1
  6. package/ats/src/commands/configure.js +1 -1
  7. package/ats/src/commands/connect.js +1 -1
  8. package/ats/src/commands/connect_commands/grid.js +1 -1
  9. package/ats/src/commands/create.js +1 -1
  10. package/ats/src/commands/create_commands/grid.js +1 -1
  11. package/ats/src/commands/delete.js +1 -1
  12. package/ats/src/commands/delete_commands/grid.js +1 -1
  13. package/ats/src/commands/init.js +1 -1
  14. package/ats/src/commands/list.js +1 -1
  15. package/ats/src/commands/list_commands/grid_profiles.js +1 -1
  16. package/ats/src/commands/list_commands/grids.js +1 -1
  17. package/ats/src/commands/precheck.js +1 -1
  18. package/ats/src/commands/precheck_commands/setup_precheck.js +1 -1
  19. package/ats/src/commands/start.js +1 -1
  20. package/ats/src/commands/start_commands/grid.js +1 -1
  21. package/ats/src/commands/stop.js +1 -1
  22. package/ats/src/commands/stop_commands/grid.js +1 -1
  23. package/ats/src/config/constants.js +1 -1
  24. package/ats/src/config/logger.js +1 -1
  25. package/ats/src/index.js +1 -1
  26. package/ats/src/utils/AWSUtils.js +1 -1
  27. package/ats/src/utils/createAutoscalerStack.js +1 -1
  28. package/ats/src/utils/createClusterStack.js +1 -1
  29. package/ats/src/utils/createHubHaStack.js +1 -1
  30. package/ats/src/utils/createk8sClient.js +1 -1
  31. package/ats/src/utils/deleteEFSMountTargets.js +1 -1
  32. package/ats/src/utils/deleteStack.js +1 -1
  33. package/ats/src/utils/describeStack.js +1 -1
  34. package/ats/src/utils/gridComponents.js +1 -1
  35. package/ats/src/utils/hstUtils.js +1 -1
  36. package/ats/src/utils/instrumentationUtils.js +1 -1
  37. package/ats/src/utils/userInput.js +1 -1
  38. package/ats/src/utils/utilityMethods.js +1 -1
  39. package/ats/src/utils/webSocketUtils.js +1 -1
  40. package/package.json +1 -1
  41. package/src/ai-sdk-node/bundle.js +1 -1
  42. package/src/bin/codeceptjs/BrowserStackPlugin.js +1 -1
  43. package/src/bin/codeceptjs/command.js +1 -1
  44. package/src/bin/codeceptjs/helper.js +1 -1
  45. package/src/bin/codeceptjs/o11yHelper.js +1 -1
  46. package/src/bin/cucumber-js/command.js +1 -1
  47. package/src/bin/cucumber-js/formatter/custom_formatter.js +1 -1
  48. package/src/bin/cucumber-js/formatter/custom_formatter_old_versions.js +1 -1
  49. package/src/bin/cucumber-js/test-observability.js +1 -1
  50. package/src/bin/cucumber-js/test.setup.js +1 -1
  51. package/src/bin/cucumber-js/test_old.setup.js +1 -1
  52. package/src/bin/cucumber-js/timeout.setup.js +1 -1
  53. package/src/bin/integrations/command.js +1 -1
  54. package/src/bin/integrations/constants.js +1 -1
  55. package/src/bin/jasmine/bstack-reporter/customReporter.js +1 -1
  56. package/src/bin/jasmine/command.js +1 -1
  57. package/src/bin/jasmine/test.setup.js +1 -1
  58. package/src/bin/jasmine/testRunMap.js +1 -1
  59. package/src/bin/jest/command.js +1 -1
  60. package/src/bin/jest/customImplements/customCircus.js +1 -1
  61. package/src/bin/jest/customImplements/customEnvironment.js +1 -1
  62. package/src/bin/jest/customImplements/customJestAdapterInit.js +1 -1
  63. package/src/bin/jest/customImplements/customSequencer.js +1 -1
  64. package/src/bin/jest/customImplements/customTestRunnerTemplate.js +1 -1
  65. package/src/bin/jest/jest.setup.js +1 -1
  66. package/src/bin/jest/test-observability/data-hooks.js +1 -1
  67. package/src/bin/jest/test-observability/helper.js +1 -1
  68. package/src/bin/jest/test-observability/obsReporter.js +1 -1
  69. package/src/bin/jest/test-observability/test-details.js +1 -1
  70. package/src/bin/jest/test.setup.js +1 -1
  71. package/src/bin/jest/test_before.setup.js +1 -1
  72. package/src/bin/launcher/launcher.js +1 -1
  73. package/src/bin/load/index.js +1 -1
  74. package/src/bin/load/load/index.js +193 -12
  75. package/src/bin/load/load/loadErrors.js +248 -0
  76. package/src/bin/load/loadErrors.js +1 -0
  77. package/src/bin/load/loadUtils.js +1 -1
  78. package/src/bin/mocha/accessibility-automation/helper.js +1 -1
  79. package/src/bin/mocha/bstack-reporter/customReporter.js +1 -1
  80. package/src/bin/mocha/command.js +1 -1
  81. package/src/bin/mocha/test-observability/builderPatch.js +1 -1
  82. package/src/bin/mocha/test-observability/data-hooks.js +1 -1
  83. package/src/bin/mocha/test-observability/mochaUtils.js +1 -1
  84. package/src/bin/mocha/test.setup.js +1 -1
  85. package/src/bin/newman/command.js +1 -1
  86. package/src/bin/newman/helper.js +1 -1
  87. package/src/bin/newman/reporter/index.js +1 -1
  88. package/src/bin/newman/scriptRunner.js +1 -1
  89. package/src/bin/nightwatch/command.js +1 -1
  90. package/src/bin/playwright/accessibility-helper.js +1 -1
  91. package/src/bin/playwright/command.js +1 -1
  92. package/src/bin/playwright/globalSetup.js +1 -1
  93. package/src/bin/playwright/mock-process.js +1 -1
  94. package/src/bin/playwright/modifyPlaywrightConf.js +1 -1
  95. package/src/bin/playwright/patches.js +1 -1
  96. package/src/bin/playwright/reporter/pwUtils.js +1 -1
  97. package/src/bin/playwright/reporter/reporter.js +1 -1
  98. package/src/bin/playwright/reporter/test-details.js +1 -1
  99. package/src/bin/playwright/sessionDetails.js +1 -1
  100. package/src/bin/puppeteer/patches.js +1 -1
  101. package/src/bin/puppeteer/sessionDetails.js +1 -1
  102. package/src/bin/puppeteer/test.setup.js +1 -1
  103. package/src/bin/runner.js +1 -1
  104. package/src/bin/setup.js +1 -1
  105. package/src/bin/test-runner/index.js +1 -1
  106. package/src/bin/test-runner/runTest.js +1 -1
  107. package/src/bin/test-runner/testWorker.js +1 -1
  108. package/src/bin/testcafe/a11y-runner.js +1 -1
  109. package/src/bin/testcafe/command.js +1 -1
  110. package/src/bin/testcafe/reporter/index.js +1 -1
  111. package/src/bin/testcafe/reporter/tcUtils.js +1 -1
  112. package/src/bin/testcafe/session-registry.js +1 -1
  113. package/src/bin/testcafe/stdout-interceptor.js +1 -1
  114. package/src/bin/testcafe/testcafe-action-patcher.js +1 -1
  115. package/src/bin/testcafe/w3c-driver.js +1 -1
  116. package/src/bin/utils/apiUtilityMethods.js +1 -1
  117. package/src/bin/utils/clientTroubleshootingService.js +1 -1
  118. package/src/bin/utils/constants.js +1 -1
  119. package/src/bin/utils/log4jsAppender.js +1 -1
  120. package/src/bin/utils/logPatcher.js +1 -1
  121. package/src/bin/utils/logReportingAPI.js +1 -1
  122. package/src/bin/utils/playwright-patcher.js +1 -1
  123. package/src/bin/utils/puppeteer-patcher.js +1 -1
  124. package/src/bin/utils/sharedPlaywrightSessionDetails.js +1 -1
  125. package/src/bin/utils/sharedUtils.js +1 -1
  126. package/src/bin/v2/TestInfo.js +1 -1
  127. package/src/bin/v2/browserstackCLI.js +1 -1
  128. package/src/bin/v2/cliUtils.js +1 -1
  129. package/src/bin/v2/customTagManager.js +1 -1
  130. package/src/bin/v2/eventDispatcher.js +1 -1
  131. package/src/bin/v2/framework/automationFramework.js +1 -1
  132. package/src/bin/v2/framework/constants/automationFrameworkConstants.js +1 -1
  133. package/src/bin/v2/framework/constants/testFrameworkConstants.js +1 -1
  134. package/src/bin/v2/framework/cucumberTestFramework.js +1 -1
  135. package/src/bin/v2/framework/jestTestFramework.js +1 -1
  136. package/src/bin/v2/framework/newmanTestFramework.js +1 -1
  137. package/src/bin/v2/framework/playwrightAutomationFramework.js +1 -1
  138. package/src/bin/v2/framework/playwrightTestFramework.js +1 -1
  139. package/src/bin/v2/framework/puppeteerAutomationFramework.js +1 -1
  140. package/src/bin/v2/framework/testFramework.js +1 -1
  141. package/src/bin/v2/framework/testcafeAutomationFramework.js +1 -1
  142. package/src/bin/v2/framework/testcafeTestFramework.js +1 -1
  143. package/src/bin/v2/grpcClient.js +1 -1
  144. package/src/bin/v2/instances/automationFrameworkInstance.js +1 -1
  145. package/src/bin/v2/instances/testFrameworkInstance.js +1 -1
  146. package/src/bin/v2/instances/trackedContext.js +1 -1
  147. package/src/bin/v2/instances/trackedInstance.js +1 -1
  148. package/src/bin/v2/modules/accessibilityModule.js +1 -1
  149. package/src/bin/v2/modules/baseModule.js +1 -1
  150. package/src/bin/v2/modules/loadTestModule.js +1 -1
  151. package/src/bin/v2/modules/observabilityModule.js +1 -1
  152. package/src/bin/v2/modules/playwrightDriverModule.js +1 -1
  153. package/src/bin/v2/modules/puppeteerDriverModule.js +1 -1
  154. package/src/bin/v2/modules/testcafeDriverModule.js +1 -1
  155. package/src/bin/v2/modules/testhubModule.js +1 -1
  156. package/src/bin/v2/sdkErrorHandler.js +1 -0
  157. package/src/bin/v2/state/automationFrameworkState.js +1 -1
  158. package/src/bin/v2/state/hookState.js +1 -1
  159. package/src/bin/v2/state/testFrameworkState.js +1 -1
  160. package/src/bin/v2/uploadAttachmentsManager.js +1 -1
  161. package/src/bin/v2/utils/cucumber-utils.js +1 -1
  162. package/src/bin/v2/utils/jest-utils.js +1 -1
  163. package/src/bin/vanilla-js/command.js +1 -1
  164. package/src/browserStackSdk.js +1 -1
  165. package/src/helpers/BrowserStackSetup.js +1 -1
  166. package/src/helpers/accessibility-automation/accessibilityRetryHelper.js +1 -1
  167. package/src/helpers/accessibility-automation/constants.js +1 -1
  168. package/src/helpers/accessibility-automation/helper.js +1 -1
  169. package/src/helpers/accessibility-automation/scripts.js +1 -1
  170. package/src/helpers/ai-sdk/aiSdkWrapper.js +1 -1
  171. package/src/helpers/ai-sdk/autoHealHelper.js +1 -1
  172. package/src/helpers/ats/constants.js +1 -1
  173. package/src/helpers/ats/helper.js +1 -1
  174. package/src/helpers/caCertHelper.js +1 -1
  175. package/src/helpers/capsMapping.js +1 -1
  176. package/src/helpers/central-scanner/constants.js +1 -1
  177. package/src/helpers/central-scanner/helpers.js +1 -1
  178. package/src/helpers/classLogger.js +1 -1
  179. package/src/helpers/driverInitErrorReporter.js +1 -1
  180. package/src/helpers/globals.js +1 -1
  181. package/src/helpers/helper.js +1 -1
  182. package/src/helpers/logger.js +1 -1
  183. package/src/helpers/metadata.js +1 -1
  184. package/src/helpers/patchHelper.js +1 -1
  185. package/src/helpers/patchHelpers.js +1 -1
  186. package/src/helpers/percy/Percy.js +1 -1
  187. package/src/helpers/percy/PercyBinary.js +1 -1
  188. package/src/helpers/percy/PercyCaptureMap.js +1 -1
  189. package/src/helpers/percy/PercyCaptureModes.js +1 -1
  190. package/src/helpers/percy/PercySDK.js +1 -1
  191. package/src/helpers/percy/index.js +1 -1
  192. package/src/helpers/percy/utils.js +1 -1
  193. package/src/helpers/performance/constants.js +1 -1
  194. package/src/helpers/performance/performance-tester.js +1 -1
  195. package/src/helpers/playwright-helper.js +1 -1
  196. package/src/helpers/processHelper.js +1 -1
  197. package/src/helpers/puppeteer-helper.js +1 -1
  198. package/src/helpers/request-spy.js +1 -1
  199. package/src/helpers/setKeepAlive.js +1 -1
  200. package/src/helpers/stackFrameUtils.js +1 -1
  201. package/src/helpers/test-observability/constants.js +1 -1
  202. package/src/helpers/test-observability/error-handler.js +1 -1
  203. package/src/helpers/test-observability/requestQueueHandler.js +1 -1
  204. package/src/helpers/test-observability/sessionHandler.js +1 -1
  205. package/src/helpers/test-observability/utils.js +1 -1
  206. package/src/helpers/test-orchestration/constants.js +1 -1
  207. package/src/helpers/test-orchestration/failfastManager.js +1 -1
  208. package/src/helpers/test-orchestration/fileHelper.js +1 -1
  209. package/src/helpers/test-orchestration/orchestrationUtils.js +1 -1
  210. package/src/helpers/test-orchestration/requestUtils.js +1 -1
  211. package/src/helpers/test-orchestration/testOrchestrationHandler.js +1 -1
  212. package/src/helpers/test-orchestration/testOrderingServerHandler.js +1 -1
  213. package/src/helpers/testhub/constants.js +1 -1
  214. package/src/helpers/testhub/testhubHandler.js +1 -1
  215. package/src/helpers/testhub/utils.js +1 -1
  216. package/src/helpers/timeoutPromise.js +1 -1
  217. package/src/helpers/utilities.js +1 -1
  218. package/src/helpers/w3cMapping.js +1 -1
  219. package/src/hubAllocationMethods.js +1 -1
  220. 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_0x219d8d=a33_0xe882;function a33_0x5b7a(){const _0x283c98=['ESOCKETTIMEDOUT','oMLYT','uaCkt','CERT_HAS_EXPIRED','invalid\x20credential','messageForExitCode','YoVKU','YMDoD','DlAjv','invalid\x20username','Permission\x20denied\x20while\x20writing\x20the\x20Load\x20Testing\x20CLI\x20binary.\x20Ensure\x20the\x20SDK\x20can\x20write\x20to\x20~/.browserstack\x20','ubedm','48582840qCtoVj','sbJvK','EPIPE','ssl\x20alert','eSSGE','.\x20Please\x20retry;\x20if\x20this\x20persists,\x20contact\x20BrowserStack\x20support.','invalid\x20local\x20file\x20header','self-signed\x20certificate','The\x20Load\x20Testing\x20CLI\x20could\x20not\x20be\x20started.\x20Re-run\x20with\x20DEBUG=true\x20for\x20details,\x20','central\x20directory','ViUSq','userMessage','1243jhbnpL','868rcJvrV','self\x20signed\x20certificate','Failed\x20to\x20download\x20the\x20Load\x20Testing\x20CLI\x20binary','makeLoadError','BrowserStack\x20returned\x20an\x20error\x20while\x20checking\x20for\x20the\x20latest\x20Load\x20Testing\x20CLI','or\x20contact\x20BrowserStack\x20support\x20if\x20this\x20persists.','reason','WWdrH','24183sWGicW','pienq','Delete\x20the\x20cached\x20binary\x20under\x20~/.browserstack/cli\x20and\x20retry.','LhByg','5|0|6|2|1|4|3','gLamV','code','hQocO','message','bHibF','EAI_AGAIN','runtimeNotSupportedMessage','tls\x20handshake','WztRs','EoEQg','Not\x20enough\x20disk\x20space\x20to\x20download\x20the\x20Load\x20Testing\x20CLI\x20binary.\x20Free\x20up\x20disk\x20space\x20and\x20retry.','yBmLk','ypWJP','nhfSK','If\x20sdk-assets.browserstack.com\x20is\x20blocked\x20by\x20your\x20firewall,\x20allowlist\x20it.','includes','dIKHP','unable\x20to\x20verify','call','DZzHe','DEPTH_ZERO_SELF_SIGNED_CERT','some','SzDcn','file\x20exists\x20and\x20is\x20valid\x20YAML.','maxTestedMajor','URUaC','forbidden','oEbAG','EXTRACT_CORRUPT','access\x20denied','ytOjA','wrong\x20version\x20number','DISK_FULL','stringify','UPDATE_CHECK_FAILED','+,\x20validated\x20up\x20to\x20Node\x20','IlEkt','936SUNGMa',').\x20Re-run\x20with\x20DEBUG=true\x20for\x20details,\x20','4KKoTfM','certificate\x20has\x20expired','unauthor','9048815nSSqcP','SSL/TLS\x20error\x20while\x20contacting\x20BrowserStack.\x20If\x20you\x20are\x20behind\x20an\x20SSL-inspecting\x20proxy,\x20set\x20','ERR_TLS_CERT_ALTNAME_INVALID','ECONNRESET','haHpu','\x20(HTTP\x20','FS_PERMISSION','\x20(supported:\x20Node\x20','KRzSx','.\x20Check\x20BROWSERSTACK_USERNAME\x20/\x20BROWSERSTACK_ACCESS_KEY\x20(or\x20the\x20credentials\x20in\x20your\x20browserstack.yml)\x20and\x20try\x20again.','statusCode','invalid\x20comment\x20length','ZVvvW','rIjPz','ENOSPC','hxLPR','WoPhL','ECONNREFUSED','WdnOs','cDAiP','Your\x20Node.js\x20runtime\x20is\x20not\x20supported\x20by\x20BrowserStack\x20Load\x20Testing.\x20','AUTH_INVALID','PgJDT','exports','The\x20downloaded\x20Load\x20Testing\x20CLI\x20binary\x20could\x20not\x20be\x20extracted\x20(the\x20archive\x20appears\x20corrupt\x20or\x20incomplete).\x20','ETIMEDOUT','ssl\x20routines','rRbye','MWkUp','NETWORK','pkcXi','string','ENETUNREACH','162810fdguKa','wLDIz','Load\x20test\x20failed\x20(exit\x20code\x20','cHLwi','10995aqlYUr','DOWNLOAD_HTTP','CONFIG_PARSE','UNKNOWN','EACCES','vTkrR','qboTq','58478VgEFmF','BtjRa','QEwOJ','Authentication\x20failed:\x20your\x20BrowserStack\x20username/access\x20key\x20was\x20rejected','erAit','UNSUPPORTED_RUNTIME','LoadError','invalid\x20access\x20key','Switch\x20to\x20a\x20supported\x20Node.js\x20version\x20and\x20re-run,\x20or\x20set\x20BROWSERSTACK_SKIP_NODE_CHECK=true\x20to\x20bypass\x20this\x20check.','error','hasOwnProperty','cause','isAuth','kVuiq','response','\x20is\x20not\x20supported\x20by\x20BrowserStack\x20Load\x20Testing','unable\x20to\x20get\x20local\x20issuer','UNABLE_TO_VERIFY_LEAF_SIGNATURE','SELF_SIGNED_CERT_IN_CHAIN','ECONNABORTED','split','aBhWT','HaxCK','defaultMessageFor','SSL','lCGbG','UNSXF','1506539IyWaEH','ttakd','8cXJddA'];a33_0x5b7a=function(){return _0x283c98;};return a33_0x5b7a();}(function(_0x5ea737,_0x305ddd){const _0x3673af=a33_0xe882,_0x2a3d09=_0x5ea737();while(!![]){try{const _0xaf4d79=-parseInt(_0x3673af(0x10f))/0x1+-parseInt(_0x3673af(0x91))/0x2*(-parseInt(_0x3673af(0xed))/0x3)+parseInt(_0x3673af(0xc5))/0x4*(parseInt(_0x3673af(0xc8))/0x5)+parseInt(_0x3673af(0xc3))/0x6*(parseInt(_0x3673af(0xf4))/0x7)+parseInt(_0x3673af(0x111))/0x8*(-parseInt(_0x3673af(0x99))/0x9)+parseInt(_0x3673af(0xe9))/0xa*(parseInt(_0x3673af(0x90))/0xb)+-parseInt(_0x3673af(0x11e))/0xc;if(_0xaf4d79===_0x305ddd)break;else _0x2a3d09['push'](_0x2a3d09['shift']());}catch(_0x2b359d){_0x2a3d09['push'](_0x2a3d09['shift']());}}}(a33_0x5b7a,0xf09d2));const a33_0x5d0e31={};a33_0x5d0e31[a33_0x219d8d(0xdd)]=a33_0x219d8d(0xdd),a33_0x5d0e31[a33_0x219d8d(0xe5)]='NETWORK',a33_0x5d0e31[a33_0x219d8d(0x10c)]=a33_0x219d8d(0x10c),a33_0x5d0e31[a33_0x219d8d(0xee)]=a33_0x219d8d(0xee),a33_0x5d0e31[a33_0x219d8d(0xba)]=a33_0x219d8d(0xba),a33_0x5d0e31[a33_0x219d8d(0xce)]=a33_0x219d8d(0xce),a33_0x5d0e31['DISK_FULL']=a33_0x219d8d(0xbe),a33_0x5d0e31['CONFIG_PARSE']=a33_0x219d8d(0xef),a33_0x5d0e31['UPDATE_CHECK_FAILED']=a33_0x219d8d(0xc0),a33_0x5d0e31['UNSUPPORTED_RUNTIME']=a33_0x219d8d(0xf9),a33_0x5d0e31[a33_0x219d8d(0xf0)]='UNKNOWN';function a33_0xe882(_0x153613,_0x3f9b90){const _0x5b7acf=a33_0x5b7a();return a33_0xe882=function(_0xe882d7,_0x56e2d5){_0xe882d7=_0xe882d7-0x8a;let _0x2c5c86=_0x5b7acf[_0xe882d7];return _0x2c5c86;},a33_0xe882(_0x153613,_0x3f9b90);}const ERROR_CODES=a33_0x5d0e31,LT_EXIT_UNSUPPORTED_RUNTIME=0x4e,NETWORK_ERROR_CODES=[a33_0x219d8d(0xd9),a33_0x219d8d(0xcb),'ENOTFOUND',a33_0x219d8d(0xa3),a33_0x219d8d(0xe1),a33_0x219d8d(0xe8),'EHOSTUNREACH',a33_0x219d8d(0x120),a33_0x219d8d(0x107),a33_0x219d8d(0x112)],FS_PERMISSION_CODES=[a33_0x219d8d(0xf1),'EPERM','EROFS'],SSL_ERROR_CODES=[a33_0x219d8d(0x115),a33_0x219d8d(0xb2),a33_0x219d8d(0x106),a33_0x219d8d(0x105),'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',a33_0x219d8d(0xca),'CERT_UNTRUSTED'],SSL_MESSAGE_HINTS=[a33_0x219d8d(0x92),a33_0x219d8d(0x8b),a33_0x219d8d(0xaf),a33_0x219d8d(0x104),a33_0x219d8d(0xc6),a33_0x219d8d(0xe2),a33_0x219d8d(0x121),a33_0x219d8d(0xa5),a33_0x219d8d(0xbd)],ZIP_MESSAGE_HINTS=[a33_0x219d8d(0x8d),'not\x20a\x20valid\x20zip','end\x20of\x20central','invalid\x20signature',a33_0x219d8d(0x8a),'compressed/uncompressed\x20size',a33_0x219d8d(0xd3)],AUTH_MESSAGE_HINTS=[a33_0x219d8d(0xc7),a33_0x219d8d(0xb8),a33_0x219d8d(0xbb),a33_0x219d8d(0x11b),a33_0x219d8d(0xfb),'authentication\x20failed',a33_0x219d8d(0x116)];class LoadError extends Error{constructor(_0x183586,_0x52c317,_0x30fb52={}){const _0x16e281=a33_0x219d8d,_0x2437f8={'ypWJP':_0x16e281(0x9d),'JkjwV':_0x16e281(0xfa),'qboTq':function(_0x5559da,_0x3b3041){return _0x5559da===_0x3b3041;},'oMLYT':function(_0x8287c5,_0x3add42,_0x8a0c17){return _0x8287c5(_0x3add42,_0x8a0c17);},'cDAiP':function(_0x533c8a,_0xe0a309){return _0x533c8a!==_0xe0a309;},'iVQne':function(_0x32b429,_0x195ab0){return _0x32b429||_0x195ab0;}},_0xb6bc84=_0x2437f8[_0x16e281(0xaa)][_0x16e281(0x108)]('|');let _0x496a62=0x0;while(!![]){switch(_0xb6bc84[_0x496a62++]){case'0':this['name']=_0x2437f8['JkjwV'];continue;case'1':this[_0x16e281(0x100)]=_0x2437f8[_0x16e281(0xf3)](this['code'],ERROR_CODES['AUTH_INVALID']);continue;case'2':this['userMessage']=_0x52c317||_0x2437f8[_0x16e281(0x113)](defaultMessageFor,this[_0x16e281(0x9f)],_0x30fb52);continue;case'3':_0x2437f8[_0x16e281(0xdb)](_0x30fb52['cause'],undefined)&&(this['cause']=_0x30fb52[_0x16e281(0xff)]);continue;case'4':_0x30fb52[_0x16e281(0xd2)]&&(this[_0x16e281(0xd2)]=_0x30fb52['statusCode']);continue;case'5':super(_0x2437f8['iVQne'](_0x52c317,_0x183586));continue;case'6':this[_0x16e281(0x9f)]=ERROR_CODES[_0x183586]?_0x183586:ERROR_CODES[_0x16e281(0xf0)];continue;}break;}}}function makeLoadError(_0x44f6dc,_0x1e66a6={}){const _0x3628c8=a33_0x219d8d;return new LoadError(_0x44f6dc,_0x1e66a6[_0x3628c8(0x8f)],_0x1e66a6);}function rawCauseString(_0x19abda){const _0x19f6b7=a33_0x219d8d,_0x1d8ee3={'QEwOJ':function(_0x2be6fc,_0x4492ce){return _0x2be6fc===_0x4492ce;},'nhfSK':_0x19f6b7(0xe7),'URUaC':function(_0x3743c3,_0x4fcef5){return _0x3743c3(_0x4fcef5);}};if(_0x1d8ee3[_0x19f6b7(0xf6)](_0x19abda,null)||_0x1d8ee3[_0x19f6b7(0xf6)](_0x19abda,undefined))return'';if(_0x1d8ee3[_0x19f6b7(0xf6)](typeof _0x19abda,_0x1d8ee3[_0x19f6b7(0xab)]))return _0x19abda;if(_0x19abda[_0x19f6b7(0x8f)]||_0x19abda[_0x19f6b7(0xa1)]||_0x19abda[_0x19f6b7(0xfd)]||_0x19abda[_0x19f6b7(0x97)])return _0x19abda[_0x19f6b7(0x8f)]||_0x19abda['message']||_0x19abda[_0x19f6b7(0xfd)]||_0x19abda[_0x19f6b7(0x97)];try{return JSON[_0x19f6b7(0xbf)](_0x19abda);}catch(_0x2cb8d){return _0x1d8ee3[_0x19f6b7(0xb7)](String,_0x19abda);}}function defaultMessageFor(_0x4db71d,_0x38efd0={}){const _0x26f56b=a33_0x219d8d,_0x2dc5b5={};_0x2dc5b5[_0x26f56b(0xf5)]=function(_0x488de7,_0x2578e1){return _0x488de7+_0x2578e1;},_0x2dc5b5[_0x26f56b(0xd5)]=function(_0x5d0f38,_0x107164){return _0x5d0f38+_0x107164;},_0x2dc5b5[_0x26f56b(0xb9)]=_0x26f56b(0xf7),_0x2dc5b5[_0x26f56b(0xc2)]=_0x26f56b(0xd1),_0x2dc5b5[_0x26f56b(0xa9)]=function(_0x2146c2,_0x11b745){return _0x2146c2+_0x11b745;},_0x2dc5b5[_0x26f56b(0x119)]='Could\x20not\x20reach\x20BrowserStack\x20to\x20set\x20up\x20the\x20Load\x20Testing\x20CLI.\x20Check\x20your\x20network/proxy\x20connectivity\x20and\x20retry.\x20',_0x2dc5b5[_0x26f56b(0x98)]=_0x26f56b(0xac),_0x2dc5b5['UNSXF']=function(_0x2df75b,_0xe1cdce){return _0x2df75b+_0xe1cdce;},_0x2dc5b5['rRbye']=_0x26f56b(0xc9),_0x2dc5b5['WoPhL']='NODE_EXTRA_CA_CERTS\x20(or\x20BROWSERSTACK_EXTRA_CA_CERTS)\x20to\x20your\x20corporate\x20CA\x20bundle\x20and\x20retry.',_0x2dc5b5[_0x26f56b(0x9c)]=function(_0x5db1d5,_0x3afbdb){return _0x5db1d5+_0x3afbdb;},_0x2dc5b5[_0x26f56b(0xf8)]=function(_0x3043b8,_0x4b7d6a){return _0x3043b8+_0x4b7d6a;},_0x2dc5b5[_0x26f56b(0xec)]=_0x26f56b(0x93),_0x2dc5b5[_0x26f56b(0xcc)]=_0x26f56b(0x123),_0x2dc5b5[_0x26f56b(0xde)]=_0x26f56b(0xe0),_0x2dc5b5['QKUaA']=_0x26f56b(0x9b),_0x2dc5b5['HaxCK']=_0x26f56b(0x11c),_0x2dc5b5[_0x26f56b(0x11d)]='(or\x20set\x20BROWSERSTACK_FILES_DIR\x20to\x20a\x20writable\x20directory)\x20and\x20retry.',_0x2dc5b5['vTkrR']=_0x26f56b(0xa8),_0x2dc5b5[_0x26f56b(0x8e)]=function(_0x23eba9,_0x2f0fbf){return _0x23eba9+_0x2f0fbf;},_0x2dc5b5[_0x26f56b(0x114)]='Could\x20not\x20read\x20your\x20Load\x20Testing\x20configuration.\x20Check\x20that\x20the\x20browserstack.yml\x20/\x20browserstack-load.yml\x20',_0x2dc5b5[_0x26f56b(0x122)]=_0x26f56b(0xb5),_0x2dc5b5[_0x26f56b(0xa0)]=function(_0x22a0a7,_0x4f1aea){return _0x22a0a7+_0x4f1aea;},_0x2dc5b5[_0x26f56b(0x109)]=function(_0x4a4df4,_0x1608a5){return _0x4a4df4+_0x1608a5;},_0x2dc5b5[_0x26f56b(0x118)]=_0x26f56b(0x95),_0x2dc5b5['bHibF']=function(_0x4a0c0f,_0x181855){return _0x4a0c0f+_0x181855;},_0x2dc5b5[_0x26f56b(0xe6)]=_0x26f56b(0xdc),_0x2dc5b5[_0x26f56b(0xa6)]='Switch\x20to\x20a\x20supported\x20Node.js\x20version\x20and\x20re-run.\x20See\x20the\x20BrowserStack\x20Load\x20Testing\x20docs\x20for\x20the\x20supported\x20version\x20matrix.',_0x2dc5b5[_0x26f56b(0xd4)]=function(_0x2bea81,_0x4fa88c){return _0x2bea81+_0x4fa88c;},_0x2dc5b5[_0x26f56b(0x11f)]=_0x26f56b(0x8c),_0x2dc5b5[_0x26f56b(0xae)]=_0x26f56b(0x96);const _0x3e243c=_0x2dc5b5,_0x17c615=_0x38efd0[_0x26f56b(0xd2)]?_0x26f56b(0xcd)+_0x38efd0[_0x26f56b(0xd2)]+')':'';switch(_0x4db71d){case ERROR_CODES[_0x26f56b(0xdd)]:return _0x3e243c[_0x26f56b(0xf5)](_0x3e243c[_0x26f56b(0xd5)](_0x3e243c[_0x26f56b(0xb9)],_0x17c615),_0x3e243c[_0x26f56b(0xc2)]);case ERROR_CODES[_0x26f56b(0xe5)]:return _0x3e243c[_0x26f56b(0xa9)](_0x3e243c[_0x26f56b(0x119)],_0x3e243c[_0x26f56b(0x98)]);case ERROR_CODES[_0x26f56b(0x10c)]:return _0x3e243c[_0x26f56b(0x10e)](_0x3e243c[_0x26f56b(0xe3)],_0x3e243c[_0x26f56b(0xd8)]);case ERROR_CODES['DOWNLOAD_HTTP']:return _0x3e243c[_0x26f56b(0x9c)](_0x3e243c[_0x26f56b(0xf8)](_0x3e243c[_0x26f56b(0xec)],_0x17c615),_0x3e243c[_0x26f56b(0xcc)]);case ERROR_CODES[_0x26f56b(0xba)]:return _0x3e243c[_0x26f56b(0xf8)](_0x3e243c['PgJDT'],_0x3e243c['QKUaA']);case ERROR_CODES[_0x26f56b(0xce)]:return _0x3e243c[_0x26f56b(0xf8)](_0x3e243c[_0x26f56b(0x10a)],_0x3e243c[_0x26f56b(0x11d)]);case ERROR_CODES['DISK_FULL']:return _0x3e243c[_0x26f56b(0xf2)];case ERROR_CODES['CONFIG_PARSE']:return _0x3e243c[_0x26f56b(0x8e)](_0x3e243c[_0x26f56b(0x114)],_0x3e243c[_0x26f56b(0x122)]);case ERROR_CODES['UPDATE_CHECK_FAILED']:return _0x3e243c[_0x26f56b(0xa0)](_0x3e243c[_0x26f56b(0x109)](_0x3e243c[_0x26f56b(0x118)],_0x17c615),_0x3e243c[_0x26f56b(0xcc)]);case ERROR_CODES[_0x26f56b(0xf9)]:return _0x3e243c[_0x26f56b(0xa2)](_0x3e243c[_0x26f56b(0xe6)],_0x3e243c[_0x26f56b(0xa6)]);default:return _0x3e243c['ZVvvW'](_0x3e243c[_0x26f56b(0x11f)],_0x3e243c[_0x26f56b(0xae)]);}}function classify(_0x333d74){const _0x435062=a33_0x219d8d,_0x376835={'ytOjA':function(_0x287785,_0x5a0cc5){return _0x287785(_0x5a0cc5);},'WdnOs':function(_0x88ef39,_0x9af5fb){return _0x88ef39===_0x9af5fb;},'KRzSx':_0x435062(0xe7),'MWkUp':function(_0x1cc17d,_0x433573,_0x45d209){return _0x1cc17d(_0x433573,_0x45d209);},'pmemu':function(_0x5aa113,_0x3cefcd){return _0x5aa113(_0x3cefcd);},'DZzHe':function(_0x4ef473,_0x339442){return _0x4ef473(_0x339442);},'ttakd':function(_0x550b6a,_0x2eecdf){return _0x550b6a===_0x2eecdf;},'OFQTI':function(_0x18bf99,_0x1cfaf9,_0x481b1a){return _0x18bf99(_0x1cfaf9,_0x481b1a);},'DlAjv':_0x435062(0xd6),'hxLPR':function(_0x576a92,_0x41e26f){return _0x576a92(_0x41e26f);},'EoEQg':function(_0x2f5a8c,_0x58ad21){return _0x2f5a8c>=_0x58ad21;},'wLDIz':function(_0x23269d,_0x201adb,_0x784ae3){return _0x23269d(_0x201adb,_0x784ae3);},'hfFvv':function(_0x40f0ba,_0x2ceca0){return _0x40f0ba>=_0x2ceca0;},'kVuiq':function(_0x4f3aed,_0x41ad1c){return _0x4f3aed(_0x41ad1c);}},_0x274a55=_0x376835[_0x435062(0xbc)](rawCauseString,_0x333d74);if(_0x333d74&&_0x376835['WdnOs'](typeof _0x333d74['code'],_0x376835[_0x435062(0xd0)])&&ERROR_CODES[_0x333d74[_0x435062(0x9f)]]){const _0x151cb7=_0x333d74[_0x435062(0x8f)]||_0x376835[_0x435062(0xe4)](defaultMessageFor,_0x333d74['code'],{'statusCode':_0x333d74[_0x435062(0xd2)]});return{'code':_0x333d74[_0x435062(0x9f)],'userMessage':_0x151cb7,'isAuth':_0x376835['WdnOs'](_0x333d74[_0x435062(0x9f)],ERROR_CODES[_0x435062(0xdd)]),'cause':_0x274a55};}const _0x4d798c=_0x333d74&&_0x376835[_0x435062(0xda)](typeof _0x333d74[_0x435062(0x9f)],_0x376835[_0x435062(0xd0)])?_0x333d74[_0x435062(0x9f)]:'',_0x134751=_0x333d74&&(_0x333d74[_0x435062(0xd2)]||_0x333d74[_0x435062(0x102)]&&_0x333d74[_0x435062(0x102)][_0x435062(0xd2)])||undefined,_0x10c12d=_0x333d74&&(_0x333d74[_0x435062(0xa1)]||_0x333d74[_0x435062(0xfd)])?_0x376835['pmemu'](String,_0x333d74['message']||_0x333d74[_0x435062(0xfd)])['toLowerCase']():'',_0x340731=(_0x1199cc,_0x5b61a6)=>({'code':_0x1199cc,'userMessage':defaultMessageFor(_0x1199cc,{'statusCode':_0x5b61a6}),'isAuth':_0x1199cc===ERROR_CODES[_0x435062(0xdd)],'cause':_0x274a55});if(_0x4d798c&&SSL_ERROR_CODES[_0x435062(0xad)](_0x4d798c)||SSL_MESSAGE_HINTS[_0x435062(0xb3)](_0x2d0e3e=>_0x10c12d[_0x435062(0xad)](_0x2d0e3e)))return _0x376835[_0x435062(0xb1)](_0x340731,ERROR_CODES[_0x435062(0x10c)]);if(_0x376835[_0x435062(0x110)](_0x134751,0x191)||_0x376835['ttakd'](_0x134751,0x193))return _0x376835['OFQTI'](_0x340731,ERROR_CODES['AUTH_INVALID'],_0x134751);if(_0x376835[_0x435062(0x110)](_0x4d798c,_0x376835[_0x435062(0x11a)]))return _0x376835[_0x435062(0xd7)](_0x340731,ERROR_CODES[_0x435062(0xbe)]);if(_0x4d798c&&FS_PERMISSION_CODES[_0x435062(0xad)](_0x4d798c))return _0x376835[_0x435062(0xb1)](_0x340731,ERROR_CODES[_0x435062(0xce)]);if(_0x4d798c&&NETWORK_ERROR_CODES[_0x435062(0xad)](_0x4d798c))return _0x376835['DZzHe'](_0x340731,ERROR_CODES[_0x435062(0xe5)]);if(ZIP_MESSAGE_HINTS[_0x435062(0xb3)](_0x4cb511=>_0x10c12d['includes'](_0x4cb511)))return _0x376835['DZzHe'](_0x340731,ERROR_CODES[_0x435062(0xba)]);if(_0x134751&&_0x376835[_0x435062(0xa7)](_0x134751,0x1f4))return _0x376835[_0x435062(0xea)](_0x340731,ERROR_CODES['UPDATE_CHECK_FAILED'],_0x134751);if(_0x134751&&_0x376835['hfFvv'](_0x134751,0x190))return _0x376835['OFQTI'](_0x340731,ERROR_CODES[_0x435062(0xee)],_0x134751);if(AUTH_MESSAGE_HINTS[_0x435062(0xb3)](_0x47c1f3=>_0x10c12d[_0x435062(0xad)](_0x47c1f3)))return _0x376835[_0x435062(0xb1)](_0x340731,ERROR_CODES['AUTH_INVALID']);return _0x376835[_0x435062(0x101)](_0x340731,ERROR_CODES[_0x435062(0xf0)]);}const EXIT_CODE_MESSAGES={};function messageForExitCode(_0x342e9a){const _0x948909=a33_0x219d8d,_0x7a05c3={};_0x7a05c3[_0x948909(0x9a)]=function(_0x5e2995,_0x3fe2b5){return _0x5e2995+_0x3fe2b5;},_0x7a05c3[_0x948909(0x10d)]='or\x20contact\x20BrowserStack\x20support\x20if\x20this\x20persists.';const _0x5179e8=_0x7a05c3;if(Object['prototype'][_0x948909(0xfe)][_0x948909(0xb0)](EXIT_CODE_MESSAGES,_0x342e9a))return EXIT_CODE_MESSAGES[_0x342e9a];return _0x5179e8[_0x948909(0x9a)](_0x948909(0xeb)+_0x342e9a+_0x948909(0xc4),_0x5179e8[_0x948909(0x10d)]);}function runtimeNotSupportedMessage(_0x5781a1,_0x383e94={}){const _0xa37ad8=a33_0x219d8d,_0x53f3f8={};_0x53f3f8[_0xa37ad8(0x9e)]=function(_0x45e9ee,_0x9805f7){return _0x45e9ee&&_0x9805f7;},_0x53f3f8['zrHmX']=function(_0x11597b,_0x239176){return _0x11597b+_0x239176;},_0x53f3f8[_0xa37ad8(0xb4)]=_0xa37ad8(0xfc);const _0x2a3118=_0x53f3f8,_0x4ff232=_0x383e94['hardMinMajor'],_0x5b2934=_0x383e94[_0xa37ad8(0xb6)],_0x11acb3=_0x2a3118['gLamV'](_0x4ff232,_0x5b2934)?_0xa37ad8(0xcf)+_0x4ff232+_0xa37ad8(0xc1)+_0x5b2934+')':'';return _0x2a3118['zrHmX']('Node.js\x20v'+_0x5781a1+_0xa37ad8(0x103)+_0x11acb3+'.\x20',_0x2a3118[_0xa37ad8(0xb4)]);}const a33_0x198e67={};a33_0x198e67['ERROR_CODES']=ERROR_CODES,a33_0x198e67['LT_EXIT_UNSUPPORTED_RUNTIME']=LT_EXIT_UNSUPPORTED_RUNTIME,a33_0x198e67[a33_0x219d8d(0xfa)]=LoadError,a33_0x198e67[a33_0x219d8d(0x94)]=makeLoadError,a33_0x198e67['classify']=classify,a33_0x198e67[a33_0x219d8d(0x10b)]=defaultMessageFor,a33_0x198e67[a33_0x219d8d(0x117)]=messageForExitCode,a33_0x198e67[a33_0x219d8d(0xa4)]=runtimeNotSupportedMessage,a33_0x198e67['EXIT_CODE_MESSAGES']=EXIT_CODE_MESSAGES,module[a33_0x219d8d(0xdf)]=a33_0x198e67;
@@ -1 +1 @@
1
- 'use strict';const a33_0x489da0=a33_0x4161;(function(_0x414035,_0x2e73fb){const _0x44003e=a33_0x4161,_0x3daa4e=_0x414035();while(!![]){try{const _0x437e24=parseInt(_0x44003e(0x113))/0x1+parseInt(_0x44003e(0x118))/0x2*(-parseInt(_0x44003e(0x119))/0x3)+parseInt(_0x44003e(0x121))/0x4*(parseInt(_0x44003e(0x12a))/0x5)+parseInt(_0x44003e(0x123))/0x6*(-parseInt(_0x44003e(0x10b))/0x7)+-parseInt(_0x44003e(0x135))/0x8*(parseInt(_0x44003e(0x126))/0x9)+parseInt(_0x44003e(0x12f))/0xa*(parseInt(_0x44003e(0x127))/0xb)+parseInt(_0x44003e(0x132))/0xc*(parseInt(_0x44003e(0x12d))/0xd);if(_0x437e24===_0x2e73fb)break;else _0x3daa4e['push'](_0x3daa4e['shift']());}catch(_0x4aa66a){_0x3daa4e['push'](_0x3daa4e['shift']());}}}(a33_0x12bc,0x6eea6));const fs=require('fs'),path=require(a33_0x489da0(0x10c)),logger=require('../../helpers/logger')['winstonLogger'];function getLoadConfigPath(_0x3c24fa){const _0x43538d=a33_0x489da0,_0x372b88={};_0x372b88[_0x43538d(0x136)]=function(_0x39069c,_0x369ddb){return _0x39069c===_0x369ddb;},_0x372b88[_0x43538d(0x12c)]=_0x43538d(0x129),_0x372b88[_0x43538d(0x109)]=_0x43538d(0x11a),_0x372b88['sHMBr']='config-file',_0x372b88[_0x43538d(0x104)]=_0x43538d(0x124),_0x372b88[_0x43538d(0x11c)]=_0x43538d(0x111),_0x372b88[_0x43538d(0x114)]=_0x43538d(0x116),_0x372b88['TPDlG']=_0x43538d(0x130),_0x372b88['Xvwhp']=_0x43538d(0x12e),_0x372b88[_0x43538d(0x110)]='browserstack.yaml',_0x372b88[_0x43538d(0x108)]=_0x43538d(0x11e);const _0x242f5c=_0x372b88;logger[_0x43538d(0x122)](_0x43538d(0x131)+JSON[_0x43538d(0x107)](_0x3c24fa));try{const _0x3862cd=_0x3c24fa['_']||[],_0x4de922=_0x242f5c[_0x43538d(0x136)](_0x3c24fa['_'][0x0],_0x242f5c['XyLCW'])&&_0x242f5c['UlNxi'](_0x3c24fa[_0x43538d(0x112)],_0x242f5c[_0x43538d(0x109)]);if(_0x4de922){if(_0x3c24fa[_0x242f5c[_0x43538d(0x11f)]]||_0x3c24fa['cf']){const _0x104b61=_0x3c24fa[_0x242f5c[_0x43538d(0x11f)]]||_0x3c24fa['cf'],_0x302024=path[_0x43538d(0x128)](_0x104b61);logger['debug'](_0x43538d(0x105)+_0x104b61+_0x43538d(0x117)+_0x302024);if(_0x302024['endsWith'](_0x242f5c['yesCM'])||_0x302024[_0x43538d(0x134)](_0x242f5c['zMkNm']))return logger[_0x43538d(0x10e)](_0x43538d(0x120)+_0x302024),_0x302024;}}const _0x53c0a9=[_0x242f5c[_0x43538d(0x114)],_0x242f5c[_0x43538d(0x12b)],_0x242f5c[_0x43538d(0x10a)],_0x242f5c[_0x43538d(0x110)]];logger[_0x43538d(0x122)](_0x242f5c['VNbyG']);for(const _0x553f75 of _0x53c0a9){const _0x353964=path['join'](process[_0x43538d(0x11b)](),_0x553f75);logger[_0x43538d(0x122)]('Checking\x20for:\x20'+_0x353964);if(fs[_0x43538d(0x125)](_0x353964))return logger[_0x43538d(0x122)](_0x43538d(0x115)+_0x353964),_0x353964;}}catch(_0x29d0e6){logger[_0x43538d(0x106)](_0x43538d(0x11d)+_0x29d0e6[_0x43538d(0x10f)]);}}function a33_0x4161(_0x284119,_0x2332c9){const _0x12bc73=a33_0x12bc();return a33_0x4161=function(_0x4161c1,_0x54bf46){_0x4161c1=_0x4161c1-0x104;let _0x4d5039=_0x12bc73[_0x4161c1];return _0x4d5039;},a33_0x4161(_0x284119,_0x2332c9);}function a33_0x12bc(){const _0x2d6f1d=['XyLCW','871fglLAs','browserstack.yml','127880OCRqsO','browserstack-load.yaml','Checking\x20for\x20config\x20file\x20with\x20arguments:\x20','122532EwLVig','exports','endsWith','568gtwyHp','UlNxi','yesCM','Config\x20file\x20specified:\x20','error','stringify','VNbyG','LOZpT','Xvwhp','1638LiHeqk','path','sleep','info','message','SMeQL','.yaml','subcommand','592983MVgrZd','EiJNm','Found\x20config\x20file:\x20','browserstack-load.yml','\x20and\x20Resolved\x20path:\x20','602oljXjq','6747qMMkfO','run','cwd','zMkNm','Failed\x20to\x20load\x20browserstack\x20config:\x20','Checking\x20for\x20config\x20in\x20default\x20config\x20files...','sHMBr','Using\x20specified\x20config\x20file:\x20','212mNbSQB','debug','11166sIInfS','.yml','existsSync','108918QpieyT','253LUJlzH','resolve','load','80635geUKCD','TPDlG'];a33_0x12bc=function(){return _0x2d6f1d;};return a33_0x12bc();}function sleep(){return new Promise(_0x51db90=>setTimeout(_0x51db90,0x64));}const a33_0x51602c={};a33_0x51602c['getLoadConfigPath']=getLoadConfigPath,a33_0x51602c[a33_0x489da0(0x10d)]=sleep,module[a33_0x489da0(0x133)]=a33_0x51602c;
1
+ 'use strict';const a34_0x4f5e65=a34_0x3390;(function(_0x397f84,_0x2656dd){const _0x4ce00c=a34_0x3390,_0x42fc53=_0x397f84();while(!![]){try{const _0x22c2fa=-parseInt(_0x4ce00c(0xbb))/0x1*(-parseInt(_0x4ce00c(0xb6))/0x2)+-parseInt(_0x4ce00c(0xa5))/0x3+parseInt(_0x4ce00c(0xa9))/0x4*(parseInt(_0x4ce00c(0xb3))/0x5)+-parseInt(_0x4ce00c(0xbc))/0x6*(parseInt(_0x4ce00c(0xae))/0x7)+parseInt(_0x4ce00c(0xba))/0x8+parseInt(_0x4ce00c(0xa4))/0x9*(parseInt(_0x4ce00c(0xa6))/0xa)+-parseInt(_0x4ce00c(0xa7))/0xb*(parseInt(_0x4ce00c(0xb9))/0xc);if(_0x22c2fa===_0x2656dd)break;else _0x42fc53['push'](_0x42fc53['shift']());}catch(_0x3b5530){_0x42fc53['push'](_0x42fc53['shift']());}}}(a34_0x46b0,0x392d6));const fs=require('fs'),path=require('path'),logger=require('../../helpers/logger')[a34_0x4f5e65(0x9f)];function getLoadConfigPath(_0x2b36a2){const _0x2ad8db=a34_0x4f5e65,_0x429962={};_0x429962['JyLhl']=function(_0x4c3861,_0x1e0db3){return _0x4c3861===_0x1e0db3;},_0x429962[_0x2ad8db(0xbf)]=_0x2ad8db(0xab),_0x429962['aOqnZ']=function(_0x3d2e86,_0x49fd31){return _0x3d2e86===_0x49fd31;},_0x429962[_0x2ad8db(0xbe)]=_0x2ad8db(0x97),_0x429962[_0x2ad8db(0xb7)]=_0x2ad8db(0xc0),_0x429962[_0x2ad8db(0xa2)]='.yml',_0x429962[_0x2ad8db(0x9b)]='.yaml',_0x429962[_0x2ad8db(0xb0)]=_0x2ad8db(0x9a),_0x429962['aizQk']=_0x2ad8db(0xaa),_0x429962['ezaLX']='browserstack.yml',_0x429962[_0x2ad8db(0xb2)]=_0x2ad8db(0x9e),_0x429962[_0x2ad8db(0x9c)]=_0x2ad8db(0xa8);const _0x54ca99=_0x429962;logger[_0x2ad8db(0xb8)]('Checking\x20for\x20config\x20file\x20with\x20arguments:\x20'+JSON['stringify'](_0x2b36a2));try{const _0x52ca66=_0x2b36a2['_']||[],_0x7e218e=_0x54ca99[_0x2ad8db(0x96)](_0x2b36a2['_'][0x0],_0x54ca99[_0x2ad8db(0xbf)])&&_0x54ca99['aOqnZ'](_0x2b36a2['subcommand'],_0x54ca99[_0x2ad8db(0xbe)]);if(_0x7e218e){if(_0x2b36a2[_0x54ca99['Wzarc']]||_0x2b36a2['cf']){const _0x1db3a9=_0x2b36a2[_0x54ca99[_0x2ad8db(0xb7)]]||_0x2b36a2['cf'],_0x1b2cfe=path[_0x2ad8db(0xb4)](_0x1db3a9);logger[_0x2ad8db(0xb8)]('Config\x20file\x20specified:\x20'+_0x1db3a9+'\x20and\x20Resolved\x20path:\x20'+_0x1b2cfe);if(_0x1b2cfe['endsWith'](_0x54ca99[_0x2ad8db(0xa2)])||_0x1b2cfe['endsWith'](_0x54ca99[_0x2ad8db(0x9b)]))return logger[_0x2ad8db(0xaf)]('Using\x20specified\x20config\x20file:\x20'+_0x1b2cfe),_0x1b2cfe;}}const _0x4dcc1d=[_0x54ca99['aHcTm'],_0x54ca99[_0x2ad8db(0x99)],_0x54ca99[_0x2ad8db(0xa3)],_0x54ca99[_0x2ad8db(0xb2)]];logger['debug'](_0x54ca99['GkcUk']);for(const _0x143675 of _0x4dcc1d){const _0x1ce339=path[_0x2ad8db(0xac)](process[_0x2ad8db(0xb5)](),_0x143675);logger['debug']('Checking\x20for:\x20'+_0x1ce339);if(fs[_0x2ad8db(0x98)](_0x1ce339))return logger['debug'](_0x2ad8db(0xa0)+_0x1ce339),_0x1ce339;}}catch(_0x217b39){logger['error'](_0x2ad8db(0xa1)+_0x217b39[_0x2ad8db(0xb1)]);}}function a34_0x3390(_0x210761,_0x3f2dee){const _0x46b087=a34_0x46b0();return a34_0x3390=function(_0x339013,_0x489015){_0x339013=_0x339013-0x96;let _0x5d114e=_0x46b087[_0x339013];return _0x5d114e;},a34_0x3390(_0x210761,_0x3f2dee);}function sleep(){return new Promise(_0x47ce6a=>setTimeout(_0x47ce6a,0x64));}const a34_0x578670={};a34_0x578670[a34_0x4f5e65(0xad)]=getLoadConfigPath,a34_0x578670[a34_0x4f5e65(0xbd)]=sleep,module[a34_0x4f5e65(0x9d)]=a34_0x578670;function a34_0x46b0(){const _0x115b6f=['load','join','getLoadConfigPath','7lattcS','info','aHcTm','message','fqBsK','5XWeoIn','resolve','cwd','2VdZfIm','Wzarc','debug','12DRDnTA','1252520VCzbRd','126989PZAIen','59340prvKue','sleep','uhcyA','foARt','config-file','JyLhl','run','existsSync','aizQk','browserstack-load.yml','LZwUR','GkcUk','exports','browserstack.yaml','winstonLogger','Found\x20config\x20file:\x20','Failed\x20to\x20load\x20browserstack\x20config:\x20','BAGGN','ezaLX','1999089sSyBRA','425778SYfECR','20cTnnkM','6023809ndUpNR','Checking\x20for\x20config\x20in\x20default\x20config\x20files...','823348xPppWT','browserstack-load.yaml'];a34_0x46b0=function(){return _0x115b6f;};return a34_0x46b0();}
@@ -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
+ const a35_0x41058d=a35_0x3930;function a35_0xd9ad(){const _0x470e47=['setGlobal','isBrowserSupportedForAccessibility','parse','isBrowserstackInfra','warn','fetchPlatformDetails','MBgti','--headless=new','Exception\x20while\x20setting\x20Accessibility\x20Automation\x20capabilities.\x20Error\x20','debug','--headless=','string','pEGQu','getBrowserDisplayName','OSftC','6Nxsbkl','OiRGV','capabilities_','krRek','isUndefined','qYoeC','623730axSWFe','Qqdqv','capabilities','browserstack.accessibilityOptions','options_','GIcZD','util','eVvde','isVersionSupported','Accessibility\x20Automation\x20is\x20enabled\x20for\x20Android\x20mobile\x20browser\x20(Chrome).\x20Skipping\x20extension\x20setup.','setExtension','Options','platform','5419782CbQEZy','gUxVU','EDJVH','requiresChromeOptionsValidation','accessibilityOptions','getMinVersionForBrowser','nFPgF','EVDwp','4eNJkPq','__cloud_provider___','browserVersion','Accessibility\x20Automation\x20will\x20run\x20only\x20on\x20','LXPBQ','qUkEJ','isMobileScanningEnabledForGroup','../../../helpers/accessibility-automation/helper','1785519GyYoeU','selenium-webdriver/chrome.js','--headless','lsHGw','env','938090aDFLZF','authToken','DcDiz','android','scannerVersion','pJUOg','dAJlb','accessibility','requireModule','split','../../../helpers/logger','capability','0|4|1|2|3','bstack:options','getBrowserName','getCapabilities','3469976LnFHBN','isArray','ffuCu','584638ycFrVe','platformName','../../../helpers/helper','browserstack','chromeOptions','chromeOptions_','jawEA','wToZu','Accessibility\x20Automation\x20will\x20not\x20run\x20on\x20legacy\x20headless\x20mode.\x20Switch\x20to\x20new\x20headless\x20mode\x20or\x20avoid\x20using\x20headless\x20mode.','browserstack.accessibility','toLowerCase','length','BS_A11Y_JWT','chrome','selenium-webdriver','\x20browser\x20version\x20greater\x20than\x20','isAccessibilityPlatform','getBrowserVersion','keys','goog:chromeOptions','Exception\x20in\x20setExtension\x20Error:\x20','XqFgb','winstonLogger','miXiL','2HuSirF','BROWSERSTACK_TEST_ACCESSIBILITY_CONFIGURATION_YML','2900324hzgdkG','format','TrlVs','QMaBr','nestedKeyValue','get','on\x20non-BrowserStack\x20infrastructure\x20','ZsZoU','device'];a35_0xd9ad=function(){return _0x470e47;};return a35_0xd9ad();}(function(_0x4b9b0c,_0x480a26){const _0x542988=a35_0x3930,_0x4a77d0=_0x4b9b0c();while(!![]){try{const _0x319223=-parseInt(_0x542988(0x1af))/0x1*(-parseInt(_0x542988(0x197))/0x2)+parseInt(_0x542988(0x17f))/0x3*(-parseInt(_0x542988(0x177))/0x4)+-parseInt(_0x542988(0x184))/0x5+-parseInt(_0x542988(0x15c))/0x6*(-parseInt(_0x542988(0x1b1))/0x7)+-parseInt(_0x542988(0x194))/0x8+parseInt(_0x542988(0x16f))/0x9+-parseInt(_0x542988(0x162))/0xa;if(_0x319223===_0x480a26)break;else _0x4a77d0['push'](_0x4a77d0['shift']());}catch(_0x227f27){_0x4a77d0['push'](_0x4a77d0['shift']());}}}(a35_0xd9ad,0x4ead1));const path=require('path'),os=require('os'),util=require(a35_0x41058d(0x168)),bsSetupHelper=require(a35_0x41058d(0x199)),globals=require('../../../helpers/globals'),accessibilityHelper=require(a35_0x41058d(0x17e)),logger=require(a35_0x41058d(0x18e))[a35_0x41058d(0x1ad)];function a35_0x3930(_0x1712e3,_0x1c9501){const _0xd9ad04=a35_0xd9ad();return a35_0x3930=function(_0x393017,_0x2503c8){_0x393017=_0x393017-0x155;let _0x249f15=_0xd9ad04[_0x393017];return _0x249f15;},a35_0x3930(_0x1712e3,_0x1c9501);}exports['setAccessibilityCapabilities']=_0x1384e2=>{const _0x32c634=a35_0x41058d,_0x3a05d6={};_0x3a05d6['qUkEJ']=function(_0x33b392,_0xe783cf){return _0x33b392>_0xe783cf;},_0x3a05d6[_0x32c634(0x189)]='bstack:options',_0x3a05d6['QMaBr']=_0x32c634(0x1a0),_0x3a05d6['miXiL']=_0x32c634(0x1a7),_0x3a05d6[_0x32c634(0x1c0)]=_0x32c634(0x165);const _0x4d5f1e=_0x3a05d6;try{const _0xa7438f=_0x4d5f1e[_0x32c634(0x17c)](Object[_0x32c634(0x1a9)](_0x1384e2['capability'])['length'],0x0)?_0x1384e2[_0x32c634(0x18f)]:_0x4d5f1e[_0x32c634(0x17c)](Object['keys'](_0x1384e2[_0x32c634(0x164)])[_0x32c634(0x1a2)],0x0)?_0x1384e2['capabilities'][0x0]:{};if(_0xa7438f[_0x4d5f1e[_0x32c634(0x189)]]&&_0xa7438f[_0x4d5f1e[_0x32c634(0x189)]][_0x32c634(0x18b)]||_0x1384e2[_0x32c634(0x18f)][_0x4d5f1e[_0x32c634(0x1b4)]]){globals[_0x32c634(0x1ba)](_0x4d5f1e[_0x32c634(0x1ae)],!![]);if(_0xa7438f[_0x4d5f1e['pJUOg']]){if(_0xa7438f[_0x4d5f1e['pJUOg']][_0x32c634(0x173)])_0xa7438f[_0x4d5f1e['pJUOg']]['accessibilityOptions'][_0x32c634(0x185)]=process[_0x32c634(0x183)]['BS_A11Y_JWT'];else{const _0x377faf={};_0x377faf[_0x32c634(0x185)]=process['env'][_0x32c634(0x1a3)],_0xa7438f[_0x4d5f1e[_0x32c634(0x189)]][_0x32c634(0x173)]=_0x377faf;}_0xa7438f[_0x4d5f1e[_0x32c634(0x189)]]['accessibilityOptions']['scannerVersion']=JSON[_0x32c634(0x1bc)](process[_0x32c634(0x183)][_0x32c634(0x1b0)])['scannerVersion'];}else{if(_0x1384e2['capability'][_0x4d5f1e[_0x32c634(0x1b4)]]){if(_0xa7438f[_0x4d5f1e[_0x32c634(0x1c0)]])_0xa7438f[_0x4d5f1e[_0x32c634(0x1c0)]]['authToken']=process[_0x32c634(0x183)][_0x32c634(0x1a3)];else{const _0x5cc398={};_0x5cc398['authToken']=process['env'][_0x32c634(0x1a3)],_0xa7438f[_0x4d5f1e[_0x32c634(0x1c0)]]=_0x5cc398;}_0xa7438f[_0x4d5f1e[_0x32c634(0x1c0)]][_0x32c634(0x188)]=JSON[_0x32c634(0x1bc)](process[_0x32c634(0x183)]['BROWSERSTACK_TEST_ACCESSIBILITY_CONFIGURATION_YML'])[_0x32c634(0x188)];}}}}catch(_0x4a51dc){logger[_0x32c634(0x156)](_0x32c634(0x155)+_0x4a51dc);}},exports[a35_0x41058d(0x16c)]=(_0x19d864,_0x4a5787)=>{const _0x526a5a=a35_0x41058d,_0x1e3894={'nFPgF':_0x526a5a(0x191),'jawEA':function(_0xc74111,_0xa0b595){return _0xc74111!==_0xa0b595;},'EVDwp':function(_0x3f485b,_0x474186){return _0x3f485b===_0x474186;},'XqFgb':_0x526a5a(0x187),'WMGRn':_0x526a5a(0x1a4),'DcDiz':_0x526a5a(0x190),'lsHGw':'isAccessibilityPlatform','pEGQu':'isMobilePlatform','OSftC':_0x526a5a(0x16b),'OiRGV':'Accessibility\x20Automation\x20will\x20run\x20only\x20on\x20Desktop\x20browsers\x20or\x20Android\x20Chrome.','TrlVs':'Accessibility\x20Automation\x20will\x20run\x20only\x20on\x20Chrome\x20or\x20ChromeForTesting\x20browsers.','eVvde':'latest','dAJlb':_0x526a5a(0x1b7),'oIvdj':function(_0x909def,_0x13dace){return _0x909def(_0x13dace);},'qYoeC':function(_0x2972a5,_0x5ea8a5){return _0x2972a5-_0x5ea8a5;},'ZsZoU':function(_0x1618c3,_0x194921){return _0x1618c3(_0x194921);},'Qqdqv':_0x526a5a(0x180),'krRek':_0x526a5a(0x1a5),'ffuCu':_0x526a5a(0x166),'LXPBQ':'args','gUxVU':_0x526a5a(0x19b),'EDJVH':_0x526a5a(0x1aa),'LLVTl':_0x526a5a(0x19f)};try{const _0x1dd44c=_0x4a5787[_0x526a5a(0x18f)]||{},_0x43f865=(_0x1dd44c[_0x1e3894[_0x526a5a(0x175)]]?_0x1dd44c[_0x1e3894['nFPgF']]['deviceName']:_0x1dd44c[_0x526a5a(0x1b9)])||'';if(_0x1e3894[_0x526a5a(0x19d)](_0x43f865,'')){const _0x579b47=_0x1dd44c[_0x1e3894['nFPgF']],_0x1b1e97=(_0x579b47?_0x579b47[_0x526a5a(0x198)]||_0x579b47[_0x526a5a(0x16e)]:_0x1dd44c[_0x526a5a(0x198)]||_0x1dd44c[_0x526a5a(0x16e)])||'',_0x3f087a=_0x1dd44c['browserName']||_0x19d864[_0x526a5a(0x15e)][_0x526a5a(0x192)]()||'';if(_0x1e3894[_0x526a5a(0x176)](_0x1b1e97[_0x526a5a(0x1a1)](),_0x1e3894[_0x526a5a(0x1ac)])&&_0x3f087a[_0x526a5a(0x1a1)]()['includes'](_0x1e3894['WMGRn'])){const _0x11da25=_0x1e3894[_0x526a5a(0x186)][_0x526a5a(0x18d)]('|');let _0x2eac25=0x0;while(!![]){switch(_0x11da25[_0x2eac25++]){case'0':if(!accessibilityHelper[_0x526a5a(0x17d)]())return logger['warn'](accessibilityHelper['MOBILE_SCANNING_DISABLED_WARNING']),![];continue;case'1':globals['setGlobal'](_0x1e3894[_0x526a5a(0x182)],!![]);continue;case'2':globals[_0x526a5a(0x1ba)](_0x1e3894[_0x526a5a(0x159)],!![]);continue;case'3':return!![];case'4':logger['info'](_0x1e3894[_0x526a5a(0x15b)]);continue;}break;}}return logger[_0x526a5a(0x1be)](_0x1e3894[_0x526a5a(0x15d)]),![];}const _0x99c239=_0x1dd44c['browserName']||_0x19d864[_0x526a5a(0x15e)][_0x526a5a(0x192)](),_0x4aba6f=_0x1dd44c[_0x526a5a(0x179)]||_0x1dd44c['browser_version']||_0x19d864[_0x526a5a(0x15e)][_0x526a5a(0x1a8)]();if(!accessibilityHelper[_0x526a5a(0x1bb)](_0x99c239))return logger[_0x526a5a(0x1be)](_0x1e3894[_0x526a5a(0x1b3)]),![];if(!bsSetupHelper[_0x526a5a(0x160)](_0x4aba6f)&&_0x1e3894[_0x526a5a(0x19d)](_0x4aba6f,_0x1e3894[_0x526a5a(0x169)])){const _0x4775ff=bsSetupHelper[_0x526a5a(0x1bd)](),_0x4085fd=accessibilityHelper[_0x526a5a(0x174)](_0x99c239,_0x4775ff),_0x50b7b5=accessibilityHelper[_0x526a5a(0x15a)](_0x99c239);if(!accessibilityHelper[_0x526a5a(0x16a)](_0x4aba6f,_0x4085fd)){const _0x19693c=_0x4775ff?'':_0x1e3894[_0x526a5a(0x18a)],_0xd832e9=Number['isFinite'](_0x1e3894['oIvdj'](parseFloat,_0x4085fd))?_0x1e3894[_0x526a5a(0x161)](_0x1e3894[_0x526a5a(0x1b8)](parseFloat,_0x4085fd),0x1):_0x4085fd;return logger[_0x526a5a(0x1be)](_0x526a5a(0x17a)+_0x50b7b5+_0x526a5a(0x1a6)+_0xd832e9+'\x20'+_0x19693c+'.'),![];}}if(!accessibilityHelper[_0x526a5a(0x172)](_0x99c239))return!![];let _0x12ba67;try{_0x12ba67=bsSetupHelper[_0x526a5a(0x18c)](_0x1e3894[_0x526a5a(0x163)],_0x1e3894[_0x526a5a(0x15f)]);}catch(_0xad5ba6){return![];}const _0x489829=new _0x12ba67[(_0x526a5a(0x16d))](_0x19d864[_0x526a5a(0x19c)]),_0x9715e5=bsSetupHelper[_0x526a5a(0x1b5)](_0x489829,[_0x1e3894[_0x526a5a(0x196)],_0x1e3894[_0x526a5a(0x17b)]])||bsSetupHelper[_0x526a5a(0x1b5)](_0x19d864['capabilities_']['get'](_0x1e3894[_0x526a5a(0x175)]),[_0x1e3894[_0x526a5a(0x170)],_0x1e3894[_0x526a5a(0x17b)]])||bsSetupHelper[_0x526a5a(0x1b5)](_0x19d864[_0x526a5a(0x15e)][_0x526a5a(0x1b6)](_0x1e3894[_0x526a5a(0x170)]),[_0x1e3894[_0x526a5a(0x17b)]])||bsSetupHelper['nestedKeyValue'](_0x19d864[_0x526a5a(0x15e)][_0x526a5a(0x1b6)](_0x1e3894[_0x526a5a(0x171)]),[_0x1e3894[_0x526a5a(0x17b)]])||[],_0x21dc96=Array[_0x526a5a(0x195)](_0x9715e5)?_0x9715e5:[];if(_0x21dc96['some'](_0x5cf2d5=>typeof _0x5cf2d5===_0x526a5a(0x158)&&(_0x5cf2d5===_0x526a5a(0x181)||_0x5cf2d5['startsWith'](_0x526a5a(0x157))&&_0x5cf2d5!==_0x526a5a(0x1c1))))return logger[_0x526a5a(0x1be)](_0x1e3894['LLVTl']),![];return!![];}catch(_0x30b3d7){logger[_0x526a5a(0x156)](_0x526a5a(0x1ab)+util[_0x526a5a(0x1b2)](_0x30b3d7));}return![];},exports[a35_0x41058d(0x1bf)]=async _0x4eb0fc=>{const _0x2ae3a4=a35_0x41058d,_0x294891={};_0x294891[_0x2ae3a4(0x19e)]=function(_0x385872,_0xecbe49){return _0x385872===_0xecbe49;},_0x294891[_0x2ae3a4(0x167)]=_0x2ae3a4(0x19a);const _0x4e1aa3=_0x294891;let _0x5d81ed={};try{const _0x1d847b=await _0x4eb0fc[_0x2ae3a4(0x193)]();_0x5d81ed={'os_name':_0x1d847b['getPlatform'](),'os_version':bsSetupHelper['getPlatformVersion'](_0x4e1aa3[_0x2ae3a4(0x19e)](global[_0x2ae3a4(0x178)],_0x4e1aa3[_0x2ae3a4(0x167)])),'browser_name':_0x1d847b['getBrowserName'](),'browser_version':_0x1d847b[_0x2ae3a4(0x1a8)]()};}catch(_0x2260c2){logger[_0x2ae3a4(0x156)]('Exception\x20in\x20fetching\x20platform\x20details\x20with\x20error\x20:\x20'+_0x2260c2);}return _0x5d81ed;};