chromium/third_party/blink/web_tests/fast/forms/select/select-disabled.html

<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<script src="../resources/common.js"></script>
</head>
<body>

<select id=select1 size=3>
<option selected>a</option>
<option>b</option>
<option>c</option>
</select>

<select id=select2>
<option selected>a</option>
<option>b</option>
<option>c</option>
</select>

<select id=select3>
<option selected>a</option>
</select>

<select id=select4>
<option selected>a</option>
<option>b</option>
<option>c</option>
</select>

<input id="text"></input>

<script>
description('Tests that user cannot change disabled select by keyboard');
jsTestIsAsync = true;

var select1 = document.getElementById('select1');
select1.focus();
shouldBeEqualToString('select1.value', 'a');
eventSender.keyDown('ArrowDown');
shouldBeEqualToString('select1.value', 'b');
select1.disabled = true;
eventSender.keyDown('ArrowDown');
shouldBeEqualToString('select1.value', 'b');
eventSender.keyDown('c');
shouldBeEqualToString('select1.value', 'b');

var select2 = document.getElementById('select2');
select2.focus();
shouldBeEqualToString('select2.value', 'a');
eventSender.keyDown('b');
shouldBeEqualToString('select2.value', 'b');
select2.disabled = true;
eventSender.keyDown('ArrowDown');
shouldBeEqualToString('select2.value', 'b');
eventSender.keyDown('c');
shouldBeEqualToString('select2.value', 'b');

debug('Tests on select disable, popup menu is hidden');
var select3 = document.getElementById('select3');
clickElement(select3);
shouldBeTrue("internals.isSelectPopupVisible(select3)");
select3.disabled = true;
select3.offsetLeft;
setTimeout(() => {
  shouldBeFalse("internals.isSelectPopupVisible(select3)");

  debug('Tests on select disable, value cannot be changed');
  var select4 = document.getElementById('select4');
  select4.focus();
  eventSender.keyDown('b');
  shouldBeEqualToString('select4.value', 'b');
  select4.disabled = true;
  eventSender.keyDown('c');
  shouldBeEqualToString('select4.value', 'b');
  finishJSTest();
}, 0);
</script>
</body>
</html>