UNPKG

@fpjs-incubator/broyster

Version:
68 lines (67 loc) 2.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BrowserStackReporter = void 0; const browserstack_helpers_1 = require("./browserstack_helpers"); function BrowserStackReporter(config, browserStackCredentials, logger, browserMap) { const log = logger.create('Browserstack Reporter'); let pendingUpdates = 0; let callWhenFinished = () => undefined; const exitIfAllFinished = () => { if (pendingUpdates === 0) { callWhenFinished(); } }; const browserstackClient = (0, browserstack_helpers_1.createBrowserStackClient)(browserStackCredentials); this.onRunComplete = function (browsers) { var _a; const browsersLaunched = browsers.browsers; const browsersScheduled = Object.keys((_a = config.customLaunchers) !== null && _a !== void 0 ? _a : {}); log.info('Executed ' + browsersLaunched.length + ' launchers out of ' + browsersScheduled.length); if (browsersLaunched.length !== browsersScheduled.length) { log.info('Browsers launched: ' + browsersLaunched .map((browser) => { return browser.name + ' (' + browser.id + ')'; }) .join(', ')); log.info('Browsers that were configured: ' + browsersScheduled.join(', ')); } }; this.onBrowserComplete = function (browser) { var _a, _b; const result = browser.lastResult; if (result.disconnected) { if (result.success + result.failed + result.skipped < result.total || result.total === 0) { log.error('Test disconnected'); } else { result.disconnected = false; log.warn('Test reported as disconnected, but actually all tests executed'); } } if (result.error) { log.error('Test errored'); } const browserId = browser.launchId || browser.id; if (browserMap.has(browserId)) { pendingUpdates++; const apiStatus = !(result.failed || result.error || result.disconnected) ? 'passed' : 'error'; browserstackClient.updateSession((_b = (_a = browserMap.get(browserId)) === null || _a === void 0 ? void 0 : _a.sessionId) !== null && _b !== void 0 ? _b : '', { status: apiStatus, }, (err) => { if (err) { log.error('Could not update BrowserStack status:'); log.error(err); } pendingUpdates--; exitIfAllFinished(); }); } }; // Wait until all updates have been pushed to Browserstack this.onExit = function (done) { callWhenFinished = done; exitIfAllFinished(); }; } exports.BrowserStackReporter = BrowserStackReporter;