select-click-picker-light-dismiss.tentative.html (1422B)
1 <!DOCTYPE html> 2 <link rel=author href="mailto:jarhar@chromium.org"> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="/resources/testdriver.js"></script> 6 <script src="/resources/testdriver-vendor.js"></script> 7 <script src="/resources/testdriver-actions.js"></script> 8 9 <style> 10 select, ::picker(select) { 11 appearance: base-select; 12 } 13 ::picker(select) { 14 width: 600px; 15 height: 600px; 16 top: 0; 17 left: 0; 18 position-area: none; 19 position-try-fallbacks: none; 20 } 21 </style> 22 23 <select></select> 24 25 <script> 26 promise_test(async () => { 27 const select = document.querySelector('select'); 28 await (new test_driver.Actions() 29 .pointerMove(0, 0, {origin: select}) 30 .pointerDown() 31 .pointerUp()) 32 .send(); 33 await new Promise(requestAnimationFrame); 34 assert_true(select.matches(':open'), 35 'Select should be open after clicking it.'); 36 37 let selectClicked = false; 38 select.addEventListener('click', () => { 39 selectClicked = true; 40 }); 41 42 await (new test_driver.Actions() 43 .pointerMove(300, 300) 44 .pointerDown() 45 .pointerUp()) 46 .send(); 47 48 assert_true(selectClicked, 49 'Clicking ::picker(select) should fire a click event on the select element.'); 50 assert_true(select.matches(':open'), 51 'Select should not close when clicking its picker.'); 52 }, 'Clicking directly on ::picker(select) should not trigger light dismiss.'); 53 </script>