Preserve root scrolling overflow geometry

This commit is contained in:
SGavrl committed 2026-07-31 01:23:47 +00:00
1 parent 3822542e50
commit 139d4e77e1
2 files changed
+148 -19

No files matched your search

+37
View File
@@ -3194,6 +3194,43 @@ mod tests {
assert_eq!(after[2].as_f64(), Some(80.0));
}
#[cfg(feature = "render")]
#[test]
fn root_overflow_clip_preserves_cssom_scroll_range() {
let dom = parse_html(
r#"<html style="margin:0;height:100%;overflow:hidden">
<body style="margin:0;height:100%;overflow:hidden">
<main id="main" style="padding-top:48px">
<div style="height:5000px"></div>
</main>
</body>
</html>"#,
);
let mut rt = ObscuraJsRuntime::new();
rt.set_dom(dom);
rt.set_viewport(900.0, 1000.0);
rt.run_page_init();
let result = rt
.evaluate(
r#"
const main = document.getElementById("main");
const before = main.getBoundingClientRect();
scrollTo(0, 99999);
const after = main.getBoundingClientRect();
return [
before.height,
document.documentElement.scrollHeight,
document.body.scrollHeight,
scrollY,
after.top,
];
"#,
)
.unwrap();
assert_eq!(result, serde_json::json!([5048, 5048, 5048, 4048, -4048]));
}
#[cfg(feature = "render")]
#[tokio::test(flavor = "current_thread")]
async fn rendered_window_scroll_events_require_actual_movement() {