Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,7 @@ attribute.
<textarea data-testid="textarea" required></textarea>
<div data-testid="supported-role" role="tree" required></div>
<div data-testid="supported-role-aria" role="tree" aria-required="true"></div>
<div data-testid="without-aria-role" aria-required="true"></div>
```

```javascript
Expand All @@ -392,6 +393,7 @@ expect(getByTestId('select')).toBeRequired()
expect(getByTestId('textarea')).toBeRequired()
expect(getByTestId('supported-role')).not.toBeRequired()
expect(getByTestId('supported-role-aria')).toBeRequired()
expect(queryByTestId('without-aria-role')).toBeRequired()
```

<hr />
Expand Down
2 changes: 2 additions & 0 deletions src/__tests__/to-be-required.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ test('.toBeRequired', () => {
<textarea data-testid="textarea" required></textarea>
<div data-testid="supported-role" role="tree" required></div>
<div data-testid="supported-role-aria" role="tree" aria-required="true"></div>
<div data-testid="without-aria-role" aria-required="true"></div>
</div>
`)

Expand All @@ -26,6 +27,7 @@ test('.toBeRequired', () => {
expect(queryByTestId('textarea')).toBeRequired()
expect(queryByTestId('supported-role')).not.toBeRequired()
expect(queryByTestId('supported-role-aria')).toBeRequired()
expect(queryByTestId('without-aria-role')).toBeRequired()

// negative test cases wrapped in throwError assertions for coverage.
expect(() =>
Expand Down
15 changes: 1 addition & 14 deletions src/to-be-required.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ import {checkHtmlElement, getTag} from './utils'
// form elements that support 'required'
const FORM_TAGS = ['select', 'textarea']

const ARIA_FORM_TAGS = ['input', 'select', 'textarea']

const UNSUPPORTED_INPUT_TYPES = [
'color',
'hidden',
Expand All @@ -14,14 +12,6 @@ const UNSUPPORTED_INPUT_TYPES = [
'reset',
]

const SUPPORTED_ARIA_ROLES = [
'combobox',
'gridcell',
'radiogroup',
'spinbutton',
'tree',
]

function isRequiredOnFormTagsExceptInput(element) {
return FORM_TAGS.includes(getTag(element)) && element.hasAttribute('required')
}
Expand All @@ -39,10 +29,7 @@ function isRequiredOnSupportedInput(element) {
function isElementRequiredByARIA(element) {
return (
element.hasAttribute('aria-required') &&
element.getAttribute('aria-required') === 'true' &&
(ARIA_FORM_TAGS.includes(getTag(element)) ||
(element.hasAttribute('role') &&
SUPPORTED_ARIA_ROLES.includes(element.getAttribute('role'))))
element.getAttribute('aria-required') === 'true'
)
}

Expand Down