@web/test-runner-browserstack
Version:
Browserstack launcher for Web Test Runner
70 lines • 3.32 kB
JavaScript
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
;