Skip to content

Commit d31b926

Browse files
Send instance of KeyboardEvent on keyup/keydown/keypress (#246)
1 parent 7326bff commit d31b926

File tree

1 file changed

+23
-16
lines changed
  • lib/capybara/cuprite/javascripts

1 file changed

+23
-16
lines changed

lib/capybara/cuprite/javascripts/index.js

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,15 @@ class Cuprite {
151151
// call the following functions in order, if one returns false (preventDefault),
152152
// stop the call chain
153153
[
154-
() => this.keyupdowned(node, "keydown", keyCode),
154+
() => this.keyupdowned(node, "keydown", char, keyCode),
155155
() => this.keypressed(node, false, false, false, false, char.charCodeAt(0), char.charCodeAt(0)),
156156
() => {
157157
this.setValue(node, node.value + char)
158158
this.input(node)
159159
}
160160
].some(fn => fn())
161161

162-
this.keyupdowned(node, "keyup", keyCode);
162+
this.keyupdowned(node, "keyup", char, keyCode);
163163
}
164164
}
165165

@@ -187,27 +187,34 @@ class Cuprite {
187187
/**
188188
* @return {boolean} false when an event handler called preventDefault()
189189
*/
190-
keyupdowned(node, eventName, keyCode) {
191-
let event = document.createEvent("UIEvents");
192-
event.initEvent(eventName, true, true);
193-
event.keyCode = keyCode;
194-
event.charCode = 0;
190+
keyupdowned(node, eventName, char, keyCode) {
191+
let event = new KeyboardEvent(
192+
eventName, {
193+
bubbles: true,
194+
cancelable: true,
195+
key: char,
196+
keyCode: keyCode
197+
}
198+
);
195199
return !node.dispatchEvent(event);
196200
}
197201

198202
/**
199203
* @return {boolean} false when an event handler called preventDefault()
200204
*/
201205
keypressed(node, altKey, ctrlKey, shiftKey, metaKey, keyCode, charCode) {
202-
event = document.createEvent("UIEvents");
203-
event.initEvent("keypress", true, true);
204-
event.window = window;
205-
event.altKey = altKey;
206-
event.ctrlKey = ctrlKey;
207-
event.shiftKey = shiftKey;
208-
event.metaKey = metaKey;
209-
event.keyCode = keyCode;
210-
event.charCode = charCode;
206+
let event = new KeyboardEvent(
207+
"keypress", {
208+
bubbles: true,
209+
cancelable: true,
210+
altKey: altKey,
211+
ctrlKey: ctrlKey,
212+
shiftKey: shiftKey,
213+
metaKey: metaKey,
214+
keyCode: keyCode,
215+
charCode: charCode
216+
}
217+
);
211218
return !node.dispatchEvent(event);
212219
}
213220

0 commit comments

Comments
 (0)