<!doctype html>
<meta charset="utf-8">
<title>CSS Overflow: scrollbar-gutter on the root, overflow:scroll on the body</title>
<link rel="author" title="Felipe Erias Morandeira" href="mailto:felipeerias@igalia.com" />
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#scrollbar-gutter-property" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
<style>
  body,
  html {
    margin: 0;
    padding: 0;
    border: none;
  }

  :root {
    scrollbar-gutter: stable;
  }

  body {
    overflow: scroll;
  }

  #content {
    background: green;
    width: 100%;
    height: 100px;
  }
</style>

<body>

  <div id="content"></div>

  <script type="text/javascript">
    setup({ explicit_done: true });

    test(function () {
      let root = document.documentElement;
      let body = document.body;
      let content = document.getElementById('content');

      assert_less_than(root.clientWidth, window.outerWidth, "viewport has scrollbars");
      assert_equals(body.offsetWidth, root.clientWidth, "body matches root");
      assert_equals(body.clientWidth, body.offsetWidth, "body has no gutter");
      assert_equals(content.offsetWidth, body.clientWidth, "content matches body");
    }, "viewport has fixed scrollbars");

    done();

  </script>
</body>
