chromium/third_party/blink/web_tests/fast/events/mouse-cursor-multiframecur.html

<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="../js/resources/image-preload-helper.js"></script>
<style type="text/css">
</style>
</head>
<body>
<p id="description"></p>
<p><a href=https://bugs.webkit.org/show_bug.cgi?id=100059>Bug 100059</a></p>
<div id="test-container">
  <div>Implicit default cursor</div>
  <div style='cursor: url(resources/greenbox-3frames.cur), pointer'>CUR file with 3 frames, largest of which (2nd frame) is 20x12 with hotspot at (18,11).</div>
</div>
<br/>
<div id="console"></div>
<script>
var imagesLeftToLoad = 0;
var testContainer = document.getElementById('test-container');

function runTests() {
    // Can't do anything useful here without eventSender
    if (window.eventSender) {
        var nodesToTest = document.querySelectorAll('#test-container > div');
        for (var i = 0; i < nodesToTest.length; i++) {
            var node = nodesToTest[i];
            debug('TEST CASE: ' + node.textContent);

            // Make sure the node is visible and move the mouse over top of it.
            document.documentElement.scrollTop = node.offsetTop - 50;
            eventSender.mouseMoveTo(node.offsetLeft + 3, node.offsetTop - document.documentElement.scrollTop + 3);

            // Get details of the current mouse cursor.
            // Note that we could return structured data which we then validate, but that's a lot more
            // work and is redundant with relying on the expected output anyway.  Better to just dump
            // it and inspect that it matches the description.
            debug('Cursor Info: ' + internals.getCurrentCursorInfo());
            debug('');
        }
        // This text is redundant with the test output - hide it
        testContainer.style.display = 'none';
    }
    
    finishJSTest();
}

description("Test that mouse cursors are applied correctly.");

if (!window.eventSender) {
    testFailed('This test requires DumpRenderTree');
}

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
    window.jsTestIsAsync = true;
}

// Now wait for each image to load or fail to load before starting tests.
// Without this we can get null images in the cursors - eg. no known size.
preloadImagesFromStyle(testContainer, 1, runTests);

</script>
</body>
</html>