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>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<!-- This test is marked as optional because the specification does not mandate
which particular elements support pickers or not. Picker support for elements
varies across browsers and platforms. -->
<button>reset</button>
<div class=supported>
<input type=date>
<input type=datetime-local>
<input type=week>
<input type=month>
<input type=time>
<input type=color>
</div>
<input type=text list=datalist>
<datalist id=datalist>
<option>one</option>
<option>two</option>
</datalist>
<script>
document.querySelectorAll('.supported > input').forEach(input => {
const inputType = input.getAttribute('type');
promise_test(async () => {
assert_false(input.matches(':open'),
'Should not match :open at the start of the test.');
await test_driver.bless();
input.showPicker();
assert_true(input.matches(':open'),
'Should match :open after opening the picker.');
await test_driver.click(document.querySelector('button'));
assert_false(input.matches(':open'),
'Should not match :open after closing the picker.');
}, `CSS :open for <input type=${inputType}>`);
});
// TODO(crbug.com/383306186): Support :open for <input type=text list=datalist>
promise_test(async () => {
const input = document.querySelector('input[list]');
assert_false(input.matches(':open'),
'Should not match :open at the start of the test.');
await test_driver.bless();
input.showPicker();
assert_true(input.matches(':open'),
'Should match :open after opening the list.');
await test_driver.click(document.querySelector('button'));
assert_false(input.matches(':open'),
'Should not match :open after closing the list.');
}, 'CSS :open for <input type=text list=datalist>');
</script>