@@ -216,7 +216,7 @@ describe('Trigger.Basic', () => {
216216 act ( ( ) => jest . advanceTimersByTime ( 50 ) ) ;
217217
218218 fireEvent . mouseMove ( document , { clientX : 50 , clientY : 40 } ) ;
219- act ( ( ) => jest . advanceTimersByTime ( 250 ) ) ;
219+ act ( ( ) => jest . advanceTimersByTime ( 50 ) ) ;
220220
221221 expect ( isPopupHidden ( ) ) . toBeFalsy ( ) ;
222222
@@ -226,6 +226,43 @@ describe('Trigger.Basic', () => {
226226 expect ( isPopupHidden ( ) ) . toBeFalsy ( ) ;
227227 } ) ;
228228
229+ it ( 'tracks safe hover with mousemove instead of pointermove' , ( ) => {
230+ const { container } = render (
231+ < Trigger
232+ action = { [ 'hover' ] }
233+ mouseLeaveDelay = { 0.1 }
234+ popup = { < strong > trigger</ strong > }
235+ >
236+ < div className = "target" > hover</ div >
237+ </ Trigger > ,
238+ ) ;
239+
240+ const target = container . querySelector ( '.target' ) ;
241+
242+ fireEvent . mouseEnter ( target , { clientX : 50 , clientY : 10 } ) ;
243+ act ( ( ) => jest . runAllTimers ( ) ) ;
244+
245+ const popup = document . querySelector ( '.rc-trigger-popup' ) ;
246+
247+ mockRect ( target , { left : 0 , top : 0 , width : 100 , height : 20 } ) ;
248+ mockRect ( popup , { left : 20 , top : 60 , width : 60 , height : 30 } ) ;
249+
250+ fireEvent . mouseLeave ( target , { clientX : 50 , clientY : 20 } ) ;
251+
252+ target . getBoundingClientRect . mockClear ( ) ;
253+ popup . getBoundingClientRect . mockClear ( ) ;
254+
255+ fireEvent . pointerMove ( document , { clientX : 50 , clientY : 40 } ) ;
256+
257+ expect ( target . getBoundingClientRect ) . not . toHaveBeenCalled ( ) ;
258+ expect ( popup . getBoundingClientRect ) . not . toHaveBeenCalled ( ) ;
259+
260+ fireEvent . mouseMove ( document , { clientX : 50 , clientY : 40 } ) ;
261+
262+ expect ( target . getBoundingClientRect ) . toHaveBeenCalledTimes ( 1 ) ;
263+ expect ( popup . getBoundingClientRect ) . toHaveBeenCalledTimes ( 1 ) ;
264+ } ) ;
265+
229266 it ( 'closes popup after mouse leaves safe hover area' , ( ) => {
230267 const { container } = render (
231268 < Trigger
0 commit comments