From 105016cfe9d82876cfed2ff5c656a7842c5b3761 Mon Sep 17 00:00:00 2001 From: Luis Parra <16653744+lsprr@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:45:34 -0400 Subject: [PATCH] fix(invalidrole): allow upper and mixed case role names (#4358) Closes: #2695 --- lib/checks/aria/invalidrole-evaluate.js | 2 +- test/checks/shared/invalidrole.js | 29 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lib/checks/aria/invalidrole-evaluate.js b/lib/checks/aria/invalidrole-evaluate.js index 9c8f26ed61..66a803d74d 100644 --- a/lib/checks/aria/invalidrole-evaluate.js +++ b/lib/checks/aria/invalidrole-evaluate.js @@ -28,7 +28,7 @@ import { tokenList } from '../../core/utils'; function invalidroleEvaluate(node, options, virtualNode) { const allRoles = tokenList(virtualNode.attr('role')); const allInvalid = allRoles.every( - role => !isValidRole(role, { allowAbstract: true }) + role => !isValidRole(role.toLowerCase(), { allowAbstract: true }) ); /** diff --git a/test/checks/shared/invalidrole.js b/test/checks/shared/invalidrole.js index d9aa0a3943..8d83b218f2 100644 --- a/test/checks/shared/invalidrole.js +++ b/test/checks/shared/invalidrole.js @@ -111,4 +111,33 @@ describe('invalidrole', function () { ); assert.deepEqual(checkContext._data, ['foo', 'bar']); }); + + it('should return true if applied to an uppercase nonsensical role', function () { + var virtualNode = queryFixture( + '
Contents
' + ); + assert.isTrue( + checks.invalidrole.evaluate.call( + checkContext, + virtualNode.actualNode, + null, + virtualNode + ) + ); + assert.deepEqual(checkContext._data, ['FOO']); + }); + + it('should return false if applied to an uppercase valid role', function () { + var virtualNode = queryFixture( + '
Contents
' + ); + assert.isFalse( + checks.invalidrole.evaluate.call( + checkContext, + virtualNode.actualNode, + null, + virtualNode + ) + ); + }); });