@@ -181,110 +181,6 @@ pub const IntersectionObserverEntry = struct {
181181};
182182
183183const testing = @import ("../../testing.zig" );
184- test "Browser.DOM.IntersectionObserver" {
185- var runner = try testing .jsRunner (testing .tracking_allocator , .{});
186- defer runner .deinit ();
187-
188- try runner .testCases (&.{
189- .{ "new IntersectionObserver(() => {}).observe(document.documentElement);" , "undefined" },
190- }, .{});
191-
192- try runner .testCases (&.{
193- .{ "let count_a = 0;" , "undefined" },
194- .{ "const a1 = document.createElement('div');" , "undefined" },
195- .{ "new IntersectionObserver(entries => {count_a += 1;}).observe(a1);" , "undefined" },
196- .{ "count_a;" , "1" },
197- }, .{});
198-
199- // This test is documenting current behavior, not correct behavior.
200- // Currently every time observe is called, the callback is called with all entries.
201- try runner .testCases (&.{
202- .{ "let count_b = 0;" , "undefined" },
203- .{ "let observer_b = new IntersectionObserver(entries => {count_b = entries.length;});" , "undefined" },
204- .{ "const b1 = document.createElement('div');" , "undefined" },
205- .{ "observer_b.observe(b1);" , "undefined" },
206- .{ "count_b;" , "1" },
207- .{ "const b2 = document.createElement('div');" , "undefined" },
208- .{ "observer_b.observe(b2);" , "undefined" },
209- .{ "count_b;" , "2" },
210- }, .{});
211-
212- // Re-observing is a no-op
213- try runner .testCases (&.{
214- .{ "let count_bb = 0;" , "undefined" },
215- .{ "let observer_bb = new IntersectionObserver(entries => {count_bb = entries.length;});" , "undefined" },
216- .{ "const bb1 = document.createElement('div');" , "undefined" },
217- .{ "observer_bb.observe(bb1);" , "undefined" },
218- .{ "count_bb;" , "1" },
219- .{ "observer_bb.observe(bb1);" , "undefined" },
220- .{ "count_bb;" , "1" }, // Still 1, not 2
221- }, .{});
222-
223- // Unobserve
224- try runner .testCases (&.{
225- .{ "let count_c = 0;" , "undefined" },
226- .{ "let observer_c = new IntersectionObserver(entries => { count_c = entries.length;});" , "undefined" },
227- .{ "const c1 = document.createElement('div');" , "undefined" },
228- .{ "observer_c.observe(c1);" , "undefined" },
229- .{ "count_c;" , "1" },
230- .{ "observer_c.unobserve(c1);" , "undefined" },
231- .{ "const c2 = document.createElement('div');" , "undefined" },
232- .{ "observer_c.observe(c2);" , "undefined" },
233- .{ "count_c;" , "1" },
234- }, .{});
235-
236- // Disconnect
237- try runner .testCases (&.{
238- .{ "let observer_d = new IntersectionObserver(entries => {});" , "undefined" },
239- .{ "let d1 = document.createElement('div');" , "undefined" },
240- .{ "observer_d.observe(d1);" , "undefined" },
241- .{ "observer_d.disconnect();" , "undefined" },
242- .{ "observer_d.takeRecords().length;" , "0" },
243- }, .{});
244-
245- // takeRecords
246- try runner .testCases (&.{
247- .{ "let observer_e = new IntersectionObserver(entries => {});" , "undefined" },
248- .{ "let e1 = document.createElement('div');" , "undefined" },
249- .{ "observer_e.observe(e1);" , "undefined" },
250- .{ "const e2 = document.createElement('div');" , "undefined" },
251- .{ "observer_e.observe(e2);" , "undefined" },
252- .{ "observer_e.takeRecords().length;" , "2" },
253- }, .{});
254-
255- // Entry
256- try runner .testCases (&.{
257- .{ "let entry;" , "undefined" },
258- .{ "let div1 = document.createElement('div')" , null },
259- .{ "document.body.appendChild(div1);" , null },
260- .{ "new IntersectionObserver(entries => { entry = entries[0]; }).observe(div1);" , null },
261- .{ "entry.boundingClientRect.x;" , "0" },
262- .{ "entry.intersectionRatio;" , "1" },
263- .{ "entry.intersectionRect.x;" , "0" },
264- .{ "entry.intersectionRect.y;" , "0" },
265- .{ "entry.intersectionRect.width;" , "1" },
266- .{ "entry.intersectionRect.height;" , "1" },
267- .{ "entry.isIntersecting;" , "true" },
268- .{ "entry.rootBounds.x;" , "0" },
269- .{ "entry.rootBounds.y;" , "0" },
270- .{ "entry.rootBounds.width;" , "1" },
271- .{ "entry.rootBounds.height;" , "1" },
272- .{ "entry.target;" , "[object HTMLDivElement]" },
273- }, .{});
274-
275- // Options
276- try runner .testCases (&.{
277- .{ "const new_root = document.createElement('span');" , null },
278- .{ "document.body.appendChild(new_root);" , null },
279- .{ "let new_entry;" , "undefined" },
280- .{
281- \\ const new_observer = new IntersectionObserver(
282- \\ entries => { new_entry = entries[0]; },
283- \\ {root: new_root, rootMargin: '0px 0px 0px 0px', threshold: [0]});
284- ,
285- "undefined" ,
286- },
287- .{ "new_observer.observe(document.createElement('div'));" , "undefined" },
288- .{ "new_entry.rootBounds.x;" , "1" },
289- }, .{});
184+ test "Browser: DOM.IntersectionObserver" {
185+ try testing .htmlRunner ("dom/intersection_observer.html" );
290186}
0 commit comments