keyboard-click-event.html (2191B)
1 <script src="/resources/testharness.js"></script> 2 <script src="/resources/testharnessreport.js"></script> 3 <script src="/resources/testdriver.js"></script> 4 <script src="/resources/testdriver-actions.js"></script> 5 <script src="/resources/testdriver-vendor.js"></script> 6 7 <p>Tests that a button pressed by using Space or Enter will fire only the click event</p> 8 <button id="button">Click Me by pressing Enter or Space</button> 9 <input id="inputbutton" type="button" value="Click me by pressing Enter or Space"> 10 11 <script> 12 let button = document.getElementById("button"); 13 let inputbutton = document.getElementById("inputbutton"); 14 let radiobutton = document.getElementById("radiobutton"); 15 let elementList = [button, inputbutton]; 16 let eventLog = []; 17 const enterKey = '\uE006'; 18 const spaceKey = ' '; 19 let keys = [spaceKey, enterKey]; 20 const eventList = ["pointerdown", "pointerup", "mousedown", "mouseup", "click"]; 21 elementList.forEach((el)=>{eventList.forEach((ev)=>el.addEventListener(ev, (e)=>{ 22 eventLog.push(`${ev}_${el.id}`); 23 if(ev === "click" && currentTest){ 24 currentTest.step(()=>{ 25 if(e instanceof PointerEvent){ 26 // We want the test to run on all browsers even if click is not a PointerEvent. 27 assert_equals(e.pointerId, -1, "Click's pointerId has reserved value"); 28 assert_equals(e.pointerType, "", "Click's pointerType has default value"); 29 } 30 }); 31 } 32 }));}); 33 let currentTest; 34 let testElements = [button, inputbutton]; 35 let keyNameMap = new Map([[spaceKey, "space"], [enterKey, "enter"]]); 36 keys.forEach((key)=>testElements.forEach((el)=>promise_test((test)=> new Promise(async (resolve,reject)=>{ 37 currentTest = test; 38 eventLog = []; 39 var eventWatcher = new EventWatcher(test, el, ['click']); 40 let waitForClick = eventWatcher.wait_for('click'); 41 el.focus(); 42 let actions = new test_driver.Actions(); 43 await test_driver 44 .send_keys(el, key); 45 await waitForClick; 46 47 assert_array_equals(eventLog, [`click_${el.id}`], "The Keyboard generated click only sends the click event."); 48 resolve(); 49 }), `Test that the Keyboard generated click does not fire pointer or mouse events for ${el.id} when pressing ${keyNameMap.get(key)} key`))); 50 </script>