<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/accessibility-helper.js"></script>
<script src="../resources/js-test.js"></script>
</head>
<body>

<div id="examples">
    <a class="ex" id="ex1" href="#" data-expected="">foo</a>
    <a class="ex" id="ex2" href="#" title="bar" data-expected="bar">foo</a>
    <a class="ex" id="ex3" href="#" title="bar" aria-help="baz" data-expected="baz">foo</a>
    <a class="ex" id="ex4" href="#" title="foo" data-expected=""><!-- no contents, so @title used as label, not help --></a>
    
    <h1 class="ex" id="ex5" title="bar" data-expected="bar"><a class="ex" id="ex6" href="#" data-expected="">foo</a></h1>

    <button class="ex" id="ex7" data-expected="">foo</button>
    <button class="ex" id="ex8" title="bar" data-expected="bar">foo</button>
    <button class="ex" id="ex9" title="bar" aria-help="baz" data-expected="baz">foo</button>
    <button class="ex" id="ex10" title="foo" data-expected=""><!-- no contents, so @title used as label, not help --></button>

    <table class="ex" id="ex11" summary="table summary" data-expected="table summary">
        <caption class="ex" id="ex12" data-expected="">caption</caption>
        <tr>
            <td>
                <input class="ex" id="ex13" type="checkbox" data-expected="">
                <div class="ex" id="ex14" role="text" data-expected="">text</div>
            </td>
        </tr>
    </table>

    <main class="ex" id="ex15" aria-help="bar" data-expected="bar">
        <button class="ex" id="ex16" data-expected="">foo</button>
    </main>

    <main class="ex" id="ex17" role="group" title="bar" data-expected="">
        <div class="ex" id="ex18" role="group" data-expected="">foo</div>
    </main>

    <a href="" class="ex" id="ex19" title="bar" data-expected="bar">
        <div class="ex" id="ex20" data-expected="">foo</div>
    </a>
</div>

<script>
var output = "Tests accessibility help text in a variety of examples.\n\n";

if (window.accessibilityController) {
    document.querySelectorAll("#examples .ex").forEach(element => {
        const ax = accessibilityController.accessibleElementById(element.id);
        if (!ax)
            return;

        const tag = element.tagName.toLowerCase();
        const expectation = element.getAttribute("data-expected");
        const description = platformValueForW3CDescription(ax);
        if (description === expectation)
            output += escapeHTML(`PASS: Help text for <${tag}> is ${description}\n`);
        else
            output += escapeHTML(`FAIL: Help text for <${tag}> is ${description} but expected ${expectation}\n`);
    });

    // Once tests are complete, hide all the example markup.
    document.getElementById("examples").style.display = "none";
    debug(output);
}
</script>
</body>
</html>

