<html>
    <head>
        <script src="../../../fast/js/resources/js-test-pre.js"></script>

        <script>
            if (window.layoutTestController)
                layoutTestController.dumpAsText();
        </script>
    </head>
    <body id="body">
        <p>
            This test verifies that, on Windows, list items return the
            "list item" role.
            <br><br>
            <a href="https://bugs.webkit.org/show_bug.cgi?id=32688">Bug 32688 - MSAA: Accessibility role of list items is wrong</a>
        </p>

        <ul>
            <li id="listItem" tabindex="1">list item</li>
        </ul>

        <p id="console"></p>

        <script>
            if (window.accessibilityController) {
                document.getElementById("listItem").focus();

                var listItem = accessibilityController.focusedElement;
                shouldBe('listItem.role', '"list item"');
            }
        </script>
    </body>
</html>
