all files / DEV/lib/commands/ newWindow.js

100% Statements 18/18
31.58% Branches 6/19
33.33% Functions 1/3
100% Lines 2/2
9 statements, 3 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 73 74 75 76 77 78 79 80 81                                                                                                                                                               
/**
 *
 * Open new window in browser. This command is the equivalent function to `window.open()`. This command does not
 * work in mobile environments.
 *
 * __Note:__ When calling this command you automatically switch to the new window.
 *
 * <example>
    :newWindow.js
    client
        .url('http://google.com')
        .getTitle().then(function(title) {
            console.log(title); // outputs: "Google"
        })
        .newWindow('http://webdriver.io', 'WebdriverIO window', 'width=420,height=230,resizable,scrollbars=yes,status=1')
        .getTitle().then(function(title) {
            console.log(title);
            // outputs the following:
            // "WebdriverIO - Selenium 2.0 javascript bindings for nodejs"
        })
        .close()
        .getTitle().then(function(title) {
            console.log(title); // outputs: "Google"
        })
        .end();
 * </example>
 *
 * @param {String} url            website URL to open
 * @param {String} windowName     name of the new window
 * @param {String} windowFeatures features of opened window (e.g. size, position, scrollbars, etc.)
 *
 * @uses protocol/execute, window/getTabIds, window/switchTab
 * @type window
 *
 */
 
'use strict';
 
Object.defineProperty(exports, '__esModule', {
    value: true
});
// istanbul ignore next
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
var _scriptsNewWindow = require('../scripts/newWindow');
 
var _scriptsNewWindow2 = _interopRequireDefault(_scriptsNewWindow);
 
var _utilsErrorHandler = require('../utils/ErrorHandler');
 
var newWindow = function newWindow(url) {
    // istanbul ignore next
 
    var _this = this;
 
    var windowName = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1];
    var windowFeatures = arguments.length <= 2 || arguments[2] === undefined ? '' : arguments[2];
 
    /*!
     * parameter check
     */
    if (typeof url !== 'string' || typeof windowName !== 'string' || typeof windowFeatures !== 'string') {
        throw new _utilsErrorHandler.CommandError('number or type of arguments don\'t agree with newWindow command');
    }
 
    /*!
     * mobile check
     */
    if (this.isMobile) {
        throw new _utilsErrorHandler.CommandError('newWindow command is not supported on mobile platforms');
    }
 
    return this.execute(_scriptsNewWindow2['default'], url, windowName, windowFeatures).getTabIds().then(function (tabs) {
        return _this.switchTab(tabs[tabs.length - 1]);
    });
};
 
