| <!DOCTYPE html> |
| <title>Layout Instability: shift into viewport</title> |
| <link rel="help" href="https://wicg.github.io/layout-instability/" /> |
| <style> |
| |
| body { margin: 0; } |
| #j { position: absolute; width: 600px; height: 200px; top: 100%; background: blue; } |
| |
| </style> |
| <div id='j'></div> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="resources/util.js"></script> |
| <script> |
| |
| promise_test(async () => { |
| const watcher = new ScoreWatcher; |
| |
| // Wait for the initial render to complete. |
| await waitForAnimationFrames(2); |
| |
| // Move div partially into viewport. |
| document.querySelector("#j").style.top = |
| document.documentElement.clientHeight - 200 + "px"; |
| |
| // The element moves from outside the viewport to within the viewport, which |
| // should generate a shift. |
| // (width 600) * (height 0 + move 200) |
| const expectedScore = computeExpectedScore(600 * 200, 200); |
| |
| await watcher.promise; |
| assert_equals(watcher.score, expectedScore); |
| }, "Shift into viewport."); |
| |
| </script> |
| |