'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
// istanbul ignore next
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
// istanbul ignore next
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
// istanbul ignore next
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
// istanbul ignore next
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
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 (typeof msg === 'number') {
// if ID is not known error throw UnknownError
if (!_helpersConstants.ERROR_CODES[msg]) {
msg = 13;
}
this.type = _helpersConstants.ERROR_CODES[msg].id;
this.message = _helpersConstants.ERROR_CODES[msg].message;
} else if (arguments.length === 2) {
this.message = msg;
this.type = type;
} else if (arguments.length === 1) {
this.type = 'WebdriverIOError';
this.message = type;
}
if (typeof this.message === 'object') {
var seleniumStack = this.message;
if (seleniumStack.screenshot) {
this.screenshot = seleniumStack.screenshot;
delete seleniumStack.screenshot;
}
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:')).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;
this.seleniumStack = seleniumStack;
}
}
}
/**
* 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvdXRpbHMvRXJyb3JIYW5kbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FBNEIsc0JBQXNCOztJQUU1QyxZQUFZO2NBQVosWUFBWTs7QUFDRixhQURWLFlBQVksQ0FDRCxJQUFJLEVBQUUsR0FBRyxFQUFFOzhCQUR0QixZQUFZOztBQUVWLG1DQUZGLFlBQVksNkNBRUg7QUFDUCxhQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTs7QUFFL0MsWUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7O0FBRXpCLGdCQUFJLENBQUMsOEJBQVksR0FBRyxDQUFDLEVBQUU7QUFDbkIsbUJBQUcsR0FBRyxFQUFFLENBQUE7YUFDWDs7QUFFRCxnQkFBSSxDQUFDLElBQUksR0FBRyw4QkFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDL0IsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsOEJBQVksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFBO1NBQzFDLE1BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQixnQkFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUE7QUFDbEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1NBQ25CLE1BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQixnQkFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQTtBQUM5QixnQkFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7U0FDdEI7O0FBRUQsWUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQ2xDLGdCQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBOztBQUVoQyxnQkFB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RUFBRTtBQUM5QixXQUFPLElBQUksWUFBWSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQTtDQUMvQyxDQUFBOztRQUdHLFlBQVksR0FBWixZQUFZO1FBQ1osWUFBWSxHQUFaLFlBQVk7UUFDWixhQUFhLEdBQWIsYUFBYTtRQUNiLFlBQVksR0FBWixZQUFZO3FCQUVELFlBQVkiLCJmaWxlIjoiL1VzZXJzL2NocmlzdGlhbmJyb21hbm4vU2l0ZXMvV2VicHJvamVrdGUvd2ViZHJpdmVyanMvREVWL2xpYi91dGlscy9FcnJvckhhbmRsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFUlJPUl9DT0RFUyB9IGZyb20gJy4uL2hlbHBlcnMvY29uc3RhbnRzJ1xuXG5jbGFzcyBFcnJvckhhbmRsZXIgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IgKHR5cGUsIG1zZykge1xuICAgICAgICBzdXBlcigpXG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpXG5cbiAgICAgICAgaWYgKHR5cGVvZiBtc2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAvLyBpZiBJRCBpcyBub3Qga25vd24gZXJyb3IgdGhyb3cgVW5rbm93bkVycm9yXG4gICAgICAgICAgICBpZiAoIUVSUk9SX0NPREVTW21zZ10pIHtcbiAgICAgICAgICAgICAgICBtc2cgPSAxM1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnR5cGUgPSBFUlJPUl9DT0RFU1ttc2ddLmlkXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBFUlJPUl9DT0RFU1ttc2ddLm1lc3NhZ2VcbiAgICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtc2dcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGVcbiAgICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnV2ViZHJpdmVySU9FcnJvcidcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHR5cGVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXNzYWdlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgbGV0IHNlbGVuaXVtU3RhY2sgPSB0aGlzLm1lc3NhZ2VcblxuICAgICAgICAgICAgaWYgKHNlbGVuaXVtU3RhY2suc2NyZWVuc2hvdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuc2hvdCA9IHNlbGVuaXVtU3RhY2suc2NyZWVuc2hvdFxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWxlbml1bVN0YWNrLnNjcmVlbnNob3RcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVuaXVtU3RhY2subWVzc2FnZSAmJiBzZWxlbml1bVN0YWNrLnR5cGUgJiYgc2VsZW5pdW1TdGFjay5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZW5pdW1TdGFjay5vcmdTdGF0dXNNZXNzYWdlICYmIHNlbGVuaXVtU3RhY2sub3JnU3RhdHVzTWVzc2FnZS5tYXRjaCgvXCJlcnJvck1lc3NhZ2VcIjpcIk5vU3VjaEVsZW1lbnRcIi8pKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVuaXVtU3RhY2sudHlwZSA9ICdOb1N1Y2hFbGVtZW50J1xuICAgICAgICAgICAgICAgICAgICBzZWxlbml1bVN0YWNrLnN0YXR1cyA9IDdcbiAgICAgICAgICAgICAgICAgICAgc2VsZW5pdW1TdGFjay5tZXNzYWdlID0gRVJST1JfQ09ERVNbJzcnXS5tZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gc2VsZW5pdW1TdGFjay5tZXNzYWdlICsgJyAoJyArIHNlbGVuaXVtU3RhY2sudHlwZSArICc6JyArIHNlbGVuaXVtU3RhY2suc3RhdHVzICsgJyknXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWxlbml1bVN0YWNrLm9yZ1N0YXR1c01lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVxUG9zID0gc2VsZW5pdW1TdGFjay5vcmdTdGF0dXNNZXNzYWdlLmluZGV4T2YoJyxcInJlcXVlc3RcIicpXG4gICAgICAgICAgICAgICAgbGV0IHByb2JsZW0gPSAnJ1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcVBvcyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvYmxlbSA9IEpTT04ucGFyc2Uoc2VsZW5pdW1TdGFjay5vcmdTdGF0dXNNZXNzYWdlLnNsaWNlKDAsIHJlcVBvcykgKyAnfScpLmVycm9yTWVzc2FnZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2JsZW0gPSBzZWxlbml1bVN0YWNrLm9yZ1N0YXR1c01lc3NhZ2VcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocHJvYmxlbS5pbmRleE9mKCdObyBlbnVtIGNvbnN0YW50IG9yZy5vcGVucWEuc2VsZW5pdW0uUGxhdGZvcm0nKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2JsZW0gPSAnVGhlIFNlbGVuaXVtIGJhY2tlbmQgeW91XFwndmUgY2hvc2VuIGRvZXNuXFwndCBzdXBwb3J0IHRoZSBkZXNpcmVkIHBsYXRmb3JtICgnICsgcHJvYmxlbS5zbGljZSg0NikgKyAnKSdcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyB0cnVuY2F0ZSBlcnJvck1lc3NhZ2VcbiAgICAgICAgICAgICAgICBpZiAocHJvYmxlbS5pbmRleE9mKCcoU2Vzc2lvbiBpbmZvOicpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvYmxlbSA9IHByb2JsZW0uc2xpY2UoMCwgcHJvYmxlbS5pbmRleE9mKCcoU2Vzc2lvbiBpbmZvOicpKS50cmltKClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBtYWtlIGFzc3VtcHRpb24gYmFzZWQgb24gZXhwZXJpZW5jZSBvbiBjZXJ0YWluIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgaWYgKHByb2JsZW0uaW5kZXhPZigndW5rbm93biBlcnJvcjogcGF0aCBpcyBub3QgYWJzb2x1dGUnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvYmxlbSA9ICdZb3UgYXJlIHRyeWluZyB0byBzZXQgYSB2YWx1ZSB0byBhbiBpbnB1dCBmaWVsZCB3aXRoIHR5cGU9XCJmaWxlXCIsIHVzZSB0aGUgYHVwbG9hZEZpbGVgIGNvbW1hbmQgaW5zdGVhZCAoU2VsZW5pdW0gZXJyb3I6ICcgKyBwcm9ibGVtICsgJyknXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gcHJvYmxlbVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZW5pdW1TdGFjayA9IHNlbGVuaXVtU3RhY2tcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG1ha2Ugc3RhY2sgbG9nZ2FibGVcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IGVycm9yIGxvZ1xuICAgICAqL1xuICAgIHRvSlNPTiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2VcbiAgICAgICAgfVxuICAgIH1cbn1cblxubGV0IENvbW1hbmRFcnJvciA9IGZ1bmN0aW9uIChtc2cpIHtcbiAgICByZXR1cm4gbmV3IEVycm9ySGFuZGxlcignQ29tbWFuZEVycm9yJywgbXNnKVxufVxubGV0IFByb3RvY29sRXJyb3IgPSBmdW5jdGlvbiAobXNnKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvckhhbmRsZXIoJ1Byb3RvY29sRXJyb3InLCBtc2cpXG59XG5sZXQgUnVudGltZUVycm9yID0gZnVuY3Rpb24gKG1zZykge1xuICAgIHJldHVybiBuZXcgRXJyb3JIYW5kbGVyKCdSdW50aW1lRXJyb3InLCBtc2cpXG59XG5cbmV4cG9ydCB7XG4gICAgRXJyb3JIYW5kbGVyLFxuICAgIENvbW1hbmRFcnJvcixcbiAgICBQcm90b2NvbEVycm9yLFxuICAgIFJ1bnRpbWVFcnJvclxufVxuZXhwb3J0IGRlZmF1bHQgRXJyb3JIYW5kbGVyXG4iXX0= |