Files
ladybird/Tests/LibWeb/Text/input/IntersectionObserver/implicit-root-clips-at-overflow-clip-container.html
Andreas Kling d1b485e6d6 Tests: Add IntersectionObserver tests for scroll container clipping
Add tests for the implicit root case where targets are inside scroll
containers with various overflow types:

- overflow:hidden container with target pushed below visible area:
  should NOT be intersecting (currently wrong, shows intersecting).
- overflow:clip container with target pushed below visible area:
  should NOT be intersecting (currently wrong, shows intersecting).
- overflow:hidden container with target at top (visible):
  should be intersecting (correct).

The two failing tests currently reflect wrong behavior because
compute_intersection does not clip against intermediate scroll
containers when walking the containing block chain.
2026-03-22 14:09:22 -05:00

46 lines
1.1 KiB
HTML

<!DOCTYPE html>
<style>
body { margin: 0; }
#clipper {
width: 200px;
height: 200px;
overflow: clip;
}
#spacer {
height: 500px;
}
#target {
width: 50px;
height: 50px;
background: red;
}
</style>
<script src="../include.js"></script>
<div id="clipper">
<div id="spacer"></div>
<div id="target"></div>
</div>
<script>
asyncTest(done => {
// The target is inside an overflow:clip container, pushed below
// the visible area by a spacer. It should NOT be intersecting.
let callbackCount = 0;
let observer = new IntersectionObserver(entries => {
callbackCount++;
entries.forEach(entry => {
println(`callback ${callbackCount}: isIntersecting=${entry.isIntersecting}`);
});
if (callbackCount === 1) {
requestAnimationFrame(() => {
requestAnimationFrame(() => {
println(`total callbacks: ${callbackCount}`);
done();
});
});
}
});
observer.observe(document.getElementById("target"));
});
</script>