@@ -132,6 +132,41 @@ describe('Tooltip', () => {
132
132
act ( ( ) => jest . runAllTimers ( ) ) ;
133
133
} ) ;
134
134
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
+ } ) ;
135
170
136
171
describe ( 'portalContainer' , ( ) => {
137
172
function InfoTooltip ( props ) {
0 commit comments