| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../resources/js-test.js"></script> |
| <script src="../resources/accessibility-helper.js"></script> |
| </head> |
| <body> |
| |
| <div id="content"> |
| <a href="https://apple.com" id="link" hidden aria-hidden="false">apple.com</a> |
| |
| <select id="select" name="pets" hidden aria-hidden="false"> |
| <option value="dog">Dog</option> |
| <option value="cat">Cat</option> |
| </select> |
| |
| <select id="select-multiple" multiple name="pets-multiple" hidden aria-hidden="false"> |
| <option value="dog">Dog</option> |
| <option value="cat">Cat</option> |
| </select> |
| |
| <textarea id="textarea" rows="5" cols="33" hidden aria-hidden="false"> |
| It was a dark and stormy night... |
| </textarea> |
| |
| <img id="img-with-map" src="resources/cake.png" width="145" height="126" usemap="#map" aria-label="Label" hidden aria-hidden="false"> |
| <map name="map"> |
| <area shape="rect" coords="0,0,100,100" href="#" alt="cake"> |
| </map> |
| |
| <ul hidden aria-hidden="false" id="ul"> |
| <li hidden aria-hidden="false" id="li-element">Hello world</li> |
| </ul> |
| |
| <ol hidden aria-hidden="false" id="ol"> |
| <li hidden aria-hidden="false">Hello world</li> |
| </ol> |
| |
| <button hidden aria-hidden="false" id="button">Click me</button> |
| |
| <fieldset> |
| <legend hidden aria-hidden="false" id="legend">Choose your favorite monster</legend> |
| |
| <input hidden aria-hidden="false" type="radio" id="radio-button" name="monster"> |
| <label for="radio-button">Kraken</label><br/> |
| |
| <input type="radio" id="sasquatch" name="monster"> |
| <label for="sasquatch">Sasquatch</label><br/> |
| </fieldset> |
| |
| <canvas hidden aria-hidden="false" id="canvas-without-fallback-content"></canvas> |
| <canvas hidden aria-hidden="false" id="canvas-with-fallback-content"><p>This is canvas fallback content</p></canvas> |
| |
| <input hidden aria-hidden="false" id="file-upload-button" type="file"></input> |
| <input hidden aria-hidden="false" id="checkbox" type="checkbox"></input> |
| <input hidden aria-hidden="false" id="text-button" type="submit"></input> |
| <input hidden aria-hidden="false" id="text-button-with-pressed" aria-pressed="false" type="submit"></input> |
| <input hidden aria-hidden="false" id="date-input" type="date"></input> |
| <input hidden aria-hidden="false" id="time-input" type="time"></input> |
| <input hidden aria-hidden="false" id="color-input" type="color"></input> |
| <input hidden aria-hidden="false" id="range-input" type="range"></input> |
| <input hidden aria-hidden="false" id="search-input" type="search"></input> |
| |
| <div hidden aria-hidden="false" id="contenteditable" contenteditable>Hello world</div> |
| |
| <h2 hidden aria-hidden="false" id="h2">Hello world</h2> |
| |
| <del hidden aria-hidden="false" id="del">Hello world</del> |
| <ins hidden aria-hidden="false" id="ins">Hello world</ins> |
| <sub hidden aria-hidden="false" id="sub">Hello world</sub> |
| <sup hidden aria-hidden="false" id="sup">Hello world</sup> |
| <code hidden aria-hidden="false" id="code">Hello world</code> |
| |
| <dl hidden aria-hidden="false" id="dl"> |
| <dt hidden aria-hidden="false" id="dt">dt element</dt> |
| <dd hidden aria-hidden="false" id="dd">dd element</dd> |
| </dl> |
| |
| <figure hidden aria-hidden="false" id="figure"></figure> |
| |
| <p hidden aria-hidden="false" id="p">Paragraph</p> |
| |
| <label hidden aria-hidden="false" id="label">Label</label> |
| |
| <dfn hidden aria-hidden="false" id="dfn">Some definition</dfn> |
| |
| <div hidden aria-hidden="false" id="div">Some text</div> |
| |
| <form hidden aria-hidden="false" id="form"></form> |
| |
| <article hidden aria-hidden="false" id="article">Article content</article> |
| |
| <main hidden aria-hidden="false" id="main">Main content</main> |
| |
| <nav hidden aria-hidden="false" id="nav">Nav</nav> |
| |
| <aside hidden aria-hidden="false" id="aside">Aside content</aside> |
| |
| <section hidden aria-hidden="false" id="section-with-name" aria-label="Section name">Section</section> |
| <section hidden aria-hidden="false" id="section-without-name">Section</section> |
| |
| <blockquote hidden aria-hidden="false" id="blockquote">To be or not to be, that is the question</blockquote> |
| |
| <mark hidden aria-hidden="false" id="mark">Marked text</mark> |
| |
| <pre hidden aria-hidden="false" id="pre">Pre-text</pre> |
| |
| <details hidden aria-hidden="false" id="details"> |
| <summary hidden aria-hidden="false" id="summary">Summary text</summary> |
| </details> |
| |
| <output hidden aria-hidden="false" id="output">Output</output> |
| |
| <menu hidden aria-hidden="false" type="toolbar" id="menu-toolbar"></menu> |
| |
| <hr hidden aria-hidden="false" id="hr"></hr> |
| |
| <time hidden aria-hidden="false" id="time"></time> |
| </div> |
| |
| <script> |
| // Buffer test output and dump it at the end to make the test run faster vs. individual `debug` calls. |
| var testOutput = "This test ensures ARIA visible elements (e.g. those with both `hidden` and `aria-hidden='false'` attributes) have the correct role.\n\n"; |
| |
| var elementUnderTest; |
| function verifyRole(elementId) { |
| testOutput += `${escapeHTML(document.getElementById(elementId).cloneNode().outerHTML)}\n`; |
| elementUnderTest = accessibilityController.accessibleElementById(elementId); |
| testOutput += ` ${elementUnderTest.role}`; |
| |
| let computedRoleString = elementUnderTest.computedRoleString; |
| if (computedRoleString) |
| testOutput += `\n computedRoleString: ${computedRoleString}`; |
| |
| let subrole = elementUnderTest.subrole; |
| if (subrole.replace("AXSubrole: ", "")) |
| testOutput += `\n ${subrole}`; |
| testOutput += `\n\n`; |
| } |
| |
| if (window.accessibilityController) { |
| verifyRole("link"); |
| verifyRole("select"); |
| verifyRole("select-multiple"); |
| verifyRole("textarea"); |
| verifyRole("img-with-map"); |
| verifyRole("li-element"); |
| verifyRole("button"); |
| verifyRole("legend"); |
| verifyRole("canvas-without-fallback-content"); |
| verifyRole("canvas-with-fallback-content"); |
| verifyRole("file-upload-button"); |
| verifyRole("checkbox"); |
| verifyRole("radio-button"); |
| verifyRole("text-button"); |
| verifyRole("text-button-with-pressed"); |
| verifyRole("date-input"); |
| verifyRole("color-input"); |
| verifyRole("range-input"); |
| verifyRole("search-input"); |
| verifyRole("h2"); |
| verifyRole("del"); |
| verifyRole("ins"); |
| verifyRole("sub"); |
| verifyRole("sup"); |
| verifyRole("code"); |
| verifyRole("dt"); |
| verifyRole("dd"); |
| verifyRole("dl"); |
| verifyRole("ol"); |
| verifyRole("ul"); |
| verifyRole("figure"); |
| verifyRole("p"); |
| verifyRole("label"); |
| verifyRole("dfn"); |
| verifyRole("div"); |
| verifyRole("form"); |
| verifyRole("article"); |
| verifyRole("main"); |
| verifyRole("nav"); |
| verifyRole("aside"); |
| verifyRole("section-with-name"); |
| verifyRole("section-without-name"); |
| verifyRole("blockquote"); |
| verifyRole("mark"); |
| verifyRole("pre"); |
| verifyRole("details"); |
| verifyRole("summary"); |
| verifyRole("output"); |
| verifyRole("menu-toolbar"); |
| verifyRole("hr"); |
| verifyRole("time"); |
| |
| document.getElementById("content").style.visibility = "hidden"; |
| debug(testOutput); |
| } |
| </script> |
| </body> |
| </html> |
| |