keyboard-accesskey-click-event.html (2943B)
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 <script src="/resources/accesskey.js"></script> 7 8 <p>Tests that a keyboard access key to press a button will fire only the click event</p> 9 <button id="button" accesskey="g">Click Me with Shift+Alt+g or on Mac with Control+Option+g</button> 10 <input id="inputbutton" type="button" accesskey="b" value="Click me with Shift+Alt+b or on Mac with Control+Option+b"> 11 <label id="label" accesskey="l">Click Me with Shift+Alt+l or on Mac with Control+Option+l</label> 12 13 <script> 14 let button = document.getElementById("button"); 15 let inputbutton = document.getElementById("inputbutton"); 16 let radiobutton = document.getElementById("radiobutton"); 17 let label = document.getElementById("label"); 18 let elementList = [button, inputbutton, label]; 19 let eventLog = []; 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 -1 because of non-pointing device input"); 28 assert_equals(e.pointerType, "", "Click's pointerType has default value"); 29 } 30 assert_equals(e.screenX, 0, "Click's screenX has default value"); 31 assert_equals(e.screenY, 0, "Click's screenY has default value"); 32 assert_equals(e.clientX, 0, "Click's clientX has default value"); 33 assert_equals(e.clientY, 0, "Click's clientY has default value"); 34 assert_equals(e.pageX, 0, "Click's pageX has default value"); 35 assert_equals(e.pageY, 0, "Click's pageY has default value"); 36 // https://github.com/w3c/csswg-drafts/issues/1070 37 assert_equals(e.offsetX, 0, "Click's offsetX should have default value"); 38 assert_equals(e.offsetY, 0, "Click's offsetY should have default value"); 39 }); 40 } 41 }));}); 42 let currentTest; 43 let testElements = [button, inputbutton, label]; 44 let accesskeyMap = new Map([[button, "g"], [inputbutton, "b"], [label, "l"]]); 45 testElements.forEach((el)=>promise_test((test)=> new Promise(async (resolve,reject)=>{ 46 currentTest = test; 47 eventLog = []; 48 var eventWatcher = new EventWatcher(test, el, ['click']); 49 let waitForClick = eventWatcher.wait_for('click'); 50 await pressAccessKey(accesskeyMap.get(el)); 51 await waitForClick; 52 53 assert_array_equals(eventLog, [`click_${el.id}`], "The Keyboard generated click only sends the click event."); 54 resolve(); 55 }), `Test that the Keyboard generated click does not fire pointer or mouse events for ${el.id}`)); 56 </script>