Telegram Web, preconfigured for usage in I2P.
http://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
4.0 KiB
149 lines
4.0 KiB
11 years ago
|
var util = require('util');
|
||
|
|
||
|
var helper = require('../helper');
|
||
|
|
||
|
|
||
|
var BaseReporter = function(formatError, reportSlow, adapter) {
|
||
|
this.adapters = [adapter || process.stdout.write.bind(process.stdout)];
|
||
|
|
||
|
this.onRunStart = function(browsers) {
|
||
|
this._browsers = browsers;
|
||
|
};
|
||
|
|
||
|
|
||
|
this.renderBrowser = function(browser) {
|
||
|
var results = browser.lastResult;
|
||
|
var totalExecuted = results.success + results.failed;
|
||
|
var msg = util.format('%s: Executed %d of %d', browser, totalExecuted, results.total);
|
||
|
|
||
|
if (results.failed) {
|
||
|
msg += util.format(this.X_FAILED, results.failed);
|
||
|
}
|
||
|
|
||
|
if (results.skipped) {
|
||
|
msg += util.format(' (skipped %d)', results.skipped);
|
||
|
}
|
||
|
|
||
|
if (browser.isReady) {
|
||
|
if (results.disconnected) {
|
||
|
msg += this.FINISHED_DISCONNECTED;
|
||
|
} else if (results.error) {
|
||
|
msg += this.FINISHED_ERROR;
|
||
|
} else if (!results.failed) {
|
||
|
msg += this.FINISHED_SUCCESS;
|
||
|
}
|
||
|
|
||
|
msg += util.format(' (%s / %s)', helper.formatTimeInterval(results.totalTime),
|
||
|
helper.formatTimeInterval(results.netTime));
|
||
|
}
|
||
|
|
||
|
return msg;
|
||
|
};
|
||
|
|
||
|
this.renderBrowser = this.renderBrowser.bind(this);
|
||
|
|
||
|
|
||
|
this.write = function() {
|
||
|
var msg = util.format.apply(null, Array.prototype.slice.call(arguments));
|
||
|
|
||
|
this.adapters.forEach(function(adapter) {
|
||
|
adapter(msg);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
this.writeCommonMsg = this.write;
|
||
|
|
||
|
|
||
|
this.onBrowserError = function(browser, error) {
|
||
|
this.writeCommonMsg(util.format(this.ERROR, browser) + formatError(error, '\t'));
|
||
|
};
|
||
|
|
||
|
|
||
|
this.onBrowserLog = function(browser, log, type) {
|
||
|
if (!helper.isString(log)) {
|
||
|
// TODO(vojta): change util to new syntax (config object)
|
||
|
log = util.inspect(log, false, undefined, this.USE_COLORS);
|
||
|
}
|
||
|
|
||
|
if (this._browsers && this._browsers.length === 1) {
|
||
|
this.writeCommonMsg(util.format(this.LOG_SINGLE_BROWSER, type.toUpperCase(), log));
|
||
|
} else {
|
||
|
this.writeCommonMsg(util.format(this.LOG_MULTI_BROWSER, browser, type.toUpperCase(), log));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
this.onSpecComplete = function(browser, result) {
|
||
|
if (result.skipped) {
|
||
|
this.specSkipped(browser, result);
|
||
|
} else if (result.success) {
|
||
|
this.specSuccess(browser, result);
|
||
|
} else {
|
||
|
this.specFailure(browser, result);
|
||
|
}
|
||
|
|
||
|
if (reportSlow && result.time > reportSlow) {
|
||
|
var specName = result.suite.join(' ') + ' ' + result.description;
|
||
|
var time = helper.formatTimeInterval(result.time);
|
||
|
|
||
|
this.writeCommonMsg(util.format(this.SPEC_SLOW, browser, time, specName));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
this.specSuccess = this.specSkipped = function() {};
|
||
|
|
||
|
|
||
|
this.specFailure = function(browser, result) {
|
||
|
var specName = result.suite.join(' ') + ' ' + result.description;
|
||
|
var msg = util.format(this.SPEC_FAILURE, browser, specName);
|
||
|
|
||
|
result.log.forEach(function(log) {
|
||
|
msg += formatError(log, '\t');
|
||
|
});
|
||
|
|
||
|
this.writeCommonMsg(msg);
|
||
|
};
|
||
|
|
||
|
|
||
|
this.onRunComplete = function(browsers, results) {
|
||
|
if (browsers.length > 1 && !results.error && !results.disconnected) {
|
||
|
if (!results.failed) {
|
||
|
this.write(this.TOTAL_SUCCESS, results.success);
|
||
|
} else {
|
||
|
this.write(this.TOTAL_FAILED, results.failed, results.success);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.USE_COLORS = false;
|
||
|
|
||
|
this.LOG_SINGLE_BROWSER = 'LOG: %s\n';
|
||
|
this.LOG_MULTI_BROWSER = '%s LOG: %s\n';
|
||
|
|
||
|
this.SPEC_FAILURE = '%s %s FAILED' + '\n';
|
||
|
this.SPEC_SLOW = '%s SLOW %s: %s\n';
|
||
|
this.ERROR = '%s ERROR\n';
|
||
|
|
||
|
this.FINISHED_ERROR = ' ERROR';
|
||
|
this.FINISHED_SUCCESS = ' SUCCESS';
|
||
|
this.FINISHED_DISCONNECTED = ' DISCONNECTED';
|
||
|
|
||
|
this.X_FAILED = ' (%d FAILED)';
|
||
|
|
||
|
this.TOTAL_SUCCESS = 'TOTAL: %d SUCCESS\n';
|
||
|
this.TOTAL_FAILED = 'TOTAL: %d FAILED, %d SUCCESS\n';
|
||
|
};
|
||
|
|
||
|
BaseReporter.decoratorFactory = function(formatError, reportSlow) {
|
||
|
return function(self) {
|
||
|
BaseReporter.call(self, formatError, reportSlow);
|
||
|
};
|
||
|
};
|
||
|
|
||
|
BaseReporter.decoratorFactory.$inject = ['formatError', 'config.reportSlowerThan'];
|
||
|
|
||
|
|
||
|
// PUBLISH
|
||
|
module.exports = BaseReporter;
|