diff --git a/test/module/webpage/keydown-event.js b/test/module/webpage/keydown-event.js new file mode 100644 index 00000000..f8ede6b8 --- /dev/null +++ b/test/module/webpage/keydown-event.js @@ -0,0 +1,19 @@ +var assert = require('../../assert'); +var webpage = require('webpage'); + +var page = webpage.create(); + +page.evaluate(function() { + window.addEventListener('keydown', function(event) { + window.loggedEvent = window.loggedEvent || []; + window.loggedEvent.push(event); + }, false); +}); + +page.sendEvent('keydown', page.event.key.A); +var loggedEvent = page.evaluate(function() { + return window.loggedEvent; +}); + +assert.equal(loggedEvent.length, 1); +assert.equal(loggedEvent[0].which, page.event.key.A); diff --git a/test/module/webpage/keypress-event.js b/test/module/webpage/keypress-event.js new file mode 100644 index 00000000..7abbc7d2 --- /dev/null +++ b/test/module/webpage/keypress-event.js @@ -0,0 +1,64 @@ +var assert = require('../../assert'); +var webpage = require('webpage'); + +var page = webpage.create(); + +page.evaluate(function() { + window.addEventListener('keypress', function(event) { + window.loggedEvent = window.loggedEvent || []; + window.loggedEvent.push(event); + }, false); +}); + +page.sendEvent('keypress', page.event.key.C); +var loggedEvent = page.evaluate(function() { + return window.loggedEvent; +}); + +assert.equal(loggedEvent.length, 1); +assert.equal(loggedEvent[0].which, 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.equal(getText(), 'A'); +page.sendEvent('keypress', page.event.key.B); +assert.equal(getText(), 'AB'); +page.sendEvent('keypress', page.event.key.Backspace); +assert.equal(getText(), 'A'); +page.sendEvent('keypress', page.event.key.Backspace); +assert.equal(getText(), ''); + +page.sendEvent('keypress', 'XYZ'); +assert.equal(getText(), 'XYZ'); + +// Special character: A with umlaut +page.sendEvent('keypress', 'ä'); +assert.equal(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.equal(getText(), ''); + +// Cut and Paste +// 0x04000000 is the Control modifier. +page.sendEvent('keypress', 'ABCD'); +assert.equal(getText(), 'ABCD'); +page.sendEvent('keypress', page.event.key.Home, null, null, 0x02000000); +page.sendEvent('keypress', 'x', null, null, 0x04000000); +assert.equal(getText(), ''); +page.sendEvent('keypress', 'v', null, null, 0x04000000); +assert.equal(getText(), 'ABCD'); diff --git a/test/module/webpage/keyup-event.js b/test/module/webpage/keyup-event.js new file mode 100644 index 00000000..0eca174c --- /dev/null +++ b/test/module/webpage/keyup-event.js @@ -0,0 +1,19 @@ +var assert = require('../../assert'); +var webpage = require('webpage'); + +var page = webpage.create(); + +page.evaluate(function() { + window.addEventListener('keyup', function(event) { + window.loggedEvent = window.loggedEvent || []; + window.loggedEvent.push(event); + }, false); +}); + +page.sendEvent('keyup', page.event.key.B); +var loggedEvent = page.evaluate(function() { + return window.loggedEvent; +}); + +assert.equal(loggedEvent.length, 1); +assert.equal(loggedEvent[0].which, page.event.key.B); diff --git a/test/webpage-spec.js b/test/webpage-spec.js index 630f77de..15f34c2c 100644 --- a/test/webpage-spec.js +++ b/test/webpage-spec.js @@ -173,157 +173,6 @@ describe("WebPage object", function() { checkViewportSize(page, {height:300,width:400}); - it("should handle keydown event", function() { - runs(function() { - page.evaluate(function() { - window.addEventListener('keydown', function(event) { - window.loggedEvent = window.loggedEvent || {}; - window.loggedEvent.keydown = event; - }, false); - }); - page.sendEvent('keydown', page.event.key.A); - }); - - waits(50); - - runs(function() { - var event = page.evaluate(function() { - return window.loggedEvent.keydown; - }); - expect(event.which).toEqual(page.event.key.A); - }); - }); - - it("should handle keyup event", function() { - runs(function() { - page.evaluate(function() { - window.addEventListener('keyup', function(event) { - window.loggedEvent = window.loggedEvent || {}; - window.loggedEvent.keyup = event; - }, false); - }); - page.sendEvent('keyup', page.event.key.A); - }); - - waits(50); - - runs(function() { - var event = page.evaluate(function() { - return window.loggedEvent.keyup; - }); - expect(event.which).toEqual(page.event.key.A); - }); - }); - - it("should handle keypress event", function() { - runs(function() { - page.evaluate(function() { - window.addEventListener('keypress', function(event) { - window.loggedEvent = window.loggedEvent || {}; - window.loggedEvent.keypress = event; - }, false); - }); - page.sendEvent('keypress', page.event.key.A); - }); - - waits(50); - - runs(function() { - var event = page.evaluate(function() { - return window.loggedEvent.keypress; - }); - expect(event.which).toEqual(page.event.key.A); - }); - }); - - it("should handle keypress event with inputs", function() { - runs(function() { - page.content = ''; - page.evaluate(function() { - document.querySelector('input').focus(); - }); - var getText = function() { - return page.evaluate(function() { - return document.querySelector('input').value; - }); - }; - page.sendEvent('keypress', page.event.key.A); - expect(getText()).toEqual("A"); - page.sendEvent('keypress', page.event.key.B); - expect(getText()).toEqual("AB"); - page.sendEvent('keypress', page.event.key.Backspace); - expect(getText()).toEqual("A"); - }); - }); - - it("should handle keypress event of string with inputs", function() { - runs(function() { - page.content = ''; - page.evaluate(function() { - document.querySelector('input').focus(); - }); - page.sendEvent('keypress', "ABCD"); - // 0x02000000 is the Shift modifier. - page.sendEvent('keypress', page.event.key.Home, null, null, 0x02000000); - page.sendEvent('keypress', page.event.key.Delete); - var text = page.evaluate(function() { - return document.querySelector('input').value; - }); - expect(text).toEqual(""); - }); - }); - - it("should handle key events with modifier keys", function() { - runs(function() { - page.content = ''; - page.evaluate(function() { - document.querySelector('input').focus(); - }); - page.sendEvent('keypress', "ABCD"); - var text = page.evaluate(function() { - return document.querySelector('input').value; - }); - expect(text).toEqual("ABCD"); - }); - }); - - it("should send proper key codes for text", function () { - runs(function() { - page.content = ''; - page.evaluate(function() { - document.querySelector('input').focus(); - }); - page.sendEvent('keypress', "ABCD"); - // 0x02000000 is the Shift modifier. - page.sendEvent('keypress', page.event.key.Home, null, null, 0x02000000); - // 0x04000000 is the Control modifier. - page.sendEvent('keypress', 'x', null, null, 0x04000000); - var text = page.evaluate(function() { - return document.querySelector('input').value; - }); - expect(text).toEqual(""); - page.sendEvent('keypress', 'v', null, null, 0x04000000); - text = page.evaluate(function() { - return document.querySelector('input').value; - }); - expect(text).toEqual("ABCD"); - }); - }); - - it("should handle keypress event of umlaut char with inputs", function() { - runs(function() { - page.content = ''; - page.evaluate(function() { - document.querySelector('input').focus(); - }); - page.sendEvent('keypress', "ä"); - var text = page.evaluate(function() { - return document.querySelector('input').value; - }); - expect(text).toEqual("ä"); - }); - }); - it("should handle mousedown event", function() { runs(function() { page.evaluate(function() {