UNPKG

@helpscout/cyan

Version:

Cypress-like Testing for React + JSDOM

153 lines (128 loc) 3.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _fireEvent = _interopRequireDefault(require("../fireEvent")); var _timers = require("../timers"); var _keyEvent = require("../utils/keyEvent.utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Checks a DOM element. Typically used for `<input />`. * * @returns {Cyan} The Cyan instance. * * @example * cy.get('input[type=checkbox]').check() */ function check() { var node = this.__getNode('check'); node.checked = true; return this; } /** * Clear the value of a DOM element. Typically used for `<input />`. * * @returns {Cyan} The Cyan instance. * * @example * cy.get('input[type=text]').clear() */ function clear() { var node = this.__getNode('clear'); node.value = ''; return this; } /** * Triggers an Event for a DOM element. * * @param {string} event The name of the event. * @returns {Cyan} The Cyan instance. * * @example * cy.get('textarea').trigger('focus') */ function trigger(event) { var node = this.__getNode('trigger'); _fireEvent.default[event](node); (0, _timers.runAllTimers)(); return this; } /** * Types characters/commands into a DOM element. Typically used for `<input />`. * * @param {string} value The characters/commands to type. * @returns {Cyan} The Cyan instance. * * @example * cy.get('input[type=text]').type('Hello') */ function type(value) { var node = this.__getNode('type', value); this.change({ target: { value: value } }); node.value = value; (0, _keyEvent.typeCommand)(value); return this; } /** * Unchecks a DOM element. Typically used for `<input />`. * * @returns {Cyan} The Cyan instance. * * @example * cy.get('input[type=checkbox]').uncheck() */ function uncheck() { var node = this.__getNode('uncheck'); node.checked = false; return this; } function hover() { var node = this.__getNode('hover'); _fireEvent.default.mouseOver(node); (0, _timers.runAllTimers)(); return this; } /** * @module Cyan * @name events * * @description Triggers an Event for a DOM element. * * Supported events include: * * ``` * 'copy', 'cut', 'paste', 'compositionEnd', 'compositionStart', * 'compositionUpdate', 'keyDown', 'keyPress', 'keyUp', 'focus', 'blur', * 'focusIn', 'focusOut', 'change', 'hover', 'input', 'invalid', 'submit', * 'click', 'contextMenu', 'dblClick', 'drag', 'dragEnd', 'dragEnter', * 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'mouseDown', * 'mouseEnter', 'mouseLeave', 'mouseMove', 'mouseOut', 'mouseOver', * 'mouseUp', 'select', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', * 'scroll', 'wheel', 'abort', 'canPlay', 'canPlayThrough', 'durationChange', * 'emptied', 'encrypted', 'ended', 'loadedData', 'loadedMetadata', * 'loadStart', 'pause', 'play', 'playing', 'progress', 'rateChange', * 'seeked', 'seeking', 'stalled', 'suspend', 'timeUpdate', 'volumeChange', * 'waiting', 'load', 'error', 'animationStart', 'animationEnd', * 'animationIteration', 'transitionEnd', 'doubleClick' * ``` * * @returns {Cyan} The Cyan instance. * * @example * cy.get('textarea').hover() */ var commands = { check: check, clear: clear, hover: hover, trigger: trigger, type: type, uncheck: uncheck }; var _default = commands; exports.default = _default;