UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

79 lines (68 loc) 6.72 kB
/** * * Send a sequence of key strokes to the active element. This command is similar to the * send keys command in every aspect except the implicit termination: The modifiers are * *not* released at the end of the call. Rather, the state of the modifier keys is kept * between calls, so mouse interactions can be performed while modifier keys are depressed. * * You can also use unicode characters like Left arrow or Back space. WebdriverIO will take * care of translating them into unicode characters. You’ll find all supported characters * [here](https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/element/:id/value). * To do that, the value has to correspond to a key from the table. * * @param {String|String[]} value The sequence of keys to type. An array must be provided. The server should flatten the array items to a single string to be typed. * * @see https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/keys * @type protocol * */ 'use strict'; var _getIterator = require('babel-runtime/core-js/get-iterator')['default']; var _helpersConstants = require('../helpers/constants'); var _utilsErrorHandler = require('../utils/ErrorHandler'); module.exports = function keys(value) { var key = []; /** * replace key with corresponding unicode character */ if (typeof value === 'string') { key = checkUnicode(value); } else if (value instanceof Array) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = _getIterator(value), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var charSet = _step.value; key = key.concat(checkUnicode(charSet)); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator['return']) { _iterator['return'](); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } else { throw new _utilsErrorHandler.ProtocolError('number or type of arguments don\'t agree with keys protocol command'); } return this.requestHandler.create('/session/:sessionId/keys', { 'value': key }); }; /*! * check for unicode character or split string into literals * @param {String} value text * @return {Array} set of characters or unicode symbols */ function checkUnicode(value) { return _helpersConstants.UNICODE_CHARACTERS.hasOwnProperty(value) ? [_helpersConstants.UNICODE_CHARACTERS[value]] : value.split(''); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9wcm90b2NvbC9rZXlzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQW1CbUMsc0JBQXNCOztpQ0FDM0IsdUJBQXVCOztBQUVyRCxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsSUFBSSxDQUFFLEtBQUssRUFBRTtBQUNuQyxRQUFJLEdBQUcsR0FBRyxFQUFFLENBQUE7Ozs7O0FBS1osUUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7QUFDM0IsV0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtLQUM1QixNQUFNLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTs7Ozs7O0FBQy9CLDhDQUFvQixLQUFLLDRHQUFFO29CQUFsQixPQUFPOztBQUNaLG1CQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUMxQzs7Ozs7Ozs7Ozs7Ozs7O0tBQ0osTUFBTTtBQUNILGNBQU0scUNBQWtCLHFFQUFxRSxDQUFDLENBQUE7S0FDakc7O0FBRUQsV0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsRUFBRTtBQUMxRCxlQUFPLEVBQUUsR0FBRztLQUNmLENBQUMsQ0FBQTtDQUNMLENBQUE7Ozs7Ozs7QUFPRCxTQUFTLFlBQVksQ0FBRSxLQUFLLEVBQUU7QUFDMUIsV0FBTyxxQ0FBbUIsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUNBQW1CLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtDQUNsRyIsImZpbGUiOiJrZXlzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogU2VuZCBhIHNlcXVlbmNlIG9mIGtleSBzdHJva2VzIHRvIHRoZSBhY3RpdmUgZWxlbWVudC4gVGhpcyBjb21tYW5kIGlzIHNpbWlsYXIgdG8gdGhlXG4gKiBzZW5kIGtleXMgY29tbWFuZCBpbiBldmVyeSBhc3BlY3QgZXhjZXB0IHRoZSBpbXBsaWNpdCB0ZXJtaW5hdGlvbjogVGhlIG1vZGlmaWVycyBhcmVcbiAqICpub3QqIHJlbGVhc2VkIGF0IHRoZSBlbmQgb2YgdGhlIGNhbGwuIFJhdGhlciwgdGhlIHN0YXRlIG9mIHRoZSBtb2RpZmllciBrZXlzIGlzIGtlcHRcbiAqIGJldHdlZW4gY2FsbHMsIHNvIG1vdXNlIGludGVyYWN0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIHdoaWxlIG1vZGlmaWVyIGtleXMgYXJlIGRlcHJlc3NlZC5cbiAqXG4gKiBZb3UgY2FuIGFsc28gdXNlIHVuaWNvZGUgY2hhcmFjdGVycyBsaWtlIExlZnQgYXJyb3cgb3IgQmFjayBzcGFjZS4gV2ViZHJpdmVySU8gd2lsbCB0YWtlXG4gKiBjYXJlIG9mIHRyYW5zbGF0aW5nIHRoZW0gaW50byB1bmljb2RlIGNoYXJhY3RlcnMuIFlvdeKAmWxsIGZpbmQgYWxsIHN1cHBvcnRlZCBjaGFyYWN0ZXJzXG4gKiBbaGVyZV0oaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9zZWxlbml1bS93aWtpL0pzb25XaXJlUHJvdG9jb2wjL3Nlc3Npb24vOnNlc3Npb25JZC9lbGVtZW50LzppZC92YWx1ZSkuXG4gKiBUbyBkbyB0aGF0LCB0aGUgdmFsdWUgaGFzIHRvIGNvcnJlc3BvbmQgdG8gYSBrZXkgZnJvbSB0aGUgdGFibGUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8U3RyaW5nW119IHZhbHVlICBUaGUgc2VxdWVuY2Ugb2Yga2V5cyB0byB0eXBlLiBBbiBhcnJheSBtdXN0IGJlIHByb3ZpZGVkLiBUaGUgc2VydmVyIHNob3VsZCBmbGF0dGVuIHRoZSBhcnJheSBpdGVtcyB0byBhIHNpbmdsZSBzdHJpbmcgdG8gYmUgdHlwZWQuXG4gKlxuICogQHNlZSAgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9zZWxlbml1bS93aWtpL0pzb25XaXJlUHJvdG9jb2wjL3Nlc3Npb24vOnNlc3Npb25JZC9rZXlzXG4gKiBAdHlwZSBwcm90b2NvbFxuICpcbiAqL1xuXG5pbXBvcnQgeyBVTklDT0RFX0NIQVJBQ1RFUlMgfSBmcm9tICcuLi9oZWxwZXJzL2NvbnN0YW50cydcbmltcG9ydCB7IFByb3RvY29sRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ga2V5cyAodmFsdWUpIHtcbiAgICBsZXQga2V5ID0gW11cblxuICAgIC8qKlxuICAgICAqIHJlcGxhY2Uga2V5IHdpdGggY29ycmVzcG9uZGluZyB1bmljb2RlIGNoYXJhY3RlclxuICAgICAqL1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGtleSA9IGNoZWNrVW5pY29kZSh2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZm9yIChsZXQgY2hhclNldCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAga2V5ID0ga2V5LmNvbmNhdChjaGVja1VuaWNvZGUoY2hhclNldCkpXG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUHJvdG9jb2xFcnJvcignbnVtYmVyIG9yIHR5cGUgb2YgYXJndW1lbnRzIGRvblxcJ3QgYWdyZWUgd2l0aCBrZXlzIHByb3RvY29sIGNvbW1hbmQnKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3RIYW5kbGVyLmNyZWF0ZSgnL3Nlc3Npb24vOnNlc3Npb25JZC9rZXlzJywge1xuICAgICAgICAndmFsdWUnOiBrZXlcbiAgICB9KVxufVxuXG4vKiFcbiAqIGNoZWNrIGZvciB1bmljb2RlIGNoYXJhY3RlciBvciBzcGxpdCBzdHJpbmcgaW50byBsaXRlcmFsc1xuICogQHBhcmFtICB7U3RyaW5nfSB2YWx1ZSAgdGV4dFxuICogQHJldHVybiB7QXJyYXl9ICAgICAgICAgc2V0IG9mIGNoYXJhY3RlcnMgb3IgdW5pY29kZSBzeW1ib2xzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrVW5pY29kZSAodmFsdWUpIHtcbiAgICByZXR1cm4gVU5JQ09ERV9DSEFSQUNURVJTLmhhc093blByb3BlcnR5KHZhbHVlKSA/IFtVTklDT0RFX0NIQVJBQ1RFUlNbdmFsdWVdXSA6IHZhbHVlLnNwbGl0KCcnKVxufVxuIl19