qunit-harness
Version:
A library for running qunit tests on a local machine and in the SauceLabs environment.
93 lines (66 loc) • 3.12 kB
JavaScript
;
var _Object$keys = require('babel-runtime/core-js/object/keys').default;
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default').default;
exports.__esModule = true;
var _chalk = require('chalk');
var _chalk2 = _interopRequireDefault(_chalk);
function checkFailures(results) {
var globalErrors = [];
var testErrors = [];
results.forEach(function (platformResults) {
var msg = [];
var platform = [platformResults.platform[0], platformResults.platform[1], platformResults.platform[2] || ''].join(' ');
var url = platformResults.url ? platformResults.url : 'there is no url attached';
var runningError = !platformResults.result || typeof platformResults.result === 'string';
var failed = runningError || platformResults.result.failed;
msg.push(_chalk2.default.bold(failed ? _chalk2.default.red('FAILURES:') : _chalk2.default.green('OK:')));
msg.push(platform);
if (runningError) {
var resultErrorMessage = 'There is no test result available.';
msg.push(_chalk2.default.bold(resultErrorMessage));
globalErrors.push(resultErrorMessage);
} else {
msg.push(_chalk2.default.bold('Total:'), platformResults.result.total);
msg.push(_chalk2.default.bold('Failed:'), platformResults.result.failed);
}
msg.push('(' + url + ')');
console.log(msg.join(' '));
if (!runningError && platformResults.result.errors) {
//NOTE: https://support.saucelabs.com/customer/en/portal/private/cases/31354
var errors = typeof platformResults.result.errors.length !== 'undefined' ? platformResults.result.errors : _Object$keys(platformResults.result.errors).map(function (index) {
return platformResults.result.errors[index];
});
errors.forEach(function (error) {
error.platform = platform;
testErrors.push(error);
});
}
});
return { globalErrors: globalErrors, testErrors: testErrors };
}
function reportTestFailures(errors) {
console.log(_chalk2.default.bold.red('ERRORS:'));
errors.forEach(function (error) {
console.log(_chalk2.default.bold(error.platform + ' - ' + error.testPath));
console.log(_chalk2.default.bold('Test: ' + error.testName));
if (error.customMessage) console.log('message: ' + error.customMessage);
if (error.expected) {
console.log('expected: ' + error.expected);
console.log('actual: ' + error.actual);
}
console.log('-------------------------------------------');
console.log();
});
}
exports.default = function (report) {
var _checkFailures = checkFailures(report);
var testErrors = _checkFailures.testErrors;
var globalErrors = _checkFailures.globalErrors;
if (globalErrors.length) return false;
if (testErrors.length) {
reportTestFailures(testErrors);
return false;
}
return true;
};
module.exports = exports.default;