Browse Source

Add keydown sendInputEvent specs

Kevin Sawicki 8 years ago
parent
commit
d69367aa9b
2 changed files with 66 additions and 1 deletions
  1. 57 1
      spec/api-web-contents-spec.js
  2. 9 0
      spec/fixtures/pages/onkeydown.html

+ 57 - 1
spec/api-web-contents-spec.js

@@ -5,7 +5,7 @@ const path = require('path')
 const {closeWindow} = require('./window-helpers')
 
 const {remote} = require('electron')
-const {BrowserWindow, webContents} = remote
+const {BrowserWindow, webContents, ipcMain} = remote
 
 const isCi = remote.getGlobal('isCi')
 
@@ -97,4 +97,60 @@ describe('webContents module', function () {
       })
     })
   })
+
+  describe('sendInputEvent(event)', function () {
+    it('can send keydown events', function (done) {
+      w.loadURL('file://' + path.join(__dirname, 'fixtures', 'pages', 'onkeydown.html'))
+
+      ipcMain.once('keydown', function (event, key, code, keyCode, shiftKey, ctrlKey, altKey) {
+        assert.equal(key, '')
+        assert.equal(code, '')
+        assert.equal(keyCode, 65)
+        assert.equal(shiftKey, false)
+        assert.equal(ctrlKey, false)
+        assert.equal(altKey, false)
+        done()
+      })
+
+      w.webContents.once('did-finish-load', function () {
+        w.webContents.sendInputEvent({type: 'keyDown', keyCode: 'A'})
+      })
+    })
+
+    it('can send keydown events with modifiers', function (done) {
+      w.loadURL('file://' + path.join(__dirname, 'fixtures', 'pages', 'onkeydown.html'))
+
+      ipcMain.once('keydown', function (event, key, code, keyCode, shiftKey, ctrlKey, altKey) {
+        assert.equal(key, '')
+        assert.equal(code, '')
+        assert.equal(keyCode, 90)
+        assert.equal(shiftKey, true)
+        assert.equal(ctrlKey, true)
+        assert.equal(altKey, false)
+        done()
+      })
+
+      w.webContents.once('did-finish-load', function () {
+        w.webContents.sendInputEvent({type: 'keyDown', keyCode: 'Z', modifiers: ['shift', 'ctrl']})
+      })
+    })
+
+    it('can send keydown events with special keys', function (done) {
+      w.loadURL('file://' + path.join(__dirname, 'fixtures', 'pages', 'onkeydown.html'))
+
+      ipcMain.once('keydown', function (event, key, code, keyCode, shiftKey, ctrlKey, altKey) {
+        assert.equal(key, '')
+        assert.equal(code, '')
+        assert.equal(keyCode, 9)
+        assert.equal(shiftKey, false)
+        assert.equal(ctrlKey, false)
+        assert.equal(altKey, true)
+        done()
+      })
+
+      w.webContents.once('did-finish-load', function () {
+        w.webContents.sendInputEvent({type: 'keyDown', keyCode: 'Tab', modifiers: ['alt']})
+      })
+    })
+  })
 })

+ 9 - 0
spec/fixtures/pages/onkeydown.html

@@ -0,0 +1,9 @@
+<html>
+<body>
+<script type="text/javascript" charset="utf-8">
+document.onkeydown = function (e) {
+  require('electron').ipcRenderer.send('keydown', e.key, e.code, e.keyCode, e.shiftKey, e.ctrlKey, e.altKey)
+}
+</script>
+</body>
+</html>