Skip to content

Commit ed59735

Browse files
authored
fix(click): correct focus changes based on mouseDown result (testing-library#192)
1 parent d9a7bdc commit ed59735

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

__tests__/react/click.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,4 +321,22 @@ describe("userEvent.click", () => {
321321
userEvent.click(getByText("Submit"));
322322
expect(onSubmit).not.toHaveBeenCalled();
323323
});
324+
325+
it.each(["input", "textarea"])(
326+
"should not give focus for <%s> when mouseDown is prevented",
327+
type => {
328+
const { getByTestId } = render(
329+
React.createElement(type, {
330+
"data-testid": "element",
331+
onMouseDown: (evt) => {
332+
evt.preventDefault();
333+
},
334+
})
335+
);
336+
337+
userEvent.click(getByTestId("element"));
338+
339+
expect(getByTestId("element")).not.toHaveFocus();
340+
}
341+
);
324342
});

src/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@ function clickBooleanElement(element) {
4444
function clickElement(element) {
4545
fireEvent.mouseOver(element);
4646
fireEvent.mouseMove(element);
47-
fireEvent.mouseDown(element);
48-
element.focus();
47+
const continueDefaultHandling = fireEvent.mouseDown(element);
48+
if (continueDefaultHandling) {
49+
element.focus();
50+
}
4951
fireEvent.mouseUp(element);
5052
fireEvent.click(element);
5153

0 commit comments

Comments
 (0)