Skip to content

Commit 6e4682f

Browse files
committed
Add recommended configuration to no-interactive-element-to-noninteractive-role
1 parent 608a6aa commit 6e4682f

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

__tests__/src/rules/no-interactive-element-to-noninteractive-role-test.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
// -----------------------------------------------------------------------------
1111

1212
import { RuleTester } from 'eslint';
13+
import { configs } from '../../../src/index';
1314
import parserOptionsMapper from '../../__util__/parserOptionsMapper';
1415
import rule from '../../../src/rules/no-interactive-element-to-noninteractive-role';
16+
import ruleOptionsMapperFactory from '../../__util__/ruleOptionsMapperFactory';
1517

1618
// -----------------------------------------------------------------------------
1719
// Tests
@@ -239,6 +241,7 @@ const alwaysValid = [
239241
{ code: '<hr role="button" />;' },
240242
{ code: '<img role="button" />;' },
241243
{ code: '<li role="button" />;' },
244+
{ code: '<li role="presentation" />;' },
242245
{ code: '<nav role="button" />;' },
243246
{ code: '<ol role="button" />;' },
244247
{ code: '<table role="button" />;' },
@@ -358,11 +361,27 @@ const neverValid = [
358361
{ code: '<tr role="listitem" />;', errors: [expectedError] },
359362
];
360363

361-
ruleTester.run(`${ruleName}`, rule, {
364+
const recommendedOptions = (configs.recommended.rules[ruleName][1] || {});
365+
ruleTester.run(`${ruleName}:recommended`, rule, {
366+
valid: [
367+
...alwaysValid,
368+
{ code: '<tr role="presentation" />;' },
369+
]
370+
.map(ruleOptionsMapperFactory(recommendedOptions))
371+
.map(parserOptionsMapper),
372+
invalid: [
373+
...neverValid,
374+
]
375+
.map(ruleOptionsMapperFactory(recommendedOptions))
376+
.map(parserOptionsMapper),
377+
});
378+
379+
ruleTester.run(`${ruleName}:strict`, rule, {
362380
valid: [
363381
...alwaysValid,
364382
].map(parserOptionsMapper),
365383
invalid: [
366384
...neverValid,
385+
{ code: '<tr role="presentation" />;', errors: [expectedError] },
367386
].map(parserOptionsMapper),
368387
});

__tests__/src/rules/no-noninteractive-element-to-interactive-role-test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ const alwaysValid = [
7171
{ code: '<select className="foo" role="button" />' },
7272
{ code: '<textarea className="foo" role="button" />' },
7373
{ code: '<tr role="button" />;' },
74+
{ code: '<tr role="presentation" />;' },
7475
/* Interactive elements */
7576
{ code: '<a tabIndex="0" role="img" />' },
7677
{ code: '<a href="http://x.y.z" role="img" />' },
@@ -314,6 +315,7 @@ const alwaysValid = [
314315
{ code: '<hr role="listitem" />;' },
315316
{ code: '<img role="listitem" />;' },
316317
{ code: '<li role="listitem" />;' },
318+
{ code: '<li role="presentation" />;' },
317319
{ code: '<nav role="listitem" />;' },
318320
{ code: '<ol role="listitem" />;' },
319321
{ code: '<table role="listitem" />;' },

src/index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,12 @@ module.exports = {
6262
'jsx-a11y/no-access-key': 'error',
6363
'jsx-a11y/no-autofocus': 'error',
6464
'jsx-a11y/no-distracting-elements': 'error',
65-
'jsx-a11y/no-interactive-element-to-noninteractive-role': 'error',
65+
'jsx-a11y/no-interactive-element-to-noninteractive-role': [
66+
'error',
67+
{
68+
tr: ['none', 'presentation'],
69+
},
70+
],
6671
'jsx-a11y/no-noninteractive-element-interactions': 'error',
6772
'jsx-a11y/no-noninteractive-element-to-interactive-role': [
6873
'error',

0 commit comments

Comments
 (0)