mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 22:48:11 +00:00

While looking into getting Duck Duck Go loading further in the Browser, I noticed that it was complaining about the missing method Node.compareDocumentPosition. This change implements as much of the DOM spec as possible with the current implementation of the DOM to date. The implementation is validated by new tests in the Node.js.
62 lines
2.5 KiB
JavaScript
62 lines
2.5 KiB
JavaScript
loadPage("file:///res/html/misc/innertext_textcontent.html");
|
|
|
|
afterInitialPageLoad(() => {
|
|
test("Node.textContent", () => {
|
|
var p = document.getElementsByTagName("p")[0];
|
|
expect(p.textContent).toBe("This is a very small test page :^)");
|
|
expect(p.firstChild.textContent).toBe("This is a ");
|
|
expect(p.firstChild.firstChild).toBe(null);
|
|
|
|
p.firstChild.textContent = "foo";
|
|
expect(p.firstChild.textContent).toBe("foo");
|
|
expect(p.firstChild.firstChild).toBe(null);
|
|
expect(p.textContent).toBe("foovery small test page :^)");
|
|
|
|
p.textContent = "bar";
|
|
expect(p.textContent).toBe("bar");
|
|
expect(p.firstChild.textContent).toBe("bar");
|
|
expect(p.firstChild.firstChild).toBe(null);
|
|
|
|
var p = document.getElementById("source");
|
|
expect(p.textContent).toBe(`
|
|
#source { color: red; } #text { text-transform: uppercase; }
|
|
Take a look athow this textis interpreted
|
|
below.
|
|
HIDDEN TEXT
|
|
`);
|
|
});
|
|
|
|
test("Node.isConnected", () => {
|
|
var element = document.createElement("p");
|
|
expect(element.isConnected).toBeFalse();
|
|
|
|
document.body.appendChild(element);
|
|
expect(element.isConnected).toBeTrue();
|
|
|
|
document.body.removeChild(element);
|
|
expect(element.isConnected).toBeFalse();
|
|
});
|
|
|
|
test("Node.compareDocumentPosition()", () => {
|
|
const head = document.head;
|
|
const body = document.body;
|
|
|
|
expect(head.compareDocumentPosition(head)).toBe(0);
|
|
|
|
// FIXME: Can be uncommented once the IDL parser correctly implements nullable paramaters.
|
|
// expect(head.compareDocumentPosition(null) & Node.DOCUMENT_POSITION_DISCONNECTED | Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC).
|
|
// toBe(Node.DOCUMENT_POSITION_DISCONNECTED | Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);
|
|
|
|
expect(head.compareDocumentPosition(body)).toBe(Node.DOCUMENT_POSITION_FOLLOWING);
|
|
expect(body.compareDocumentPosition(head)).toBe(Node.DOCUMENT_POSITION_PRECEDING);
|
|
|
|
const source = document.getElementById("source");
|
|
expect(source.compareDocumentPosition(body)).toBe(
|
|
Node.DOCUMENT_POSITION_CONTAINS | Node.DOCUMENT_POSITION_PRECEDING
|
|
);
|
|
expect(body.compareDocumentPosition(source)).toBe(
|
|
Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_FOLLOWING
|
|
);
|
|
expect(source.compareDocumentPosition(head)).toBe(Node.DOCUMENT_POSITION_PRECEDING);
|
|
});
|
|
});
|