UNPKG

@web/test-runner-browserstack

Version:
70 lines 3.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.browserstackLauncher = exports.BrowserstackLauncher = void 0; const test_runner_webdriver_1 = require("@web/test-runner-webdriver"); const internal_ip_1 = __importDefault(require("internal-ip")); const browserstackManager_js_1 = require("./browserstackManager.js"); const REQUIRED_CAPABILITIES = ['name', 'browserstack.user', 'browserstack.key', 'project', 'build']; const localIp = internal_ip_1.default.v4.sync(); if (!localIp) { throw new Error('Can not determine the local IP.'); } class BrowserstackLauncher extends test_runner_webdriver_1.WebdriverLauncher { constructor(capabilities, name, localOptions) { super({ capabilities: capabilities, hostname: 'hub.browserstack.com', protocol: 'http', port: 80, path: '/wd/hub', user: capabilities['browserstack.user'], key: capabilities['browserstack.key'], }); this.capabilities = capabilities; this.name = name; this.localOptions = localOptions; } async initialize(config) { await (0, browserstackManager_js_1.registerBrowserstackLocal)(this, this.capabilities['browserstack.key'], this.localOptions); await super.initialize(config); } startSession(sessionId, url) { return super.startSession(sessionId, url.replace(/(localhost|127\.0\.0\.1)/, localIp)); } async startDebugSession() { throw new Error('Starting a debug session is not supported in browserstack'); } stop() { const stopPromise = super.stop(); (0, browserstackManager_js_1.unregisterBrowserstackLocal)(this); return stopPromise; } } exports.BrowserstackLauncher = BrowserstackLauncher; function browserstackLauncher(args) { var _a, _b, _c; if (!args || !args.capabilities) { throw new Error('Missing capabilities in browserstackLauncher'); } for (const capability of REQUIRED_CAPABILITIES) { if (!args.capabilities[capability]) { throw new Error(`Missing capability: ${capability} in browserstack launcher config.`); } } const caps = args.capabilities; const browserName = `${(_c = (_b = (_a = caps.browser) !== null && _a !== void 0 ? _a : caps.browserName) !== null && _b !== void 0 ? _b : caps.device) !== null && _c !== void 0 ? _c : 'unknown'}${caps.browser_version ? ` ${caps.browser_version}` : ''}` + ` (${caps.os} ${caps.os_version})`; const capabilities = Object.assign({}, args.capabilities); capabilities['timeout'] = 300; capabilities['browserstack.local'] = true; capabilities['browserstack.localIdentifier'] = browserstackManager_js_1.localId; // we need to allow popups since we open new windows capabilities['browserstack.ie.enablePopups'] = true; capabilities['browserstack.edge.enablePopups'] = true; capabilities['browserstack.safari.enablePopups'] = true; return new BrowserstackLauncher(capabilities, browserName, args.localOptions); } exports.browserstackLauncher = browserstackLauncher; //# sourceMappingURL=browserstackLauncher.js.map