@@ -1061,23 +1061,103 @@ describe('vapor transition', () => {
10611061 E2E_TIMEOUT ,
10621062 )
10631063
1064- test . todo (
1064+ test (
10651065 'transition on appear with v-show' ,
10661066 async ( ) => {
10671067 const btnSelector = '.show-appear > button'
10681068 const containerSelector = '.show-appear > div'
10691069 const childSelector = `${ containerSelector } > div`
1070+
1071+ let calls = await page ( ) . evaluate ( ( ) => {
1072+ return ( window as any ) . getCalls ( 'showAppear' )
1073+ } )
1074+ expect ( calls ) . toStrictEqual ( [ 'beforeEnter' , 'onEnter' ] )
1075+
1076+ // appear
1077+ expect ( await classList ( childSelector ) ) . contains ( 'test-appear-active' )
1078+
1079+ await transitionFinish ( )
1080+ expect ( await html ( containerSelector ) ) . toBe (
1081+ '<div class="test">content</div>' ,
1082+ )
1083+ calls = await page ( ) . evaluate ( ( ) => {
1084+ return ( window as any ) . getCalls ( 'showAppear' )
1085+ } )
1086+ expect ( calls ) . toStrictEqual ( [ 'beforeEnter' , 'onEnter' , 'afterEnter' ] )
1087+
1088+ // leave
1089+ expect (
1090+ ( await transitionStart ( btnSelector , childSelector ) ) . classNames ,
1091+ ) . toStrictEqual ( [ 'test' , 'test-leave-from' , 'test-leave-active' ] )
1092+ await nextFrame ( )
1093+ expect ( await classList ( childSelector ) ) . toStrictEqual ( [
1094+ 'test' ,
1095+ 'test-leave-active' ,
1096+ 'test-leave-to' ,
1097+ ] )
1098+ await transitionFinish ( )
1099+ expect ( await isVisible ( childSelector ) ) . toBe ( false )
1100+
1101+ // enter
1102+ expect (
1103+ ( await transitionStart ( btnSelector , childSelector ) ) . classNames ,
1104+ ) . toStrictEqual ( [ 'test' , 'test-enter-from' , 'test-enter-active' ] )
1105+ await nextFrame ( )
1106+ expect ( await classList ( childSelector ) ) . toStrictEqual ( [
1107+ 'test' ,
1108+ 'test-enter-active' ,
1109+ 'test-enter-to' ,
1110+ ] )
1111+ await transitionFinish ( )
1112+ expect ( await html ( containerSelector ) ) . toBe (
1113+ '<div class="test" style="">content</div>' ,
1114+ )
10701115 } ,
10711116 E2E_TIMEOUT ,
10721117 )
10731118
1074- test . todo (
1119+ test (
10751120 'transition events should not call onEnter with v-show false' ,
1076- async ( ) => { } ,
1121+ async ( ) => {
1122+ const btnSelector = '.show-appear-not-enter > button'
1123+ const containerSelector = '.show-appear-not-enter > div'
1124+ const childSelector = `${ containerSelector } > div`
1125+
1126+ expect ( await isVisible ( childSelector ) ) . toBe ( false )
1127+ let calls = await page ( ) . evaluate ( ( ) => {
1128+ return ( window as any ) . getCalls ( 'notEnter' )
1129+ } )
1130+ expect ( calls ) . toStrictEqual ( [ ] )
1131+
1132+ // enter
1133+ expect (
1134+ ( await transitionStart ( btnSelector , childSelector ) ) . classNames ,
1135+ ) . toStrictEqual ( [ 'test' , 'test-enter-from' , 'test-enter-active' ] )
1136+ calls = await page ( ) . evaluate ( ( ) => {
1137+ return ( window as any ) . getCalls ( 'notEnter' )
1138+ } )
1139+ expect ( calls ) . toStrictEqual ( [ 'beforeEnter' , 'onEnter' ] )
1140+ await nextFrame ( )
1141+ expect ( await classList ( childSelector ) ) . toStrictEqual ( [
1142+ 'test' ,
1143+ 'test-enter-active' ,
1144+ 'test-enter-to' ,
1145+ ] )
1146+ calls = await page ( ) . evaluate ( ( ) => {
1147+ return ( window as any ) . getCalls ( 'notEnter' )
1148+ } )
1149+ expect ( calls ) . not . contain ( 'afterEnter' )
1150+ await transitionFinish ( )
1151+ expect ( await html ( containerSelector ) ) . toBe (
1152+ '<div class="test" style="">content</div>' ,
1153+ )
1154+ calls = await page ( ) . evaluate ( ( ) => {
1155+ return ( window as any ) . getCalls ( 'notEnter' )
1156+ } )
1157+ expect ( calls ) . toStrictEqual ( [ 'beforeEnter' , 'onEnter' , 'afterEnter' ] )
1158+ } ,
10771159 E2E_TIMEOUT ,
10781160 )
1079-
1080- test . todo ( 'transition on appear with v-show' , async ( ) => { } , E2E_TIMEOUT )
10811161 } )
10821162
10831163 describe ( 'explicit durations' , ( ) => {
0 commit comments