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