Status: FAIL | Duration: 51ms | Subtests: 0/1 | Open test on wpt.live | wpt.fyi
/css/cssom-view/elementsFromPoint-shadowroot.html
<!DOCTYPE HTML> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="resources/elementsFromPoint.js"></script> <style> html, body { margin: 0; padding: 0; } body { height: 500px; } </style> <body> <div id="host"></div> <div id="blockHost"></div> <span id="inlineBlockHost" style="display:inline-block;"></span> <input type="submit" id="submit"> <script> function assertElementsFromPoint(doc, x, y, expected) { var query = doc + '.elementsFromPoint(' + x + ',' + y + ')'; var sequence = eval(query); assert_equals(nodeListToString(sequence), nodeListToString(expected), query); } function createBox(id) { var div = document.createElement('div'); div.id = id; div.style.width = '100px'; div.style.height = '10px'; return div; } function centerX(element) { return element.offsetLeft + element.offsetWidth / 2; } function centerY(element) { return element.offsetTop + element.offsetHeight / 2; } var shadowRoot = host.attachShadow({mode: 'closed'}); var box11 = createBox('box11'); var box12 = createBox('box12'); var box13 = createBox('box13'); shadowRoot.appendChild(box11); shadowRoot.appendChild(box12); shadowRoot.appendChild(box13); var nestedHost = document.createElement('div'); var nestedShadowRoot = nestedHost.attachShadow({mode: 'closed'}); var box21 = createBox('box21'); var box22 = createBox('box22'); var box23 = createBox('box23'); nestedShadowRoot.appendChild(box21); nestedShadowRoot.appendChild(box22); nestedShadowRoot.appendChild(box23); shadowRoot.appendChild(nestedHost); var x12 = centerX(box12); var y12 = centerY(box12); var x22 = centerX(box22); var y22 = centerY(box22); test(function() { assert_throws_js(TypeError, function() { shadowRoot.elementsFromPoint(); }); assert_throws_js(TypeError, function() { shadowRoot.elementsFromPoint(0); }); }, 'elementsFromPoint() should throw TypeError with invalid arguments'); var root3 = blockHost.attachShadow({mode: 'closed'}); root3.appendChild(document.createTextNode('text1')); var root4 = inlineBlockHost.attachShadow({mode: 'closed'}); root4.appendChild(document.createTextNode('text2')); test(function() { assertElementsFromPoint('document', x22, y22, [host, document.body, document.documentElement]); assertElementsFromPoint('document', centerX(blockHost), centerY(blockHost), [blockHost, document.body, document.documentElement]); assertElementsFromPoint('document', centerX(inlineBlockHost), centerY(inlineBlockHost), [inlineBlockHost, document.body, document.documentElement]); assertElementsFromPoint('document', centerX(submit), centerY(submit), [submit, document.body, document.documentElement]); }, 'elementsFromPoint on the document root should not return elements in shadow trees'); test(function() { assert_not_equals(shadowRoot.elementsFromPoint(x12, y12).indexOf(box12), -1); assert_not_equals(shadowRoot.elementsFromPoint(x22, y22).indexOf(nestedHost), -1); assert_not_equals(nestedShadowRoot.elementsFromPoint(x22, y22).indexOf(box22), -1); }, 'elementsFromPoint on a shadow root should include elements in that shadow tree'); </script> </body>