exports['default'] = newWindow;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvbmV3V2luZG93LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FvQzRCLHNCQUFzQjs7OztpQ0FDckIsdUJBQXVCOztBQUVwRCxJQUFJLFNBQVMsR0FBRyxTQUFaLFNBQVMsQ0FBYSxHQUFHLEVBQXdDOzs7OztRQUF0QyxVQUFVLHlEQUFHLEVBQUU7UUFBRSxjQUFjLHlEQUFHLEVBQUU7Ozs7O0FBSS9ELFFBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxPQUFPLGNBQWMsS0FBSyxRQUFRLEVBQUU7QUFDakcsY0FBTSxvQ0FBaUIsaUVBQWlFLENBQUMsQ0FBQTtLQUM1Rjs7Ozs7QUFLRCxRQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDZixjQUFNLG9DQUFpQix3REFBd0QsQ0FBQyxDQUFBO0tBQ25GOztBQUVELFdBQU8sSUFBSSxDQUFDLE9BQU8sZ0NBQWtCLEdBQUcsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUNsRixVQUFDLElBQUk7ZUFBSyxNQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztLQUFBLENBQUMsQ0FBQTtDQUN2RCxDQUFBOztxQkFFYyxTQUFTIiwiZmlsZSI6Ii9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvbmV3V2luZG93LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogT3BlbiBuZXcgd2luZG93IGluIGJyb3dzZXIuIFRoaXMgY29tbWFuZCBpcyB0aGUgZXF1aXZhbGVudCBmdW5jdGlvbiB0byBgd2luZG93Lm9wZW4oKWAuIFRoaXMgY29tbWFuZCBkb2VzIG5vdFxuICogd29yayBpbiBtb2JpbGUgZW52aXJvbm1lbnRzLlxuICpcbiAqIF9fTm90ZTpfXyBXaGVuIGNhbGxpbmcgdGhpcyBjb21tYW5kIHlvdSBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IHdpbmRvdy5cbiAqXG4gKiA8ZXhhbXBsZT5cbiAgICA6bmV3V2luZG93LmpzXG4gICAgY2xpZW50XG4gICAgICAgIC51cmwoJ2h0dHA6Ly9nb29nbGUuY29tJylcbiAgICAgICAgLmdldFRpdGxlKCkudGhlbihmdW5jdGlvbih0aXRsZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2codGl0bGUpOyAvLyBvdXRwdXRzOiBcIkdvb2dsZVwiXG4gICAgICAgIH0pXG4gICAgICAgIC5uZXdXaW5kb3coJ2h0dHA6Ly93ZWJkcml2ZXIuaW8nLCAnV2ViZHJpdmVySU8gd2luZG93JywgJ3dpZHRoPTQyMCxoZWlnaHQ9MjMwLHJlc2l6YWJsZSxzY3JvbGxiYXJzPXllcyxzdGF0dXM9MScpXG4gICAgICAgIC5nZXRUaXRsZSgpLnRoZW4oZnVuY3Rpb24odGl0bGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRpdGxlKTtcbiAgICAgICAgICAgIC8vIG91dHB1dHMgdGhlIGZvbGxvd2luZzpcbiAgICAgICAgICAgIC8vIFwiV2ViZHJpdmVySU8gLSBTZWxlbml1bSAyLjAgamF2YXNjcmlwdCBiaW5kaW5ncyBmb3Igbm9kZWpzXCJcbiAgICAgICAgfSlcbiAgICAgICAgLmNsb3NlKClcbiAgICAgICAgLmdldFRpdGxlKCkudGhlbihmdW5jdGlvbih0aXRsZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2codGl0bGUpOyAvLyBvdXRwdXRzOiBcIkdvb2dsZVwiXG4gICAgICAgIH0pXG4gICAgICAgIC5lbmQoKTtcbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsICAgICAgICAgICAgd2Vic2l0ZSBVUkwgdG8gb3BlblxuICogQHBhcmFtIHtTdHJpbmd9IHdpbmRvd05hbWUgICAgIG5hbWUgb2YgdGhlIG5ldyB3aW5kb3dcbiAqIEBwYXJhbSB7U3RyaW5nfSB3aW5kb3dGZWF0dXJlcyBmZWF0dXJlcyBvZiBvcGVuZWQgd2luZG93IChlLmcuIHNpemUsIHBvc2l0aW9uLCBzY3JvbGxiYXJzLCBldGMuKVxuICpcbiAqIEB1c2VzIHByb3RvY29sL2V4ZWN1dGUsIHdpbmRvdy9nZXRUYWJJZHMsIHdpbmRvdy9zd2l0Y2hUYWJcbiAqIEB0eXBlIHdpbmRvd1xuICpcbiAqL1xuXG5pbXBvcnQgbmV3V2luZG93SGVscGVyIGZyb20gJy4uL3NjcmlwdHMvbmV3V2luZG93J1xuaW1wb3J0IHsgQ29tbWFuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5sZXQgbmV3V2luZG93ID0gZnVuY3Rpb24gKHVybCwgd2luZG93TmFtZSA9ICcnLCB3aW5kb3dGZWF0dXJlcyA9ICcnKSB7XG4gICAgLyohXG4gICAgICogcGFyYW1ldGVyIGNoZWNrXG4gICAgICovXG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnIHx8IHR5cGVvZiB3aW5kb3dOYW1lICE9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygd2luZG93RmVhdHVyZXMgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoJ251bWJlciBvciB0eXBlIG9mIGFyZ3VtZW50cyBkb25cXCd0IGFncmVlIHdpdGggbmV3V2luZG93IGNvbW1hbmQnKVxuICAgIH1cblxuICAgIC8qIVxuICAgICAqIG1vYmlsZSBjaGVja1xuICAgICAqL1xuICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoJ25ld1dpbmRvdyBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgb24gbW9iaWxlIHBsYXRmb3JtcycpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZShuZXdXaW5kb3dIZWxwZXIsIHVybCwgd2luZG93TmFtZSwgd2luZG93RmVhdHVyZXMpLmdldFRhYklkcygpLnRoZW4oXG4gICAgICAgICh0YWJzKSA9PiB0aGlzLnN3aXRjaFRhYih0YWJzW3RhYnMubGVuZ3RoIC0gMV0pKVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXdXaW5kb3dcbiJdfQ==