summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/soft-navigation-heuristics/interaction-with-paint-before-back.tentative.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/soft-navigation-heuristics/interaction-with-paint-before-back.tentative.html')
-rw-r--r--testing/web-platform/tests/soft-navigation-heuristics/interaction-with-paint-before-back.tentative.html76
1 files changed, 76 insertions, 0 deletions
diff --git a/testing/web-platform/tests/soft-navigation-heuristics/interaction-with-paint-before-back.tentative.html b/testing/web-platform/tests/soft-navigation-heuristics/interaction-with-paint-before-back.tentative.html
new file mode 100644
index 0000000000..b587411991
--- /dev/null
+++ b/testing/web-platform/tests/soft-navigation-heuristics/interaction-with-paint-before-back.tentative.html
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8">
+<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="resources/soft-navigation-helper.js"></script>
+</head>
+<body>
+ <main id=main>
+ <div>
+ <a id=link><img src="/images/lcp-256x256.png" id="img"></a>
+ <a id=not_nav><img src="/images/lcp-16x16.png"></a>
+ </div>
+ </main>
+ <script>
+ // Push state a couple of times
+ history.pushState({}, "", "foobar.html");
+ history.pushState({}, "", "anotherOne.html");
+
+ (async () => {
+ const link = document.getElementById("link");
+ // Trigger a user interaction that doesn't result in a soft navigation, but
+ // does paint.
+ await (async () => {
+ const not_nav = document.getElementById("not_nav");
+ let non_soft_nav_click;
+ const non_soft_nav_click_promise =
+ new Promise(r => { non_soft_nav_click = r; });
+ not_nav.addEventListener("click", () => {
+ addImageToMain("lcp-133x106.png", "not_soft_nav_image");
+ (new PerformanceObserver(non_soft_nav_click)).observe({type: "element"});
+ });
+ if (test_driver) {
+ test_driver.click(not_nav);
+ }
+ await non_soft_nav_click_promise;
+ })();
+ const url = URL + "?" + counter;
+ link.addEventListener("click", () => {
+ // Add an LCP element.
+ const img = new Image();
+ img.src = '/images/lcp-100x500.png' + "?" + Math.random();
+ document.getElementById("main").appendChild(img);
+ history.back();
+ });
+ promise_test(async t => {
+ if (test_driver) {
+ test_driver.click(link);
+ }
+ await waitOnSoftNav();
+ assert_equals(
+ document.softNavigations, 1,
+ 'Single Soft Navigation detected');
+ const [entries, options] = await new Promise(resolve => {
+ (new PerformanceObserver((list, obs, options) => resolve(
+ [list.getEntries(), options]))).observe(
+ {type: 'soft-navigation', buffered: true});
+ });
+
+ assert_equals(entries.length, 1,
+ "Performance observer got an entry");
+ }, "Ensure that soft navigation entry emitted through a synchronous " +
+ "event that modified DOM and committed a same document navigation, " +
+ "and that was preceded by a user intreaction that resulted in a " +
+ "contentful paint is properly detected.");
+ })();
+ </script>
+</body>
+</html>
+
+
+
+