@testim/testim-cli
Version:
Command line interface for running Testing on you CI
118 lines (92 loc) • 12.3 kB
JavaScript
;
var _get = require('babel-runtime/helpers/get')['default'];
var _inherits = require('babel-runtime/helpers/inherits')['default'];
var _createClass = require('babel-runtime/helpers/create-class')['default'];
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _helpersConstants = require('../helpers/constants');
var ErrorHandler = (function (_Error) {
_inherits(ErrorHandler, _Error);
function ErrorHandler(type, msg) {
_classCallCheck(this, ErrorHandler);
_get(Object.getPrototypeOf(ErrorHandler.prototype), 'constructor', this).call(this);
Error.captureStackTrace(this, this.constructor);
if (arguments.length === 2) {
this.message = msg;
this.type = type;
} else if (arguments.length === 1 && typeof type === 'number') {
// if ID is not known error throw UnknownError
if (!_helpersConstants.ERROR_CODES[type]) {
type = 13;
}
this.type = _helpersConstants.ERROR_CODES[type].id;
this.message = _helpersConstants.ERROR_CODES[type].message;
} else if (arguments.length === 1) {
this.type = 'WebdriverIOError';
this.message = type;
}
if (typeof this.message === 'object') {
var seleniumStack = this.message;
if (seleniumStack.message && seleniumStack.type && seleniumStack.status) {
if (seleniumStack.orgStatusMessage && seleniumStack.orgStatusMessage.match(/"errorMessage":"NoSuchElement"/)) {
seleniumStack.type = 'NoSuchElement';
seleniumStack.status = 7;
seleniumStack.message = _helpersConstants.ERROR_CODES['7'].message;
}
this.message = seleniumStack.message + ' (' + seleniumStack.type + ':' + seleniumStack.status + ')';
}
if (seleniumStack.orgStatusMessage) {
var reqPos = seleniumStack.orgStatusMessage.indexOf(',"request"');
var problem = '';
if (reqPos > 0) {
problem = JSON.parse(seleniumStack.orgStatusMessage.slice(0, reqPos) + '}').errorMessage;
} else {
problem = seleniumStack.orgStatusMessage;
}
if (problem.indexOf('No enum constant org.openqa.selenium.Platform') > -1) {
problem = 'The Selenium backend you\'ve chosen doesn\'t support the desired platform (' + problem.slice(46) + ')';
}
// truncate errorMessage
if (problem.indexOf('(Session info:') > -1) {
problem = problem.slice(0, problem.indexOf('(Session info:')).replace(/\n/g, '').trim();
}
// make assumption based on experience on certain error messages
if (problem.indexOf('unknown error: path is not absolute') !== -1) {
problem = 'You are trying to set a value to an input field with type="file", use the `uploadFile` command instead (Selenium error: ' + problem + ')';
}
this.message = problem;
}
}
}
/**
* make stack loggable
* @return {Object} error log
*/
_createClass(ErrorHandler, [{
key: 'toJSON',
value: function toJSON() {
return {
name: this.type,
message: this.message
};
}
}]);
return ErrorHandler;
})(Error);
var CommandError = function CommandError(msg) {
return new ErrorHandler('CommandError', msg);
};
var ProtocolError = function ProtocolError(msg) {
return new ErrorHandler('ProtocolError', msg);
};
var RuntimeError = function RuntimeError(msg) {
return new ErrorHandler('RuntimeError', msg);
};
exports.ErrorHandler = ErrorHandler;
exports.CommandError = CommandError;
exports.ProtocolError = ProtocolError;
exports.RuntimeError = RuntimeError;
exports['default'] = ErrorHandler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9FcnJvckhhbmRsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Z0NBQTRCLHNCQUFzQjs7SUFFNUMsWUFBWTtjQUFaLFlBQVk7O0FBQ0YsYUFEVixZQUFZLENBQ0QsSUFBSSxFQUFFLEdBQUcsRUFBRTs4QkFEdEIsWUFBWTs7QUFFVixtQ0FGRixZQUFZLDZDQUVIO0FBQ1AsYUFBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7O0FBRS9DLFlBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDeEIsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFBO0FBQ2xCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtTQUNuQixNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFOztBQUUzRCxnQkFBSSxDQUFDLDhCQUFZLElBQUksQ0FBQyxFQUFFO0FBQ3BCLG9CQUFJLEdBQUcsRUFBRSxDQUFBO2FBQ1o7O0FBRUQsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsOEJBQVksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFBO0FBQ2hDLGdCQUFJLENBQUMsT0FBTyxHQUFHLDhCQUFZLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQTtTQUMzQyxNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDL0IsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUE7QUFDOUIsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1NBQ3RCOztBQUVELFlBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtBQUNsQyxnQkFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQTs7QUFFaEMsZ0JBQUksYUFBYSxDQUFDLE9BQU8sSUFBSSxhQUFh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QVk7cUJBRUQsWUFBWSIsImZpbGUiOiJFcnJvckhhbmRsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFUlJPUl9DT0RFUyB9IGZyb20gJy4uL2hlbHBlcnMvY29uc3RhbnRzJ1xuXG5jbGFzcyBFcnJvckhhbmRsZXIgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IgKHR5cGUsIG1zZykge1xuICAgICAgICBzdXBlcigpXG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpXG5cbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IG1zZ1xuICAgICAgICAgICAgdGhpcy50eXBlID0gdHlwZVxuICAgICAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAvLyBpZiBJRCBpcyBub3Qga25vd24gZXJyb3IgdGhyb3cgVW5rbm93bkVycm9yXG4gICAgICAgICAgICBpZiAoIUVSUk9SX0NPREVTW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IDEzXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudHlwZSA9IEVSUk9SX0NPREVTW3R5cGVdLmlkXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBFUlJPUl9DT0RFU1t0eXBlXS5tZXNzYWdlXG4gICAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy50eXBlID0gJ1dlYmRyaXZlcklPRXJyb3InXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSB0eXBlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVzc2FnZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGxldCBzZWxlbml1bVN0YWNrID0gdGhpcy5tZXNzYWdlXG5cbiAgICAgICAgICAgIGlmIChzZWxlbml1bVN0YWNrLm1lc3NhZ2UgJiYgc2VsZW5pdW1TdGFjay50eXBlICYmIHNlbGVuaXVtU3RhY2suc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVuaXVtU3RhY2sub3JnU3RhdHVzTWVzc2FnZSAmJiBzZWxlbml1bVN0YWNrLm9yZ1N0YXR1c01lc3NhZ2UubWF0Y2goL1wiZXJyb3JNZXNzYWdlXCI6XCJOb1N1Y2hFbGVtZW50XCIvKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlbml1bVN0YWNrLnR5cGUgPSAnTm9TdWNoRWxlbWVudCdcbiAgICAgICAgICAgICAgICAgICAgc2VsZW5pdW1TdGFjay5zdGF0dXMgPSA3XG4gICAgICAgICAgICAgICAgICAgIHNlbGVuaXVtU3RhY2subWVzc2FnZSA9IEVSUk9SX0NPREVTWyc3J10ubWVzc2FnZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHNlbGVuaXVtU3RhY2subWVzc2FnZSArICcgKCcgKyBzZWxlbml1bVN0YWNrLnR5cGUgKyAnOicgKyBzZWxlbml1bVN0YWNrLnN0YXR1cyArICcpJ1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VsZW5pdW1TdGFjay5vcmdTdGF0dXNNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlcVBvcyA9IHNlbGVuaXVtU3RhY2sub3JnU3RhdHVzTWVzc2FnZS5pbmRleE9mKCcsXCJyZXF1ZXN0XCInKVxuICAgICAgICAgICAgICAgIGxldCBwcm9ibGVtID0gJydcblxuICAgICAgICAgICAgICAgIGlmIChyZXFQb3MgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2JsZW0gPSBKU09OLnBhcnNlKHNlbGVuaXVtU3RhY2sub3JnU3RhdHVzTWVzc2FnZS5zbGljZSgwLCByZXFQb3MpICsgJ30nKS5lcnJvck1lc3NhZ2VcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcm9ibGVtID0gc2VsZW5pdW1TdGFjay5vcmdTdGF0dXNNZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHByb2JsZW0uaW5kZXhPZignTm8gZW51bSBjb25zdGFudCBvcmcub3BlbnFhLnNlbGVuaXVtLlBsYXRmb3JtJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9ibGVtID0gJ1RoZSBTZWxlbml1bSBiYWNrZW5kIHlvdVxcJ3ZlIGNob3NlbiBkb2VzblxcJ3Qgc3VwcG9ydCB0aGUgZGVzaXJlZCBwbGF0Zm9ybSAoJyArIHByb2JsZW0uc2xpY2UoNDYpICsgJyknXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gdHJ1bmNhdGUgZXJyb3JNZXNzYWdlXG4gICAgICAgICAgICAgICAgaWYgKHByb2JsZW0uaW5kZXhPZignKFNlc3Npb24gaW5mbzonKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2JsZW0gPSBwcm9ibGVtLnNsaWNlKDAsIHByb2JsZW0uaW5kZXhPZignKFNlc3Npb24gaW5mbzonKSkucmVwbGFjZSgvXFxuL2csICcnKS50cmltKClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBtYWtlIGFzc3VtcHRpb24gYmFzZWQgb24gZXhwZXJpZW5jZSBvbiBjZXJ0YWluIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgaWYgKHByb2JsZW0uaW5kZXhPZigndW5rbm93biBlcnJvcjogcGF0aCBpcyBub3QgYWJzb2x1dGUnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvYmxlbSA9ICdZb3UgYXJlIHRyeWluZyB0byBzZXQgYSB2YWx1ZSB0byBhbiBpbnB1dCBmaWVsZCB3aXRoIHR5cGU9XCJmaWxlXCIsIHVzZSB0aGUgYHVwbG9hZEZpbGVgIGNvbW1hbmQgaW5zdGVhZCAoU2VsZW5pdW0gZXJyb3I6ICcgKyBwcm9ibGVtICsgJyknXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gcHJvYmxlbVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWFrZSBzdGFjayBsb2dnYWJsZVxuICAgICAqIEByZXR1cm4ge09iamVjdH0gZXJyb3IgbG9nXG4gICAgICovXG4gICAgdG9KU09OICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZVxuICAgICAgICB9XG4gICAgfVxufVxuXG5sZXQgQ29tbWFuZEVycm9yID0gZnVuY3Rpb24gKG1zZykge1xuICAgIHJldHVybiBuZXcgRXJyb3JIYW5kbGVyKCdDb21tYW5kRXJyb3InLCBtc2cpXG59XG5sZXQgUHJvdG9jb2xFcnJvciA9IGZ1bmN0aW9uIChtc2cpIHtcbiAgICByZXR1cm4gbmV3IEVycm9ySGFuZGxlcignUHJvdG9jb2xFcnJvcicsIG1zZylcbn1cbmxldCBSdW50aW1lRXJyb3IgPSBmdW5jdGlvbiAobXNnKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvckhhbmRsZXIoJ1J1bnRpbWVFcnJvcicsIG1zZylcbn1cblxuZXhwb3J0IHtcbiAgICBFcnJvckhhbmRsZXIsXG4gICAgQ29tbWFuZEVycm9yLFxuICAgIFByb3RvY29sRXJyb3IsXG4gICAgUnVudGltZUVycm9yXG59XG5leHBvcnQgZGVmYXVsdCBFcnJvckhhbmRsZXJcbiJdfQ==