summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/layout-instability/sources-enclosure.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/layout-instability/sources-enclosure.html')
-rw-r--r--testing/web-platform/tests/layout-instability/sources-enclosure.html62
1 files changed, 62 insertions, 0 deletions
diff --git a/testing/web-platform/tests/layout-instability/sources-enclosure.html b/testing/web-platform/tests/layout-instability/sources-enclosure.html
new file mode 100644
index 0000000000..8d1596ad49
--- /dev/null
+++ b/testing/web-platform/tests/layout-instability/sources-enclosure.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<title>Layout Instability: source attribution with redundant enclosure</title>
+<link rel="help" href="https://wicg.github.io/layout-instability/" />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-adapter.js"></script>
+<script src="resources/util.js"></script>
+<style>
+body { margin: 0; }
+#shifter {
+ position: relative; background: #def;
+ width: 300px; height: 200px;
+}
+#inner {
+ position: relative; background: #f97;
+ width: 100px; height: 100px;
+}
+#absfollow {
+ position: absolute; background: #ffd; opacity: 50%;
+ width: 350px; height: 200px; left: 0; top: 160px;
+}
+.stateB { top: 160px; }
+.stateB #inner { left: 100px; }
+.stateC ~ #absfollow { top: 0; }
+</style>
+<div id="shifter" class="stateA">
+ <div id="inner"></div>
+</div>
+<div id="absfollow"></div>
+<script>
+
+promise_test(async () => {
+ const watcher = new ScoreWatcher;
+ let shifter = document.querySelector("#shifter");
+ let absfollow = document.querySelector("#absfollow");
+
+ // Wait for the initial render to complete.
+ await waitForAnimationFrames(2);
+
+ shifter.className = "stateB";
+ await watcher.promise;
+
+ // Shift of #inner ignored as redundant, fully enclosed by #shifter.
+ cls_expect(watcher, {sources: [{
+ node: shifter,
+ previousRect: [0, 0, 300, 200],
+ currentRect: [0, 160, 300, 200]
+ }]});
+
+ shifter.className = "stateC";
+ await watcher.promise;
+
+ // Shift of #shifter ignored as redundant, fully enclosed by #absfollow.
+ cls_expect(watcher, {sources: [{
+ node: absfollow,
+ previousRect: [0, 160, 350, 200],
+ currentRect: [0, 0, 350, 200]
+ }]});
+
+}, "Sources with redundant enclosure.");
+
+</script>