chromium/third_party/blink/web_tests/fast/forms/select-popup/popup-menu-event-order.html

<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<script src="../../../resources/testdriver.js"></script>
<script src="../../../resources/testdriver-vendor.js"></script>
<script src="../resources/common.js"></script>
<script src="../resources/picker-common.js"></script>
</head>
<body>
<select id="menu">
  <option>foo</option>
  <option selected>bar</option>
  <option hidden>baz</option>
  <optgroup label="qux">
      <option>garply</option>
  </optgroup>
</select>
<script>

var events = [];
function recordEvent(event) {
    events.push(event.type);
}

var menu = document.getElementById('menu');
var picker = null;
function openPickerErrorCallback() {
    testFailed('picker didn\'t open')
    finishJSTest();
}
openPickerDeprecatedJsTest(menu, test1, openPickerErrorCallback);

function test1() {
    picker = internals.pagePopupWindow.global.picker;
    menu.addEventListener('mouseup', recordEvent);
    menu.addEventListener('click', recordEvent);
    menu.addEventListener('change', recordEvent);
    eventSender.keyDown('ArrowDown');
    eventSender.keyDown('Enter');
    shouldBeNull('internals.pagePopupWindow');
    shouldBeEqualToString('menu.value', 'garply');
    shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
    shouldBeEqualToString('events[0]', 'change');
    shouldBeEqualToString('events[1]', 'mouseup');
    shouldBeEqualToString('events[2]', 'click');

    finishJSTest();
}
</script>
</body>
</html>