| <!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> |