UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

118 lines (92 loc) 12.3 kB
'use strict'; 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==