blob: bcfc1b9565215b680f32ba537cd90dbea6e3fe02 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<title>HTMLSelectMenuElement Test: option facusable</title>
<link rel="author" title="Ionel Popescu" href="mailto:iopopesc@microsoft.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<selectmenu id="selectmenu0">
<option>one</option>
<option id="selectmenu0-option2">two</option>
<option>three</option>
</selectmenu>
<script>
// See https://w3c.github.io/webdriver/#keyboard-actions
const KEY_CODE_MAP = {
'Enter': '\uE007',
'Space': '\uE00D',
'ArrowUp': '\uE013',
'ArrowDown': '\uE015'
};
function clickOn(element) {
const actions = new test_driver.Actions();
return actions.pointerMove(0, 0, {origin: element})
.pointerDown({button: actions.ButtonType.LEFT})
.pointerUp({button: actions.ButtonType.LEFT})
.send();
}
promise_test(async t => {
const selectMenu = document.querySelector("#selectmenu0");
assert_false(selectMenu.open, "selectmenu should not be initially open");
await clickOn(selectMenu);
assert_true(selectMenu.open);
assert_equals(selectMenu.value, "one");
const option2 = document.querySelector('#selectmenu0-option2');
option2.focus();
assert_equals(document.activeElement, option2);
await test_driver.send_keys(selectMenu, KEY_CODE_MAP.Enter);
assert_equals(selectMenu.value, "two");
}, "Validate <option> is focusable when is a descendant of <selectmenu>");
</script>