summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation.tentative.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation.tentative.html')
-rw-r--r--testing/web-platform/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation.tentative.html60
1 files changed, 60 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation.tentative.html b/testing/web-platform/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation.tentative.html
new file mode 100644
index 0000000000..bc5b75f75f
--- /dev/null
+++ b/testing/web-platform/tests/css/css-scroll-snap-2/scroll-start-target/scroll-start-target-with-anchor-navigation.tentative.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta charset="utf-8">
+ <title> CSS Scroll Snap 2 Test: scroll-start-target interaction with anchor navigation</title>
+ <link rel="help" href="https://drafts.csswg.org/css-scroll-snap-2/#scroll-start-target">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/resources/testdriver.js"></script>
+ <script src="/resources/testdriver-actions.js"></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ <script src="/html/browsers/browsing-the-web/resources/helpers.js"></script>
+ <script src="/dom/events/scrolling/scroll_support.js"></script>
+</head>
+
+<body>
+ <iframe id="frame" src="scroll-start-target-with-anchor-navigation-inner-frame.html" onload="runTest()"></iframe>
+ <script>
+ function runTest() {
+ promise_test(async (t) => {
+ await waitForCompositorCommit();
+ let scroller = frame.contentDocument.scrollingElement;
+ // anchor_target is at the bottom of the frame so the frame should be
+ // fully scrolled down to bring it into view.
+ let anchor_target_scrolltop = scroller.scrollHeight - scroller.clientHeight;
+ let anchor_target_link = frame.contentDocument.getElementById("anchor_target_link");
+
+ // Expect scroll offset of 100px per scroll-start.
+ const scroll_start_target_top = 0.6 * frame.contentWindow.innerHeight;
+ assert_equals(scroller.scrollTop, scroll_start_target_top,
+ "scroll-start-target sets initial scroll offset");
+
+ // Scroll away from start position.
+ scroller.scrollTop = 200;
+ assert_equals(scroller.scrollTop, 200,
+ "scrolled away from scroll-start-target");
+
+ anchor_target_link.click();
+ await waitForHashchange(frame.contentWindow);
+ assert_equals(frame.contentWindow.location.hash, "#anchor_target",
+ "clicking anchor link navigates to target");
+
+ // Expect page to be fully scrolled as anchor_target is at the bottom of
+ // the document.
+ assert_equals(scroller.scrollTop, anchor_target_scrolltop,
+ "anchor navigation sets scroll offset");
+
+ frame.contentWindow.history.back();
+ await waitForHashchange(frame.contentWindow);
+ assert_equals(frame.contentWindow.location.hash, "");
+
+ assert_equals(scroller.scrollTop, 200,
+ "scroller returns to previous scroll position, not " +
+ "scroll-start-target");
+ }, "scroll-start-target does not override anchor navigation.");
+ }
+ </script>
+</body>
+