UNPKG

testplane

Version:

Tests framework based on mocha and wdio

93 lines 3.66 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BasicPool = void 0; const debug_1 = __importDefault(require("debug")); const lodash_1 = __importDefault(require("lodash")); const cancelled_error_1 = require("./cancelled-error"); const events_1 = require("../events"); const webdriver_pool_1 = require("./webdriver-pool"); class BasicPool { static create(config, emitter) { return new BasicPool(config, emitter); } constructor(config, emitter) { this._config = config; this._emitter = emitter; this.log = (0, debug_1.default)("testplane:pool:basic"); this._activeSessions = {}; this._cancelled = false; this._wdPool = new webdriver_pool_1.WebdriverPool(); } async getBrowser(id, opts = {}) { const { NewBrowser } = await Promise.resolve().then(() => __importStar(require("../browser/new-browser"))); const browser = NewBrowser.create(this._config, { ...opts, id, wdPool: this._wdPool, emitter: this._emitter }); try { await browser.init(); this.log(`browser ${browser.fullId} started`); await this._emit(events_1.MasterEvents.SESSION_START, browser); if (this._cancelled) { throw new cancelled_error_1.CancelledError(); } await browser.reset(); this._activeSessions[browser.sessionId] = browser; return browser; } catch (e) { if (browser.publicAPI) { await this.freeBrowser(browser); } throw e; } } async freeBrowser(browser) { delete this._activeSessions[browser.sessionId]; this.log(`stop browser ${browser.fullId}`); try { await this._emit(events_1.MasterEvents.SESSION_END, browser); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { console.warn((err && err.stack) || err); } await browser.quit(); } _emit(event, browser) { return this._emitter.emitAndWait(event, browser.publicAPI, { browserId: browser.id, sessionId: browser.sessionId, }); } cancel() { this._cancelled = true; lodash_1.default.forEach(this._activeSessions, browser => browser.quit()); this._activeSessions = {}; } } exports.BasicPool = BasicPool; //# sourceMappingURL=basic-pool.js.map