Skip to content

Commit 2522e7f

Browse files
authored
Merge pull request #1011 from lightpanda-io/migrate_some_tests_5
migrate to htmlRunne (plus zig fmt)
2 parents 5087b80 + dd22c55 commit 2522e7f

File tree

14 files changed

+330
-362
lines changed

14 files changed

+330
-362
lines changed

src/browser/dom/document.zig

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -316,20 +316,4 @@ pub const Document = struct {
316316
const testing = @import("../../testing.zig");
317317
test "Browser: DOM.Document" {
318318
try testing.htmlRunner("dom/document.html");
319-
320-
// const Case = testing.JsRunner.Case;
321-
// const tags = comptime parser.Tag.all();
322-
// var createElements: [(tags.len) * 2]Case = undefined;
323-
// inline for (tags, 0..) |tag, i| {
324-
// const tag_name = @tagName(tag);
325-
// createElements[i * 2] = Case{
326-
// "var " ++ tag_name ++ "Elem = document.createElement('" ++ tag_name ++ "')",
327-
// "undefined",
328-
// };
329-
// createElements[(i * 2) + 1] = Case{
330-
// tag_name ++ "Elem.localName",
331-
// tag_name,
332-
// };
333-
// }
334-
// try runner.testCases(&createElements, .{});
335319
}

src/browser/dom/document_fragment.zig

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -91,41 +91,6 @@ pub const DocumentFragment = struct {
9191
};
9292

9393
const testing = @import("../../testing.zig");
94-
test "Browser.DOM.DocumentFragment" {
95-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
96-
defer runner.deinit();
97-
98-
try runner.testCases(&.{
99-
.{ "const dc = new DocumentFragment()", "undefined" },
100-
.{ "dc.constructor.name", "DocumentFragment" },
101-
}, .{});
102-
103-
try runner.testCases(&.{
104-
.{ "const dc1 = new DocumentFragment()", "undefined" },
105-
.{ "const dc2 = new DocumentFragment()", "undefined" },
106-
.{ "dc1.isEqualNode(dc1)", "true" },
107-
.{ "dc1.isEqualNode(dc2)", "true" },
108-
}, .{});
109-
110-
try runner.testCases(&.{
111-
.{ "let f = document.createDocumentFragment()", null },
112-
.{ "let d = document.createElement('div');", null },
113-
.{ "d.childElementCount", "0" },
114-
115-
.{ "d.id = 'x';", null },
116-
.{ "document.getElementById('x') == null;", "true" },
117-
.{ "f.append(d);", null },
118-
.{ "f.childElementCount", "1" },
119-
.{ "f.children[0].id", "x" },
120-
.{ "document.getElementById('x') == null;", "true" },
121-
122-
.{ "document.getElementsByTagName('body')[0].append(f.cloneNode(true));", null },
123-
.{ "document.getElementById('x') != null;", "true" },
124-
125-
.{ "document.querySelector('.hello')", "null" },
126-
.{ "document.querySelectorAll('.hello').length", "0" },
127-
128-
.{ "document.querySelector('#x').id", "x" },
129-
.{ "document.querySelectorAll('#x')[0].id", "x" },
130-
}, .{});
94+
test "Browser: DOM.DocumentFragment" {
95+
try testing.htmlRunner("dom/document_fragment.html");
13196
}

src/browser/dom/document_type.zig

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,6 @@ pub const DocumentType = struct {
6262
};
6363

6464
const testing = @import("../../testing.zig");
65-
test "Browser.DOM.DocumentType" {
66-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
67-
defer runner.deinit();
68-
69-
try runner.testCases(&.{
70-
.{ "let dt1 = document.implementation.createDocumentType('qname1', 'pid1', 'sys1');", "undefined" },
71-
.{ "let dt2 = document.implementation.createDocumentType('qname2', 'pid2', 'sys2');", "undefined" },
72-
.{ "let dt3 = document.implementation.createDocumentType('qname1', 'pid1', 'sys1');", "undefined" },
73-
.{ "dt1.isEqualNode(dt1)", "true" },
74-
.{ "dt1.isEqualNode(dt3)", "true" },
75-
.{ "dt1.isEqualNode(dt2)", "false" },
76-
.{ "dt2.isEqualNode(dt3)", "false" },
77-
.{ "dt1.isEqualNode(document)", "false" },
78-
.{ "document.isEqualNode(dt1)", "false" },
79-
}, .{});
65+
test "Browser: DOM.DocumentType" {
66+
try testing.htmlRunner("dom/document_type.html");
8067
}

src/browser/dom/dom_parser.zig

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,6 @@ pub const DOMParser = struct {
3636
};
3737

3838
const testing = @import("../../testing.zig");
39-
test "Browser.DOM.DOMParser" {
40-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
41-
defer runner.deinit();
42-
43-
try runner.testCases(&.{
44-
.{ "const dp = new DOMParser()", "undefined" },
45-
.{ "dp.parseFromString('<div>abc</div>', 'text/html')", "[object HTMLDocument]" },
46-
}, .{});
39+
test "Browser: DOM.Parser" {
40+
try testing.htmlRunner("dom/dom_parser.html");
4741
}

src/browser/dom/element.zig

Lines changed: 2 additions & 273 deletions
Original file line numberDiff line numberDiff line change
@@ -593,277 +593,6 @@ pub const Element = struct {
593593
// -----
594594

595595
const testing = @import("../../testing.zig");
596-
test "Browser.DOM.Element" {
597-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
598-
defer runner.deinit();
599-
600-
try runner.testCases(&.{
601-
.{ "let g = document.getElementById('content')", "undefined" },
602-
.{ "g.namespaceURI", "http://www.w3.org/1999/xhtml" },
603-
.{ "g.prefix", "null" },
604-
.{ "g.localName", "div" },
605-
.{ "g.tagName", "DIV" },
606-
}, .{});
607-
608-
try runner.testCases(&.{
609-
.{ "let gs = document.getElementById('content')", "undefined" },
610-
.{ "gs.id", "content" },
611-
.{ "gs.id = 'foo'", "foo" },
612-
.{ "gs.id", "foo" },
613-
.{ "gs.id = 'content'", "content" },
614-
.{ "gs.className", "" },
615-
.{ "let gs2 = document.getElementById('para-empty')", "undefined" },
616-
.{ "gs2.className", "ok empty" },
617-
.{ "gs2.className = 'foo bar baz'", "foo bar baz" },
618-
.{ "gs2.className", "foo bar baz" },
619-
.{ "gs2.className = 'ok empty'", "ok empty" },
620-
.{ "let cl = gs2.classList", "undefined" },
621-
.{ "cl.length", "2" },
622-
}, .{});
623-
624-
try runner.testCases(&.{
625-
.{ "const el2 = document.createElement('div');", "undefined" },
626-
.{ "el2.id = 'closest'; el2.className = 'ok';", "ok" },
627-
.{ "el2.closest('#closest')", "[object HTMLDivElement]" },
628-
.{ "el2.closest('.ok')", "[object HTMLDivElement]" },
629-
.{ "el2.closest('#9000')", "null" },
630-
.{ "el2.closest('.notok')", "null" },
631-
632-
.{ "const sp = document.createElement('span');", "undefined" },
633-
.{ "el2.appendChild(sp);", "[object HTMLSpanElement]" },
634-
.{ "sp.closest('#closest')", "[object HTMLDivElement]" },
635-
.{ "sp.closest('#9000')", "null" },
636-
}, .{});
637-
638-
try runner.testCases(&.{
639-
.{ "let a = document.getElementById('content')", "undefined" },
640-
.{ "a.hasAttributes()", "true" },
641-
.{ "a.attributes.length", "1" },
642-
.{ "a.getAttributeNames()", "id" },
643-
.{ "a.getAttribute('id')", "content" },
644-
.{ "a.attributes['id'].value", "content" },
645-
.{
646-
\\ let x = '';
647-
\\ for (const attr of a.attributes) {
648-
\\ x += attr.name + '=' + attr.value;
649-
\\ }
650-
\\ x;
651-
,
652-
"id=content",
653-
},
654-
655-
.{ "a.hasAttribute('foo')", "false" },
656-
.{ "a.getAttribute('foo')", "null" },
657-
658-
.{ "a.setAttribute('foo', 'bar')", "undefined" },
659-
.{ "a.hasAttribute('foo')", "true" },
660-
.{ "a.getAttribute('foo')", "bar" },
661-
.{ "a.getAttributeNames()", "id,foo" },
662-
.{ " try { a.setAttribute('.foo', 'invalid') } catch (e) { e }", "Error: InvalidCharacterError" },
663-
664-
.{ "a.setAttribute('foo', 'baz')", "undefined" },
665-
.{ "a.hasAttribute('foo')", "true" },
666-
.{ "a.getAttribute('foo')", "baz" },
667-
668-
.{ "a.removeAttribute('foo')", "undefined" },
669-
.{ "a.hasAttribute('foo')", "false" },
670-
.{ "a.getAttribute('foo')", "null" },
671-
}, .{});
672-
673-
try runner.testCases(&.{
674-
.{ "let b = document.getElementById('content')", "undefined" },
675-
.{ "b.toggleAttribute('foo')", "true" },
676-
.{ "b.hasAttribute('foo')", "true" },
677-
.{ "b.getAttribute('foo')", "" },
678-
679-
.{ "b.toggleAttribute('foo')", "false" },
680-
.{ "b.hasAttribute('foo')", "false" },
681-
}, .{});
682-
683-
try runner.testCases(&.{
684-
.{ "let c = document.getElementById('content')", "undefined" },
685-
.{ "c.children.length", "3" },
686-
.{ "c.firstElementChild.nodeName", "A" },
687-
.{ "c.lastElementChild.nodeName", "P" },
688-
.{ "c.childElementCount", "3" },
689-
690-
.{ "c.prepend(document.createTextNode('foo'))", "undefined" },
691-
.{ "c.append(document.createTextNode('bar'))", "undefined" },
692-
}, .{});
693-
694-
try runner.testCases(&.{
695-
.{ "let d = document.getElementById('para')", "undefined" },
696-
.{ "d.previousElementSibling.nodeName", "P" },
697-
.{ "d.nextElementSibling", "null" },
698-
}, .{});
699-
700-
try runner.testCases(&.{
701-
.{ "let e = document.getElementById('content')", "undefined" },
702-
.{ "e.querySelector('foo')", "null" },
703-
.{ "e.querySelector('#foo')", "null" },
704-
.{ "e.querySelector('#link').id", "link" },
705-
.{ "e.querySelector('#para').id", "para" },
706-
.{ "e.querySelector('*').id", "link" },
707-
.{ "e.querySelector('')", "null" },
708-
.{ "e.querySelector('*').id", "link" },
709-
.{ "e.querySelector('#content')", "null" },
710-
.{ "e.querySelector('#para').id", "para" },
711-
.{ "e.querySelector('.ok').id", "link" },
712-
.{ "e.querySelector('a ~ p').id", "para-empty" },
713-
714-
.{ "e.querySelectorAll('foo').length", "0" },
715-
.{ "e.querySelectorAll('#foo').length", "0" },
716-
.{ "e.querySelectorAll('#link').length", "1" },
717-
.{ "e.querySelectorAll('#link').item(0).id", "link" },
718-
.{ "e.querySelectorAll('#para').length", "1" },
719-
.{ "e.querySelectorAll('#para').item(0).id", "para" },
720-
.{ "e.querySelectorAll('*').length", "4" },
721-
.{ "e.querySelectorAll('p').length", "2" },
722-
.{ "e.querySelectorAll('.ok').item(0).id", "link" },
723-
}, .{});
724-
725-
try runner.testCases(&.{
726-
.{ "let f = document.getElementById('content')", "undefined" },
727-
.{ "let ff = document.createAttribute('foo')", "undefined" },
728-
.{ "f.setAttributeNode(ff)", "null" },
729-
.{ "f.getAttributeNode('foo').name", "foo" },
730-
.{ "f.removeAttributeNode(ff).name", "foo" },
731-
.{ "f.getAttributeNode('bar')", "null" },
732-
}, .{});
733-
734-
try runner.testCases(&.{
735-
.{ "document.getElementById('para').innerHTML", " And" },
736-
.{ "document.getElementById('para-empty').innerHTML.trim()", "<span id=\"para-empty-child\"></span>" },
737-
738-
.{ "let h = document.getElementById('para-empty')", "undefined" },
739-
.{ "const prev = h.innerHTML", "undefined" },
740-
.{ "h.innerHTML = '<p id=\"hello\">hello world</p>'", "<p id=\"hello\">hello world</p>" },
741-
.{ "h.innerHTML", "<p id=\"hello\">hello world</p>" },
742-
.{ "h.firstChild.nodeName", "P" },
743-
.{ "h.firstChild.id", "hello" },
744-
.{ "h.firstChild.textContent", "hello world" },
745-
.{ "h.innerHTML = prev; true", "true" },
746-
.{ "document.getElementById('para-empty').innerHTML.trim()", "<span id=\"para-empty-child\"></span>" },
747-
}, .{});
748-
749-
try runner.testCases(&.{
750-
.{ "document.getElementById('para').outerHTML", "<p id=\"para\"> And</p>" },
751-
}, .{});
752-
753-
try runner.testCases(&.{
754-
.{ "document.getElementById('para').clientWidth", "1" },
755-
.{ "document.getElementById('para').clientHeight", "1" },
756-
757-
.{ "let r1 = document.getElementById('para').getBoundingClientRect()", "undefined" },
758-
.{ "r1.x", "0" },
759-
.{ "r1.y", "0" },
760-
.{ "r1.width", "1" },
761-
.{ "r1.height", "1" },
762-
763-
.{ "let r2 = document.getElementById('content').getBoundingClientRect()", "undefined" },
764-
.{ "r2.x", "1" },
765-
.{ "r2.y", "0" },
766-
.{ "r2.width", "1" },
767-
.{ "r2.height", "1" },
768-
769-
.{ "let r3 = document.getElementById('para').getBoundingClientRect()", "undefined" },
770-
.{ "r3.x", "0" },
771-
.{ "r3.y", "0" },
772-
.{ "r3.width", "1" },
773-
.{ "r3.height", "1" },
774-
775-
.{ "document.getElementById('para').clientWidth", "2" },
776-
.{ "document.getElementById('para').clientHeight", "1" },
777-
778-
.{ "let r4 = document.createElement('div').getBoundingClientRect()", null },
779-
.{ "r4.x", "0" },
780-
.{ "r4.y", "0" },
781-
.{ "r4.width", "0" },
782-
.{ "r4.height", "0" },
783-
784-
// Test setup causes WrongDocument or HierarchyRequest error unlike in chrome/firefox
785-
// .{ // An element of another document, even if created from the main document, is not rendered.
786-
// \\ let div5 = document.createElement('div');
787-
// \\ const newDoc = document.implementation.createHTMLDocument("New Document");
788-
// \\ newDoc.body.appendChild(div5);
789-
// \\ let r5 = div5.getBoundingClientRect();
790-
// ,
791-
// null,
792-
// },
793-
// .{ "r5.x", "0" },
794-
// .{ "r5.y", "0" },
795-
// .{ "r5.width", "0" },
796-
// .{ "r5.height", "0" },
797-
}, .{});
798-
799-
try runner.testCases(&.{
800-
.{ "const el = document.createElement('div');", "undefined" },
801-
.{ "el.id = 'matches'; el.className = 'ok';", "ok" },
802-
.{ "el.matches('#matches')", "true" },
803-
.{ "el.matches('.ok')", "true" },
804-
.{ "el.matches('#9000')", "false" },
805-
.{ "el.matches('.notok')", "false" },
806-
}, .{});
807-
808-
try runner.testCases(&.{
809-
.{ "const el3 = document.createElement('div');", "undefined" },
810-
.{ "el3.scrollIntoViewIfNeeded();", "undefined" },
811-
.{ "el3.scrollIntoViewIfNeeded(false);", "undefined" },
812-
}, .{});
813-
814-
// before
815-
try runner.testCases(&.{
816-
.{ "const before_container = document.createElement('div');", "undefined" },
817-
.{ "document.append(before_container);", "undefined" },
818-
.{ "const b1 = document.createElement('div');", "undefined" },
819-
.{ "before_container.append(b1);", "undefined" },
820-
821-
.{ "const b1_a = document.createElement('p');", "undefined" },
822-
.{ "b1.before(b1_a, 'over 9000');", "undefined" },
823-
.{ "before_container.innerHTML", "<p></p>over 9000<div></div>" },
824-
}, .{});
825-
826-
// after
827-
try runner.testCases(&.{
828-
.{ "const after_container = document.createElement('div');", "undefined" },
829-
.{ "document.append(after_container);", "undefined" },
830-
.{ "const a1 = document.createElement('div');", "undefined" },
831-
.{ "after_container.append(a1);", "undefined" },
832-
833-
.{ "const a1_a = document.createElement('p');", "undefined" },
834-
.{ "a1.after('over 9000', a1_a);", "undefined" },
835-
.{ "after_container.innerHTML", "<div></div>over 9000<p></p>" },
836-
}, .{});
837-
838-
try runner.testCases(&.{
839-
.{ "var div1 = document.createElement('div');", null },
840-
.{ "div1.innerHTML = \" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\"", null },
841-
.{ "div1.getElementsByTagName('a').length", "1" },
842-
}, .{});
843-
844-
try runner.testCases(&.{
845-
.{ "document.createElement('a').hasAttributes()", "false" },
846-
.{ "var fc; (fc = document.createElement('div')).innerHTML = '<script><\\/script>'", null },
847-
.{ "fc.outerHTML", "<div><script></script></div>" },
848-
849-
.{ "fc; (fc = document.createElement('div')).innerHTML = '<script><\\/script><p>hello</p>'", null },
850-
.{ "fc.outerHTML", "<div><script></script><p>hello</p></div>" },
851-
}, .{});
852-
853-
try runner.testCases(&.{
854-
.{ "const rm = document.createElement('div')", null },
855-
.{ "rm.getAttributeNames()", "" },
856-
.{ "rm.id = 'to-remove'", null },
857-
.{ "document.getElementsByTagName('body')[0].appendChild(rm)", null },
858-
.{ "document.getElementById('to-remove') != null", "true" },
859-
.{ "rm.remove()", "undefined" },
860-
.{ "document.getElementById('to-remove') != null", "false" },
861-
}, .{});
862-
863-
try runner.testCases(&.{
864-
.{ "const div2 = document.createElement('div');", null },
865-
.{ "div2.innerHTML = '<p id=1 .lit$id=9>a</p>';", null },
866-
.{ "div2.innerHTML", "<p id=\"1\" .lit$id=\"9\">a</p>" },
867-
.{ "div2.childNodes[0].getAttributeNames()", "id,.lit$id" },
868-
}, .{});
596+
test "Browser: DOM.Element" {
597+
try testing.htmlRunner("dom/element.html");
869598
}

src/browser/page.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ pub const Page = struct {
350350
// Look, we want to exit ASAP, but we don't want
351351
// to exit so fast that we've run none of the
352352
// background jobs.
353-
break :blk 50;
353+
break :blk if (comptime builtin.is_test) 5 else 50;
354354
}
355355
// No http transfers, no cdp extra socket, no
356356
// scheduled tasks, we're done.
@@ -397,7 +397,7 @@ pub const Page = struct {
397397
// we _could_ http_client.tick(ms_to_wait), but this has
398398
// the same result, and I feel is more correct.
399399
return .no_page;
400-
}
400+
},
401401
}
402402

403403
const ms_elapsed = timer.lap() / 1_000_000;

0 commit comments

Comments
 (0)