<!DOCTYPE html>
<html>
<head>
    <style>
        body {
            height: 2000px;
        }
        .fixed {
            position: fixed;
            width: 100%;
            height: 100px;
            background-color: green;
        }
        
        .top {
            top: 0;
        }
        .bottom {
            bottom: 0;
        }
    </style>
    <script>
        function scrollTest()
        {
            eventSender.mouseMoveTo(20, 20);
            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, "began", "none");
            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -100, "changed", "none");
            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -100, "none", "continue");
            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -100, "none", "continue");
            eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, "none", "end");
            eventSender.callAfterScrollingCompletes(() => {
                testRunner.notifyDone();
            });
        }

        function startTest()
        {
            if (window.eventSender) {
                testRunner.waitUntilDone();

                eventSender.monitorWheelEvents();
                setTimeout(scrollTest, 0);
            }
        }
        
        window.addEventListener('load', startTest, false);
    </script>
</head>
<body>
    <div class="fixed top"></div>
    <div class="fixed bottom"></div>
</body>
</html>
