mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-28 14:43:28 +00:00
dom: element: add wpt test
This commit is contained in:
58
tests/wpt/dom/nodes/Element-children.html
Normal file
58
tests/wpt/dom/nodes/Element-children.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html>
|
||||
<title>HTMLCollection edge cases</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<div id="test"><img><img id=foo><img id=foo><img name="bar"></div>
|
||||
<script>
|
||||
setup(function() {
|
||||
// Add some non-HTML elements in there to test what happens with those.
|
||||
var container = document.getElementById("test");
|
||||
var child = document.createElementNS("", "img");
|
||||
child.setAttribute("id", "baz");
|
||||
container.appendChild(child);
|
||||
|
||||
child = document.createElementNS("", "img");
|
||||
child.setAttribute("name", "qux");
|
||||
container.appendChild(child);
|
||||
});
|
||||
|
||||
test(function() {
|
||||
var container = document.getElementById("test");
|
||||
var result = container.children.item("foo");
|
||||
assert_true(result instanceof Element, "Expected an Element.");
|
||||
assert_false(result.hasAttribute("id"), "Expected the IDless Element.")
|
||||
})
|
||||
|
||||
test(function() {
|
||||
var container = document.getElementById("test");
|
||||
var list = container.children;
|
||||
var result = [];
|
||||
for (var p in list) {
|
||||
if (list.hasOwnProperty(p)) {
|
||||
result.push(p);
|
||||
}
|
||||
}
|
||||
assert_array_equals(result, ['0', '1', '2', '3', '4', '5']);
|
||||
result = Object.getOwnPropertyNames(list);
|
||||
assert_array_equals(result, ['0', '1', '2', '3', '4', '5', 'foo', 'bar', 'baz']);
|
||||
|
||||
// Mapping of exposed names to their indices in the list.
|
||||
var exposedNames = { 'foo': 1, 'bar': 3, 'baz': 4 };
|
||||
for (var exposedName in exposedNames) {
|
||||
assert_true(exposedName in list);
|
||||
assert_true(list.hasOwnProperty(exposedName));
|
||||
assert_equals(list[exposedName], list.namedItem(exposedName));
|
||||
assert_equals(list[exposedName], list.item(exposedNames[exposedName]));
|
||||
assert_true(list[exposedName] instanceof Element);
|
||||
}
|
||||
|
||||
var unexposedNames = ['qux'];
|
||||
for (var unexposedName of unexposedNames) {
|
||||
assert_false(unexposedName in list);
|
||||
assert_false(list.hasOwnProperty(unexposedName));
|
||||
assert_equals(list[unexposedName], undefined);
|
||||
assert_equals(list.namedItem(unexposedName), null);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
43
tests/wpt/dom/nodes/Element-getElementsByClassName.html
Normal file
43
tests/wpt/dom/nodes/Element-getElementsByClassName.html
Normal file
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<title>Element.getElementsByClassName</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
test(function() {
|
||||
var a = document.createElement("a"), b = document.createElement("b")
|
||||
b.className = "foo"
|
||||
a.appendChild(b)
|
||||
var list = a.getElementsByClassName("foo")
|
||||
assert_array_equals(list, [b])
|
||||
var secondList = a.getElementsByClassName("foo")
|
||||
assert_true(list === secondList || list !== secondList, "Caching is allowed.")
|
||||
}, "getElementsByClassName should work on disconnected subtrees.")
|
||||
|
||||
test(function() {
|
||||
var list = document.getElementsByClassName("foo")
|
||||
assert_false(list instanceof NodeList, "NodeList")
|
||||
assert_true(list instanceof HTMLCollection, "HTMLCollection")
|
||||
}, "Interface should be correct.")
|
||||
|
||||
test(function() {
|
||||
var a = document.createElement("a");
|
||||
var b = document.createElement("b");
|
||||
var c = document.createElement("c");
|
||||
b.className = "foo";
|
||||
document.body.appendChild(a);
|
||||
this.add_cleanup(function() {document.body.removeChild(a)});
|
||||
a.appendChild(b);
|
||||
|
||||
var l = a.getElementsByClassName("foo");
|
||||
assert_true(l instanceof HTMLCollection);
|
||||
assert_equals(l.length, 1);
|
||||
|
||||
c.className = "foo";
|
||||
a.appendChild(c);
|
||||
assert_equals(l.length, 2);
|
||||
|
||||
a.removeChild(c);
|
||||
assert_equals(l.length, 1);
|
||||
}, "getElementsByClassName() should be a live collection");
|
||||
</script>
|
||||
@@ -0,0 +1 @@
|
||||
<root/>
|
||||
@@ -0,0 +1,51 @@
|
||||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title></title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<iframe src="Element-getElementsByTagName-change-document-HTMLNess-iframe.xml"></iframe>
|
||||
<script>
|
||||
setup({ single_test: true });
|
||||
onload = function() {
|
||||
var parent = document.createElement("div");
|
||||
var child1 = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
|
||||
child1.textContent = "xhtml:a";
|
||||
var child2 = document.createElementNS("http://www.w3.org/1999/xhtml", "A");
|
||||
child2.textContent = "xhtml:A";
|
||||
var child3 = document.createElementNS("", "a");
|
||||
child3.textContent = "a";
|
||||
var child4 = document.createElementNS("", "A");
|
||||
child4.textContent = "A";
|
||||
|
||||
parent.appendChild(child1);
|
||||
parent.appendChild(child2);
|
||||
parent.appendChild(child3);
|
||||
parent.appendChild(child4);
|
||||
|
||||
var list = parent.getElementsByTagName("A");
|
||||
assert_array_equals(list, [child1, child4],
|
||||
"In an HTML document, should lowercase the tagname passed in for HTML " +
|
||||
"elements only");
|
||||
|
||||
frames[0].document.documentElement.appendChild(parent);
|
||||
assert_array_equals(list, [child1, child4],
|
||||
"After changing document, should still be lowercasing for HTML");
|
||||
|
||||
assert_array_equals(parent.getElementsByTagName("A"),
|
||||
[child2, child4],
|
||||
"New list with same root and argument should not be lowercasing now");
|
||||
|
||||
// Now reinsert all those nodes into the parent, to blow away caches.
|
||||
parent.appendChild(child1);
|
||||
parent.appendChild(child2);
|
||||
parent.appendChild(child3);
|
||||
parent.appendChild(child4);
|
||||
assert_array_equals(list, [child1, child4],
|
||||
"After blowing away caches, should still have the same list");
|
||||
|
||||
assert_array_equals(parent.getElementsByTagName("A"),
|
||||
[child2, child4],
|
||||
"New list with same root and argument should still not be lowercasing");
|
||||
done();
|
||||
}
|
||||
</script>
|
||||
30
tests/wpt/dom/nodes/Element-getElementsByTagName.html
Normal file
30
tests/wpt/dom/nodes/Element-getElementsByTagName.html
Normal file
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Element.getElementsByTagName</title>
|
||||
<link rel=help href="https://dom.spec.whatwg.org/#dom-element-getelementsbytagname">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="Document-Element-getElementsByTagName.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
var element;
|
||||
setup(function() {
|
||||
element = document.createElement("div");
|
||||
element.appendChild(document.createTextNode("text"));
|
||||
var p = element.appendChild(document.createElement("p"));
|
||||
p.appendChild(document.createElement("a"))
|
||||
.appendChild(document.createTextNode("link"));
|
||||
p.appendChild(document.createElement("b"))
|
||||
.appendChild(document.createTextNode("bold"));
|
||||
p.appendChild(document.createElement("em"))
|
||||
.appendChild(document.createElement("u"))
|
||||
.appendChild(document.createTextNode("emphasized"));
|
||||
element.appendChild(document.createComment("comment"));
|
||||
});
|
||||
|
||||
test_getElementsByTagName(element, element);
|
||||
|
||||
test(function() {
|
||||
assert_array_equals(element.getElementsByTagName(element.localName), []);
|
||||
}, "Matching the context object");
|
||||
</script>
|
||||
37
tests/wpt/dom/nodes/Element-getElementsByTagNameNS.html
Normal file
37
tests/wpt/dom/nodes/Element-getElementsByTagNameNS.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Element.getElementsByTagNameNS</title>
|
||||
<link rel=help href="https://dom.spec.whatwg.org/#dom-element-getelementsbytagnamens">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="Document-Element-getElementsByTagNameNS.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
var element;
|
||||
setup(function() {
|
||||
element = document.createElement("div");
|
||||
element.appendChild(document.createTextNode("text"));
|
||||
var p = element.appendChild(document.createElement("p"));
|
||||
p.appendChild(document.createElement("a"))
|
||||
.appendChild(document.createTextNode("link"));
|
||||
p.appendChild(document.createElement("b"))
|
||||
.appendChild(document.createTextNode("bold"));
|
||||
p.appendChild(document.createElement("em"))
|
||||
.appendChild(document.createElement("u"))
|
||||
.appendChild(document.createTextNode("emphasized"));
|
||||
element.appendChild(document.createComment("comment"));
|
||||
});
|
||||
|
||||
test_getElementsByTagNameNS(element, element);
|
||||
|
||||
test(function() {
|
||||
assert_array_equals(element.getElementsByTagNameNS("*", element.localName), []);
|
||||
}, "Matching the context object (wildcard namespace)");
|
||||
|
||||
test(function() {
|
||||
assert_array_equals(
|
||||
element.getElementsByTagNameNS("http://www.w3.org/1999/xhtml",
|
||||
element.localName),
|
||||
[]);
|
||||
}, "Matching the context object (specific namespace)");
|
||||
</script>
|
||||
Reference in New Issue
Block a user