Skip to content

Commit e9c46dd

Browse files
committed
fix(template-no-invalid-interactive): restore 'use strict'; add HBS escape-hatch tests
1 parent 00a7ea0 commit e9c46dd

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

lib/rules/template-no-invalid-interactive.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
'use strict';
2+
13
const { roles } = require('aria-query');
24
const { isNativeElement } = require('../utils/is-native-element');
35
const { isHtmlInteractiveContent } = require('../utils/html-interactive-content');

tests/lib/rules/template-no-invalid-interactive.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,3 +299,31 @@ ruleTester.run('template-no-invalid-interactive', rule, {
299299
},
300300
],
301301
});
302+
303+
const hbsRuleTester = new RuleTester({
304+
parser: require.resolve('ember-eslint-parser/hbs'),
305+
});
306+
307+
hbsRuleTester.run('template-no-invalid-interactive', rule, {
308+
valid: [
309+
// Escape hatches: role="presentation" / aria-hidden suppresses the check.
310+
'<div role="presentation" onclick={{this.h}}></div>',
311+
'<div role="none" {{on "click" this.h}}></div>',
312+
'<div aria-hidden="true" onclick={{this.h}}></div>',
313+
'<div aria-hidden {{on "click" this.h}}></div>',
314+
],
315+
invalid: [
316+
{
317+
// role="note" is not presentation/none and not interactive — still flags.
318+
code: '<div role="note" onclick={{this.h}}></div>',
319+
output: null,
320+
errors: [{ messageId: 'noInvalidInteractive' }],
321+
},
322+
{
323+
// aria-hidden="false" opts in to exposure — handler still flagged.
324+
code: '<div aria-hidden="false" onclick={{this.h}}></div>',
325+
output: null,
326+
errors: [{ messageId: 'noInvalidInteractive' }],
327+
},
328+
],
329+
});

0 commit comments

Comments
 (0)