over 9000
diff --git a/src/browser/dom/performance.zig b/src/browser/dom/performance.zig index 655df0c1b..6a971b4d5 100644 --- a/src/browser/dom/performance.zig +++ b/src/browser/dom/performance.zig @@ -203,22 +203,6 @@ test "Performance: now" { } } -test "Browser.Performance.Mark" { - var runner = try testing.jsRunner(testing.tracking_allocator, .{}); - defer runner.deinit(); - - try runner.testCases(&.{ - .{ "let performance = window.performance", null }, - .{ "performance instanceof Performance", "true" }, - - .{ "let mark1 = performance.mark(\"start\")", null }, - .{ "mark1 instanceof PerformanceMark", "true" }, - .{ "mark1.name", "start" }, - .{ "mark1.entryType", "mark" }, - .{ "mark1.duration", "0" }, - .{ "mark1.detail", "null" }, - - .{ "let mark2 = performance.mark(\"start\", {startTime: 32939393.9})", null }, - .{ "mark2.startTime", "32939393.9" }, - }, .{}); +test "Browser: Performance.Mark" { + try testing.htmlRunner("dom/performance.html"); } diff --git a/src/browser/dom/performance_observer.zig b/src/browser/dom/performance_observer.zig index bc2900864..5a53090d4 100644 --- a/src/browser/dom/performance_observer.zig +++ b/src/browser/dom/performance_observer.zig @@ -53,11 +53,6 @@ const Options = struct { }; const testing = @import("../../testing.zig"); -test "Browser.DOM.PerformanceObserver" { - var runner = try testing.jsRunner(testing.tracking_allocator, .{}); - defer runner.deinit(); - - try runner.testCases(&.{ - .{ "PerformanceObserver.supportedEntryTypes.length", "0" }, - }, .{}); +test "Browser: DOM.PerformanceObserver" { + try testing.htmlRunner("dom/performance_observer.html"); } diff --git a/src/browser/dom/processing_instruction.zig b/src/browser/dom/processing_instruction.zig index 8165e69dc..1859e3f18 100644 --- a/src/browser/dom/processing_instruction.zig +++ b/src/browser/dom/processing_instruction.zig @@ -87,30 +87,6 @@ pub const ProcessingInstruction = struct { }; const testing = @import("../../testing.zig"); -test "Browser.DOM.ProcessingInstruction" { - var runner = try testing.jsRunner(testing.tracking_allocator, .{}); - defer runner.deinit(); - - try runner.testCases(&.{ - .{ "let pi = document.createProcessingInstruction('foo', 'bar')", "undefined" }, - .{ "pi.target", "foo" }, - .{ "pi.data", "bar" }, - .{ "pi.data = 'foo'", "foo" }, - .{ "pi.data", "foo" }, - - .{ "let pi2 = pi.cloneNode()", "undefined" }, - .{ "pi2.nodeType", "7" }, - }, .{}); - - try runner.testCases(&.{ - .{ "let pi11 = document.createProcessingInstruction('target1', 'data1');", "undefined" }, - .{ "let pi12 = document.createProcessingInstruction('target2', 'data2');", "undefined" }, - .{ "let pi13 = document.createProcessingInstruction('target1', 'data1');", "undefined" }, - .{ "pi11.isEqualNode(pi11)", "true" }, - .{ "pi11.isEqualNode(pi13)", "true" }, - .{ "pi11.isEqualNode(pi12)", "false" }, - .{ "pi12.isEqualNode(pi13)", "false" }, - .{ "pi11.isEqualNode(document)", "false" }, - .{ "document.isEqualNode(pi11)", "false" }, - }, .{}); +test "Browser: DOM.ProcessingInstruction" { + try testing.htmlRunner("dom/processing_instruction.html"); } diff --git a/src/browser/dom/range.zig b/src/browser/dom/range.zig index 9cd29abf9..7da6dbc93 100644 --- a/src/browser/dom/range.zig +++ b/src/browser/dom/range.zig @@ -385,44 +385,6 @@ fn compare(node_a: *parser.Node, offset_a: u32, node_b: *parser.Node, offset_b: } const testing = @import("../../testing.zig"); -test "Browser.Range" { - var runner = try testing.jsRunner(testing.tracking_allocator, .{}); - defer runner.deinit(); - - try runner.testCases(&.{ - // Test Range constructor - .{ "let range = new Range()", "undefined" }, - .{ "range instanceof Range", "true" }, - .{ "range instanceof AbstractRange", "true" }, - - // Test initial state - collapsed range - .{ "range.collapsed", "true" }, - .{ "range.startOffset", "0" }, - .{ "range.endOffset", "0" }, - .{ "range.startContainer instanceof HTMLDocument", "true" }, - .{ "range.endContainer instanceof HTMLDocument", "true" }, - - // Test document.createRange() - .{ "let docRange = document.createRange()", "undefined" }, - .{ "docRange instanceof Range", "true" }, - .{ "docRange.collapsed", "true" }, - }, .{}); - - try runner.testCases(&.{ - .{ "const container = document.getElementById('content');", null }, - - // Test text range - .{ "const commentNode = container.childNodes[7];", null }, - .{ "commentNode.nodeValue", "comment" }, - .{ "const textRange = document.createRange();", null }, - .{ "textRange.selectNodeContents(commentNode)", "undefined" }, - .{ "textRange.startOffset", "0" }, - .{ "textRange.endOffset", "7" }, // length of `comment` - - // Test Node range - .{ "const nodeRange = document.createRange();", null }, - .{ "nodeRange.selectNodeContents(container)", "undefined" }, - .{ "nodeRange.startOffset", "0" }, - .{ "nodeRange.endOffset", "9" }, // length of container.childNodes - }, .{}); +test "Browser: Range" { + try testing.htmlRunner("dom/range.html"); } diff --git a/src/browser/dom/shadow_root.zig b/src/browser/dom/shadow_root.zig index 76353b73f..f75aed6ff 100644 --- a/src/browser/dom/shadow_root.zig +++ b/src/browser/dom/shadow_root.zig @@ -96,60 +96,6 @@ pub const ShadowRoot = struct { }; const testing = @import("../../testing.zig"); -test "Browser.DOM.ShadowRoot" { - defer testing.reset(); - - var runner = try testing.jsRunner(testing.tracking_allocator, .{ .html = - \\
hello
'", null }, - .{ "sr1.innerHTML", "hello
" }, - .{ "sr1.querySelector('*')", "[object HTMLParagraphElement]" }, - - .{ "sr1.innerHTML = null", null }, - .{ "sr1.innerHTML", "" }, - .{ "sr1.querySelector('*')", "null" }, - }, .{}); +test "Browser: DOM.ShadowRoot" { + try testing.htmlRunner("dom/shadow_root.html"); } diff --git a/src/browser/dom/text.zig b/src/browser/dom/text.zig index b1334db5e..ac930cab6 100644 --- a/src/browser/dom/text.zig +++ b/src/browser/dom/text.zig @@ -56,31 +56,7 @@ pub const Text = struct { } }; -// Tests -// ----- - const testing = @import("../../testing.zig"); -test "Browser.DOM.Text" { - var runner = try testing.jsRunner(testing.tracking_allocator, .{}); - defer runner.deinit(); - - try runner.testCases(&.{ - .{ "let t = new Text('foo')", "undefined" }, - .{ "t.data", "foo" }, - - .{ "let emptyt = new Text()", "undefined" }, - .{ "emptyt.data", "" }, - }, .{}); - - try runner.testCases(&.{ - .{ "let text = document.getElementById('link').firstChild", "undefined" }, - .{ "text.wholeText === 'OK'", "true" }, - }, .{}); - - try runner.testCases(&.{ - .{ "text.data = 'OK modified'", "OK modified" }, - .{ "let split = text.splitText('OK'.length)", "undefined" }, - .{ "split.data === ' modified'", "true" }, - .{ "text.data === 'OK'", "true" }, - }, .{}); +test "Browser: DOM.Text" { + try testing.htmlRunner("dom/text.html"); } diff --git a/src/browser/dom/token_list.zig b/src/browser/dom/token_list.zig index 6f12c4065..37a78df53 100644 --- a/src/browser/dom/token_list.zig +++ b/src/browser/dom/token_list.zig @@ -169,77 +169,7 @@ pub const Iterator = struct { } }; -// Tests -// ----- - const testing = @import("../../testing.zig"); -test "Browser.DOM.TokenList" { - var runner = try testing.jsRunner(testing.tracking_allocator, .{}); - defer runner.deinit(); - - try runner.testCases(&.{ - .{ "let gs = document.getElementById('para-empty')", "undefined" }, - .{ "let cl = gs.classList", "undefined" }, - .{ "gs.className", "ok empty" }, - .{ "cl.value", "ok empty" }, - .{ "cl.length", "2" }, - .{ "gs.className = 'foo bar baz'", "foo bar baz" }, - .{ "gs.className", "foo bar baz" }, - .{ "cl.length", "3" }, - .{ "gs.className = 'ok empty'", "ok empty" }, - .{ "cl.length", "2" }, - }, .{}); - - try runner.testCases(&.{ - .{ "let cl2 = gs.classList", "undefined" }, - .{ "cl2.length", "2" }, - .{ "cl2.item(0)", "ok" }, - .{ "cl2.item(1)", "empty" }, - .{ "cl2.contains('ok')", "true" }, - .{ "cl2.contains('nok')", "false" }, - .{ "cl2.add('foo', 'bar', 'baz')", "undefined" }, - .{ "cl2.length", "5" }, - .{ "cl2.remove('foo', 'bar', 'baz')", "undefined" }, - .{ "cl2.length", "2" }, - }, .{}); - - try runner.testCases(&.{ - .{ "let cl3 = gs.classList", "undefined" }, - .{ "cl3.toggle('ok')", "false" }, - .{ "cl3.toggle('ok')", "true" }, - .{ "cl3.length", "2" }, - }, .{}); - - try runner.testCases(&.{ - .{ "let cl4 = gs.classList", "undefined" }, - .{ "cl4.replace('ok', 'nok')", "true" }, - .{ "cl4.value", "empty nok" }, - .{ "cl4.replace('nok', 'ok')", "true" }, - .{ "cl4.value", "empty ok" }, - }, .{}); - - try runner.testCases(&.{ - .{ "let cl5 = gs.classList", "undefined" }, - .{ "let keys = [...cl5.keys()]", "undefined" }, - .{ "keys.length", "2" }, - .{ "keys[0]", "0" }, - .{ "keys[1]", "1" }, - - .{ "let values = [...cl5.values()]", "undefined" }, - .{ "values.length", "2" }, - .{ "values[0]", "empty" }, - .{ "values[1]", "ok" }, - - .{ "let entries = [...cl5.entries()]", "undefined" }, - .{ "entries.length", "2" }, - .{ "entries[0]", "0,empty" }, - .{ "entries[1]", "1,ok" }, - }, .{}); - - try runner.testCases(&.{ - .{ "let cl6 = gs.classList", "undefined" }, - .{ "cl6.value = 'a b ccc'", "a b ccc" }, - .{ "cl6.value", "a b ccc" }, - .{ "cl6.toString()", "a b ccc" }, - }, .{}); +test "Browser: DOM.TokenList" { + try testing.htmlRunner("dom/token_list.html"); } diff --git a/src/runtime/js.zig b/src/runtime/js.zig index 190ac91f7..dcc92efdb 100644 --- a/src/runtime/js.zig +++ b/src/runtime/js.zig @@ -332,22 +332,22 @@ pub fn Env(comptime State: type, comptime WebApis: type) type { pub fn dumpMemoryStats(self: *Self) void { const stats = self.isolate.getHeapStatistics(); std.debug.print( - \\ Total Heap Size: {d} - \\ Total Heap Size Executable: {d} - \\ Total Physical Size: {d} - \\ Total Available Size: {d} - \\ Used Heap Size: {d} - \\ Heap Size Limit: {d} - \\ Malloced Memory: {d} - \\ External Memory: {d} - \\ Peak Malloced Memory: {d} - \\ Number Of Native Contexts: {d} - \\ Number Of Detached Contexts: {d} - \\ Total Global Handles Size: {d} - \\ Used Global Handles Size: {d} - \\ Zap Garbage: {any} - \\ - , .{stats.total_heap_size, stats.total_heap_size_executable, stats.total_physical_size, stats.total_available_size, stats.used_heap_size, stats.heap_size_limit, stats.malloced_memory, stats.external_memory, stats.peak_malloced_memory, stats.number_of_native_contexts, stats.number_of_detached_contexts, stats.total_global_handles_size, stats.used_global_handles_size, stats.does_zap_garbage}); + \\ Total Heap Size: {d} + \\ Total Heap Size Executable: {d} + \\ Total Physical Size: {d} + \\ Total Available Size: {d} + \\ Used Heap Size: {d} + \\ Heap Size Limit: {d} + \\ Malloced Memory: {d} + \\ External Memory: {d} + \\ Peak Malloced Memory: {d} + \\ Number Of Native Contexts: {d} + \\ Number Of Detached Contexts: {d} + \\ Total Global Handles Size: {d} + \\ Used Global Handles Size: {d} + \\ Zap Garbage: {any} + \\ + , .{ stats.total_heap_size, stats.total_heap_size_executable, stats.total_physical_size, stats.total_available_size, stats.used_heap_size, stats.heap_size_limit, stats.malloced_memory, stats.external_memory, stats.peak_malloced_memory, stats.number_of_native_contexts, stats.number_of_detached_contexts, stats.total_global_handles_size, stats.used_global_handles_size, stats.does_zap_garbage }); } fn promiseRejectCallback(v8_msg: v8.C_PromiseRejectMessage) callconv(.c) void { diff --git a/src/tests/dom/performance.html b/src/tests/dom/performance.html new file mode 100644 index 000000000..1020ffaad --- /dev/null +++ b/src/tests/dom/performance.html @@ -0,0 +1,15 @@ + + diff --git a/src/tests/dom/performance_observer.html b/src/tests/dom/performance_observer.html new file mode 100644 index 000000000..4aff3f533 --- /dev/null +++ b/src/tests/dom/performance_observer.html @@ -0,0 +1,4 @@ + + diff --git a/src/tests/dom/processing_instruction.html b/src/tests/dom/processing_instruction.html new file mode 100644 index 000000000..6925616d2 --- /dev/null +++ b/src/tests/dom/processing_instruction.html @@ -0,0 +1,21 @@ + + diff --git a/src/tests/dom/range.html b/src/tests/dom/range.html new file mode 100644 index 000000000..e76010a0a --- /dev/null +++ b/src/tests/dom/range.html @@ -0,0 +1,40 @@ + + +over 9000
+ + +