Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE html>
<link rel=author href="mailto:jarhar@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
input, datalist {
appearance: base;
}
</style>
<input list=datalist>
<datalist id=datalist>
<option class=one>one</option>
<option class=two>two</option>
</datalist>
<script>
const input = document.querySelector('input');
const datalist = document.querySelector('datalist');
const optionOne = document.querySelector('.one');
const optionTwo = document.querySelector('.two');
test(() => {
assert_false(datalist.matches(':popover-open'),
'datalist should not match :popover-open at the start of the test.');
assert_false(optionOne.matches(':active-option'),
'option one should not match :active-option when the datalist is closed.');
assert_false(optionTwo.matches(':active-option'),
'option two should not match :active-option when the datalist is closed.');
input.focus();
assert_true(datalist.matches(':popover-open'),
'datalist should open after focusing the input.');
assert_true(optionOne.matches(':active-option'),
'first option should match :active-option after opening the datalist.');
assert_false(optionTwo.matches(':active-option'),
'second option should not match :active-option after opening the datalist.');
input.blur();
}, 'When the datalist opens, the first option should match :active-option.');
test(() => {
assert_false(datalist.matches(':popover-open'),
'datalist should be closed at the start of the test.');
optionOne.setAttribute('disabled', '');
input.focus();
assert_true(datalist.matches(':popover-open'),
'datalist should open after focusing the input.');
assert_false(optionOne.matches(':active-option'),
'disabled option should not match :active-option.');
assert_true(optionTwo.matches(':active-option'),
'enabled option should match :active-option.');
input.blur();
}, 'Disabled options should not match :active-option.');
</script>