@@ -181,47 +181,67 @@ describe('MdRipple', () => {
181
181
expect ( pxStringToFloat ( ripple . style . height ) ) . toBeCloseTo ( 2 * expectedRadius , 1 ) ;
182
182
} ) ;
183
183
184
- it ( 'create ripple with correct position when page is scrolled' , ( ) => {
185
- let elementTop = 600 ;
186
- let elementLeft = 750 ;
187
- let pageScrollTop = 500 ;
188
- let pageScrollLeft = 500 ;
189
- let left = 50 ;
190
- let top = 75 ;
191
-
192
- // Add a very large element to make the page scroll
193
- let veryLargeElement = document . createElement ( 'div' ) ;
194
- veryLargeElement . style . width = '4000px' ;
195
- veryLargeElement . style . height = '4000px' ;
196
- document . body . appendChild ( veryLargeElement ) ;
197
- document . body . scrollTop = pageScrollTop ;
198
- document . body . scrollLeft = pageScrollLeft ;
199
-
200
- rippleElement . style . position = 'absolute' ;
201
- rippleElement . style . left = `${ elementLeft } px` ;
202
- rippleElement . style . top = `${ elementTop } px` ;
203
-
204
- // Simulate a keyboard-triggered click by setting event coordinates to 0.
205
- const clickEvent = createMouseEvent ( 'click' , {
206
- clientX : left + elementLeft - pageScrollLeft ,
207
- clientY : top + elementTop - pageScrollTop ,
208
- screenX : left + elementLeft ,
209
- screenY : top + elementTop
184
+ describe ( 'when page is scrolled' , ( ) => {
185
+ var veryLargeElement : HTMLDivElement = document . createElement ( 'div' ) ;
186
+ var pageScrollTop = 500 ;
187
+ var pageScrollLeft = 500 ;
188
+
189
+ beforeEach ( ( ) => {
190
+ // Add a very large element to make the page scroll
191
+ veryLargeElement . style . width = '4000px' ;
192
+ veryLargeElement . style . height = '4000px' ;
193
+ document . body . appendChild ( veryLargeElement ) ;
194
+ document . body . scrollTop = pageScrollTop ;
195
+ document . body . scrollLeft = pageScrollLeft ;
196
+ // Firefox
197
+ document . documentElement . scrollLeft = pageScrollLeft ;
198
+ document . documentElement . scrollTop = pageScrollTop ;
199
+ // Mobile safari
200
+ window . scrollTo ( pageScrollLeft , pageScrollTop ) ;
210
201
} ) ;
211
- rippleElement . dispatchEvent ( clickEvent ) ;
212
202
213
- const expectedRadius = Math . sqrt ( 250 * 250 + 125 * 125 ) ;
214
- const expectedLeft = left - expectedRadius ;
215
- const expectedTop = top - expectedRadius ;
216
-
217
- const ripple = < HTMLElement > rippleElement . querySelector ( '.md-ripple-foreground' ) ;
218
- expect ( pxStringToFloat ( ripple . style . left ) ) . toBeCloseTo ( expectedLeft , 1 ) ;
219
- expect ( pxStringToFloat ( ripple . style . top ) ) . toBeCloseTo ( expectedTop , 1 ) ;
220
- expect ( pxStringToFloat ( ripple . style . width ) ) . toBeCloseTo ( 2 * expectedRadius , 1 ) ;
221
- expect ( pxStringToFloat ( ripple . style . height ) ) . toBeCloseTo ( 2 * expectedRadius , 1 ) ;
203
+ afterEach ( ( ) => {
204
+ document . body . removeChild ( veryLargeElement ) ;
205
+ document . body . scrollTop = 0 ;
206
+ document . body . scrollLeft = 0 ;
207
+ // Firefox
208
+ document . documentElement . scrollLeft = 0 ;
209
+ document . documentElement . scrollTop = 0 ;
210
+ // Mobile safari
211
+ window . scrollTo ( 0 , 0 ) ;
212
+ } ) ;
222
213
223
- document . body . removeChild ( veryLargeElement ) ;
214
+ it ( 'create ripple with correct position' , ( ) => {
215
+ let elementTop = 600 ;
216
+ let elementLeft = 750 ;
217
+ let left = 50 ;
218
+ let top = 75 ;
219
+
220
+ rippleElement . style . position = 'absolute' ;
221
+ rippleElement . style . left = `${ elementLeft } px` ;
222
+ rippleElement . style . top = `${ elementTop } px` ;
223
+
224
+ // Simulate a keyboard-triggered click by setting event coordinates to 0.
225
+ const clickEvent = createMouseEvent ( 'click' , {
226
+ clientX : left + elementLeft - pageScrollLeft ,
227
+ clientY : top + elementTop - pageScrollTop ,
228
+ screenX : left + elementLeft ,
229
+ screenY : top + elementTop
230
+ } ) ;
231
+ rippleElement . dispatchEvent ( clickEvent ) ;
232
+
233
+ const expectedRadius = Math . sqrt ( 250 * 250 + 125 * 125 ) ;
234
+ const expectedLeft = left - expectedRadius ;
235
+ const expectedTop = top - expectedRadius ;
236
+
237
+ const ripple = < HTMLElement > rippleElement . querySelector ( '.md-ripple-foreground' ) ;
238
+ expect ( pxStringToFloat ( ripple . style . left ) ) . toBeCloseTo ( expectedLeft , 1 ) ;
239
+ expect ( pxStringToFloat ( ripple . style . top ) ) . toBeCloseTo ( expectedTop , 1 ) ;
240
+ expect ( pxStringToFloat ( ripple . style . width ) ) . toBeCloseTo ( 2 * expectedRadius , 1 ) ;
241
+ expect ( pxStringToFloat ( ripple . style . height ) ) . toBeCloseTo ( 2 * expectedRadius , 1 ) ;
242
+ } ) ;
224
243
} ) ;
244
+
225
245
} ) ;
226
246
227
247
describe ( 'configuring behavior' , ( ) => {
0 commit comments