Skip to content

Commit c20dce0

Browse files
committed
fix: 🐛 don't fire events when clicking disabled checkbox
disabled checkboxes don't fire any event BREAKING CHANGE: 🧨 clicking disabled checkbox no longer fires events ✅ Closes: testing-library#96
1 parent 5a5288f commit c20dce0

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

__tests__/click.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from "react";
2-
import { render, cleanup } from "react-testing-library";
2+
import { render, cleanup, fireEvent } from "react-testing-library";
33
import "jest-dom/extend-expect";
44
import userEvent from "../src";
55

@@ -67,6 +67,31 @@ describe("userEvent.click", () => {
6767
expect(getByTestId("element")).toHaveProperty("checked", true);
6868
});
6969

70+
it('should fire the correct events for <input type="checkbox" disabled>', () => {
71+
const events = [];
72+
const eventsHandler = jest.fn(evt => events.push(evt.type));
73+
const { getByTestId } = render(
74+
<input
75+
data-testid="element"
76+
type="checkbox"
77+
onMouseOver={eventsHandler}
78+
onMouseMove={eventsHandler}
79+
onMouseDown={eventsHandler}
80+
onFocus={eventsHandler}
81+
onMouseUp={eventsHandler}
82+
onClick={eventsHandler}
83+
onChange={eventsHandler}
84+
disabled
85+
/>
86+
);
87+
88+
userEvent.click(getByTestId("element"));
89+
90+
expect(events).toEqual([]);
91+
92+
expect(getByTestId("element")).toHaveProperty("checked", false);
93+
});
94+
7095
it("should fire the correct events for <div>", () => {
7196
const events = [];
7297
const eventsHandler = jest.fn(evt => events.push(evt.type));

src/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ function clickLabel(label) {
3131
}
3232

3333
function clickCheckbox(checkbox) {
34+
if (checkbox.disabled) return;
35+
3436
fireEvent.mouseOver(checkbox);
3537
fireEvent.mouseMove(checkbox);
3638
fireEvent.mouseDown(checkbox);

0 commit comments

Comments
 (0)