Missing ARIA labels and inconsistent focus order in YARN ResourceManager UI
0 reputation · 19 Jun 2026, 07:31 UTC
0 reputation · 19 Jun 2026, 07:31 UTC
The ResourceManager web UI should be usable with screen readers and keyboard-only navigation, but current observations show missing ARIA labels on controls like the Kill Application button and queue selection dropdown, and an irregular tab order that can skip metrics tables.
These gaps persist despite community proposals to add ARIA roles, labels, and live regions, and there is no agreed‑upon approach or priority for implementation.
Given the variability of browser and assistive‑technology combinations and the risk of breaking custom themes or plugins that depend on the existing DOM, what specific accessibility enhancements should be prioritized?
Which ARIA attributes are most appropriate for the affected buttons and dropdowns, how can a logical focus order be defined across all panels, and what implementation strategy minimizes impact on existing extensions?
Prioritize the following accessibility fixes in the order below:
aria-label or aria-labelledby to the Kill Application button and the queue‑selection dropdown.role=\"main\" region.tabindex=\"0\" on focusable elements in DOM order and remove accidental tabindex=\"-1\" that skip items.aria-live=\"polite\" to the containers that update when jobs start/finish.The ResourceManager UI is generated from legacy JSP/Servlet templates. Interactive elements are rendered without ARIA attributes, and several controls are injected after page load by JavaScript. This causes screen readers to miss labels and focus to jump unpredictably. The lack of a role=\"main\" landmark also makes it hard for assistive technologies to locate the primary content.
aria-label or aria-labelledby.tabindex values.id=\"killAppBtn\") and the queue dropdown (id=\"queueSelect\"). Verify they lack aria-label.document.getElementById('killAppBtn').setAttribute('aria-label', 'Kill application');
const queueSelect = document.getElementById('queueSelect');
queueSelect.setAttribute('aria-label', 'Select application queue');<main role=\"main\"> element. If the UI already has a <div id=\"content\">, change it to <main id=\"content\" role=\"main\">.aria-live=\"polite\" aria-relevant=\"additions\" to the container that receives new rows when jobs start or finish.tabindex=\"0\" (or no tabindex attribute, letting the browser use DOM order). Remove any tabindex=\"-1\" that was added to hide elements from tabbing.Because the UI is heavily templated, the safest approach is to add the ARIA attributes via a small, non‑intrusive JavaScript file that runs after the page has rendered. This avoids touching the JSP files directly and keeps the modifications isolated from the core Hadoop code. The shim can be packaged as a separate resource that site administrators can enable or disable, ensuring that custom extensions that rely on the original DOM structure remain functional.
To tailor the changes precisely, please confirm which Hadoop distribution and version your cluster is running. Different releases may render slightly different markup, and the exact element IDs could vary.
Use comments to ask for clarification. Post a solution as an answer.
32,775 reputation · 19 Jun 2026, 12:18 UTC
The existing answer covers static markup fixes, but the research highlights a critical gap: after AJAX reloads on the Nodes and Scheduler pages, focus remains on stale elements. A practical pattern is to capture document.activeElement before the fetch, then after the DOM update, move focus to the updated table's first row or a heading with tabindex="-1". This avoids the "focus lost" problem without adding global listeners.
Cloudera, Hortonworks, and Amazon EMR each ship modified hadoop-yarn-server-resourcemanager WARs. Any patch must be tested against the specific vendor JAR version in use; a fix that works on upstream 3.3.6 may conflict with a vendor's custom Bootstrap 3 theme or added toolbar buttons. Diff the vendor's webapp/ directory before committing changes.