<!DOCTYPE html>
<html>
<head>
    <style>
        body {
            height: 2000px;
        }
      
        .outer {
            background: blue;
            margin-top: 120px;
            height: 200px;
            padding: 10px;
        }

        .sticky {
            position: sticky;
            position: -webkit-sticky;
            top: 0px;
        }

       .inner {
            padding: 10px;
            background: orange;
            top: 10px;
            height: 80px;
        }
    </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="outer sticky">
    <div class="inner sticky"></div>
</body>
</html>
