Skip to content

Commit 982b103

Browse files
add test and add to react config
1 parent 7f76868 commit 982b103

File tree

3 files changed

+53
-1
lines changed

3 files changed

+53
-1
lines changed

lib/configs/react.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module.exports = {
1010
rules: {
1111
'jsx-a11y/role-supports-aria-props': 'off', // Override with github/role-supports-aria-props until https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/910 is resolved
1212
'github/a11y-aria-label-is-well-formatted': 'error',
13+
'github/a11y-no-visually-hidden-interactive-element': 'error',
1314
'github/role-supports-aria-props': 'error',
1415
'jsx-a11y/no-aria-hidden-on-focusable': 'error',
1516
'jsx-a11y/no-autofocus': 'off',

lib/rules/a11y-no-visually-hidden-interactive-element.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ const checkIfVisuallyHiddenAndInteractive = (context, options, node, isParentVis
3838
const isVisuallyHiddenElement = node.openingElement.name.name === componentName
3939
const hasSROnlyClass = typeof classes !== 'undefined' && classes.includes(className)
4040
let isHidden = false
41-
4241
if (hasSROnlyClass || isVisuallyHiddenElement || !!isParentVisuallyHidden) {
4342
if (checkIfInteractiveElement(context, htmlPropName, node)) {
4443
return true

tests/a11y-no-visually-hidden-interactive-element.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,31 @@ ruleTester.run('a11y-no-visually-hidden-interactive-element', rule, {
2525
{code: "<input className='sr-only' />"},
2626
{code: "<a className='other show-on-focus'>skip to main content</a>"},
2727
{code: '<button>Submit</button>'},
28+
{
29+
code: "<button className='sr-only'>Submit</button>",
30+
options: [
31+
{
32+
className: 'visually-hidden',
33+
},
34+
],
35+
},
36+
{
37+
code: "<VisuallyHidden as='button'>Submit</VisuallyHidden>",
38+
options: [
39+
{
40+
componentName: 'Hidden',
41+
},
42+
],
43+
errors: [{message: errorMessage}],
44+
},
45+
{
46+
code: "<VisuallyHidden as='button'>Submit</VisuallyHidden>",
47+
options: [
48+
{
49+
htmlPropName: 'html',
50+
},
51+
],
52+
},
2853
],
2954
invalid: [
3055
{code: '<VisuallyHidden as="button">Submit</VisuallyHidden>', errors: [{message: errorMessage}]},
@@ -41,5 +66,32 @@ ruleTester.run('a11y-no-visually-hidden-interactive-element', rule, {
4166
{code: "<select className='sr-only' />", errors: [{message: errorMessage}]},
4267
{code: "<option className='sr-only' />", errors: [{message: errorMessage}]},
4368
{code: "<a className='sr-only'>Read more</a>", errors: [{message: errorMessage}]},
69+
{
70+
code: "<button className='visually-hidden'>Submit</button>",
71+
options: [
72+
{
73+
className: 'visually-hidden',
74+
},
75+
],
76+
errors: [{message: errorMessage}],
77+
},
78+
{
79+
code: "<Hidden as='button'>Submit</Hidden>",
80+
options: [
81+
{
82+
componentName: 'Hidden',
83+
},
84+
],
85+
errors: [{message: errorMessage}],
86+
},
87+
{
88+
code: "<VisuallyHidden html='button'>Submit</VisuallyHidden>",
89+
options: [
90+
{
91+
htmlPropName: 'html',
92+
},
93+
],
94+
errors: [{message: errorMessage}],
95+
},
4496
],
4597
})

0 commit comments

Comments
 (0)