UNPKG

@web/test-runner-saucelabs

Version:
68 lines 4.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSauceLabsLauncher = void 0; const nanoid_1 = require("nanoid"); const SauceLabsLauncher_js_1 = require("./SauceLabsLauncher.js"); const SauceLabsLauncherManager_js_1 = require("./SauceLabsLauncherManager.js"); function createSauceLabsLauncher(saucelabsOptions, saucelabsCapabilities, sauceConnectOptions) { if (saucelabsOptions == null) { throw new Error('Options are required to set user and key.'); } if (typeof saucelabsOptions.user !== 'string') { throw new Error('Missing user in options'); } if (typeof saucelabsOptions.key !== 'string') { throw new Error('Missing key in options'); } const finalSauceLabsOptions = Object.assign({}, saucelabsOptions); if (typeof finalSauceLabsOptions.region !== 'string') { finalSauceLabsOptions.region = 'us'; } const finalConnectOptions = Object.assign({}, sauceConnectOptions); if (typeof finalConnectOptions.tunnelIdentifier !== 'string') { finalConnectOptions.tunnelIdentifier = `web-test-runner-${(0, nanoid_1.nanoid)()}`; } const manager = new SauceLabsLauncherManager_js_1.SauceLabsLauncherManager(finalSauceLabsOptions, finalConnectOptions); return function sauceLabsLauncher(capabilities) { var _a, _b, _c, _d, _e, _f, _g, _h; if (capabilities == null) { throw new Error('Capabilities are required.'); } let finalCapabilities = Object.assign({}, capabilities); const finalSauceCapabilities = Object.assign({ tunnelIdentifier: finalConnectOptions.tunnelIdentifier }, saucelabsCapabilities); // W3C capabilities: only browserVersion is mandatory, platformName is optional. // Note that setting 'sauce:options' forces Sauce Labs to use W3C capabilities. if (capabilities.browserVersion) { // version is not a valid W3C key. delete finalCapabilities.version; // platform is not a valid W3C key and will throw, use platformName instead. if (capabilities.platform) { finalCapabilities.platformName = finalCapabilities.platformName || finalCapabilities.platform; delete finalCapabilities.platform; } finalCapabilities['sauce:options'] = Object.assign(Object.assign({}, finalSauceCapabilities), (finalCapabilities['sauce:options'] || {})); } else { // JWP capabilities for remote environments not yet supporting W3C. // This enables running tests on iPhone Simulators in Sauce Labs. finalCapabilities = Object.assign(Object.assign({}, finalCapabilities), finalSauceCapabilities); } // Type cast to not fail on snake case syntax e.g. browser_version. const caps = finalCapabilities; const browserName = (_c = (_b = (_a = caps.browserName) !== null && _a !== void 0 ? _a : caps.browser) !== null && _b !== void 0 ? _b : caps.device) !== null && _c !== void 0 ? _c : 'unknown'; const browserVersion = (_f = (_e = (_d = caps.browserVersion) !== null && _d !== void 0 ? _d : caps.version) !== null && _e !== void 0 ? _e : caps.browser_version) !== null && _f !== void 0 ? _f : ''; const platform = (_h = (_g = caps.platformName) !== null && _g !== void 0 ? _g : caps.platform) !== null && _h !== void 0 ? _h : ''; const browserIdentifier = `${browserName}${browserVersion}${platform}`; const options = { user: finalSauceLabsOptions.user, key: finalSauceLabsOptions.key, region: finalSauceLabsOptions.region, logLevel: 'error', capabilities: Object.assign({}, finalCapabilities), }; return new SauceLabsLauncher_js_1.SauceLabsLauncher(manager, browserIdentifier, options); }; } exports.createSauceLabsLauncher = createSauceLabsLauncher; //# sourceMappingURL=createSauceLabsLauncher.js.map