feat: add aria-busy support to role selectors #36250
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #36233
Summary
This PR adds support for the
aria-busy
attribute to Playwright's role selector functionality, allowing developers to identify elements based on their busy state.Changes
getAriaBusy()
function inroleUtils.ts
that usesgetAriaBoolean()
to check thearia-busy
attributebusy
option support to role selector engine with proper validationbusy?: boolean
property toByRoleOptions
type inlocatorUtils.ts
busy
option in API docsUsage Examples
API syntax:
Behavior
aria-busy
attribute are treated asbusy=false
(following ARIA specification)aria-busy="true"
are treated asbusy=true
aria-busy="false"
are treated asbusy=false
busy
attribute can be applied to any role (no role restrictions, following ARIA global attribute guidelines)Testing
All tests pass including:
role=button[busy]
,role=button[busy=true]
,role=button[busy=false]
)getByRole('button', { busy: true })
)aria-busy
attributeThe implementation follows the same patterns as existing ARIA attributes (
checked
,disabled
,selected
, etc.) and maintains full backward compatibility.