<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="fuzzy" content="maxDifference=0-70; totalPixels=0-382" />
</head>
<body>
<div id="target">Hello 👋 <span id="inside"></span> World!</div>
<script>
if (window.testRunner)
    testRunner.waitUntilDone();

window.requestAnimationFrame(function() {
    let target = document.getElementById("target");
    let inside = document.getElementById("inside");
    if (window.internals) {
        for (let i = 0; i < 200; ++i)
            internals.incrementFrequentPaintCounter(target);
    }
    inside.textContext = "middle";
    window.requestAnimationFrame(function() {
        inside.textContext = "";
        window.requestAnimationFrame(function() {
            if (window.testRunner)
                testRunner.notifyDone();
        });
    });
});
</script>
</body>
</html>
