11const testController = ( overlay , shadow = false ) => {
22 const selector = `.${ overlay } -controller` ;
3- cy . get ( `ion-radio#${ overlay } ` ) . click ( ) ;
4- cy . get ( 'ion-radio#controller' ) . click ( ) ;
3+ cy . get ( `ion-radio#${ overlay } ` )
4+ . scrollIntoView ( { offset : { top : - 100 , left : 0 } } )
5+ . click ( { force : true } ) ;
6+ cy . get ( 'ion-radio#controller' )
7+ . scrollIntoView ( { offset : { top : - 100 , left : 0 } } )
8+ . click ( { force : true } ) ;
59
610 cy . get ( 'ion-button#present-overlay' ) . click ( ) ;
711 cy . get ( selector ) . should ( 'exist' ) . should ( 'be.visible' ) ;
@@ -16,8 +20,12 @@ const testController = (overlay, shadow = false) => {
1620}
1721
1822const testComponent = ( overlay , shadow = false ) => {
19- cy . get ( `ion-radio#${ overlay } ` ) . click ( ) ;
20- cy . get ( 'ion-radio#component' ) . click ( ) ;
23+ cy . get ( `ion-radio#${ overlay } ` )
24+ . scrollIntoView ( { offset : { top : - 100 , left : 0 } } )
25+ . click ( { force : true } ) ;
26+ cy . get ( 'ion-radio#component' )
27+ . scrollIntoView ( { offset : { top : - 100 , left : 0 } } )
28+ . click ( { force : true } ) ;
2129
2230 cy . get ( 'ion-button#present-overlay' ) . click ( ) ;
2331 cy . get ( overlay ) . should ( 'exist' ) . should ( 'be.visible' ) ;
@@ -40,8 +48,12 @@ const testComponent = (overlay, shadow = false) => {
4048}
4149
4250const testInlineOverlay = ( overlay , shadow = false ) => {
43- cy . get ( `ion-radio#${ overlay } ` ) . click ( ) ;
44- cy . get ( 'ion-radio#component' ) . click ( ) ;
51+ cy . get ( `ion-radio#${ overlay } ` )
52+ . scrollIntoView ( { offset : { top : - 100 , left : 0 } } )
53+ . click ( { force : true } ) ;
54+ cy . get ( 'ion-radio#component' )
55+ . scrollIntoView ( { offset : { top : - 100 , left : 0 } } )
56+ . click ( { force : true } ) ;
4557
4658 cy . get ( 'ion-button#present-overlay' ) . click ( ) ;
4759 cy . get ( overlay ) . should ( 'exist' ) . should ( 'be.visible' ) ;
@@ -214,6 +226,49 @@ describe('Overlays', () => {
214226 } ) ;
215227 } ) ;
216228
229+ it ( 'should fire long-form lifecycle events on overlays' , ( ) => {
230+ cy . get ( 'ion-radio#ion-modal' ) . click ( ) ;
231+ cy . get ( 'ion-radio#component' ) . click ( ) ;
232+
233+ cy . get ( 'ion-button#present-overlay' ) . click ( ) ;
234+ cy . get ( 'ion-modal' ) . should ( 'exist' ) ;
235+
236+ testLongLifecycle ( 'overlays' , {
237+ willPresent : 1 ,
238+ didPresent : 1 ,
239+ willDismiss : 0 ,
240+ didDismiss : 0
241+ } ) ;
242+
243+ cy . get ( 'ion-modal #dismiss' ) . click ( ) ;
244+
245+ testLongLifecycle ( 'overlays' , {
246+ willPresent : 1 ,
247+ didPresent : 1 ,
248+ willDismiss : 1 ,
249+ didDismiss : 1
250+ } ) ;
251+
252+ cy . get ( 'ion-button#present-overlay' ) . click ( ) ;
253+ cy . get ( 'ion-modal' ) . should ( 'exist' ) ;
254+
255+ testLongLifecycle ( 'overlays' , {
256+ willPresent : 2 ,
257+ didPresent : 2 ,
258+ willDismiss : 1 ,
259+ didDismiss : 1
260+ } ) ;
261+
262+ cy . get ( 'ion-modal #dismiss' ) . click ( ) ;
263+
264+ testLongLifecycle ( 'overlays' , {
265+ willPresent : 2 ,
266+ didPresent : 2 ,
267+ willDismiss : 2 ,
268+ didDismiss : 2
269+ } ) ;
270+ } ) ;
271+
217272 it ( 'should unmount modal via component' , ( ) => {
218273 cy . get ( 'ion-radio#ion-modal' ) . click ( ) ;
219274 cy . get ( 'ion-radio#component' ) . click ( ) ;
@@ -260,3 +315,9 @@ const testLifecycle = (selector, expected = {}) => {
260315 cy . get ( `[data-pageid=${ selector } ] #didDismiss` ) . should ( 'have.text' , expected . didDismiss ) ;
261316}
262317
318+ const testLongLifecycle = ( selector , expected = { } ) => {
319+ cy . get ( `[data-pageid=${ selector } ] #ionModalWillPresent` ) . should ( 'have.text' , expected . willPresent ) ;
320+ cy . get ( `[data-pageid=${ selector } ] #ionModalDidPresent` ) . should ( 'have.text' , expected . didPresent ) ;
321+ cy . get ( `[data-pageid=${ selector } ] #ionModalWillDismiss` ) . should ( 'have.text' , expected . willDismiss ) ;
322+ cy . get ( `[data-pageid=${ selector } ] #ionModalDidDismiss` ) . should ( 'have.text' , expected . didDismiss ) ;
323+ }
0 commit comments