Skip to content

Description option on findByLabel for password input tests #1181

Open
@e-compton

Description

@e-compton

Is your feature request related to a problem? Please describe.

I am trying to test that the inputs in my form have correct inline validation errors set as aria descriptions. This works great when the input is simply a textbox:

<Label>
  Email
  <input type="text' aria-describedby="emailError" />
</Label>
<div id="emailError">Please enter a valid email address</div>

...

expect(findbyRole('textbox', {
    name: 'Email',
    description: 'Please enter a valid email'
})).toBeInTheDocument();

However, when the input is a password since it has no role I cannot use the description field on getByRole to find the element.

Describe the solution you'd like

This issue recommends using getByLabelText for password inputs, so it would be a lot easier if that query could also search by description.

<Label>
  Password
  <input type="password' aria-describedby="passwordError" />
</Label>
<div id="passwordError">Please enter your password</div>

...

expect(findByLabelText('Password', {
    description: 'Please enter your password'
})).toBeInTheDocument();

Describe alternatives you've considered

Alternatively, if react-testing library could do some magic that means findByRole('password') just works, then that would be a very simple solution and most users probably wouldn't event have to think about it.

For now my tests merely assert that the error exists in the page and ignore the describedby connection.

expect(await screen.findByText('Please enter your new password')).toBeInTheDocument();

Additional context Add any other context or screenshots about the feature
request here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions