diff options
Diffstat (limited to 'testing/web-platform/tests/html/editing/the-hidden-attribute/beforematch-scroll-to-text-fragment.html')
-rw-r--r-- | testing/web-platform/tests/html/editing/the-hidden-attribute/beforematch-scroll-to-text-fragment.html | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/editing/the-hidden-attribute/beforematch-scroll-to-text-fragment.html b/testing/web-platform/tests/html/editing/the-hidden-attribute/beforematch-scroll-to-text-fragment.html new file mode 100644 index 0000000000..dddab4c6ba --- /dev/null +++ b/testing/web-platform/tests/html/editing/the-hidden-attribute/beforematch-scroll-to-text-fragment.html @@ -0,0 +1,68 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>beforematch fired on ScrollToTextFragment</title> +<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org"> +<link rel="help" href="https://github.com/WICG/display-locking"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> + +<script src="/common/utils.js"></script> +<script src="/scroll-to-text-fragment/stash.js"></script> + +<script> +promise_test(t => new Promise((resolve, reject) => { + const key = token(); + test_driver.bless('Open a scroll to text fragment URL', () => { + window.open( + `resources/beforematch-scroll-to-text-fragment-basic.html?key=${key}#:~:text=foo`, + '_blank', + 'noopener'); + }); + fetchResults(key, resolve, reject); +}).then(results => { + assert_equals(results.pageYOffsetDuringBeforematch, 0, + 'Scrolling should happen after beforematch is fired.'); + assert_true(results.beforematchFiredOnFoo, + 'Foo was searched for, so it should get a beforematch event.'); + assert_false(results.beforematchFiredOnBar, + 'Bar was not searched for, so it should not get a beforematch event.'); + assert_true(results.pageYOffsetAfterRaf > 0, + 'The page should be scrolled down to foo.'); +}), 'Verifies that the beforematch event is fired on the matching element of a ScrollToTextFragment navigation.'); + +promise_test(t => new Promise((resolve, reject) => { + const key = token(); + test_driver.bless('Open a scroll to text fragment URL', () => { + window.open( + `resources/beforematch-scroll-to-text-fragment-with-anchor.html?key=${key}#:~:text=foo`, + '_blank', + 'noopener'); + }); + fetchResults(key, resolve, reject); +}).then(results => { + assert_true(results.beforematchFiredOnFoo, + 'foo was searched for, so it should get the beforematch event.'); + assert_false(results.beforematchFiredOnBar, + 'bar should not get the beforematch event despite being the target of an element fragment due to the text fragment.'); +}), 'Verifies that beforematch is only fired on elements targeted by a text fragment when there is both a text fragment and an element fragment.'); + +promise_test(t => new Promise((resolve, reject) => { + const key = token(); + test_driver.bless('Open a scroll to text fragment URL', () => { + window.open( + `resources/beforematch-scroll-to-text-fragment-bubble.html?key=${key}#:~:text=foo`, + '_blank', + 'noopener'); + }); + fetchResults(key, resolve, reject); +}).then(results => { + assert_true(results.beforematchFiredOnChild, + 'The element containing the searched text should have beforematch fired on it.'); + assert_true(results.beforematchFiredOnParent, + 'The parent element of the element containing the matching text should have the beforematch event fired on it because the event should bubble.'); +}), 'Verifies that the beforematch event bubbles with scroll to text fragment.'); + +// TODO(jarhar): Write more tests here once we decide on a behavior here: https://github.com/WICG/display-locking/issues/150 +</script> |