refactor(tests): use getByRole instead of getByText for interactive elements

- Refactor ~47 test cases across 7 test files to use getByRole
- Improve accessibility testing coverage following Testing Library best practices
- Make tests more robust against text changes (i18n, copy updates)
- Test elements as users (especially screen readers) interact with them
This commit is contained in:
lenhanphung
2025-10-16 15:00:58 +07:00
committed by Benoit TELLIER
parent 4c18bf3a52
commit b9905cbb7a
7 changed files with 52 additions and 46 deletions
@@ -162,7 +162,7 @@ describe("Recurrence Event Behavior Tests", () => {
);
fireEvent.click(screen.getByLabelText("This event"));
fireEvent.click(screen.getByText("Ok"));
fireEvent.click(screen.getByRole("button", { name: /Ok/i }));
await waitFor(() => {
expect(mockEventAction).toHaveBeenCalledWith("solo");
@@ -188,7 +188,7 @@ describe("Recurrence Event Behavior Tests", () => {
);
fireEvent.click(screen.getByLabelText("All the events"));
fireEvent.click(screen.getByText("Ok"));
fireEvent.click(screen.getByRole("button", { name: /Ok/i }));
await waitFor(() => {
expect(mockEventAction).toHaveBeenCalledWith("all");
@@ -265,7 +265,7 @@ describe("Recurrence Event Behavior Tests", () => {
);
fireEvent.click(screen.getByTestId("MoreVertIcon"));
fireEvent.click(screen.getByText("Delete event"));
fireEvent.click(screen.getByRole("menuitem", { name: /Delete event/i }));
await waitFor(() => {
expect(
@@ -339,7 +339,7 @@ describe("Recurrence Event Behavior Tests", () => {
);
fireEvent.click(screen.getByTestId("MoreVertIcon"));
fireEvent.click(screen.getByText("Delete event"));
fireEvent.click(screen.getByRole("menuitem", { name: /Delete event/i }));
await waitFor(() => {
expect(spy).toHaveBeenCalled();
@@ -371,7 +371,7 @@ describe("Recurrence Event Behavior Tests", () => {
);
fireEvent.click(screen.getByTestId("MoreVertIcon"));
fireEvent.click(screen.getByText("Delete event"));
fireEvent.click(screen.getByRole("menuitem", { name: /Delete event/i }));
await waitFor(() => {
expect(
@@ -380,7 +380,7 @@ describe("Recurrence Event Behavior Tests", () => {
});
fireEvent.click(screen.getByLabelText("This event"));
fireEvent.click(screen.getByText("Ok"));
fireEvent.click(screen.getByRole("button", { name: /Ok/i }));
await waitFor(() => {
expect(spy).toHaveBeenCalled();
@@ -414,7 +414,7 @@ describe("Recurrence Event Behavior Tests", () => {
);
fireEvent.click(screen.getByTestId("MoreVertIcon"));
fireEvent.click(screen.getByText("Delete event"));
fireEvent.click(screen.getByRole("menuitem", { name: /Delete event/i }));
await waitFor(() => {
expect(
@@ -423,7 +423,7 @@ describe("Recurrence Event Behavior Tests", () => {
});
fireEvent.click(screen.getByLabelText("All the events"));
fireEvent.click(screen.getByText("Ok"));
fireEvent.click(screen.getByRole("button", { name: /Ok/i }));
await waitFor(() => {
expect(spy).toHaveBeenCalled();
@@ -461,7 +461,7 @@ describe("Recurrence Event Behavior Tests", () => {
});
fireEvent.click(screen.getByLabelText("This event"));
fireEvent.click(screen.getByText("Ok"));
fireEvent.click(screen.getByRole("button", { name: /Ok/i }));
await waitFor(() => {
expect(spy).toHaveBeenCalled();
@@ -503,7 +503,7 @@ describe("Recurrence Event Behavior Tests", () => {
});
fireEvent.click(screen.getByLabelText("All the events"));
fireEvent.click(screen.getByText("Ok"));
fireEvent.click(screen.getByRole("button", { name: /Ok/i }));
await waitFor(() => {
expect(getEventSpy).toHaveBeenCalled();
@@ -555,7 +555,7 @@ describe("Recurrence Event Behavior Tests", () => {
target: { value: "Updated Single Instance" },
});
fireEvent.click(screen.getByText("Save"));
fireEvent.click(screen.getByRole("button", { name: /Save/i }));
await waitFor(() => {
expect(spy).toHaveBeenCalled();
@@ -599,7 +599,7 @@ describe("Recurrence Event Behavior Tests", () => {
target: { value: "Updated All Instances" },
});
fireEvent.click(screen.getByText("Save"));
fireEvent.click(screen.getByRole("button", { name: /Save/i }));
await waitFor(() => {
expect(spy).toHaveBeenCalled();
@@ -621,7 +621,7 @@ describe("Recurrence Event Behavior Tests", () => {
basePreloadedState
);
fireEvent.click(screen.getByText("Show More"));
fireEvent.click(screen.getByRole("button", { name: /Show More/i }));
expect(screen.getByText(/repeat every/i)).toBeInTheDocument();
expect(screen.getByText(/end:/i)).toBeInTheDocument();
@@ -836,7 +836,7 @@ describe("Recurrence Event Behavior Tests", () => {
}
);
fireEvent.click(screen.getByText("Show More"));
fireEvent.click(screen.getByRole("button", { name: /Show More/i }));
// Repetition section should not be visible for non-owner
expect(screen.queryByLabelText(/Repetition/i)).not.toBeInTheDocument();
@@ -1006,7 +1006,7 @@ describe("Recurrence Event Behavior Tests", () => {
// Select "All the events"
fireEvent.click(screen.getByLabelText("All the events"));
fireEvent.click(screen.getByText("Ok"));
fireEvent.click(screen.getByRole("button", { name: /Ok/i }));
await waitFor(() => {
// Update modal should open
@@ -1055,7 +1055,7 @@ describe("Recurrence Event Behavior Tests", () => {
const option = await screen.findByText("Calendar 2");
fireEvent.click(option);
fireEvent.click(screen.getByText("Save"));
fireEvent.click(screen.getByRole("button", { name: /Save/i }));
await waitFor(() => {
expect(moveEventSpy).toHaveBeenCalled();