testing-library / dom-testing-library

🐙 Simple and complete DOM testing utilities that encourage good testing practices.
https://testing-library.com/dom
MIT License
3.25k stars 463 forks source link

feat(getByRole): Allow filter by disabled #1231

Closed kemuridama closed 1 year ago

kemuridama commented 1 year ago

What:

This PR allows getByRole() filter by disabled attribute.

We often write tests depending on disabled or aria-disabled attribute of elements, but getByRole() method cannot filter by it.

There are different meaning between disabled and aria-disabled attribute slightly. disabled makes a element be unclickable and unfocusable, but a element setting by aria-disabled: true remains clickable and focusable.

https://codepen.io/kemuridama/pen/rNqJKqm

From that differences, I have 2 solutions to filter by disabled attribute:

This PR resolves using the former solution, but there are controvertible.

Why:

To write tests depending on disabled or aria-disabled attribute of elements easily.

How:

Same patterns as for expanded, selected etc

Checklist:

codesandbox-ci[bot] commented 1 year ago

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Latest deployment of this branch, based on commit dd179c79786c846cf9e645d516cdfd88c4e98ed9:

Sandbox Source
react-testing-library-examples Configuration
codecov[bot] commented 1 year ago

Codecov Report

Merging #1231 (dd179c7) into main (39a64d4) will not change coverage. The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main     #1231   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           24        24           
  Lines         1042      1046    +4     
  Branches       351       349    -2     
=========================================
+ Hits          1042      1046    +4     
Flag Coverage Δ
node-14 100.00% <100.00%> (ø)
node-16 100.00% <100.00%> (ø)
node-18 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
src/queries/role.ts 100.00% <100.00%> (ø)
src/role-helpers.js 100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

MatanBobi commented 1 year ago

Hi @kemuridama! Thanks for opening this. This was already done by @eps1lon in https://github.com/testing-library/dom-testing-library/pull/1221, I'm closing this :)