diff --git a/shadow-dom/declarative/clonable.window.js b/shadow-dom/declarative/clonable.window.js index 5ebeacf37cbd8ab..c324d10681b4d28 100644 --- a/shadow-dom/declarative/clonable.window.js +++ b/shadow-dom/declarative/clonable.window.js @@ -8,3 +8,29 @@ test(() => { assert_equals(cloned.shadowRoot.children.length, 1, "children count"); assert_equals(cloned.shadowRoot.children[0].localName, "input", "children content"); }, "attachShadow with clonable: true"); + +for (clonable of [false, undefined]) { + test(() => { + const div = document.createElement("div"); + const root = div.attachShadow({ mode: "open", clonable }); + root.appendChild(document.createElement("input")); + assert_false(root.clonable, "clonable attribute"); + + const cloned = div.cloneNode(true); + assert_true(!cloned.shadowRoot, "shadow should not be cloned"); + }, `attachShadow with clonable: ${clonable}`); +} + +test(() => { + const div = document.createElement("div"); + div.setHTMLUnsafe('
'); + const root = div.firstElementChild.shadowRoot; + assert_true(!!root); + assert_true(root.clonable, "clonable is automatically true for declarative shadow root"); + + const cloned = div.cloneNode(true); + const clonedRoot = cloned.firstElementChild.shadowRoot; + assert_true(!!clonedRoot); + assert_equals(clonedRoot.children.length, 1, "children count"); + assert_equals(clonedRoot.children[0].localName, "input", "children content"); +}, "declarative shadow roots get clonable: true automatically");