Steps to reproduce the issue
| Milestone 1a finding ID |
M1a-032 |
| Backlog priority |
High |
| Severity — carried from Milestone 1a |
Serious |
| Implementation effort |
Medium |
| Target milestone(s) |
MS3b — Backend Template Build |
| WCAG 2.2 success criterion |
2.1.1 Keyboard; 2.2.2 Pause, Stop, Hide; 2.4.3 Focus Order; 2.4.7 Focus Visible — original audit classifications; see Additional Comments |
| Responsibility tag(s) from report |
Design |
| Affected Joomla area/component |
Extensions — Install from Web — installation confirmation and cancellation — Milestone 1a finding #32 |
| Affected user journey(s) |
07 — Installer Wizard (com_installer/Install) |
Audit finding
Activating an extension's initial Install button in Install from Web scrolls the page to a separate confirmation section headed “Please confirm the installation by selecting the Install button”.
Keyboard focus does not move with the viewport to the newly revealed section. Pressing Tab can therefore move the user away from the visible confirmation controls and cause the page to scroll back towards the earlier focus location.
Activating Cancel hides the confirmation section but loses focus, requiring the user to restart keyboard navigation from the beginning of the page.
The animated scrolling also introduces unexpected movement that can be uncomfortable for people with vestibular disorders.
User impact
Keyboard users can see the installation confirmation appear but cannot continue directly to its controls because focus remains elsewhere. The next Tab press can take them back to an earlier part of the page instead of advancing through the confirmation.
Cancelling creates another interruption: the focused control disappears, and the user must find the extension or its installation action again.
For screen reader users, revealing confirmation visually without moving focus or providing equivalent context can make it difficult to discover the next step.
People sensitive to motion may experience discomfort from the animated movement between the extension details and confirmation section. Fixing only the focus position would not remove that motion concern.
Remediation plan
Present the confirmation close to the initiating action or in an accessible dialog, and manage focus explicitly when confirmation opens and closes
- Prefer revealing the confirmation within the current interaction area rather than animating the viewport to a distant section
- Alternatively, use a properly implemented dialog with an accessible name, suitable initial focus, keyboard operation, and focus restoration
- If retaining a separate inline confirmation section, move focus to an appropriate element within it when it opens
- Use the confirmation heading or introductory container where users need to read the context before reaching its actions
- Ensure that the next Tab presses reach the confirmation controls in a logical order
- Do not automatically activate the final installation action when opening confirmation
- Remove unnecessary animated scrolling
- If any motion is retained, respect the user's reduced-motion preference
- Keep the focused element visible after revealing confirmation
- On cancellation, return focus to the original Install control or another logical control in the same extension context if the original no longer exists
- Do not hide or remove the focused confirmation control without first arranging a valid return-focus target
- Keep the extension selection and surrounding context available after cancellation
- Verify motion, opening focus, keyboard navigation, and cancellation separately because fixing one does not establish that the others are resolved
Preconditions
- Use Joomla 6.2 with the Atum administrator template
- Use a disposable test installation
- Sign in with an account permitted to access extension installation
- Ensure that Install from Web is enabled and can retrieve extension listings
- Choose an extension for which the initial Install action opens a separate confirmation step
- Record the extension name and the exact Joomla build or commit
- Record whether the build includes changes from PR #48697
- Record the browser name and version, operating system, viewport dimensions, and reduced-motion setting
- Do not activate the final confirmation Install button
- Do not install an extension merely to reproduce this issue
Steps to reproduce — opening confirmation with a pointer
- Open the Joomla administrator interface at the site's base URL followed by
/administrator/
- Open System → Install → Extensions
- Record the navigation labels if they differ in the tested build
- Open the Install from Web tab
- Locate the selected test extension and open its details
- Locate the initial Install button
- Distinguish this button from the final Install control in the confirmation section
- Record the viewport position and the focused element before activation
- Activate the initial Install button once
- Observe whether the page scrolls to the separate installation confirmation section
- Record whether the movement is animated and whether it was necessary to reveal confirmation
- Record the confirmation heading and the controls displayed
- Without clicking elsewhere, check where keyboard focus is located
- Press Tab once
- Record which element receives focus and whether the page scrolls away from the confirmation section
- Do not activate the final confirmation Install button
Steps to reproduce — keyboard continuation
- Cancel the confirmation if necessary and return to the same extension details
- Use keyboard navigation to reach the initial Install button
- If an earlier keyboard-access barrier prevents reaching it, record that separately and use the pointer-opening test to inspect this confirmation behaviour
- Activate the initial Install button with the keyboard
- Wait for the confirmation section to appear
- Observe whether focus moves into the confirmation section
- Press Tab through the next few controls
- Record whether the sequence reaches the confirmation controls directly or continues through unrelated controls elsewhere on the page
- Check whether the focused control is visible at each point
- Record any difference between the viewport position and the keyboard-focus position
- Stop before activating the final installation action
Steps to reproduce — cancellation
- Open the confirmation section again if necessary
- Navigate to its Cancel control
- Record whether the control can be reached through normal keyboard navigation
- Activate Cancel
- Observe whether the confirmation section is hidden
- Check where keyboard focus moves immediately after cancellation
- Press Tab once and record the next focused element
- Check whether navigation continues from the original Install control or restarts near the beginning of the page
- Confirm whether the user can reopen the same extension's confirmation without searching through the page again
- Repeat cancellation with a pointer and record any difference in focus restoration
Reduced-motion verification
- Enable the operating system's reduced-motion preference or emulate
prefers-reduced-motion: reduce in the browser
- Reload the test page if needed for the setting to take effect
- Return to the same extension details
- Activate the initial Install button without confirming installation
- Record whether animated scrolling still occurs
- Cancel and check whether the return interaction causes further animated movement
- Verify keyboard focus separately
- Suppressing animation does not by itself correct the focus-order problem
- Restore the original test settings if appropriate
Supplementary screen reader test
- Enable a screen reader and record the screen reader and browser combination
- Open the extension's confirmation using the available interaction
- Record what is announced when confirmation appears
- Check whether the confirmation purpose and actions can be found from the resulting focus position
- Activate Cancel
- Record the control announced after cancellation and whether the extension context is preserved
- Do not activate the final installation action
Version
6.2
Expected result
Opening installation confirmation makes the next step available without unnecessary animated movement.
Keyboard focus moves to a logical location in the confirmation, and keyboard navigation proceeds through its controls.
Cancelling dismisses confirmation and restores focus to the initiating Install control or another logical control in the same extension context.
Any retained motion respects the user's reduced-motion preference.
Actual result
The audit reports that the initial Install button triggers animated scrolling to a separate confirmation section without moving keyboard focus there.
The next Tab press can return navigation and the viewport to an earlier part of the page.
Activating Cancel hides the confirmation section and loses focus, causing keyboard navigation to restart from the beginning.
What device were you using? (eg, phone, laptop)
Desktop web
What web browser were you using? (eg, Chrome, Safari)
Chrome, Firefox, Edge, Safari
Assistive Technology?
VoiceOver, JAWS, NVDA
Additional Comments
The browser and assistive-technology entries above are carried forward from the original issue and do not represent a new verification of every combination against Joomla 6.2.
Design is the responsibility tag in the original report.
The report groups this finding under four success criteria. Verification should record evidence for each applicable criterion rather than assuming that every scrolling animation fails all four.
For the Pause, Stop, Hide classification, record the motion's duration and behaviour and assess the criterion's applicability separately from the practical benefit of respecting reduced motion.
The issue links PR #48697, titled “[6.2] WIP - install from web [a11y]”, which was open when this draft was prepared. Record whether its changes are present in the tested build.
The report includes a demonstration video with a flashing and scrolling warning. View only if appropriate for you: Installation confirmation scrolling demonstration
MS3b is proposed for the documented administrator workflow. A shared-component milestone should be added only if the implementation requires work within that component's agreed scope.
please see #48697