@@ -75,6 +75,52 @@ describe('userEvent.dblClick', () => {
75
75
} )
76
76
} )
77
77
78
+ describe ( 'userEvent.tripleClick' , ( ) => {
79
+ test ( 'correctly clicks a button' , async ( ) => {
80
+ const button = document . createElement ( 'button' )
81
+ button . textContent = 'Click me'
82
+ document . body . appendChild ( button )
83
+ const onClick = vi . fn ( )
84
+ const dblClick = vi . fn ( )
85
+ const tripleClick = vi . fn ( )
86
+ button . addEventListener ( 'click' , onClick )
87
+ button . addEventListener ( 'dblclick' , dblClick )
88
+ button . addEventListener ( 'click' , tripleClick )
89
+
90
+ await userEvent . tripleClick ( button )
91
+
92
+ expect ( onClick ) . toHaveBeenCalledTimes ( 3 )
93
+ expect ( dblClick ) . toHaveBeenCalledTimes ( 1 )
94
+ expect ( tripleClick ) . toHaveBeenCalledTimes ( 3 )
95
+ expect ( tripleClick . mock . calls . length ) . toBe ( 3 )
96
+ expect ( tripleClick . mock . calls
97
+ . map ( c => c [ 0 ] as MouseEvent )
98
+ . filter ( c => c . detail === 3 ) ) . toHaveLength ( 1 )
99
+ } )
100
+
101
+ test ( 'correctly doesn\'t click on a disabled button' , async ( ) => {
102
+ const button = document . createElement ( 'button' )
103
+ button . textContent = 'Click me'
104
+ button . disabled = true
105
+ document . body . appendChild ( button )
106
+ const onClick = vi . fn ( )
107
+ const dblClick = vi . fn ( )
108
+ const tripleClick = vi . fn ( )
109
+ button . addEventListener ( 'click' , onClick )
110
+ button . addEventListener ( 'dblclick' , dblClick )
111
+ button . addEventListener ( 'click' , tripleClick )
112
+
113
+ await userEvent . tripleClick ( button , {
114
+ // playwright requires force: true to click on a disabled button
115
+ force : true ,
116
+ } )
117
+
118
+ expect ( onClick ) . not . toHaveBeenCalled ( )
119
+ expect ( dblClick ) . not . toHaveBeenCalled ( )
120
+ expect ( tripleClick ) . not . toHaveBeenCalled ( )
121
+ } )
122
+ } )
123
+
78
124
describe ( 'userEvent.hover, userEvent.unhover' , ( ) => {
79
125
test ( 'hover works correctly' , async ( ) => {
80
126
const target = document . createElement ( 'div' )
0 commit comments