Skip to content

Commit

Permalink
Bug 1939171 [wpt PR 49846] - DOM: Add basic moveBefore() MutationObse…
Browse files Browse the repository at this point in the history
…rver tests, a=testonly

Automatic update from web-platform-tests
DOM: Add basic moveBefore() MutationObserver tests

See whatwg/dom#1307 (comment).

[email protected]

Bug: 40150299
Change-Id: I6be9d91d4e20690694fb20480f0d1d13a766b117
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6108064
Reviewed-by: Noam Rosenthal <[email protected]>
Commit-Queue: Dominic Farolino <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1400321}

--

wpt-commits: a53473e775d7da1c4ccb9e67d5b5a3f72e7223b2
wpt-pr: 49846
  • Loading branch information
domfarolino authored and moz-wptsync-bot committed Jan 10, 2025
1 parent a151f3d commit 0baaaa0
Showing 1 changed file with 52 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<!DOCTYPE html>
<title>slotchanged event</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>

<div id=oldParent>
<p id=target></p>
</div>
<div id=newParent></div>

<script>
async function runTest(oldParent, target, newParent) {
const observations = [];
const observer = new MutationObserver(mutationList => observations.push(mutationList));

observer.observe(oldParent, {childList: true});
observer.observe(target, {childList: true});
observer.observe(newParent, {childList: true});

newParent.moveBefore(target, null);

// Wait for microtasks to settle.
await new Promise(resolve => queueMicrotask(resolve));

assert_equals(observations.length, 1, "MutationObserver has emitted a single mutation list");
assert_equals(observations[0].length, 2, "Mutation list has two MutationRecords");

const removalRecord = observations[0][0];
const insertionRecord = observations[0][1];
assert_equals(removalRecord.target, oldParent, "removalRecord target is correct");
assert_equals(removalRecord.removedNodes[0], target, "removedNodes contains the moved node");
assert_equals(insertionRecord.target, newParent, "insertionRecord target is correct");
assert_equals(insertionRecord.addedNodes[0], target, "addedNodes contains the moved node");
observer.disconnect();
}

promise_test(async t => {
await runTest(oldParent, target, newParent);
}, "[Connected move] MutationObserver removal + insertion is tracked by moveBefore()");

promise_test(async t => {
const oldParent = document.createElement('div');
const target = document.createElement('p');
const newParent = document.createElement('div');
// We must append `newParent` as well, since the origin and destination nodes
// must share the same shadow-including root.
oldParent.append(target, newParent);

await runTest(oldParent, target, newParent);
}, "[Disconnected move] MutationObserver removal + insertion is tracked by moveBefore()");
</script>

0 comments on commit 0baaaa0

Please sign in to comment.