From 29fc9707cf44cb3865e5b32f81ca78b4cd4f8b0b Mon Sep 17 00:00:00 2001 From: Guillaume Renard Date: Wed, 14 Jan 2026 17:29:03 +0100 Subject: [PATCH 1/2] fix: propagate hidden flag to computeAccessibleName --- src/__tests__/role.js | 14 ++++++++++++++ src/queries/role.ts | 1 + 2 files changed, 15 insertions(+) diff --git a/src/__tests__/role.js b/src/__tests__/role.js index cf598583..9fea2ed4 100644 --- a/src/__tests__/role.js +++ b/src/__tests__/role.js @@ -197,6 +197,20 @@ test('can include inaccessible roles', () => { expect(getByRole('list', {hidden: true})).not.toBeNull() }) +test('can include inaccessible roles when searching by name', () => { + // this behavior deviates from the spec which includes "any descendant" + // if visibility is hidden. However, chrome a11y tree and nvda will include + // the following markup. This behavior might change depending on how + // https://github.com/w3c/aria/issues/1055 is resolved. + const {getByRole} = render( + '', + ) + + expect( + getByRole('button', {name: 'hello hidden world!', hidden: true}), + ).not.toBeNull() +}) + test('can be filtered by accessible name', () => { const {getByRole} = renderIntoDocument( ` diff --git a/src/queries/role.ts b/src/queries/role.ts index e4dd395f..1f1d2ea4 100644 --- a/src/queries/role.ts +++ b/src/queries/role.ts @@ -273,6 +273,7 @@ const queryAllByRole: AllByRole = ( computeAccessibleName(element, { computedStyleSupportsPseudoElements: getConfig().computedStyleSupportsPseudoElements, + hidden, }), element, name as MatcherFunction, From 9bc828eb041878892c8e4f68facc9e9193350962 Mon Sep 17 00:00:00 2001 From: Guillaume Renard Date: Wed, 14 Jan 2026 17:40:20 +0100 Subject: [PATCH 2/2] chore: rename test --- src/__tests__/role.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/__tests__/role.js b/src/__tests__/role.js index 9fea2ed4..7ddeea72 100644 --- a/src/__tests__/role.js +++ b/src/__tests__/role.js @@ -197,11 +197,7 @@ test('can include inaccessible roles', () => { expect(getByRole('list', {hidden: true})).not.toBeNull() }) -test('can include inaccessible roles when searching by name', () => { - // this behavior deviates from the spec which includes "any descendant" - // if visibility is hidden. However, chrome a11y tree and nvda will include - // the following markup. This behavior might change depending on how - // https://github.com/w3c/aria/issues/1055 is resolved. +test('can include hidden elements when searching by accessible name', () => { const {getByRole} = render( '', )