Skip to content

Commit dec68cc

Browse files
committed
🧪♻️ Refactor the existing tests to use the new aria-hidden attribute & sr-only for the calendar header accessibility tests
Closes #3797
1 parent 311cc86 commit dec68cc

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

src/test/calendar_test.test.tsx

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,9 @@ describe("Calendar", () => {
294294
it("should correctly format weekday using formatWeekDay prop", () => {
295295
const { calendar } = getCalendar({ formatWeekDay: (day) => day.charAt(0) });
296296
calendar
297-
.querySelectorAll(".react-datepicker__day-name")
297+
.querySelectorAll(
298+
".react-datepicker__day-name > span[aria-hidden='true']",
299+
)
298300
.forEach((dayName) => expect(dayName.textContent).toHaveLength(1));
299301
});
300302

@@ -1130,7 +1132,9 @@ describe("Calendar", () => {
11301132

11311133
it("should use a hash for week label if weekLabel is NOT provided", () => {
11321134
const { calendar } = getCalendar({ showWeekNumbers: true });
1133-
const weekLabel = calendar.querySelectorAll(".react-datepicker__day-name");
1135+
const weekLabel = calendar.querySelectorAll(
1136+
".react-datepicker__day-name > span[aria-hidden='true']",
1137+
);
11341138
expect(weekLabel[0]?.textContent).toBe("#");
11351139
});
11361140

@@ -1139,7 +1143,9 @@ describe("Calendar", () => {
11391143
showWeekNumbers: true,
11401144
weekLabel: "Foo",
11411145
});
1142-
const weekLabel = calendar.querySelectorAll(".react-datepicker__day-name");
1146+
const weekLabel = calendar.querySelectorAll(
1147+
".react-datepicker__day-name > span[aria-hidden='true']",
1148+
);
11431149
expect(weekLabel[0]?.textContent).toBe("Foo");
11441150
});
11451151

@@ -1252,13 +1258,13 @@ describe("Calendar", () => {
12521258
).container;
12531259

12541260
const daysNamesShort = calendarShort.querySelectorAll(
1255-
".react-datepicker__day-name",
1261+
".react-datepicker__day-name > span[aria-hidden='true']",
12561262
);
12571263
expect(daysNamesShort[0]?.textContent).toBe("Sun");
12581264
expect(daysNamesShort[6]?.textContent).toBe("Sat");
12591265

12601266
const daysNamesMin = calendarMin.querySelectorAll(
1261-
".react-datepicker__day-name",
1267+
".react-datepicker__day-name > span[aria-hidden='true']",
12621268
);
12631269
expect(daysNamesMin[0]?.textContent).toBe("Su");
12641270
expect(daysNamesMin[6]?.textContent).toBe("Sa");
@@ -1614,7 +1620,9 @@ describe("Calendar", () => {
16141620
calendarStartDay,
16151621
);
16161622
const firstWeekDayMin = getWeekdayMinInLocale(firstDateOfWeek, locale);
1617-
const firstHeader = calendar.querySelector(".react-datepicker__day-name");
1623+
const firstHeader = calendar.querySelector(
1624+
".react-datepicker__day-name > span[aria-hidden='true']",
1625+
);
16181626
expect(firstHeader?.textContent).toBe(firstWeekDayMin);
16191627
}
16201628

@@ -2236,13 +2244,11 @@ describe("Calendar", () => {
22362244

22372245
const header = container.querySelector(".react-datepicker__header");
22382246
const dayNameElements = header?.querySelectorAll(
2239-
".react-datepicker__day-name",
2247+
".react-datepicker__day-name > span.sr-only",
22402248
);
22412249

22422250
dayNameElements?.forEach((element, index) => {
2243-
expect(element.getAttribute("aria-label")).toBe(
2244-
expectedAriaLabels[index],
2245-
);
2251+
expect(element.textContent).toBe(expectedAriaLabels[index]);
22462252
});
22472253
});
22482254

@@ -2500,7 +2506,7 @@ describe("Calendar", () => {
25002506
it("should have default sunday as start day if No prop passed", () => {
25012507
const { calendar } = getCalendar();
25022508
const calendarDays = calendar.querySelectorAll(
2503-
".react-datepicker__day-name",
2509+
".react-datepicker__day-name > span[aria-hidden='true']",
25042510
);
25052511
expect(calendarDays[0]?.textContent).toBe("Su");
25062512
expect(calendarDays[6]?.textContent).toBe("Sa");
@@ -2509,7 +2515,7 @@ describe("Calendar", () => {
25092515
it("should have default wednesday as start day if No prop passed", () => {
25102516
const { calendar } = getCalendar({ calendarStartDay: 3 });
25112517
const calendarDays = calendar.querySelectorAll(
2512-
".react-datepicker__day-name",
2518+
".react-datepicker__day-name > span[aria-hidden='true']",
25132519
);
25142520
expect(calendarDays[0]?.textContent).toBe("We");
25152521
expect(calendarDays[6]?.textContent).toBe("Tu");

src/test/datepicker_test.test.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3850,9 +3850,10 @@ describe("DatePicker", () => {
38503850
jest.spyOn(input, "focus");
38513851
fireEvent.focus(input);
38523852

3853-
const firstDay = container.querySelector(".react-datepicker__day-names")
3854-
?.childNodes[0]?.textContent;
3855-
expect(firstDay).toBe("Mo");
3853+
const firstDay = container.querySelector(
3854+
".react-datepicker__day-names > div[role='columnheader'] > span[aria-hidden='true']",
3855+
);
3856+
expect(firstDay?.textContent).toBe("Mo");
38563857
});
38573858

38583859
it("should show the correct start of week for US locale", () => {
@@ -3863,9 +3864,10 @@ describe("DatePicker", () => {
38633864
jest.spyOn(input, "focus");
38643865
fireEvent.focus(input);
38653866

3866-
const firstDay = container.querySelector(".react-datepicker__day-names")
3867-
?.childNodes[0]?.textContent;
3868-
expect(firstDay).toBe("Su");
3867+
const firstDay = container.querySelector(
3868+
".react-datepicker__day-names > div[role='columnheader'] > span[aria-hidden='true']",
3869+
);
3870+
expect(firstDay?.textContent).toBe("Su");
38693871
});
38703872

38713873
describe("when update the datepicker input text while props.showTimeSelectOnly is set and dateFormat has only time related format", () => {

0 commit comments

Comments
 (0)