@testim/testim-cli
Version:
Command line interface for running Testing on you CI
54 lines (44 loc) • 2.02 kB
JavaScript
var timer = require('simple-timer');
var TimeSpan = require("timespan").TimeSpan;
var logger = {
log : console.log.bind(console),
error : console.error.bind(console)
};
var PASSED = 'PASSED';
var FAILED = 'FAILED';
function getDuration(ms){
return (new TimeSpan(ms)).toString();
}
var RunStatus = function(testInfoList){
this.testRunStatus = testInfoList.reduce(function(resultStatus, testInfo){
resultStatus[testInfo.testId] = { status : "waiting", name : testInfo.name };
return resultStatus;
}, {});
};
RunStatus.prototype.testStart = function(wid, testId){
timer.start(testId);
logger.log("W:" + wid , "Test Started ", this.testRunStatus[testId].name, "(" + testId + ")");
};
RunStatus.prototype.testEnd = function(wid, testId, success){
timer.stop(testId);
var resultText = success ? PASSED : FAILED;
var testRunDuration = getDuration(timer.get(testId).delta);
this.testRunStatus[testId].duration = testRunDuration;
this.testRunStatus[testId].status = resultText;
logger.log("W:" + wid, "Test", resultText, this.testRunStatus[testId].name, "(" + testId + ")", "duration;", testRunDuration);
};
RunStatus.prototype.executionStart = function(executionId){
timer.start(executionId);
};
RunStatus.prototype.executionEnd = function(executionId){
timer.stop(executionId);
var passed = Object.keys(this.testRunStatus).filter(function(testId) {
return this.testRunStatus[testId].status === PASSED;
}.bind(this)).length;
var failed = Object.keys(this.testRunStatus).length - passed;
var duration = getDuration(timer.get(executionId).delta);
logger.log("-----------------------------------------------------------------------");
logger.log("Execution completed,", "Duration:", duration, PASSED + ':', passed, FAILED + ':', failed);
logger.log("-----------------------------------------------------------------------");
};
module.exports = RunStatus;