WebKit export of https://bugs.webkit.org/show_bug.cgi?id=249693 (#38028)
diff --git a/intersection-observer/v2/position-absolute-overflow-visible-and-not-visible.html b/intersection-observer/v2/position-absolute-overflow-visible-and-not-visible.html
new file mode 100644
index 0000000..c74d4c2
--- /dev/null
+++ b/intersection-observer/v2/position-absolute-overflow-visible-and-not-visible.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/intersection-observer-test-utils.js"></script>
+<style>
+ html, body {
+ margin: 0;
+ padding: 0;
+ height: 200px;
+ width: 100%;
+ }
+ #parent {
+ position: relative;
+ height: 200px;
+ width: 200px;
+ background-color: rgb(250, 221, 221);
+ overflow-y: clip;
+ overflow-x: visible;
+ }
+ #child {
+ background-color: rgb(208, 250, 208);
+ position: absolute;
+ left: 100%;
+ width: 200px;
+ height: 200px;
+ }
+</style>
+</head>
+<body>
+<div id="parent">
+ <div id="child"></div>
+</div>
+</body>
+<script>
+const test = async_test("ParentWithOverflowVisibleAndNotVisible");
+const child = document.getElementById("child");
+const observer = new IntersectionObserver((entries) => {
+ test.step(() => {
+ assert_true(entries[0].isIntersecting);
+ assert_equals(entries[0].intersectionRatio, 1.0);
+ assert_equals(entries[0].intersectionRect.height, 200);
+ assert_equals(entries[0].intersectionRect.width, 200);
+ });
+ test.done();
+});
+observer.observe(child);
+</script>
+</html>
\ No newline at end of file