UNPKG

@luminati-io/webdriverio8

Version:

Next-gen browser and mobile automation test framework for Node.js

116 lines 8.1 kB
const DEFAULT_HOSTNAME = '127.0.0.1'; const DEFAULT_PORT = 4444; const DEFAULT_PROTOCOL = 'http'; const DEFAULT_PATH = '/'; const LEGACY_PATH = '/wd/hub'; const REGION_MAPPING = { 'us': 'us-west-1.', // default endpoint 'eu': 'eu-central-1.', 'eu-central-1': 'eu-central-1.', 'us-east-1': 'us-east-1.', 'apac': 'apac-southeast-1.', 'apac-southeast-1': 'apac-southeast-1', }; function getSauceEndpoint(region, { isRDC, isVisual } = {}) { const shortRegion = REGION_MAPPING[region] ? region : 'us'; if (isRDC) { return `${shortRegion}1.appium.testobject.com`; } else if (isVisual) { return 'hub.screener.io'; } return `ondemand.${REGION_MAPPING[shortRegion]}saucelabs.com`; } /** * helper to detect the Selenium backend according to given capabilities */ export default function detectBackend(options = {}) { const { port, hostname, user, key, protocol, region, headless, path, capabilities } = options; /** * browserstack * e.g. zHcv9sZ39ip8ZPsxBVJ2 */ if (typeof user === 'string' && typeof key === 'string' && key.length === 20) { return { protocol: protocol || 'https', hostname: hostname || 'hub-cloud.browserstack.com', port: port || 443, path: path || LEGACY_PATH }; } /** * testingbot * e.g. ec337d7b677720a4dde7bd72be0bfc67 */ if (typeof user === 'string' && typeof key === 'string' && key.length === 32) { return { protocol: protocol || 'https', hostname: hostname || 'hub.testingbot.com', port: port || 443, path: path || LEGACY_PATH }; } /** * Sauce Labs * e.g. 50aa152c-1932-B2f0-9707-18z46q2n1mb0 * * For Sauce Labs Legacy RDC we only need to determine if the sauce option has a `testobject_api_key`. * Same for Sauce Visual where an apiKey can be passed in through the capabilities (soon to be legacy too). */ const isRDC = Boolean(!Array.isArray(capabilities) && capabilities?.testobject_api_key); const isVisual = Boolean(!Array.isArray(capabilities) && capabilities && capabilities['sauce:visual']?.apiKey); if ((typeof user === 'string' && typeof key === 'string' && key.length === 36) || // Or only RDC or visual (isRDC || isVisual)) { // Sauce headless is currently only in us-east-1 const sauceRegion = headless ? 'us-east-1' : region; return { protocol: protocol || 'https', hostname: hostname || getSauceEndpoint(sauceRegion, { isRDC, isVisual }), port: port || 443, path: path || LEGACY_PATH }; } /** * Lambdatest * e.g. cYAjKrqGwyPjPQv41ICDF4C5OjlxzA9epZsnugVJJxqOReWRWU */ if (typeof user === 'string' && typeof key === 'string' && key.length === 50) { return { protocol: protocol || DEFAULT_PROTOCOL, hostname: hostname || 'hub.lambdatest.com', port: port || 80, path: path || LEGACY_PATH }; } if ( /** * user and key are set in config */ (typeof user === 'string' || typeof key === 'string') && /** * but no custom WebDriver endpoint was configured */ !hostname) { throw new Error('A "user" or "key" was provided but could not be connected to a ' + 'known cloud service (Sauce Labs, Browerstack, Testingbot or Lambdatest). ' + 'Please check if given user and key properties are correct!'); } /** * default values if on of the WebDriver criticial options is set */ if (hostname || port || protocol || path) { return { hostname: hostname || DEFAULT_HOSTNAME, port: port || DEFAULT_PORT, protocol: protocol || DEFAULT_PROTOCOL, path: path || DEFAULT_PATH }; } /** * no cloud provider detected, pass on provided params and eventually * fallback to DevTools protocol */ return { hostname, port, protocol, path }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0QmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZXRlY3RCYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFBO0FBQ3BDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQTtBQUN6QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQTtBQUMvQixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUE7QUFDeEIsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFBO0FBRTdCLE1BQU0sY0FBYyxHQUFHO0lBQ25CLElBQUksRUFBRSxZQUFZLEVBQUUsbUJBQW1CO0lBQ3ZDLElBQUksRUFBRSxlQUFlO0lBQ3JCLGNBQWMsRUFBRSxlQUFlO0lBQy9CLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE1BQU0sRUFBRSxtQkFBbUI7SUFDM0Isa0JBQWtCLEVBQUUsa0JBQWtCO0NBQ3pDLENBQUE7QUFjRCxTQUFTLGdCQUFnQixDQUNyQixNQUFtQyxFQUNuQyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQThDLEVBQUU7SUFFakUsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUMxRCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1IsT0FBTyxHQUFHLFdBQVcseUJBQXlCLENBQUE7SUFDbEQsQ0FBQztTQUFNLElBQUksUUFBUSxFQUFFLENBQUM7UUFDbEIsT0FBTyxpQkFBaUIsQ0FBQTtJQUM1QixDQUFDO0lBRUQsT0FBTyxZQUFZLGNBQWMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFBO0FBQ2pFLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsYUFBYSxDQUFDLFVBQWlDLEVBQUU7SUFDckUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdB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