Skip to content

Commit 47e1db9

Browse files
committed
Fix Input related integration tests on Firefox
1 parent 702438f commit 47e1db9

File tree

2 files changed

+64
-186
lines changed

2 files changed

+64
-186
lines changed

test/integration/frame.html

+50
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,56 @@
3737
clearTimeout(id);
3838
};
3939
}());
40+
41+
// Custom event factories for cross-browser compatibility
42+
43+
function createMouseEvent (options) {
44+
var options = {
45+
bubbles: true,
46+
cancelable: true,
47+
view: window
48+
}
49+
50+
if ('MouseEvent' in window) {
51+
return new MouseEvent('click', options);
52+
} else {
53+
var event = document.createEvent('MouseEvent');
54+
event.initMouseEvent(
55+
'click',
56+
options.bubbles,
57+
options.cancelable,
58+
options.view
59+
);
60+
61+
return event;
62+
}
63+
}
64+
65+
function createKeyboardEvent (key = 'a') {
66+
var options = {
67+
bubbles: true,
68+
cancelable: true,
69+
view: window,
70+
key: key,
71+
charCode: key.charCodeAt()
72+
}
73+
74+
if ('KeyboardEvent' in window) {
75+
return new KeyboardEvent('keypress', options);
76+
} else {
77+
var event = document.createEvent('KeyboardEvent');
78+
event.initKeyboardEvent(
79+
'keypress',
80+
options.bubbles,
81+
options.cancelable,
82+
options.view,
83+
options.key,
84+
options.charCode
85+
);
86+
87+
return event;
88+
}
89+
}
4090
</script>
4191
<script src="../../node_modules/jquery/dist/jquery.js"></script>
4292
<script src="../../build/raven.js"></script>

test/integration/test.js

