select-picker-starting-style.html (1518B)
1 <!DOCTYPE html> 2 <link rel=author href="mailto:jarhar@chromium.org"> 3 <link rel=help href="https://issues.chromium.org/issues/394133544"> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="/resources/testdriver.js"></script> 7 <script src="/resources/testdriver-vendor.js"></script> 8 9 <select> 10 <option>option</option> 11 </select> 12 13 <style> 14 select, ::picker(select) { 15 appearance: base-select; 16 } 17 18 ::picker(select) { 19 color: white; 20 } 21 option { 22 background-color: black; 23 } 24 25 .animate::picker(select) { 26 transition: color 100s steps(2, start); 27 } 28 .animate option { 29 transition: background-color 100s steps(2, start); 30 } 31 32 @starting-style { 33 .animate::picker(select) { 34 color: black; 35 } 36 .animate option { 37 background-color: white; 38 } 39 } 40 </style> 41 42 <script> 43 const select = document.querySelector('select'); 44 const option = document.querySelector('option'); 45 promise_test(async () => { 46 await new Promise(requestAnimationFrame); 47 select.classList.add('animate'); 48 await test_driver.click(select); 49 await new Promise(requestAnimationFrame); 50 await new Promise(requestAnimationFrame); 51 52 const style = getComputedStyle(option); 53 assert_equals(style.color, 'rgb(128, 128, 128)', 54 'color should transition based on @starting-style.'); 55 assert_equals(style.backgroundColor, 'rgb(128, 128, 128)', 56 'background-color should transition based on @starting-style.'); 57 }, '@starting-style should work on ::picker(select) just like a popover.'); 58 </script>