commit 6c121ee721bdad94f0124f3dd4bc3233f9b3696e
parent c5ed9bb1207bc2859b60af479ca66277a60064da
Author: Simon Wülker <simon.wuelker@arcor.de>
Date: Fri, 7 Nov 2025 09:02:57 +0000
Bug 1998638 [wpt PR 55906] - xpath: Enforce tree order in node sets during evaluation, a=testonly
Automatic update from web-platform-tests
Add web platform test
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
--
wpt-commits: 3bc11def0b88ce80a07313f1e14b35fe96af4c6b
wpt-pr: 55906
Diffstat:
1 file changed, 36 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/domxpath/node-set-tree-order.html b/testing/web-platform/tests/domxpath/node-set-tree-order.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Tree order of node sets during evaluation</title>
+ <link rel="author" title="Simon Wülker" href="mailto:simon.wuelker@arcor.de">
+ <link rel="help" href="https://github.com/servo/servo/issues/40435">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+ <div id="container">
+ <span></span>
+ <p id="p"></p>
+ </div>
+ <script>
+ function toArray(result) {
+ var a = [];
+ while (true) {
+ var node = result.iterateNext();
+ if (node === null) break;
+ a.push(node);
+ }
+ return a;
+ }
+
+ let container = document.getElementById("container");
+ test(() => {
+ // If the result of "(./p | ./span)" is not in tree order then "last()" will filter the wrong element,
+ // causing the span to be returned.
+
+ let result = document.evaluate("(./p | ./span)[last()]", container, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
+ assert_array_equals(toArray(result), [document.getElementById("p")])
+ }, "Temporary node sets created during evaluation must be in tree order");
+ </script>
+</body>
+</html>