all files / DEV/lib/helpers/ errorHandler.js

76.47% Statements 26/34
72% Branches 18/25
0% Functions 0/1
11.11% Lines 1/9
23 statements, 18 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72                                                                                                                                               
'use strict';
 
Object.defineProperty(exports, '__esModule', {
    value: true
});
exports['default'] = [
/**
 * stale reference error handler
 */
function (e) {
    if (!e.seleniumStack || e.seleniumStack.type !== 'StaleElementReference') {
        return;
    }
 
    /**
     * get through command list and find most recent command where an element(s)
     * command contained the failing json web element
     */
    var failingCommand = this.commandList.slice(-1)[0];
 
    var commandToRepeat = undefined;
    for (var i = this.commandList.length - 1; i >= 0; --i) {
        var command = this.commandList[i];

        if (command.name !== 'element' && command.name !== 'elements') {
            continue;
        }
        if (command.name === 'element' && (!command.result[0].value || command.result[0].value.ELEMENT !== failingCommand.args[0])) {
            continue;
        }
 
        var _iteratorNormalCompletion = true;
        var _didIteratorError = false;
        var _iteratorError = undefined;

        try {
            for (var _iterator = command.result.value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
                var result = _step.value;
 
                if (result.ELEMENT === failingCommand.args[0]) {
                    commandToRepeat = this.commandList[i - 1];
                    break;
                }
            }
        } catch (err) {
            _didIteratorError = true;
            _iteratorError = err;
        } finally {
            try {
                if (!_iteratorNormalCompletion && _iterator['return']) {
                    _iterator['return']();
                }
            } finally {
                if (_didIteratorError) {
                    throw _iteratorError;
                }
            }
        }
 
        if (commandToRepeat) {
            break;
        }
    }
 
    if (!commandToRepeat) {
        return;
    }
 
    return this[commandToRepeat.name].apply(this, commandToRepeat.args);
}];
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvaGVscGVycy9lcnJvckhhbmRsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7cUJBQWU7Ozs7QUFJWCxVQUFVLENBQUMsRUFBRTtBQUNULFFBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLHVCQUF1QixFQUFFO0FBQ3RFLGVBQU07S0FDVDs7Ozs7O0FBTUQsUUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTs7QUFFbEQsUUFBSSxlQUFlLFlBQUEsQ0FBQTtBQUNuQixTQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ25ELFlBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7O0FBRW5DLFlBQUksT0FBTyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7QUFDM0QscUJBQVE7U0FDWDtBQUNELFlBQUksT0FBTyxDQUFDLElBQUksS0FBSyxTQUFTLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxBQUFDLEVBQUU7QUFDeEgscUJBQVE7U0FDWDs7Ozs7OztBQUVELGlDQUFtQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssOEhBQUU7b0JBQWhDLE1BQU07O0FBQ1gsb0JBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzNDLG1DQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDekMsMEJBQUs7aUJBQ1I7YUFDSjs7Ozs7Ozs7Ozs7Ozs7OztBQUVELFlBQUksZUFBZSxFQUFFO0FBQ2pCLGtCQUFLO1NBQ1I7S0FDSjs7QUFFRCxRQUFJLENBQUMsZUFBZSxFQUFFO0FBQ2xCLGVBQU07S0FDVDs7QUFFRCxXQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7Q0FDdEUsQ0FDSiIsImZpbGUiOiIvVXNlcnMvY2hyaXN0aWFuYnJvbWFubi9TaXRlcy9XZWJwcm9qZWt0ZS93ZWJkcml2ZXJqcy9ERVYvbGliL2hlbHBlcnMvZXJyb3JIYW5kbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgW1xuICAgIC8qKlxuICAgICAqIHN0YWxlIHJlZmVyZW5jZSBlcnJvciBoYW5kbGVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKCFlLnNlbGVuaXVtU3RhY2sgfHwgZS5zZWxlbml1bVN0YWNrLnR5cGUgIT09ICdTdGFsZUVsZW1lbnRSZWZlcmVuY2UnKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBnZXQgdGhyb3VnaCBjb21tYW5kIGxpc3QgYW5kIGZpbmQgbW9zdCByZWNlbnQgY29tbWFuZCB3aGVyZSBhbiBlbGVtZW50KHMpXG4gICAgICAgICAqIGNvbW1hbmQgY29udGFpbmVkIHRoZSBmYWlsaW5nIGpzb24gd2ViIGVsZW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIGxldCBmYWlsaW5nQ29tbWFuZCA9IHRoaXMuY29tbWFuZExpc3Quc2xpY2UoLTEpWzBdXG5cbiAgICAgICAgbGV0IGNvbW1hbmRUb1JlcGVhdFxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5jb21tYW5kTGlzdC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMuY29tbWFuZExpc3RbaV1cblxuICAgICAgICAgICAgaWYgKGNvbW1hbmQubmFtZSAhPT0gJ2VsZW1lbnQnICYmIGNvbW1hbmQubmFtZSAhPT0gJ2VsZW1lbnRzJykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29tbWFuZC5uYW1lID09PSAnZWxlbWVudCcgJiYgKCFjb21tYW5kLnJlc3VsdFswXS52YWx1ZSB8fCBjb21tYW5kLnJlc3VsdFswXS52YWx1ZS5FTEVNRU5UICE9PSBmYWlsaW5nQ29tbWFuZC5hcmdzWzBdKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IHJlc3VsdCBvZiBjb21tYW5kLnJlc3VsdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuRUxFTUVOVCA9PT0gZmFpbGluZ0NvbW1hbmQuYXJnc1swXSkge1xuICAgICAgICAgICAgICAgICAgICBjb21tYW5kVG9SZXBlYXQgPSB0aGlzLmNvbW1hbmRMaXN0W2kgLSAxXVxuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbW1hbmRUb1JlcGVhdCkge1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNvbW1hbmRUb1JlcGVhdCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpc1tjb21tYW5kVG9SZXBlYXQubmFtZV0uYXBwbHkodGhpcywgY29tbWFuZFRvUmVwZWF0LmFyZ3MpXG4gICAgfVxuXVxuIl19