<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/cssom-view/#extensions-to-the-htmlelement-interface">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>

.container {
  position: relative;
  font: 20px/1 Ahem;
  width: 150px;
  height: 100px;
  padding: 2px 10px;
  border-width: 3px 6px;
  border-style: solid;
  box-sizing: border-box;
}

.target { background: grey; }
.hl { writing-mode:horizontal-tb; }
.vlr { writing-mode:vertical-lr; }
</style>
<div id=tests>
<div class="container hl">
  <span class="target">x</span>
</div>
<div class="container vlr">
  <span class="target">x</span>
</div>
<div class="container hl">
  <div class="target">x</div>
</div>
<div class="container vlr">
  <div class="target">x</div>
</div>
</div>
<script>
setup({explicit_done: true});
onload = () => {
  // Clone the above tests for the following 'display' types:
  let display = ['inline-block', 'grid', 'inline-grid', 'flex', 'inline-flex', 'flow-root' ];
  let tests = document.querySelector('#tests');
  display.forEach((display) => {
    let t = tests.cloneNode(true);
    [...t.children].forEach((child) => {
      child.setAttribute("style", "display:"+display);
    });
    document.body.appendChild(t);
  });
  // Check that all of them return an offset relative the padding edge.
  var i = 0;
  document.querySelectorAll('.target').forEach((target) => {
    test(() => {
      assert_equals(target.offsetLeft, 10, 'offsetLeft');
      assert_equals(target.offsetTop, 2, 'offsetTop');
    }, 'container: ' + i);
    i++;
  });
  done();
};
</script>
