lion/packages/ui/components/overlays/test-helpers/mimicClick.js

21 lines
624 B
JavaScript

async function sleep(t = 0) {
return new Promise(resolve => {
setTimeout(() => {
resolve(true);
}, t);
});
}
/**
* @param {HTMLElement} el
* @param {{isAsync?:boolean, releaseElement?: HTMLElement}} config releaseElement can be different when the mouse is dragged before release
*/
export async function mimicClick(el, { isAsync = false, releaseElement } = {}) {
const releaseEl = releaseElement || el;
el.dispatchEvent(new MouseEvent('mousedown'));
if (isAsync) {
await sleep();
}
releaseEl.dispatchEvent(new MouseEvent('click'));
releaseEl.dispatchEvent(new MouseEvent('mouseup'));
}