From aff2679f9586c23cae2d8e4eea2ba9e0fbf8a2ce Mon Sep 17 00:00:00 2001 From: Anne van Kesteren Date: Thu, 21 May 2026 15:40:11 +0200 Subject: [PATCH] DOM: more TreeWalker nextNode() coverage Complements https://github.com/whatwg/dom/pull/1433. --- ...er-nextNode-detached-currentNode.window.js | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 dom/traversal/TreeWalker-nextNode-detached-currentNode.window.js diff --git a/dom/traversal/TreeWalker-nextNode-detached-currentNode.window.js b/dom/traversal/TreeWalker-nextNode-detached-currentNode.window.js new file mode 100644 index 00000000000000..bdb826d8fb3051 --- /dev/null +++ b/dom/traversal/TreeWalker-nextNode-detached-currentNode.window.js @@ -0,0 +1,27 @@ +test(() => { + const detached = document.createElement("div"); + const walker = document.createTreeWalker(document, 0, null); + walker.currentNode = detached; + assert_equals(walker.nextNode(), null); +}, "nextNode() returns null when currentNode is a detached element with no descendants and whatToShow does not match it"); + +test(() => { + const detached = document.createElement("div"); + detached.appendChild(document.createElement("span")); + const walker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, null); + walker.currentNode = detached; + assert_equals(walker.nextNode(), detached.firstChild); + assert_equals(walker.nextNode(), null); +}, "nextNode() returns null after exhausting a detached subtree"); + +test(() => { + const template = document.createElement("template"); + template.innerHTML = "text
text"; + const walker = document.createTreeWalker( + document, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT, + null); + walker.currentNode = template.content; + assert_equals(walker.nextNode(), template.content.children[0]); + assert_equals(walker.nextNode(), null); +}, "nextNode() terminates when iterating over template.content not under the walker's root");