feat(utils.getFlattenTree): default to documentElement #2260
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In investigating various things, we discovered that passing in a subtree of the DOM to
getFlattenTree
would give bad results when running various APIs. For example, trying to get the accessible name of this structure would return''
and running the label rule would fail:This doesn't happen in a normal
axe.run
as we always set up the virtual tree to be thedocumentElement
regardless of what node is passed in. This is only an issue withgetFlattenTree
.getFlattenTree
expects a node to be passed in, but we only can get correct results ifdocumentElement
orbody
is passed in. If any other node is passed in we cannot guarantee correct results. Looking through github for uses, it seems most users are passing indocumentElement
, but there are some uses of non-documentElement that would cause problems.To remedy this and not introduce a breaking change, I made passing in a node optional and instead have the code default to
documentElement
. I also added a note to the docs to warn users of problems passing in a node that is notbody
ordocumentElement
.Reviewer checks
Required fields, to be filled out by PR reviewer(s)