| <html> |
| <head> |
| <script src="../resources/js-test.js"></script> |
| </head> |
| <body> |
| |
| <p id="description"></p> |
| <div id="console"></div> |
| |
| <input type="radio" name="r1" id="r1" title="TITLE">Test<br> |
| <label id="label1" for="r1">LABEL</label> |
| |
| <input type="radio" id="r2" aria-labeledby="label2">Test<br> |
| <label for="r2">LABEL2</label> |
| <div id="label2">LABEL2a</div> |
| |
| <input type="radio" name="r3" id="r3" aria-label="radio3">Test<br> |
| <label for="r3">LABEL3</label> |
| |
| <script> |
| |
| description("This test checks that radio buttons expose title ui elements correctly under a variety of cirmcumstances. In general, the <label> should NOT disappear and should be the titleUIElement for the checkbox."); |
| |
| if (window.accessibilityController) { |
| |
| // 1) Even though a checkbox has a title attribute, the title ui element should still be exposed. |
| var radio1 = accessibilityController.accessibleElementById("r1"); |
| var titleUIElement = radio1.titleUIElement(); |
| if (accessibilityController.platformName == "atk") |
| shouldBe("radio1.title", "'AXTitle: LABEL'"); |
| else |
| shouldBe("radio1.title", "'AXTitle: '"); |
| shouldBeTrue("titleUIElement.isEqual(accessibilityController.accessibleElementById('label1'))"); |
| |
| // 2) aria-labeledby should override the native label semantics and return a title for the radio button, instead of a title ui element. |
| var radio2 = accessibilityController.accessibleElementById("r2"); |
| titleUIElement = radio2.titleUIElement(); |
| if (accessibilityController.platformName == "atk") { |
| shouldBe("radio2.title", "'AXTitle: LABEL2a'"); |
| shouldBe("radio2.description", "'AXDescription: '"); |
| } else { |
| shouldBe("radio2.description", "'AXDescription: LABEL2a'"); |
| shouldBe("radio2.title", "'AXTitle: '"); |
| } |
| shouldBeTrue("!titleUIElement || titleUIElement.title == 'AXTitle: '"); |
| |
| // 3) If a radio button has an aria-label and a <label>, the aria-label should be the title. |
| var radio3 = accessibilityController.accessibleElementById("r3"); |
| titleUIElement = radio3.titleUIElement(); |
| if (accessibilityController.platformName == "atk") { |
| shouldBe("radio3.title", "'AXTitle: radio3'"); |
| shouldBe("radio2.description", "'AXDescription: '"); |
| } else { |
| shouldBe("radio3.description", "'AXDescription: radio3'"); |
| shouldBe("radio3.title", "'AXTitle: '"); |
| } |
| shouldBeTrue("!titleUIElement || titleUIElement.title == 'AXTitle: '"); |
| |
| } |
| </script> |
| </body> |
| </html> |