Type
Accessibility
Severity
High
Location
frontend/src/app/pages/dashboard.tsx (around line 410)
Description
The ZIP archive upload control uses a visually hidden file input (className="hidden") that is triggered programmatically via an onClick handler attached to a generic <Button>. However, the hidden <input type="file"> does not have a unique id and is not associated with a corresponding <label> element.
Because the upload control lacks a proper programmatic label, assistive technologies cannot reliably associate the visible trigger with the underlying file input. This makes the upload functionality difficult or impossible to discover and operate for screen reader users.
User Impact
- Screen reader users may not be able to identify the purpose of the file upload control.
- Users relying on assistive technologies may be unable to trigger the ZIP upload workflow.
- The application's primary scanning functionality becomes inaccessible to some users.
- Reduced compliance with WCAG form accessibility requirements.
Steps to Reproduce
- Open the dashboard using a screen reader (e.g., NVDA, VoiceOver, or JAWS).
- Navigate to the ZIP upload section.
- Attempt to identify and activate the upload control.
- Observe that the hidden file input has no associated accessible label and is not properly connected to the visible trigger.
Expected Behavior
The visible upload control should be programmatically associated with the hidden file input so assistive technologies can correctly identify and activate the upload functionality.
Current Behavior
- The hidden
<input type="file"> has no associated <label>.
- The file input lacks a unique
id.
- A generic
<Button> triggers the input using JavaScript rather than semantic HTML.
- Screen readers cannot reliably associate the visible control with the hidden input.
Recommended Fix
Update the upload control to use semantic HTML by associating the hidden file input with a visible label.
Possible improvements include:
- Assign a unique
id to the <input type="file">.
- Replace the JavaScript-triggered button with a
<label htmlFor="input-id"> styled as a button.
- Ensure the label provides descriptive text such as "Upload ZIP Archive".
- Preserve keyboard accessibility and screen reader compatibility.
Acceptance Criteria
Definition of Done
Type
Accessibility
Severity
High
Location
frontend/src/app/pages/dashboard.tsx(around line 410)Description
The ZIP archive upload control uses a visually hidden file input (
className="hidden") that is triggered programmatically via anonClickhandler attached to a generic<Button>. However, the hidden<input type="file">does not have a uniqueidand is not associated with a corresponding<label>element.Because the upload control lacks a proper programmatic label, assistive technologies cannot reliably associate the visible trigger with the underlying file input. This makes the upload functionality difficult or impossible to discover and operate for screen reader users.
User Impact
Steps to Reproduce
Expected Behavior
The visible upload control should be programmatically associated with the hidden file input so assistive technologies can correctly identify and activate the upload functionality.
Current Behavior
<input type="file">has no associated<label>.id.<Button>triggers the input using JavaScript rather than semantic HTML.Recommended Fix
Update the upload control to use semantic HTML by associating the hidden file input with a visible label.
Possible improvements include:
idto the<input type="file">.<label htmlFor="input-id">styled as a button.Acceptance Criteria
id.<label>is associated using thehtmlForattribute.Definition of Done
id.