@@ -11,7 +11,8 @@ describe('e2e: Transition', () => {
11
11
classList,
12
12
isVisible,
13
13
timeout,
14
- nextFrame
14
+ nextFrame,
15
+ click
15
16
} = setupPuppeteer ( )
16
17
const baseUrl = `file://${ path . resolve ( __dirname , './transition.html' ) } `
17
18
@@ -665,27 +666,45 @@ describe('e2e: Transition', () => {
665
666
E2E_TIMEOUT
666
667
)
667
668
668
- // fixme
669
669
test (
670
670
'css: false' ,
671
671
async ( ) => {
672
- const onLeaveSpy = jest . fn ( )
672
+ const onBeforeEnterSpy = jest . fn ( )
673
673
const onEnterSpy = jest . fn ( )
674
+ const onAfterEnterSpy = jest . fn ( )
675
+ const onBeforeLeaveSpy = jest . fn ( )
676
+ const onLeaveSpy = jest . fn ( )
677
+ const onAfterLeaveSpy = jest . fn ( )
674
678
675
- await page ( ) . exposeFunction ( 'onLeaveSpy ' , onLeaveSpy )
679
+ await page ( ) . exposeFunction ( 'onBeforeEnterSpy ' , onBeforeEnterSpy )
676
680
await page ( ) . exposeFunction ( 'onEnterSpy' , onEnterSpy )
681
+ await page ( ) . exposeFunction ( 'onAfterEnterSpy' , onAfterEnterSpy )
682
+ await page ( ) . exposeFunction ( 'onBeforeLeaveSpy' , onBeforeLeaveSpy )
683
+ await page ( ) . exposeFunction ( 'onLeaveSpy' , onLeaveSpy )
684
+ await page ( ) . exposeFunction ( 'onAfterLeaveSpy' , onAfterLeaveSpy )
677
685
678
686
await page ( ) . evaluate ( ( ) => {
679
- const { onLeaveSpy, onEnterSpy } = window as any
687
+ const {
688
+ onBeforeEnterSpy,
689
+ onEnterSpy,
690
+ onAfterEnterSpy,
691
+ onBeforeLeaveSpy,
692
+ onLeaveSpy,
693
+ onAfterLeaveSpy
694
+ } = window as any
680
695
const { createApp, ref } = ( window as any ) . Vue
681
696
createApp ( {
682
697
template : `
683
698
<div id="container">
684
699
<transition
685
700
:css="false"
686
701
name="test"
702
+ @before-enter="onBeforeEnterSpy"
687
703
@enter="onEnterSpy"
688
- @leave="onLeaveSpy">
704
+ @after-enter="onAfterEnterSpy"
705
+ @before-leave="onBeforeLeaveSpy"
706
+ @leave="onLeaveSpy"
707
+ @after-leave="onAfterLeaveSpy">
689
708
<div v-if="toggle" class="test">content</div>
690
709
</transition>
691
710
</div>
@@ -694,21 +713,32 @@ describe('e2e: Transition', () => {
694
713
setup : ( ) => {
695
714
const toggle = ref ( true )
696
715
const click = ( ) => ( toggle . value = ! toggle . value )
697
- return { toggle, click, onLeaveSpy, onEnterSpy }
716
+ return {
717
+ toggle,
718
+ click,
719
+ onBeforeEnterSpy,
720
+ onEnterSpy,
721
+ onAfterEnterSpy,
722
+ onBeforeLeaveSpy,
723
+ onLeaveSpy,
724
+ onAfterLeaveSpy
725
+ }
698
726
}
699
727
} ) . mount ( '#app' )
700
728
} )
701
729
expect ( await html ( '#container' ) ) . toBe ( '<div class="test">content</div>' )
702
730
703
731
// leave
704
- await classWhenTransitionStart ( )
732
+ await click ( '#toggleBtn' )
733
+ expect ( onBeforeLeaveSpy ) . toBeCalled ( )
705
734
expect ( onLeaveSpy ) . toBeCalled ( )
706
- expect ( await html ( '#container' ) ) . toBe (
707
- '<div class="test">content</div><!--v-if-->'
708
- )
735
+ expect ( onAfterLeaveSpy ) . toBeCalled ( )
736
+ expect ( await html ( '#container' ) ) . toBe ( '<!--v-if-->' )
709
737
// enter
710
738
await classWhenTransitionStart ( )
739
+ expect ( onBeforeEnterSpy ) . toBeCalled ( )
711
740
expect ( onEnterSpy ) . toBeCalled ( )
741
+ expect ( onAfterEnterSpy ) . toBeCalled ( )
712
742
expect ( await html ( '#container' ) ) . toBe ( '<div class="test">content</div>' )
713
743
} ,
714
744
E2E_TIMEOUT
0 commit comments