RocketChat / RocketChat/Rocket.Chat

Accessibility: aria-invalid and aria-describedby inconsistencies in AccountProfileForm

Open
#38,453 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
46.1k
Forks
13.9k
Avg merge
3d 3h
Merged PRs (30d)
130

Description

Description

While reviewing the Account Profile form, I noticed a few accessibility inconsistencies related to aria-invalid and aria-describedby.

These may cause incorrect or confusing feedback for screen reader users.

Steps to reproduce
  1. Open apps/meteor/client/views/account/profile/AccountProfileForm.tsx
  2. Inspect ARIA attributes on form inputs (e.g., Name, Username, Email)
Expected behavior
  • aria-invalid should reflect the validation state of the same field
  • aria-describedby should only reference element IDs that are present in the DOM
Actual behavior
  • Some inputs derive aria-invalid from a different field’s error state (e.g., Name input checking errors.username)
  • Some aria-describedby attributes reference *-error or *-hint IDs that may not be rendered conditionally
Server Setup Information

Not applicable (static code-level accessibility issue)

Client Setup Information

Not applicable

Additional context

This issue was identified during a code review focused on accessibility.
I’m happy to submit a PR if this approach aligns with the maintainers’ expectations.

Thanks for your work on Rocket.Chat!

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with apps/meteor/client/views/account/profile/AccountProfileForm.tsx and inspect the ARIA attributes for the Name, Username, and Email inputs. Compare each aria-invalid value with its own error state and check whether every aria-describedby ID is rendered. Done means each field references only its own validation state and DOM-present error or hint elements.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
accessibility, frontend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.