<!DOCTYPE html> <meta charset="utf-8"> <title>querySelectorAll must not return removed elements</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <!-- Regression test for https://github.com/jsdom/jsdom/issues/2519 --> <div id="container"></div> <script> "use strict"; setup({ single_test: true }); const container = document.querySelector("#container"); function getIDs() { return [...container.querySelectorAll("a.test")].map(el => el.id); } container.innerHTML = `<a id="link-a" class="test">a link</a>`; assert_array_equals(getIDs(), ["link-a"], "Sanity check: initial setup"); container.innerHTML = `<a id="link-b" class="test"><img src="foo.jpg"></a>`; assert_array_equals(getIDs(), ["link-b"], "After replacement"); container.innerHTML = `<a id="link-a" class="test">a link</a>`; assert_array_equals(getIDs(), ["link-a"], "After changing back to the original HTML"); done(); </script>