Skip to content

Commit 5087b80

Browse files
authored
Merge pull request #1009 from lightpanda-io/migrate_some_tests_4
migrate to htmlRunner
2 parents d4c4024 + 5af55f1 commit 5087b80

File tree

11 files changed

+301
-333
lines changed

11 files changed

+301
-333
lines changed

src/browser/dom/Animation.zig

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -104,23 +104,6 @@ pub fn _reverse(self: *const Animation) void {
104104
}
105105

106106
const testing = @import("../../testing.zig");
107-
test "Browser.Animation" {
108-
var runner = try testing.jsRunner(testing.tracking_allocator, .{ .html = "" });
109-
defer runner.deinit();
110-
111-
try runner.testCases(&.{
112-
.{ "let a1 = document.createElement('div').animate(null, null)", null },
113-
.{ "a1.playState", "finished" },
114-
.{ "let cb = [];", null },
115-
.{ "a1.ready.then(() => { cb.push('ready') })", null },
116-
.{
117-
\\ a1.finished.then((x) => {
118-
\\ cb.push('finished');
119-
\\ cb.push(x == a1);
120-
\\ })
121-
,
122-
null,
123-
},
124-
.{ "cb", "finished,true" },
125-
}, .{});
107+
test "Browser: DOM.Animation" {
108+
try testing.htmlRunner("dom/animation.html");
126109
}

src/browser/dom/attribute.zig

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -70,32 +70,6 @@ pub const Attr = struct {
7070
// -----
7171

7272
const testing = @import("../../testing.zig");
73-
test "Browser.DOM.Attribute" {
74-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
75-
defer runner.deinit();
76-
77-
try runner.testCases(&.{
78-
.{ "let a = document.createAttributeNS('foo', 'bar')", "undefined" },
79-
.{ "a.namespaceURI", "foo" },
80-
.{ "a.prefix", "null" },
81-
.{ "a.localName", "bar" },
82-
.{ "a.name", "bar" },
83-
.{ "a.value", "" },
84-
// TODO: libdom has a bug here: the created attr has no parent, it
85-
// causes a panic w/ libdom when setting the value.
86-
//.{ "a.value = 'nok'", "nok" },
87-
.{ "a.ownerElement", "null" },
88-
}, .{});
89-
90-
try runner.testCases(&.{
91-
.{ "let b = document.getElementById('link').getAttributeNode('class')", "undefined" },
92-
.{ "b.name", "class" },
93-
.{ "b.value", "ok" },
94-
.{ "b.value = 'nok'", "nok" },
95-
.{ "b.value", "nok" },
96-
.{ "b.value = null", "null" },
97-
.{ "b.value", "null" },
98-
.{ "b.value = 'ok'", "ok" },
99-
.{ "b.ownerElement.id", "link" },
100-
}, .{});
73+
test "Browser: DOM.Attribute" {
74+
try testing.htmlRunner("dom/attribute.html");
10175
}

src/browser/dom/character_data.zig

Lines changed: 2 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -129,69 +129,6 @@ pub const CharacterData = struct {
129129
// -----
130130

131131
const testing = @import("../../testing.zig");
132-
test "Browser.DOM.CharacterData" {
133-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
134-
defer runner.deinit();
135-
136-
try runner.testCases(&.{
137-
.{ "let link = document.getElementById('link')", "undefined" },
138-
.{ "let cdata = link.firstChild", "undefined" },
139-
.{ "cdata.data", "OK" },
140-
}, .{});
141-
142-
try runner.testCases(&.{
143-
.{ "cdata.data = 'OK modified'", "OK modified" },
144-
.{ "cdata.data === 'OK modified'", "true" },
145-
.{ "cdata.data = 'OK'", "OK" },
146-
}, .{});
147-
148-
try runner.testCases(&.{
149-
.{ "cdata.length === 2", "true" },
150-
}, .{});
151-
152-
try runner.testCases(&.{
153-
.{ "cdata.nextElementSibling === null", "true" },
154-
// create a next element
155-
.{ "let next = document.createElement('a')", "undefined" },
156-
.{ "link.appendChild(next, cdata) !== undefined", "true" },
157-
.{ "cdata.nextElementSibling.localName === 'a' ", "true" },
158-
}, .{});
159-
160-
try runner.testCases(&.{
161-
.{ "cdata.previousElementSibling === null", "true" },
162-
// create a prev element
163-
.{ "let prev = document.createElement('div')", "undefined" },
164-
.{ "link.insertBefore(prev, cdata) !== undefined", "true" },
165-
.{ "cdata.previousElementSibling.localName === 'div' ", "true" },
166-
}, .{});
167-
168-
try runner.testCases(&.{
169-
.{ "cdata.appendData(' modified')", "undefined" },
170-
.{ "cdata.data === 'OK modified' ", "true" },
171-
}, .{});
172-
173-
try runner.testCases(&.{
174-
.{ "cdata.deleteData('OK'.length, ' modified'.length)", "undefined" },
175-
.{ "cdata.data == 'OK'", "true" },
176-
}, .{});
177-
178-
try runner.testCases(&.{
179-
.{ "cdata.insertData('OK'.length-1, 'modified')", "undefined" },
180-
.{ "cdata.data == 'OmodifiedK'", "true" },
181-
}, .{});
182-
183-
try runner.testCases(&.{
184-
.{ "cdata.replaceData('OK'.length-1, 'modified'.length, 'replaced')", "undefined" },
185-
.{ "cdata.data == 'OreplacedK'", "true" },
186-
}, .{});
187-
188-
try runner.testCases(&.{
189-
.{ "cdata.substringData('OK'.length-1, 'replaced'.length) == 'replaced'", "true" },
190-
.{ "cdata.substringData('OK'.length-1, 0) == ''", "true" },
191-
}, .{});
192-
193-
try runner.testCases(&.{
194-
.{ "cdata.substringData('OK'.length-1, 'replaced'.length) == 'replaced'", "true" },
195-
.{ "cdata.substringData('OK'.length-1, 0) == ''", "true" },
196-
}, .{});
132+
test "Browser: DOM.CharacterData" {
133+
try testing.htmlRunner("dom/character_data.html");
197134
}

src/browser/dom/comment.zig

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,6 @@ pub const Comment = struct {
4040
// -----
4141

4242
const testing = @import("../../testing.zig");
43-
test "Browser.DOM.Comment" {
44-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
45-
defer runner.deinit();
46-
47-
try runner.testCases(&.{
48-
.{ "let comment = new Comment('foo')", "undefined" },
49-
.{ "comment.data", "foo" },
50-
51-
.{ "let emptycomment = new Comment()", "undefined" },
52-
.{ "emptycomment.data", "" },
53-
}, .{});
43+
test "Browser: DOM.Comment" {
44+
try testing.htmlRunner("dom/comment.html");
5445
}

src/browser/dom/document.zig

Lines changed: 18 additions & 210 deletions
Original file line numberDiff line numberDiff line change
@@ -314,214 +314,22 @@ pub const Document = struct {
314314
};
315315

316316
const testing = @import("../../testing.zig");
317-
test "Browser.DOM.Document" {
318-
var runner = try testing.jsRunner(testing.tracking_allocator, .{
319-
.url = "about:blank",
320-
});
321-
defer runner.deinit();
322-
323-
try runner.testCases(&.{
324-
.{ "document.__proto__.__proto__.constructor.name", "Document" },
325-
.{ "document.__proto__.__proto__.__proto__.constructor.name", "Node" },
326-
.{ "document.__proto__.__proto__.__proto__.__proto__.constructor.name", "EventTarget" },
327-
328-
.{ "let newdoc = new Document()", "undefined" },
329-
.{ "newdoc.documentElement", "null" },
330-
.{ "newdoc.children.length", "0" },
331-
.{ "newdoc.getElementsByTagName('*').length", "0" },
332-
.{ "newdoc.getElementsByTagName('*').item(0)", "null" },
333-
.{ "newdoc.inputEncoding === document.inputEncoding", "true" },
334-
.{ "newdoc.documentURI === document.documentURI", "true" },
335-
.{ "newdoc.URL === document.URL", "true" },
336-
.{ "newdoc.compatMode === document.compatMode", "true" },
337-
.{ "newdoc.characterSet === document.characterSet", "true" },
338-
.{ "newdoc.charset === document.charset", "true" },
339-
.{ "newdoc.contentType === document.contentType", "true" },
340-
}, .{});
341-
342-
try runner.testCases(&.{
343-
.{ "let getElementById = document.getElementById('content')", "undefined" },
344-
.{ "getElementById.constructor.name", "HTMLDivElement" },
345-
.{ "getElementById.localName", "div" },
346-
}, .{});
347-
348-
try runner.testCases(&.{
349-
.{ "let getElementsByTagName = document.getElementsByTagName('p')", "undefined" },
350-
.{ "getElementsByTagName.length", "2" },
351-
.{ "getElementsByTagName.item(0).localName", "p" },
352-
.{ "getElementsByTagName.item(1).localName", "p" },
353-
.{ "let getElementsByTagNameAll = document.getElementsByTagName('*')", "undefined" },
354-
.{ "getElementsByTagNameAll.length", "8" },
355-
.{ "getElementsByTagNameAll.item(0).localName", "html" },
356-
.{ "getElementsByTagNameAll.item(7).localName", "p" },
357-
.{ "getElementsByTagNameAll.namedItem('para-empty-child').localName", "span" },
358-
}, .{});
359-
360-
try runner.testCases(&.{
361-
.{ "let ok = document.getElementsByClassName('ok')", "undefined" },
362-
.{ "ok.length", "2" },
363-
.{ "let empty = document.getElementsByClassName('empty')", "undefined" },
364-
.{ "empty.length", "1" },
365-
.{ "let emptyok = document.getElementsByClassName('empty ok')", "undefined" },
366-
.{ "emptyok.length", "1" },
367-
}, .{});
368-
369-
try runner.testCases(&.{
370-
.{ "let e = document.documentElement", "undefined" },
371-
.{ "e.localName", "html" },
372-
}, .{});
373-
374-
try runner.testCases(&.{
375-
.{ "document.characterSet", "UTF-8" },
376-
.{ "document.charset", "UTF-8" },
377-
.{ "document.inputEncoding", "UTF-8" },
378-
}, .{});
379-
380-
try runner.testCases(&.{
381-
.{ "document.compatMode", "CSS1Compat" },
382-
}, .{});
383-
384-
try runner.testCases(&.{
385-
.{ "document.contentType", "text/html" },
386-
}, .{});
387-
388-
try runner.testCases(&.{
389-
.{ "document.documentURI", "about:blank" },
390-
.{ "document.URL", "about:blank" },
391-
}, .{});
392-
393-
try runner.testCases(&.{
394-
.{ "let impl = document.implementation", "undefined" },
395-
}, .{});
396-
397-
try runner.testCases(&.{
398-
.{ "let d = new Document()", "undefined" },
399-
.{ "d.characterSet", "UTF-8" },
400-
.{ "d.URL", "about:blank" },
401-
.{ "d.documentURI", "about:blank" },
402-
.{ "d.compatMode", "CSS1Compat" },
403-
.{ "d.contentType", "text/html" },
404-
}, .{});
405-
406-
try runner.testCases(&.{
407-
.{ "var v = document.createDocumentFragment()", "undefined" },
408-
.{ "v.nodeName", "#document-fragment" },
409-
}, .{});
410-
411-
try runner.testCases(&.{
412-
.{ "var v = document.createTextNode('foo')", "undefined" },
413-
.{ "v.nodeName", "#text" },
414-
}, .{});
415-
416-
try runner.testCases(&.{
417-
.{ "var v = document.createCDATASection('foo')", "undefined" },
418-
.{ "v.nodeName", "#cdata-section" },
419-
}, .{});
420-
421-
try runner.testCases(&.{
422-
.{ "var v = document.createComment('foo')", "undefined" },
423-
.{ "v.nodeName", "#comment" },
424-
.{ "let v2 = v.cloneNode()", "undefined" },
425-
}, .{});
426-
427-
try runner.testCases(&.{
428-
.{ "let pi = document.createProcessingInstruction('foo', 'bar')", "undefined" },
429-
.{ "pi.target", "foo" },
430-
.{ "let pi2 = pi.cloneNode()", "undefined" },
431-
}, .{});
432-
433-
try runner.testCases(&.{
434-
.{ "let nimp = document.getElementById('content')", "undefined" },
435-
.{ "var v = document.importNode(nimp)", "undefined" },
436-
.{ "v.nodeName", "DIV" },
437-
}, .{});
438-
439-
try runner.testCases(&.{
440-
.{ "var v = document.createAttribute('foo')", "undefined" },
441-
.{ "v.nodeName", "foo" },
442-
}, .{});
443-
444-
try runner.testCases(&.{
445-
.{ "document.children.length", "1" },
446-
.{ "document.children.item(0).nodeName", "HTML" },
447-
.{ "document.firstElementChild.nodeName", "HTML" },
448-
.{ "document.lastElementChild.nodeName", "HTML" },
449-
.{ "document.childElementCount", "1" },
450-
451-
.{ "let nd = new Document()", "undefined" },
452-
.{ "nd.children.length", "0" },
453-
.{ "nd.children.item(0)", "null" },
454-
.{ "nd.firstElementChild", "null" },
455-
.{ "nd.lastElementChild", "null" },
456-
.{ "nd.childElementCount", "0" },
457-
458-
.{ "let emptydoc = document.createElement('html')", "undefined" },
459-
.{ "emptydoc.prepend(document.createElement('html'))", "undefined" },
460-
461-
.{ "let emptydoc2 = document.createElement('html')", "undefined" },
462-
.{ "emptydoc2.append(document.createElement('html'))", "undefined" },
463-
}, .{});
464-
465-
try runner.testCases(&.{
466-
.{ "document.querySelector('')", "null" },
467-
.{ "document.querySelector('*').nodeName", "HTML" },
468-
.{ "document.querySelector('#content').id", "content" },
469-
.{ "document.querySelector('#para').id", "para" },
470-
.{ "document.querySelector('.ok').id", "link" },
471-
.{ "document.querySelector('a ~ p').id", "para-empty" },
472-
.{ "document.querySelector(':root').nodeName", "HTML" },
473-
474-
.{ "document.querySelectorAll('p').length", "2" },
475-
.{
476-
\\ Array.from(document.querySelectorAll('#content > p#para-empty'))
477-
\\ .map(row => row.querySelector('span').textContent)
478-
\\ .length;
479-
,
480-
"1",
481-
},
482-
483-
.{ "document.querySelectorAll('.\\\\:popover-open').length", "0" },
484-
.{ "document.querySelectorAll('.foo\\\\:bar').length", "0" },
485-
}, .{});
486-
487-
try runner.testCases(&.{
488-
.{ "document.activeElement === document.body", "true" },
489-
.{ "document.getElementById('link').focus()", "undefined" },
490-
.{ "document.activeElement === document.getElementById('link')", "true" },
491-
}, .{});
492-
493-
try runner.testCases(&.{
494-
.{ "document.styleSheets.length", "0" },
495-
}, .{});
496-
497-
// this test breaks the doc structure, keep it at the end of the test
498-
// suite.
499-
try runner.testCases(&.{
500-
.{ "let nadop = document.getElementById('content')", "undefined" },
501-
.{ "var v = document.adoptNode(nadop)", "undefined" },
502-
.{ "v.nodeName", "DIV" },
503-
}, .{});
504-
505-
try runner.testCases(&.{
506-
.{ "const acss = document.adoptedStyleSheets", null },
507-
.{ "acss.length", "0" },
508-
.{ "acss.push(new CSSStyleSheet())", null },
509-
.{ "document.adoptedStyleSheets.length", "1" },
510-
}, .{});
511-
512-
const Case = testing.JsRunner.Case;
513-
const tags = comptime parser.Tag.all();
514-
var createElements: [(tags.len) * 2]Case = undefined;
515-
inline for (tags, 0..) |tag, i| {
516-
const tag_name = @tagName(tag);
517-
createElements[i * 2] = Case{
518-
"var " ++ tag_name ++ "Elem = document.createElement('" ++ tag_name ++ "')",
519-
"undefined",
520-
};
521-
createElements[(i * 2) + 1] = Case{
522-
tag_name ++ "Elem.localName",
523-
tag_name,
524-
};
525-
}
526-
try runner.testCases(&createElements, .{});
317+
test "Browser: DOM.Document" {
318+
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, .{});
527335
}

src/tests/dom/animation.html

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<script src="../testing.js"></script>
2+
3+
<script id=animation>
4+
let a1 = document.createElement('div').animate(null, null);
5+
testing.expectEqual('finished', a1.playState);
6+
7+
let cb = [];
8+
a1.ready.then(() => { cb.push('ready') });
9+
a1.finished.then((x) => {
10+
cb.push('finished');
11+
cb.push(x == a1);
12+
});
13+
testing.eventually(() => testing.expectEqual(['finished', true], cb));
14+
</script>

0 commit comments

Comments
 (0)