
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.

Target branch: unstable
Observed behavior
The Rich Text Editor toolbar is marked up with role="toolbar" but does not implement the keyboard behavior that role requires by the WAI-ARIA APG toolbar pattern. Tabbing into the editor moves focus into the toolbar one control at a time — every button in the toolbar is its own tab stop. Arrow keys do nothing in the toolbar.
Expected behavior
The toolbar behaves as a single composite widget:
- The toolbar is one tab stop. Tab moves focus into the toolbar and then out to the next widget, never between controls inside it.
- Left/Right arrow keys move focus between controls within the toolbar, wrapping around at both ends. Directions are reversed in RTL.
User-facing consequences
Keyboard-only users must press Tab through every toolbar control to reach the editing area or the next field on the form. Screen reader users are told they are in a toolbar, then find the keys that role implies do nothing, so the announced semantics do not match how the widget actually works.
Steps to reproduce
- Open a channel and edit an exercise.
- Add or open a question so the question editor is shown.
- Using the keyboard only, Tab until focus reaches the Rich Text Editor toolbar.
- Press Tab repeatedly — focus stops on each toolbar control in turn.
- With focus on a toolbar control, press the Left or Right arrow key — focus does not move.
Context
Not environment-specific. The toolbar is part of the shared Rich Text Editor used across the QTI editor, so the behavior is the same in any browser and on any OS.
Acceptance Criteria
AI usage
I used Claude Code to draft this issue. It read the toolbar components to confirm the current keyboard behavior; I made the behavioral decisions and reviewed every section.
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Target branch: unstable
Observed behavior
The Rich Text Editor toolbar is marked up with
role="toolbar"but does not implement the keyboard behavior that role requires by the WAI-ARIA APG toolbar pattern. Tabbing into the editor moves focus into the toolbar one control at a time — every button in the toolbar is its own tab stop. Arrow keys do nothing in the toolbar.Expected behavior
The toolbar behaves as a single composite widget:
User-facing consequences
Keyboard-only users must press Tab through every toolbar control to reach the editing area or the next field on the form. Screen reader users are told they are in a toolbar, then find the keys that role implies do nothing, so the announced semantics do not match how the widget actually works.
Steps to reproduce
Context
Not environment-specific. The toolbar is part of the shared Rich Text Editor used across the QTI editor, so the behavior is the same in any browser and on any OS.
Acceptance Criteria
aria-disabledinstead of being removed from the focus orderAI usage
I used Claude Code to draft this issue. It read the toolbar components to confirm the current keyboard behavior; I made the behavioral decisions and reviewed every section.