@helpscout/cyan
Version:
Cypress-like Testing for React + JSDOM
153 lines (128 loc) • 3.43 kB
JavaScript
"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;