test(function () { var webpage = require('webpage'); var page = webpage.create(); page.evaluate(function() { window.addEventListener('keypress', function(event) { window.loggedEvent = window.loggedEvent || []; window.loggedEvent.push(event.which); }, false); }); page.sendEvent('keypress', page.event.key.C); var loggedEvent = page.evaluate(function() { return window.loggedEvent; }); assert_equals(loggedEvent.length, 1); assert_equals(loggedEvent[0], page.event.key.C); // Send keypress events to an input element and observe the effect. page.content = ''; page.evaluate(function() { document.querySelector('input').focus(); }); function getText() { return page.evaluate(function() { return document.querySelector('input').value; }); } page.sendEvent('keypress', page.event.key.A); assert_equals(getText(), 'A'); page.sendEvent('keypress', page.event.key.B); assert_equals(getText(), 'AB'); page.sendEvent('keypress', page.event.key.Backspace); assert_equals(getText(), 'A'); page.sendEvent('keypress', page.event.key.Backspace); assert_equals(getText(), ''); page.sendEvent('keypress', 'XYZ'); assert_equals(getText(), 'XYZ'); // Special character: A with umlaut page.sendEvent('keypress', 'ä'); assert_equals(getText(), 'XYZä'); // 0x02000000 is the Shift modifier. page.sendEvent('keypress', page.event.key.Home, null, null, 0x02000000); page.sendEvent('keypress', page.event.key.Delete); assert_equals(getText(), ''); // Joel: This works, but it causes you to lose your clipboard when running the tests. // Cut and Paste // 0x04000000 is the Control modifier. // page.sendEvent('keypress', 'ABCD'); // assert_equals(getText(), 'ABCD'); // page.sendEvent('keypress', page.event.key.Home, null, null, 0x02000000); // page.sendEvent('keypress', page.event.key.Cut); // assert_equals(getText(), ''); // page.sendEvent('keypress', page.event.key.Paste); // assert_equals(getText(), 'ABCD'); }, "key press events");