Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function clickElement(element) {
fireEvent.mouseOver(element);
fireEvent.mouseMove(element);
fireEvent.mouseDown(element);
element.focus();
fireEvent.mouseUp(element);
fireEvent.click(element);
const labelAncestor = findTagInParents(element, "LABEL");
labelAncestor && clickLabel(labelAncestor);
}
function dblClickElement(element) {
fireEvent.mouseOver(element);
fireEvent.mouseMove(element);
fireEvent.mouseDown(element);
element.focus();
fireEvent.mouseUp(element);
fireEvent.click(element);
fireEvent.mouseDown(element);
fireEvent.mouseUp(element);
fireEvent.click(element);
fireEvent.dblClick(element);
const labelAncestor = findTagInParents(element, "LABEL");
labelAncestor && clickLabel(labelAncestor);
}
function selectOption(select, option) {
fireEvent.mouseOver(option);
fireEvent.mouseMove(option);
fireEvent.mouseDown(option);
fireEvent.focus(option);
fireEvent.mouseUp(option);
fireEvent.click(option);
option.selected = true;
fireEvent.change(select);
}
function clickLabel(label) {
fireEvent.mouseOver(label);
fireEvent.mouseMove(label);
fireEvent.mouseDown(label);
fireEvent.mouseUp(label);
if (label.htmlFor) {
const input = document.getElementById(label.htmlFor);
input.focus();
fireEvent.click(label);
} else {
const input = label.querySelector("input,textarea,select");
input.focus();
label.focus();
fireEvent.click(label);
}
}
click(element) {
const focusedElement = element.ownerDocument.activeElement;
const wasAnotherElementFocused =
focusedElement !== element.ownerDocument.body &&
focusedElement !== element;
if (wasAnotherElementFocused) {
fireEvent.mouseMove(focusedElement);
fireEvent.mouseLeave(focusedElement);
}
switch (element.tagName) {
case "LABEL":
clickLabel(element);
break;
case "INPUT":
if (element.type === "checkbox" || element.type === "radio") {
clickBooleanElement(element);
break;
}
default:
clickElement(element);
}
await act(async () => {
fireEvent.mouseMove(document.body, { buttons: 1 })
await new Promise(resolve => sync.update(resolve))
})