diff --git a/src/__tests__/__snapshots__/role-helpers.js.snap b/src/__tests__/__snapshots__/role-helpers.js.snap
index 4a8a1f2f..a979ef36 100644
--- a/src/__tests__/__snapshots__/role-helpers.js.snap
+++ b/src/__tests__/__snapshots__/role-helpers.js.snap
@@ -218,3 +218,250 @@ Name "":
--------------------------------------------------
`;
+
+exports[`logRoles with hidden=true outputs all elements incl. hidden ones 1`] = `
+region:
+
+Name "a region":
+
+
+Name "":
+
+
+Name "":
+
+
+Name "":
+
+
+Name "":
+
+
+--------------------------------------------------
+link:
+
+Name "link":
+
+
+--------------------------------------------------
+navigation:
+
+Name "":
+
+
+--------------------------------------------------
+heading:
+
+Name "Main Heading":
+
+
+Name "Sub Heading":
+
+
+Name "Tertiary Heading":
+
+
+--------------------------------------------------
+article:
+
+Name "":
+
+
+--------------------------------------------------
+command:
+
+Name "":
+
+
+Name "":
+
+
+--------------------------------------------------
+menuitem:
+
+Name "":
+
+
+Name "":
+
+
+--------------------------------------------------
+list:
+
+Name "":
+
+
+Name "":
+
+
+--------------------------------------------------
+listitem:
+
+Name "":
+
+
+Name "":
+
+
+Name "":
+
+
+Name "":
+
+
+--------------------------------------------------
+table:
+
+Name "":
+
+
+--------------------------------------------------
+rowgroup:
+
+Name "":
+
+
+--------------------------------------------------
+row:
+
+Name "Cell 1 Cell 2 Cell 3":
+
+
+--------------------------------------------------
+cell:
+
+Name "Cell 1":
+ |
+
+Name "Cell 2":
+ |
+
+Name "Cell 3":
+ |
+
+--------------------------------------------------
+form:
+
+Name "a form":
+
+
+--------------------------------------------------
+radio:
+
+Name "":
+
+
+Name "":
+
+
+--------------------------------------------------
+textbox:
+
+Name "":
+
+
+Name "":
+
+
+Name "":
+
+
+--------------------------------------------------
+term:
+
+Name "":
+
+
+--------------------------------------------------
+definition:
+
+Name "":
+
+
+--------------------------------------------------
+`;
diff --git a/src/__tests__/role-helpers.js b/src/__tests__/role-helpers.js
index aadc1dc2..81793ec5 100644
--- a/src/__tests__/role-helpers.js
+++ b/src/__tests__/role-helpers.js
@@ -3,6 +3,7 @@ import {
logRoles,
getImplicitAriaRoles,
isInaccessible,
+ prettyRoles,
} from '../role-helpers'
import {render} from './helpers/test-utils'
@@ -23,6 +24,26 @@ function setup() {
+
+ Some hidden content
+
+
+
+ Some hidden content
+
+
+
+ Some hidden content
+
+
+
+ Some hidden content
+
+
+
+ Some hidden content
+
+
Main Heading
Sub Heading
Tertiary Heading
@@ -107,6 +128,19 @@ function setup() {
dt: getByTestId('a-dt'),
dd: getByTestId('a-dd'),
header: getByTestId('a-header'),
+ hiddenDivWithGenericRole: getByTestId('a-hidden-div-with-a-generic-role'),
+ hiddenDivWithoutGenericRole: getByTestId(
+ 'a-hidden-div-without-a-generic-role',
+ ),
+ hiddenDivWithoutGenericRoleAndWithHiddenAttribute: getByTestId(
+ 'a-hidden-div-without-a-generic-role-and-with-hidden-attribute',
+ ),
+ hiddenDivWithoutGenericRoleAndWithDisplayNone: getByTestId(
+ 'a-hidden-div-without-a-generic-role-and-with-display-none',
+ ),
+ hiddenDivWithoutGenericRoleAndWithVisibilityHidden: getByTestId(
+ 'a-hidden-div-without-a-generic-role-and-with-visibility-hidden',
+ ),
}
}
@@ -169,6 +203,11 @@ test('getRoles returns expected roles for various dom nodes', () => {
})
})
+test('prettyRoles ignores elements with a "generic" role', () => {
+ const {hiddenDivWithGenericRole} = setup()
+ expect(prettyRoles(hiddenDivWithGenericRole, {})).toEqual('')
+})
+
test('logRoles calls console.log with output from prettyRoles', () => {
const {namedSection} = setup()
logRoles(namedSection)
@@ -176,6 +215,14 @@ test('logRoles calls console.log with output from prettyRoles', () => {
expect(console.log.mock.calls[0][0]).toMatchSnapshot()
})
+test('logRoles with hidden=true outputs all elements incl. hidden ones', () => {
+ const {namedSection} = setup()
+ logRoles(namedSection, {hidden: true})
+
+ expect(console.log).toHaveBeenCalledTimes(1)
+ expect(console.log.mock.calls[0][0]).toMatchSnapshot()
+})
+
test('getImplicitAriaRoles returns expected roles for various dom nodes', () => {
const {namedSection, h1, unnamedForm, radio, input} = setup()