Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>View Transitions: moving or removing scope element during transition</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
promise_test(async t => {
const el = document.createElement("div");
document.body.appendChild(el);
const transition = el.startViewTransition();
const newDoc = new Document();
newDoc.appendChild(el);
await promise_rejects_dom(t, "InvalidStateError", transition.ready);
await transition.finished;
}, "moving scope element to new document via appendChild skips transition and rejects ready");
promise_test(async t => {
const el = document.createElement("div");
document.body.appendChild(el);
const transition = el.startViewTransition();
const newDoc = new Document();
newDoc.adoptNode(el);
await promise_rejects_dom(t, "InvalidStateError", transition.ready);
await transition.finished;
}, "adopting scope element to new document via adoptNode skips transition and rejects ready");
promise_test(async t => {
const parent = document.createElement("div");
const el = document.createElement("div");
parent.appendChild(el);
document.body.appendChild(parent);
const transition = el.startViewTransition();
const newDoc = new Document();
newDoc.appendChild(parent);
await promise_rejects_dom(t, "InvalidStateError", transition.ready);
await transition.finished;
}, "moving ancestor of scope element to new document skips transition and rejects ready");
promise_test(async t => {
const el = document.createElement("div");
document.body.appendChild(el);
const transition = el.startViewTransition();
el.remove();
await promise_rejects_dom(t, "InvalidStateError", transition.ready);
await transition.finished;
}, "removing scope element from document skips transition and rejects ready");
promise_test(async t => {
const parent = document.createElement("div");
const el = document.createElement("div");
parent.appendChild(el);
document.body.appendChild(parent);
const transition = el.startViewTransition();
parent.remove();
await promise_rejects_dom(t, "InvalidStateError", transition.ready);
await transition.finished;
}, "removing ancestor of scope element from document skips transition and rejects ready");
</script>
</body>
</html>