+14-186
Original file line numberDiff line numberDiff line change
@@ -458,14 +458,8 @@ describe('integration', function() {
458458
false
459459
);
460460

461-
var evt;
462-
if (document.createEvent) {
463-
evt = document.createEvent('MouseEvents');
464-
evt.initEvent('click', true, false);
465-
div.dispatchEvent(evt);
466-
} else if (document.createEventObject) {
467-
div.fireEvent('onclick');
468-
}
461+
var click = createMouseEvent();
462+
div.dispatchEvent(click);
469463
},
470464
function() {
471465
var ravenData = iframe.contentWindow.ravenData[0];
@@ -828,24 +822,7 @@ describe('integration', function() {
828822
input.addEventListener('click', clickHandler);
829823

830824
// click <input/>
831-
var evt = document.createEvent('MouseEvent');
832-
evt.initMouseEvent(
833-
'click',
834-
true /* bubble */,
835-
true /* cancelable */,
836-
window,
837-
null,
838-
0,
839-
0,
840-
0,
841-
0 /* coordinates */,
842-
false,
843-
false,
844-
false,
845-
false /* modifier keys */,
846-
0 /*left*/,
847-
null
848-
);
825+
var evt = createMouseEvent();
849826
input.dispatchEvent(evt);
850827
},
851828
function() {
@@ -878,24 +855,7 @@ describe('integration', function() {
878855
Raven._breadcrumbs = [];
879856

880857
// click <input/>
881-
var evt = document.createEvent('MouseEvent');
882-
evt.initMouseEvent(
883-
'click',
884-
true /* bubble */,
885-
true /* cancelable */,
886-
window,
887-
null,
888-
0,
889-
0,
890-
0,
891-
0 /* coordinates */,
892-
false,
893-
false,
894-
false,
895-
false /* modifier keys */,
896-
0 /*left*/,
897-
null
898-
);
858+
var evt = createMouseEvent();
899859

900860
var input = document.getElementsByTagName('input')[0];
901861
input.dispatchEvent(evt);
@@ -941,24 +901,7 @@ describe('integration', function() {
941901
document.querySelector('.c').addEventListener('click', clickHandler);
942902

943903
// click <input/>
944-
var evt = document.createEvent('MouseEvent');
945-
evt.initMouseEvent(
946-
'click',
947-
true /* bubble */,
948-
true /* cancelable */,
949-
window,
950-
null,
951-
0,
952-
0,
953-
0,
954-
0 /* coordinates */,
955-
false,
956-
false,
957-
false,
958-
false /* modifier keys */,
959-
0 /*left*/,
960-
null
961-
);
904+
var evt = createMouseEvent();
962905

963906
var input = document.querySelector('.a'); // leaf node
964907
input.dispatchEvent(evt);
@@ -993,24 +936,7 @@ describe('integration', function() {
993936
Raven._breadcrumbs = [];
994937

995938
// click <input/>
996-
var evt = document.createEvent('MouseEvent');
997-
evt.initMouseEvent(
998-
'click',
999-
true /* bubble */,
1000-
true /* cancelable */,
1001-
window,
1002-
null,
1003-
0,
1004-
0,
1005-
0,
1006-
0 /* coordinates */,
1007-
false,
1008-
false,
1009-
false,
1010-
false /* modifier keys */,
1011-
0 /*left*/,
1012-
null
1013-
);
939+
var evt = createMouseEvent();
1014940

1015941
function kaboom() {
1016942
throw new Error('lol');
@@ -1048,31 +974,8 @@ describe('integration', function() {
1048974
Raven._breadcrumbs = [];
1049975

1050976
// keypress <input/> twice
1051-
var keypress1 = document.createEvent('KeyboardEvent');
1052-
keypress1.initKeyboardEvent(
1053-
'keypress',
1054-
true,
1055-
true,
1056-
window,
1057-
'b',
1058-
66,
1059-
0,
1060-
'',
1061-
false
1062-
);
1063-
1064-
var keypress2 = document.createEvent('KeyboardEvent');
1065-
keypress2.initKeyboardEvent(
1066-
'keypress',
1067-
true,
1068-
true,
1069-
window,
1070-
'a',
1071-
65,
1072-
0,
1073-
'',
1074-
false
1075-
);
977+
var keypress1 = createKeyboardEvent('a');
978+
var keypress2 = createKeyboardEvent('b');
1076979

1077980
var input = document.getElementsByTagName('input')[0];
1078981
input.dispatchEvent(keypress1);
@@ -1106,18 +1009,7 @@ describe('integration', function() {
11061009
Raven._breadcrumbs = [];
11071010

11081011
// keypress <input/>
1109-
var keypress = document.createEvent('KeyboardEvent');
1110-
keypress.initKeyboardEvent(
1111-
'keypress',
1112-
true,
1113-
true,
1114-
window,
1115-
'b',
1116-
66,
1117-
0,
1118-
'',
1119-
false
1120-
);
1012+
var keypress = createKeyboardEvent();
11211013

11221014
var input = document.getElementsByTagName('input')[0];
11231015
input.dispatchEvent(keypress);
@@ -1155,52 +1047,11 @@ describe('integration', function() {
11551047
Raven._breadcrumbs = [];
11561048

11571049
// 1st keypress <input/>
1158-
var keypress1 = document.createEvent('KeyboardEvent');
1159-
keypress1.initKeyboardEvent(
1160-
'keypress',
1161-
true,
1162-
true,
1163-
window,
1164-
'b',
1165-
66,
1166-
0,
1167-
'',
1168-
false
1169-
);
1170-
1050+
var keypress1 = createKeyboardEvent('a');
11711051
// click <input/>
1172-
var click = document.createEvent('MouseEvent');
1173-
click.initMouseEvent(
1174-
'click',
1175-
true /* bubble */,
1176-
true /* cancelable */,
1177-
window,
1178-
null,
1179-
0,
1180-
0,
1181-
0,
1182-
0 /* coordinates */,
1183-
false,
1184-
false,
1185-
false,
1186-
false /* modifier keys */,
1187-
0 /*left*/,
1188-
null
1189-
);
1190-
1052+
var click = createMouseEvent();
11911053
// 2nd keypress
1192-
var keypress2 = document.createEvent('KeyboardEvent');
1193-
keypress2.initKeyboardEvent(
1194-
'keypress',
1195-
true,
1196-
true,
1197-
window,
1198-
'a',
1199-
65,
1200-
0,
1201-
'',
1202-
false
1203-
);
1054+
var keypress2 = createKeyboardEvent('b');
12041055

12051056
var input = document.getElementsByTagName('input')[0];
12061057
input.dispatchEvent(keypress1);
@@ -1250,31 +1101,8 @@ describe('integration', function() {
12501101
Raven._breadcrumbs = [];
12511102

12521103
// keypress <input/> twice
1253-
var keypress1 = document.createEvent('KeyboardEvent');
1254-
keypress1.initKeyboardEvent(
1255-
'keypress',
1256-
true,
1257-
true,
1258-
window,
1259-
'b',
1260-
66,
1261-
0,
1262-
'',
1263-
false
1264-
);
1265-
1266-
var keypress2 = document.createEvent('KeyboardEvent');
1267-
keypress2.initKeyboardEvent(
1268-
'keypress',
1269-
true,
1270-
true,
1271-
window,
1272-
'a',
1273-
65,
1274-
0,
1275-
'',
1276-
false
1277-
);
1104+
var keypress1 = createKeyboardEvent('a');
1105+
var keypress2 = createKeyboardEvent('b');
12781106

12791107
var div = document.querySelector('[contenteditable]');
12801108
div.dispatchEvent(keypress1);

0 commit comments

Comments
 (0)