<html>
    <body><p>15 fps</p></body>
    <script>
        var body = document.getElementsByTagName('body')[0];

        var rgb_idx = 0;
        var rgb_step = [
            'rgb(255, 0, 0)',
            'rgb(0, 255, 0)',
            'rgb(0, 0, 255)',
            'rgb(0, 255, 0)'
        ];

        var ms_idx = 0;
        var ms_step = [66, 66, 67]; // 15 fps

        setInterval(function() {
            body.style.backgroundColor = rgb_step[rgb_idx];

            rgb_idx = (rgb_idx === rgb_step.length - 1) ? 0 : rgb_idx + 1;
            ms_idx = (ms_idx === rgb_step.length - 1) ? 0 : ms_idx + 1;
        }, ms_step[ms_idx]);
    </script>
</html>

<html>
    <body style="background:rgb(0, 255, 0)">
        <p>15 fps</p>
    </body>
    <script>
        var ms_idx = 0;
        var ms_step = [66, 66, 67]; // 15 fps (no rounding error)

        var delay = function() {
            var tmp = ms_step[ms_idx];
            ms_idx = (ms_idx === ms_step.length - 1) ? 0 : ms_idx + 1;
            return tmp;
        };

        var rgb_idx = 0;
        var rgb_step = [
            'rgb(255, 0, 0)',
            'rgb(0, 255, 0)',
            'rgb(0, 0, 255)',
            'rgb(0, 255, 0)'
        ];

        var cycle = function() {
            document.getElementsByTagName('body')[0]
                .style.backgroundColor = rgb_step[rgb_idx];
            rgb_idx = (rgb_idx === rgb_step.length - 1) ? 0 : rgb_idx + 1;
            setTimeout(cycle, delay());
        };

        cycle();
    </script>
</html>

Fix bug fps steps not updated in JS tester
Fix bug fps steps not updated in JS tester
