@@ -75,6 +75,52 @@ describe('userEvent.dblClick', () => {
7575 } )
7676} )
7777
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+
78124describe ( 'userEvent.hover, userEvent.unhover' , ( ) => {
79125 test ( 'hover works correctly' , async ( ) => {
80126 const target = document . createElement ( 'div' )
0 commit comments