chromium/third_party/blink/web_tests/fast/dom/viewport/viewport-scrollbars-cause-resize.html

<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<h1>Viewport: Scrollbars Cause Resize</h1>
<h4>Test Description: This test checks that the appearance of classic scrollbars will cause a resize event to be fired at window.visualViewport.</h4>
<script>
    document.documentElement.style.overflow = "hidden";
    var initialWidth = visualViewport.width;
    var initialHeight = visualViewport.height;

    test(function() {
          assert_equals(window.visualViewport.width, window.innerWidth);
          assert_equals(window.visualViewport.height, window.innerHeight);
        }, "view size initially matches window size");


    var t = async_test("Resize event was fired at window.visualViewport");
    var viewResized = false;
    window.visualViewport.addEventListener('resize', function() {
        viewResized = true;
    });

    requestAnimationFrame(t.step_func_done(function() {
        assert_equals(viewResized, true);
    }));

    document.documentElement.style.overflow = "";
    document.body.style.width = "10000px";
    document.body.style.height = "10000px";

    test(function() {
          assert_equals(window.visualViewport.width, initialWidth - 15);
          assert_equals(window.visualViewport.height, initialHeight - 15);
        }, "view size reflects appearance of classic scrollbars");


    document.body.style.width = "";
    document.body.style.height = "";
</script>