| <!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> |