blob: 0369ab6c6e00f7cced184711459bd7ac286128a7 [file] [log] [blame] [edit]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/accessibility-helper.js"></script>
<script src="../resources/js-test.js"></script>
<style>
select, select::picker(select) {
appearance: base-select;
}
</style>
</head>
<body>
<select id="select">
<option id="option1">Apple</option>
<option id="option2" selected>Banana</option>
<option id="option3">Cherry</option>
</select>
<script>
var output = "This test verifies basic accessibility properties of base-appearance selects (appearance: base-select).\n\n";
function expectMenuItem(axElement, expectedText) {
var result = "";
result += expect("(" + axElement + ").role.toLowerCase().includes('menuitem')", "true");
window._menuItemText = platformTextAlternatives(eval(axElement));
result += _menuItemText + "\n";
result += expect("_menuItemText.includes('" + expectedText + "')", "true");
return result;
}
if (window.accessibilityController) {
window.jsTestIsAsync = true;
var select = accessibilityController.accessibleElementById("select");
output += "--- Select role and value ---\n";
output += expect("select.role.toLowerCase().includes('popup')", "true");
output += expect("select.stringValue.includes('Banana')", "true");
output += expect("select.isExpanded", "false");
setTimeout(async function() {
select.press();
output += await expectAsync("select.isExpanded", "true");
// The select should contain a Menu which wraps the MenuItems.
output += expect("select.childrenCount", "1");
window.menu = select.childAtIndex(0);
output += expect("menu.role.toLowerCase().includes('menu')", "true");
output += expect("menu.childrenCount", "3");
output += expectMenuItem("menu.childAtIndex(0)", "Apple");
output += expectMenuItem("menu.childAtIndex(1)", "Banana");
output += expectMenuItem("menu.childAtIndex(2)", "Cherry");
output += expect("menu.childAtIndex(0).isSelected", "false");
output += expect("menu.childAtIndex(1).isSelected", "true");
output += expect("menu.childAtIndex(2).isSelected", "false");
output += expect("menu.selectedChildrenCount", "1");
output += expectMenuItem("menu.selectedChildAtIndex(0)", "Banana");
// Press to close the picker.
select.press();
output += await expectAsync("select.isExpanded", "false");
debug(output);
finishJSTest();
}, 0);
}
</script>
</body>
</html>