From bac231d0583a2d8c022c79c3d6727bb1438cba20 Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Tue, 29 Mar 2022 12:40:23 -0700 Subject: [PATCH 1/2] Use document.title as fallback accessible name for html root element --- .changeset/popular-beans-roll.md | 5 ++ src/accessibility/browser.ts | 10 ++- .../getAccessibilityTree.test.ts | 83 +++++++++---------- 3 files changed, 55 insertions(+), 43 deletions(-) create mode 100644 .changeset/popular-beans-roll.md diff --git a/.changeset/popular-beans-roll.md b/.changeset/popular-beans-roll.md new file mode 100644 index 00000000..21cc6023 --- /dev/null +++ b/.changeset/popular-beans-roll.md @@ -0,0 +1,5 @@ +--- +'pleasantest': major +--- + +Use document.title as fallback implicit accessible name for html root element diff --git a/src/accessibility/browser.ts b/src/accessibility/browser.ts index 1fd336ee..252db7a0 100644 --- a/src/accessibility/browser.ts +++ b/src/accessibility/browser.ts @@ -95,7 +95,15 @@ export const getAccessibilityTree = ( ); let text = (selfIsInAccessibilityTree && role) || ''; if (selfIsInAccessibilityTree) { - const name = computeAccessibleName(element); + let name = computeAccessibleName(element); + if ( + element === document.documentElement && + role === 'document' && + !name && + document.title + ) { + name = document.title; + } if (name) text += ` "${name}"`; if (document.activeElement === element) text += ` (focused)`; if (includeDescriptions) { diff --git a/tests/accessibility/getAccessibilityTree.test.ts b/tests/accessibility/getAccessibilityTree.test.ts index ff5185fb..4040c83f 100644 --- a/tests/accessibility/getAccessibilityTree.test.ts +++ b/tests/accessibility/getAccessibilityTree.test.ts @@ -12,9 +12,8 @@ test( expect(String(await getAccessibilityTree(htmlElement))).toEqual( String(await getAccessibilityTree(page)), ); - // TODO: document's name should be from document.title (breaking change) expect(await getAccessibilityTree(page)).toMatchInlineSnapshot(` - document + document "example title" list `); @@ -40,7 +39,7 @@ test( `); expect(await getAccessibilityTree(page)).toMatchInlineSnapshot(` - document + document "pleasantest" main button "Add to cart" heading "hiiii" @@ -54,7 +53,7 @@ test( `); expect(await getAccessibilityTree(page)).toMatchInlineSnapshot(` - document + document "pleasantest" list listitem text "something" @@ -63,13 +62,13 @@ test( `); expect(await getAccessibilityTree(page, { includeText: true })) .toMatchInlineSnapshot(` - document - list - listitem - text "something" - listitem - text "something else" - `); + document "pleasantest" + list + listitem + text "something" + listitem + text "something else" + `); await utils.injectHTML(` @@ -77,7 +76,7 @@ test(
extended description
`); expect(await getAccessibilityTree(page)).toMatchInlineSnapshot(` - document + document "pleasantest" button "click me" ↳ description: "extended description" button "click me" @@ -88,24 +87,24 @@ test( `); expect(await getAccessibilityTree(page, { includeText: true })) .toMatchInlineSnapshot(` - document - button "click me" - ↳ description: "extended description" - button "click me" - ↳ description: "extended description" - button "click me" - ↳ description: "extended description" - text "extended description" - `); + document "pleasantest" + button "click me" + ↳ description: "extended description" + button "click me" + ↳ description: "extended description" + button "click me" + ↳ description: "extended description" + text "extended description" + `); expect(await getAccessibilityTree(page, { includeDescriptions: false })) .toMatchInlineSnapshot(` - document - button "click me" - button "click me" - button "click me" - text "extended description" - `); + document "pleasantest" + button "click me" + button "click me" + button "click me" + text "extended description" + `); await utils.injectHTML(`