diff --git a/Userland/Libraries/LibWeb/Tests/HTML/HTMLTableElement.js b/Userland/Libraries/LibWeb/Tests/HTML/HTMLTableElement.js new file mode 100644 index 0000000000..11d31e4e5c --- /dev/null +++ b/Userland/Libraries/LibWeb/Tests/HTML/HTMLTableElement.js @@ -0,0 +1,118 @@ +loadPage("file:///home/anon/web-tests/Pages/Table.html"); + +afterInitialPageLoad(() => { + test("empty table attributes", () => { + let table = document.getElementById("empty-table"); + expect(table).not.toBeNull(); + + expect(table.caption).toBe(null); + expect(table.tHead).toBe(null); + expect(table.tFoot).toBe(null); + + expect(table.tBodies).toHaveLength(0); + expect(table.rows).toHaveLength(0); + }); + + test("full table attributes", () => { + let table = document.getElementById("full-table"); + expect(table).not.toBeNull(); + + expect(table.caption.nodeName).toBe("CAPTION"); + expect(table.tHead.nodeName).toBe("THEAD"); + expect(table.tFoot.nodeName).toBe("TFOOT"); + + expect(table.tBodies.length).toBe(1); + expect(table.rows.length).toBe(3); + }); + + test("create/delete caption", () => { + let table = document.createElement("table"); + expect(table).not.toBeNull(); + + expect(table.caption).toBeNull(); + table.createCaption(); + expect(table.caption).not.toBeNull(); + table.deleteCaption(); + expect(table.caption).toBeNull(); + }); + + test("create/delete thead", () => { + let table = document.createElement("table"); + expect(table).not.toBeNull(); + + expect(table.tHead).toBeNull(); + table.createTHead(); + expect(table.tHead).not.toBeNull(); + table.deleteTHead(); + expect(table.tHead).toBeNull(); + }); + + test("create/delete tfoot", () => { + let table = document.createElement("table"); + expect(table).not.toBeNull(); + + expect(table.tFoot).toBeNull(); + table.createTFoot(); + expect(table.tFoot).not.toBeNull(); + table.deleteTFoot(); + expect(table.tFoot).toBeNull(); + }); + + test("insert rows", () => { + let table = document.createElement("table"); + expect(table).not.toBeNull(); + + // We hardcode the default value in a few places, due to the WrapperGenerator's bug with default values + const defaultValue = -1; + + expect(table.rows.length).toBe(0); + + // insertRow with an index > number of rows will throw + expect(() => { + table.insertRow(1); + }).toThrow(); + + // Inserting a row into an empty table will create a
andHead Cell | + + +
---|
+ Body Cell + | +
+ Footer Cell + | +