@fpjs-incubator/broyster
Version:
57 lines (56 loc) • 2.96 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeBrowserStackSessionFactory = exports.BrowserStackSessionFactory = void 0;
const tslib_1 = require("tslib");
const browserstack_capabilities_factory_1 = require("./browserstack_capabilities_factory");
const options_builder_1 = require("./options_builder");
const webdriver_factory_1 = require("./webdriver_factory");
class BrowserStackSessionFactory {
constructor(config) {
var _a;
this._project = config.project;
this._build = config.build;
this._idleTimeout = (_a = config.idleTimeout) !== null && _a !== void 0 ? _a : 60000;
this._capsFactory = config.capabilitiesFactory;
this._localIdentifier = config.localIdentifier;
}
createBrowser(browser, deviceName, id, log) {
var _a;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
log.debug('creating session');
try {
const caps = this._capsFactory.create(browser.browserName, this._build, id, this._project, deviceName, browser.platform, this._idleTimeout, browser.osVersion, browser.browserVersion, this._localIdentifier);
if (((_a = browser.browserName) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('safari')) && browser.flags) {
caps.safariOptions = options_builder_1.OptionsBuilder.createSafariArguments(browser.flags);
}
log.debug('created capabilities: ' + JSON.stringify(caps));
const opts = options_builder_1.OptionsBuilder.create(browser.browserName, browser.flags);
log.debug('created options: ' + JSON.stringify(opts));
if (browser.firefoxCapabilities) {
log.debug('using firefox capabilities: ' + browser.firefoxCapabilities);
}
const webdriver = yield webdriver_factory_1.WebDriverFactory.createFromOptions(opts, caps, browser.firefoxCapabilities);
log.debug('session created successfully');
return webdriver;
}
catch (error) {
log.debug('session creation failed');
throw error;
}
});
}
}
exports.BrowserStackSessionFactory = BrowserStackSessionFactory;
function makeBrowserStackSessionFactory(config, browserStackCredentials, localIdentifier) {
if (!config.browserStack) {
throw new Error('BrowserStack options are not set');
}
return new BrowserStackSessionFactory({
capabilitiesFactory: new browserstack_capabilities_factory_1.BrowserStackCapabilitiesFactory(browserStackCredentials, true),
project: config.browserStack.project,
build: config.browserStack.build.toString(),
idleTimeout: config.browserStack.idleTimeout,
localIdentifier,
});
}
exports.makeBrowserStackSessionFactory = makeBrowserStackSessionFactory;
;