UNPKG

@testing-library/user-event

Version:
55 lines (52 loc) 1.91 kB
import '../setup/index.js'; import '../utils/click/isClickableInput.js'; import '../utils/dataTransfer/Clipboard.js'; import '../event/eventMap.js'; import '../event/behavior/click.js'; import '../event/behavior/cut.js'; import '../event/behavior/keydown.js'; import '../event/behavior/keypress.js'; import '../event/behavior/keyup.js'; import '../event/behavior/paste.js'; import '@testing-library/dom'; import '../utils/edit/maxLength.js'; import '../utils/edit/isEditable.js'; import '@testing-library/dom/dist/helpers.js'; import '../utils/keyDef/readNextDescriptor.js'; import '../utils/misc/level.js'; import { wait } from '../utils/misc/wait.js'; import '../options.js'; import { parseKeyDef } from './parseKeyDef.js'; import { Config } from '../setup/config.js'; async function keyboard(text) { const actions = parseKeyDef(this[Config].keyboardMap, text); for(let i = 0; i < actions.length; i++){ await wait(this[Config]); await keyboardAction(this[Config], actions[i]); } } async function keyboardAction(config, { keyDef , releasePrevious , releaseSelf , repeat }) { const { system } = config; // Release the key automatically if it was pressed before. if (system.keyboard.isKeyPressed(keyDef)) { await system.keyboard.keyup(config, keyDef); } if (!releasePrevious) { for(let i = 1; i <= repeat; i++){ await system.keyboard.keydown(config, keyDef); if (i < repeat) { await wait(config); } } // Release the key only on the last iteration on `state.repeatKey`. if (releaseSelf) { await system.keyboard.keyup(config, keyDef); } } } async function releaseAllKeys(config) { for (const k of config.system.keyboard.getPressedKeys()){ await config.system.keyboard.keyup(config, k); } } export { keyboard, releaseAllKeys };