@fpjs-incubator/broyster
Version:
68 lines (67 loc) • 2.9 kB
JavaScript
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;
;