dequelabs / axe-core

Accessibility engine for automated Web UI testing
https://www.deque.com/axe/
Mozilla Public License 2.0
5.99k stars 779 forks source link

axecore error Cannot read properties of undefined #4335

Open rajsite opened 8 months ago

rajsite commented 8 months ago

Product

axe-core

Product Version

4.8.4

Latest Version

Issue Description

Expectation

I expect axe-core to be able to run without error on pages that include a shadow root such as the following: https://axecore-lighthouse-failure.glitch.me/

Actual

Notice in the console of the above page that axe-core runs with a result of incomplete. The incomplete item has:

description: "Ensures role attribute has an appropriate value for the element"

error stack:

TypeError: Cannot read properties of undefined (reading 'props')
    at prepareContext (https://unpkg.com/axe-core@4.8.4/axe.js:12625:23)
    at _accessibleTextVirtual (https://unpkg.com/axe-core@4.8.4/axe.js:12573:17)
    at accessibleText (https://unpkg.com/axe-core@4.8.4/axe.js:9588:14)
    at https://unpkg.com/axe-core@4.8.4/axe.js:9604:33
    at Array.reduce (<anonymous>)
    at arialabelledbyText (https://unpkg.com/axe-core@4.8.4/axe.js:9603:19)
    at hasAccessibleName (https://unpkg.com/axe-core@4.8.4/axe.js:11698:45)
    at section (https://unpkg.com/axe-core@4.8.4/axe.js:11799:16)
    at implicitRole2 (https://unpkg.com/axe-core@4.8.4/axe.js:11992:16)
    at getElementUnallowedRoles (https://unpkg.com/axe-core@4.8.4/axe.js:19359:27)

impact: null

How to Reproduce

See above, example page and discussion to view the axe-core result in the console. Page url preproduced as follows: https://axecore-lighthouse-failure.glitch.me/

Additional context

Any thing else we should know about the issue?

The axe-core error results in lighthouse failing to report any accessibility score at all for the page. Filed lighthouse a separate issue to be more robust to axe-core incomplete results: https://github.com/GoogleChrome/lighthouse/issues/15828

straker commented 8 months ago

Thanks for the issue. I took a quick look at it appears that the issue is the aria-labelledby on the section element which points to the slot element. The slot element isn't tracked in our virtual tree so that's why the code is failing.