Skip to content

Scheduler - A11y - Add Home and End hotkeys, change scheduler's role, extend appointment's aria-describedby #32575

Open
Tucchhaa wants to merge 8 commits intoDevExpress:26_1from
Tucchhaa:implement_appt_hotkeys_26_1
Open

Scheduler - A11y - Add Home and End hotkeys, change scheduler's role, extend appointment's aria-describedby #32575
Tucchhaa wants to merge 8 commits intoDevExpress:26_1from
Tucchhaa:implement_appt_hotkeys_26_1

Conversation

@Tucchhaa
Copy link
Contributor

No description provided.

@Tucchhaa Tucchhaa self-assigned this Feb 16, 2026
@Tucchhaa Tucchhaa added the 26_1 label Feb 16, 2026
@Tucchhaa Tucchhaa marked this pull request as ready for review February 16, 2026 11:00
@Tucchhaa Tucchhaa requested review from a team as code owners February 16, 2026 11:00
Copilot AI review requested due to automatic review settings February 16, 2026 11:00
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves Scheduler accessibility by expanding keyboard navigation and enriching ARIA metadata so assistive technologies can better describe scheduler state and appointment interactions.

Changes:

  • Added Home/End keyboard handlers for faster appointment navigation in Scheduler appointment keyboard navigation.
  • Changed Scheduler root ARIA role from group to application.
  • Extended appointment aria-describedby content to include hotkey guidance, and adjusted unit/e2e tests accordingly.

Reviewed changes

Copilot reviewed 39 out of 39 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/devextreme/js/localization/messages/ar.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/bg.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/ca.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/cs.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/da.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/de.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/el.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/en.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/es.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/fa.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/fi.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/fr.json Adds new scheduler appointment hotkeys message key/value; minor whitespace cleanup.
packages/devextreme/js/localization/messages/hu.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/it.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/ja.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/lt.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/lv.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/nb.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/nl.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/pl.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/pt.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/ro.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/ru.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/sl.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/sv.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/tr.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/uk.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/vi.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/zh-tw.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/localization/messages/zh.json Adds new scheduler appointment hotkeys message key/value.
packages/devextreme/js/__internal/scheduler/m_scheduler.ts Updates scheduler ARIA role to application.
packages/devextreme/js/__internal/scheduler/appointments/m_appointments_kbn.ts Adds Home/End keyboard navigation and refactors focus logic into a helper.
packages/devextreme/js/__internal/scheduler/appointments/appointment/text_utils.ts Appends hotkeys text into appointment ARIA description string.
packages/devextreme/js/__internal/scheduler/appointments/appointment/text_utils.test.ts Relaxes assertions to account for newly appended hotkeys description text.
packages/devextreme/js/__internal/scheduler/appointments/appointment/m_appointment.ts Refactors aria description assignment flow (early-return when empty).
packages/devextreme/js/__internal/scheduler/tests/appointments.test.ts Adds Jest coverage for aria-describedby presence and Home/End focusing behavior; improves cleanup.
packages/devextreme/js/__internal/scheduler/tests/mock/model/appointment.ts Extends appointment test model with isFocused() helper.
e2e/testcafe-devextreme/tests/accessibility/scheduler/scheduler.ts Updates expected scheduler role in accessibility e2e test.
e2e/testcafe-devextreme/tests/accessibility/scheduler/appointment.ts Updates appointment accessibility e2e assertions to expect aria-describedby and tolerate appended text.

Copilot AI review requested due to automatic review settings February 16, 2026 12:53
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 42 out of 42 changed files in this pull request and generated 4 comments.

Comment on lines +22 to +27
}).before(async () => {
ClientFunction((selector) => {
const parent = document.querySelector(selector) as HTMLElement;
parent.style.height = '2000px';
})(PARENT_SELECTOR);

Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ClientFunction calls in this test's .before() hook are not awaited. In TestCafe, a ClientFunction only executes in the browser context when you await its invocation; otherwise the parent height change may never be applied (or may run after the widget is created), making the test unreliable.

Copilot uses AI. Check for mistakes.
Comment on lines +50 to +55
}).after(async () => {
ClientFunction((selector) => {
const parent = document.querySelector(selector) as HTMLElement;
parent.style.height = '';
})(PARENT_SELECTOR);
});
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ClientFunction call in the .after() hook is not awaited, so the cleanup that resets the parent height may not run deterministically. Please await the ClientFunction invocation to ensure the page is restored for subsequent tests.

Copilot uses AI. Check for mistakes.
Comment on lines 19 to 22
const scrollTop = await ClientFunction(() => document.body.scrollTop)();

await t.expect(scrollTop).eql(0);
}).before(async () => {
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test reads/writes the page scroll position via document.body.scrollTop, which is browser-dependent (often the scrolling element is document.documentElement, and setting body.scrollTop may be a no-op). Consider using the shared helper (e.g., getDocumentScrollTop/window.scrollTo) or reading document.scrollingElement?.scrollTop to make the assertion stable across browsers.

Copilot uses AI. Check for mistakes.
Copilot AI review requested due to automatic review settings February 16, 2026 13:39
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 42 out of 42 changed files in this pull request and generated 1 comment.

@Tucchhaa Tucchhaa force-pushed the implement_appt_hotkeys_26_1 branch from f2d0e02 to 54409f5 Compare February 16, 2026 13:47
Copilot AI review requested due to automatic review settings February 17, 2026 04:13
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 42 out of 42 changed files in this pull request and generated no new comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant