Sticky positioning is jumpy in many overflow cases
[WebKit-https.git] / LayoutTests / intersection-observer / intersection-observer-interface.html
1 <!DOCTYPE html><!-- webkit-test-runner [ enableIntersectionObserver=true ] -->
2 <head>
3     <title>IntersectionObserver interface tests.</title>
4     <link rel="author" title="Simon Fraser" href="mailto:simon.fraser@apple.com" />
5     <link rel="help" href="https://wicg.github.io/IntersectionObserver/">
6     <script src="../resources/testharness.js"></script>
7     <script src="../resources/testharnessreport.js"></script>
8 </head>
9 <body>
10 <div id="log"></div>
11 <script>
12
13     test(function() {
14         assert_class_string(new IntersectionObserver(function() {}), 'IntersectionObserver');
15     },'Constructor0');
16     test(function() {
17         var observer = new IntersectionObserver(function() {});
18         assert_equals(observer.rootMargin, '0px 0px 0px 0px');
19     },'DefaultRootMargin');
20     test(function() {
21         var observer = new IntersectionObserver(function() {});
22         assert_equals(observer.root, null);
23     },'DefaultRoot');
24     test(function() {
25         var observer = new IntersectionObserver(function() {});
26         assert_array_equals(observer.thresholds, [0]);
27     },'DefaultThresholds');
28     test(function() {
29         var observer = new IntersectionObserver(function() {}, { rootMargin: '33%' });
30         assert_equals(observer.rootMargin, '33% 33% 33% 33%');
31     },'ExplicitOneArgumentRootMargin');
32     test(function() {
33         var observer = new IntersectionObserver(function() {}, { rootMargin: '33% 10px' });
34         assert_equals(observer.rootMargin, '33% 10px 33% 10px');
35     },'ExplicitTwoArgumentRootMargin');
36     test(function() {
37         var observer = new IntersectionObserver(function() {}, { rootMargin: '33% 10px -120px' });
38         assert_equals(observer.rootMargin, '33% 10px -120px 10px');
39     },'ExplicitThreeArgumentRootMargin');
40     test(function() {
41         var observer = new IntersectionObserver(function() {}, { rootMargin: '33% 10px -120px 3%' });
42         assert_equals(observer.rootMargin, '33% 10px -120px 3%');
43     },'ExplicitFourArgumentRootMargin');
44     test(function() {
45         var observer = new IntersectionObserver(function() {}, { root: document.body });
46         assert_equals(observer.root, document.body);
47     },'ExplicitRoot');
48     test(function() {
49         var observer = new IntersectionObserver(function() {},  { threshold: 0.45 });
50         assert_array_equals(observer.thresholds, [0.45]);
51     },'ExplicitThreshold');
52     test(function() {
53         var observer = new IntersectionObserver(function() {},  { threshold: [0, 0.33333678, 0.5, 0.76645] });
54         assert_array_equals(observer.thresholds, [0, 0.33333678, 0.5, 0.76645]);
55     },'ExplicitThresholds');
56     test(function() {
57         var observer = new IntersectionObserver(function() {},  { threshold: Number.MIN_VALUE });
58         assert_array_equals(observer.thresholds, [Number.MIN_VALUE]);
59     },'SmallPositiveThreshold');
60     test(function() {
61         assert_throws(RangeError(), function() {
62             new IntersectionObserver(function() {},  { threshold: -Number.MIN_VALUE });
63         })
64     },'SmallNegativeThreshold');
65     test(function() {
66         assert_throws(RangeError(), function() {
67             new IntersectionObserver(function() {},  { threshold: Number.MAX_VALUE });
68         })
69     },'LargePositiveThreshold');
70     test(function() {
71         assert_throws(RangeError(), function() {
72             new IntersectionObserver(function() {},  { threshold: -Number.MAX_VALUE });
73         })
74     },'LargeNegativeThreshold');
75     test(function() {
76         assert_throws(TypeError(), function() {
77             new IntersectionObserver(function() {},  { threshold: Number.POSITIVE_INFINITY });
78         })
79     },'PositiveInfinityThreshold');
80     test(function() {
81         assert_throws(TypeError(), function() {
82             new IntersectionObserver(function() {},  { threshold: Number.NEGATIVE_INFINITY });
83         })
84     },'NegativeInfinityThreshold');
85     test(function() {
86         assert_throws(TypeError(), function() {
87             new IntersectionObserver(function() {},  { threshold: Number.NaN });
88         })
89     },'NaNThreshold');
90 </script>
91 </body>
92 </html>