@@ -132,6 +132,41 @@ describe('Tooltip', () => {
132132 act ( ( ) => jest . runAllTimers ( ) ) ;
133133 } ) ;
134134
135+ it ( 'should hide tooltip on scroll' , async ( ) => {
136+ let { getByLabelText, getByText, getByTestId} = render (
137+ < div
138+ style = { {
139+ display : 'flex' ,
140+ flexDirection : 'column' ,
141+ gap : '30px' ,
142+ overflow : 'scroll' ,
143+ height : '200px'
144+ } }
145+ data-testid = "scroll-container" >
146+ { new Array ( 10 ) . fill ( ) . map ( ( _ , idx ) => (
147+ < TooltipTrigger delay = { 0 } key = { idx } >
148+ < Button aria-label = { `trigger-${ idx } ` } > < span aria-hidden = "true" > ✏️</ span > </ Button >
149+ < Tooltip > { `Tooltip-${ idx } ` } </ Tooltip >
150+ </ TooltipTrigger >
151+ ) ) }
152+ </ div >
153+ ) ;
154+
155+ // Tooltip should be visible on focus
156+ let button1 = getByLabelText ( 'trigger-1' ) ;
157+ fireEvent . mouseMove ( document . body ) ;
158+ await user . hover ( button1 ) ;
159+ act ( ( ) => jest . runAllTimers ( ) ) ;
160+
161+ let tooltip1 = getByText ( 'Tooltip-1' ) ;
162+ expect ( tooltip1 ) . toBeVisible ( ) ;
163+
164+ // Tooltip should not be visible on scroll
165+ let scrollContainer = getByTestId ( 'scroll-container' ) ;
166+ expect ( scrollContainer ) . toBeInTheDocument ( ) ;
167+ fireEvent . scroll ( scrollContainer , { target : { top : 100 } } ) ;
168+ expect ( tooltip1 ) . not . toBeVisible ( ) ;
169+ } ) ;
135170
136171 describe ( 'portalContainer' , ( ) => {
137172 function InfoTooltip ( props ) {
0 commit comments