Skip to content

Commit 48ddf9d

Browse files
AdnoCstraker
authored andcommitted
fix(flatten-tree): do not call deprecated getDistributedNodes (#1729)
1 parent 597304b commit 48ddf9d

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

lib/core/utils/flattened-tree.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,10 @@ function flattenTree(node, shadowId, parent) {
8080

8181
return [retVal];
8282
} else {
83-
if (nodeName === 'content') {
83+
if (
84+
nodeName === 'content' &&
85+
typeof node.getDistributedNodes === 'function'
86+
) {
8487
realArray = Array.from(node.getDistributedNodes());
8588
return realArray.reduce((res, child) => {
8689
return reduceShadowDOM(res, child, parent);

test/core/utils/flattened-tree.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,21 @@ describe('axe.utils.getFlattenedTree', function() {
291291
assert.isDefined(vNode);
292292
assert.equal(virtualDOM[0].actualNode, vNode.actualNode);
293293
});
294+
it('should not throw if getDistributedNodes is missing', function() {
295+
var getDistributedNodes = fixture.getDistributedNodes;
296+
fixture.getDistributedNodes = undefined;
297+
try {
298+
var virtualDOM = axe.utils.getFlattenedTree(fixture);
299+
var vNode = axe.utils.getNodeFromTree(
300+
virtualDOM[0],
301+
virtualDOM[0].actualNode
302+
);
303+
assert.isDefined(vNode);
304+
assert.equal(virtualDOM[0].actualNode, vNode.actualNode);
305+
} finally {
306+
fixture.getDistributedNodes = getDistributedNodes;
307+
}
308+
});
294309
});
295310
} else {
296311
it('does not throw when slot elements are used', function() {

0 commit comments

Comments
 (0)