summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-anchor-position/support/test-common.js
blob: 5ef7a951b420a9efac659c61101229c909e5b039 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Asserts that the anchored element is at the top/bottom/left/right of the
// anchor.
function assert_fallback_position(anchored, anchor, direction) {
  let anchoredRect = anchored.getBoundingClientRect();
  let anchorRect = anchor.getBoundingClientRect();
  let message = `Anchored element should be at the ${direction} of anchor`;
  switch (direction) {
    case 'top':
      assert_equals(anchoredRect.bottom, anchorRect.top, message);
      return;
    case 'bottom':
      assert_equals(anchoredRect.top, anchorRect.bottom, message);
      return;
    case 'left':
      assert_equals(anchoredRect.right, anchorRect.left, message);
      return;
    case 'right':
      assert_equals(anchoredRect.left, anchorRect.right, message);
      return;
    default:
      assert_unreached('unsupported direction');
  }
}

async function waitUntilNextAnimationFrame() {
  return new Promise(resolve => requestAnimationFrame(resolve));
}