1
1
import userEvent from '#src'
2
2
import { setup } from '#testHelpers/utils'
3
3
4
- // Note, use the setup function at the bottom of the file...
5
- // but don't hurt yourself trying to read it 😅
6
-
7
- // keep in mind that we do not handle modifier interactions. This is primarily
8
- // because modifiers behave differently on different operating systems.
9
- // For example: {alt}{backspace}{/alt} will remove everything from the current
10
- // cursor position to the beginning of the word on Mac, but you need to use
11
- // {ctrl}{backspace}{/ctrl} to do that on Windows. And that doesn't appear to
12
- // be consistent within an OS either 🙃
13
- // So we're not going to even try.
14
-
15
- // This also means that '{shift}a' will fire an input event with the shiftKey,
16
- // but will not capitalize "a".
17
-
18
- test ( '{esc} triggers typing the escape character' , ( ) => {
4
+ // This test suite contains a lot of legacy code.
5
+ // A lot of tests performed here could be skipped
6
+ // as the current keyboard implementation merged different previous implementations
7
+ // that needed to be tested seperately.
8
+ // What will be left should be moved into keyboard/plugins.
9
+ // Keeping these for now to demonstrate changes.
10
+ // TODO: clean up this test suite
11
+
12
+ test ( '{escape} triggers typing the escape character' , ( ) => {
19
13
const { element, getEventSnapshot} = setup ( '<input />' )
20
14
21
- userEvent . type ( element , '{esc }' )
15
+ userEvent . type ( element , '{escape }' )
22
16
23
17
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
24
18
Events fired on: input[value=""]
@@ -231,10 +225,10 @@ test('{backspace} on an input type that does not support selection ranges', () =
231
225
expect ( element ) . toHaveValue ( '[email protected] ' )
232
226
} )
233
227
234
- test ( '{alt}a{/alt}' , ( ) => {
228
+ test ( '{alt> }a{/alt}' , ( ) => {
235
229
const { element, getEventSnapshot} = setup ( '<input />' )
236
230
237
- userEvent . type ( element , '{alt}a{/alt}' )
231
+ userEvent . type ( element , '{alt> }a{/alt}' )
238
232
239
233
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
240
234
Events fired on: input[value=""]
@@ -259,10 +253,10 @@ test('{alt}a{/alt}', () => {
259
253
` )
260
254
} )
261
255
262
- test ( '{meta}a{/meta}' , ( ) => {
256
+ test ( '{meta> }a{/meta}' , ( ) => {
263
257
const { element, getEventSnapshot} = setup ( '<input />' )
264
258
265
- userEvent . type ( element , '{meta}a{/meta}' )
259
+ userEvent . type ( element , '{meta> }a{/meta}' )
266
260
267
261
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
268
262
Events fired on: input[value="a"]
@@ -289,10 +283,10 @@ test('{meta}a{/meta}', () => {
289
283
` )
290
284
} )
291
285
292
- test ( '{ctrl }a{/ctrl }' , ( ) => {
286
+ test ( '{control> }a{/control }' , ( ) => {
293
287
const { element, getEventSnapshot} = setup ( '<input />' )
294
288
295
- userEvent . type ( element , '{ctrl }a{/ctrl }' )
289
+ userEvent . type ( element , '{control> }a{/control }' )
296
290
297
291
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
298
292
Events fired on: input[value=""]
@@ -317,10 +311,10 @@ test('{ctrl}a{/ctrl}', () => {
317
311
` )
318
312
} )
319
313
320
- test ( '{shift}a{/shift}' , ( ) => {
314
+ test ( '{shift> }a{/shift}' , ( ) => {
321
315
const { element, getEventSnapshot} = setup ( '<input />' )
322
316
323
- userEvent . type ( element , '{shift}a{/shift}' )
317
+ userEvent . type ( element , '{shift> }a{/shift}' )
324
318
325
319
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
326
320
Events fired on: input[value="a"]
@@ -530,10 +524,10 @@ test('{enter} on a button when keypress calls prevent default', () => {
530
524
` )
531
525
} )
532
526
533
- test ( '{ space} on a button' , ( ) => {
527
+ test ( '[ space] on a button' , ( ) => {
534
528
const { element, getEventSnapshot} = setup ( '<button />' )
535
529
536
- userEvent . type ( element , '{ space} ' )
530
+ userEvent . type ( element , '[ space] ' )
537
531
538
532
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
539
533
Events fired on: button
@@ -558,7 +552,7 @@ test('{space} on a button', () => {
558
552
` )
559
553
} )
560
554
561
- test ( `' ' on a button is the same as '{ space} '` , ( ) => {
555
+ test ( `' ' on a button is the same as '[ space] '` , ( ) => {
562
556
const { element, getEventSnapshot} = setup ( '<button />' )
563
557
564
558
userEvent . type ( element , ' ' )
@@ -586,14 +580,14 @@ test(`' ' on a button is the same as '{space}'`, () => {
586
580
` )
587
581
} )
588
582
589
- test ( '{ space} with preventDefault keydown on button' , ( ) => {
583
+ test ( '[ space] with preventDefault keydown on button' , ( ) => {
590
584
const { element, getEventSnapshot} = setup ( '<button />' , {
591
585
eventHandlers : {
592
586
keyDown : e => e . preventDefault ( ) ,
593
587
} ,
594
588
} )
595
589
596
- userEvent . type ( element , '{ space} ' )
590
+ userEvent . type ( element , '[ space] ' )
597
591
598
592
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
599
593
Events fired on: button
@@ -616,14 +610,14 @@ test('{space} with preventDefault keydown on button', () => {
616
610
` )
617
611
} )
618
612
619
- test ( '{ space} with preventDefault keyup on button' , ( ) => {
613
+ test ( '[ space] with preventDefault keyup on button' , ( ) => {
620
614
const { element, getEventSnapshot} = setup ( '<button />' , {
621
615
eventHandlers : {
622
616
keyUp : e => e . preventDefault ( ) ,
623
617
} ,
624
618
} )
625
619
626
- userEvent . type ( element , '{ space} ' )
620
+ userEvent . type ( element , '[ space] ' )
627
621
628
622
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
629
623
Events fired on: button
@@ -647,10 +641,10 @@ test('{space} with preventDefault keyup on button', () => {
647
641
` )
648
642
} )
649
643
650
- test ( '{ space} on an input' , ( ) => {
644
+ test ( '[ space] on an input' , ( ) => {
651
645
const { element, getEventSnapshot} = setup ( `<input value="" />` )
652
646
653
- userEvent . type ( element , '{ space} ' )
647
+ userEvent . type ( element , '[ space] ' )
654
648
655
649
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
656
650
Events fired on: input[value=" "]
@@ -705,12 +699,12 @@ test('{enter} on an input type="color" fires same events as a button', () => {
705
699
` )
706
700
} )
707
701
708
- test ( '{ space} on an input type="color" fires same events as a button' , ( ) => {
702
+ test ( '[ space] on an input type="color" fires same events as a button' , ( ) => {
709
703
const { element, getEventSnapshot} = setup (
710
704
`<input value="#ffffff" type="color" />` ,
711
705
)
712
706
713
- userEvent . type ( element , '{ space} ' )
707
+ userEvent . type ( element , '[ space] ' )
714
708
715
709
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
716
710
Events fired on: input[value="#ffffff"]
@@ -735,7 +729,7 @@ test('{space} on an input type="color" fires same events as a button', () => {
735
729
` )
736
730
} )
737
731
738
- test ( `' ' on input type="color" is the same as '{ space} '` , ( ) => {
732
+ test ( `' ' on input type="color" is the same as '[ space] '` , ( ) => {
739
733
const { element, getEventSnapshot} = setup (
740
734
`<input value="#ffffff" type="color" />` ,
741
735
)
@@ -850,10 +844,10 @@ test('{enter} on a textarea when keypress calls prevent default', () => {
850
844
` )
851
845
} )
852
846
853
- test ( '{meta}{enter}{/meta} on a button' , ( ) => {
847
+ test ( '{meta> }{enter}{/meta} on a button' , ( ) => {
854
848
const { element, getEventSnapshot} = setup ( '<button />' )
855
849
856
- userEvent . type ( element , '{meta}{enter}{/meta}' )
850
+ userEvent . type ( element , '{meta> }{enter}{/meta}' )
857
851
858
852
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
859
853
Events fired on: button
@@ -880,10 +874,10 @@ test('{meta}{enter}{/meta} on a button', () => {
880
874
` )
881
875
} )
882
876
883
- test ( '{meta}{alt}{ctrl }a{/ctrl }{/alt}{/meta}' , ( ) => {
877
+ test ( '{meta> }{alt>}{control> }a{/control }{/alt}{/meta}' , ( ) => {
884
878
const { element, getEventSnapshot} = setup ( '<input />' )
885
879
886
- userEvent . type ( element , '{meta}{alt}{ctrl }a{/ctrl }{/alt}{/meta}' )
880
+ userEvent . type ( element , '{meta> }{alt>}{control> }a{/control }{/alt}{/meta}' )
887
881
888
882
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
889
883
Events fired on: input[value=""]
@@ -912,10 +906,10 @@ test('{meta}{alt}{ctrl}a{/ctrl}{/alt}{/meta}', () => {
912
906
` )
913
907
} )
914
908
915
- test ( '{del } at the start of the input' , ( ) => {
909
+ test ( '{delete } at the start of the input' , ( ) => {
916
910
const { element, getEventSnapshot} = setup ( `<input value="hello" />` )
917
911
918
- userEvent . type ( element , '{del }' , {
912
+ userEvent . type ( element , '{delete }' , {
919
913
initialSelectionStart : 0 ,
920
914
initialSelectionEnd : 0 ,
921
915
} )
@@ -947,10 +941,10 @@ test('{del} at the start of the input', () => {
947
941
` )
948
942
} )
949
943
950
- test ( '{del } at end of the input' , ( ) => {
944
+ test ( '{delete } at end of the input' , ( ) => {
951
945
const { element, getEventSnapshot} = setup ( `<input value="hello" />` )
952
946
953
- userEvent . type ( element , '{del }' )
947
+ userEvent . type ( element , '{delete }' )
954
948
955
949
expect ( element . selectionStart ) . toBe ( element . value . length )
956
950
expect ( element . selectionEnd ) . toBe ( element . value . length )
@@ -976,10 +970,10 @@ test('{del} at end of the input', () => {
976
970
` )
977
971
} )
978
972
979
- test ( '{del } in the middle of the input' , ( ) => {
973
+ test ( '{delete } in the middle of the input' , ( ) => {
980
974
const { element, getEventSnapshot} = setup ( `<input value="hello" />` )
981
975
982
- userEvent . type ( element , '{del }' , {
976
+ userEvent . type ( element , '{delete }' , {
983
977
initialSelectionStart : 2 ,
984
978
initialSelectionEnd : 2 ,
985
979
} )
@@ -1011,10 +1005,10 @@ test('{del} in the middle of the input', () => {
1011
1005
` )
1012
1006
} )
1013
1007
1014
- test ( '{del } with a selection range' , ( ) => {
1008
+ test ( '{delete } with a selection range' , ( ) => {
1015
1009
const { element, getEventSnapshot} = setup ( `<input value="hello" />` )
1016
1010
1017
- userEvent . type ( element , '{del }' , {
1011
+ userEvent . type ( element , '{delete }' , {
1018
1012
initialSelectionStart : 1 ,
1019
1013
initialSelectionEnd : 3 ,
1020
1014
} )
@@ -1049,20 +1043,20 @@ test('{del} with a selection range', () => {
1049
1043
// TODO: eventually we'll want to support this, but currently we cannot
1050
1044
// because selection ranges are (intentially) unsupported in certain input types
1051
1045
// per the spec.
1052
- test ( '{del } on an input that does not support selection range does not change the value' , ( ) => {
1046
+ test ( '{delete } on an input that does not support selection range does not change the value' , ( ) => {
1053
1047
const { element
, eventWasFired
} = setup ( `<input type="email" value="[email protected] " />` )
1054
1048
1055
- userEvent . type ( element , '{del }' )
1049
+ userEvent . type ( element , '{delete }' )
1056
1050
expect ( element ) . toHaveValue ( '[email protected] ' )
1057
1051
expect ( eventWasFired ( 'input' ) ) . not . toBe ( true )
1058
1052
} )
1059
1053
1060
- test ( '{del } does not delete if keydown is prevented' , ( ) => {
1054
+ test ( '{delete } does not delete if keydown is prevented' , ( ) => {
1061
1055
const { element, eventWasFired} = setup ( `<input value="hello" />` , {
1062
1056
eventHandlers : { keyDown : e => e . preventDefault ( ) } ,
1063
1057
} )
1064
1058
1065
- userEvent . type ( element , '{del }' , {
1059
+ userEvent . type ( element , '{delete }' , {
1066
1060
initialSelectionStart : 2 ,
1067
1061
initialSelectionEnd : 2 ,
1068
1062
} )
@@ -1075,7 +1069,7 @@ test('{del} does not delete if keydown is prevented', () => {
1075
1069
test ( 'any remaining type modifiers are automatically released at the end' , ( ) => {
1076
1070
const { element, getEventSnapshot} = setup ( '<input />' )
1077
1071
1078
- userEvent . type ( element , '{meta}{alt}{ctrl }a{/alt}' )
1072
+ userEvent . type ( element , '{meta> }{alt>}{control> }a{/alt}' )
1079
1073
1080
1074
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
1081
1075
Events fired on: input[value=""]
@@ -1107,7 +1101,7 @@ test('any remaining type modifiers are automatically released at the end', () =>
1107
1101
test ( 'modifiers will not be closed if skipAutoClose is enabled' , ( ) => {
1108
1102
const { element, getEventSnapshot} = setup ( '<input />' )
1109
1103
1110
- userEvent . type ( element , '{meta}a' , { skipAutoClose : true } )
1104
+ userEvent . type ( element , '{meta> }a' , { skipAutoClose : true } )
1111
1105
1112
1106
expect ( getEventSnapshot ( ) ) . toMatchInlineSnapshot ( `
1113
1107
Events fired on: input[value="a"]
0 commit comments