Skip to content

Commit 87e6b45

Browse files
authored
test(vapor-e2e): port #12091 prevent-enter-when-leaving transition case (#14480)
1 parent 24f20e8 commit 87e6b45

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

packages-private/vapor-e2e-test/__tests__/transition.spec.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,31 @@ describe('vapor transition', () => {
959959
},
960960
E2E_TIMEOUT,
961961
)
962+
963+
test(
964+
'prevent enter when leaving',
965+
async () => {
966+
const sectionSelector = '.if-prevent-enter-when-leaving'
967+
const btnSelector = `${sectionSelector} > button`
968+
const containerSelector = `${sectionSelector} .container`
969+
970+
await click(btnSelector)
971+
await waitForInnerHTML(containerSelector, '')
972+
await nextTick()
973+
974+
const calls = await page().evaluate(() => {
975+
return (window as any).getCalls('preventEnterWhenLeaving')
976+
})
977+
expect(calls).toStrictEqual([
978+
'beforeEnter',
979+
'beforeLeave',
980+
'leave',
981+
'afterLeave',
982+
])
983+
expect(await html(containerSelector)).toBe('')
984+
},
985+
E2E_TIMEOUT,
986+
)
962987
})
963988

964989
describe('transition with KeepAlive', () => {

packages-private/vapor-e2e-test/transition/App.vue

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ let calls = {
4040
withAppear: [],
4141
cssFalse: [],
4242
ifInOut: [],
43+
preventEnterWhenLeaving: [],
4344
4445
show: [],
4546
showLeaveCancel: [],
@@ -52,6 +53,22 @@ let calls = {
5253
window.getCalls = key => calls[key]
5354
window.resetCalls = key => (calls[key] = [])
5455
56+
const preventEnterToggle = ref(false)
57+
const preventEnterVisible = ref(true)
58+
const togglePreventEnter = () => {
59+
preventEnterToggle.value = !preventEnterToggle.value
60+
if (preventEnterToggle.value) {
61+
preventEnterVisible.value = true
62+
}
63+
}
64+
65+
const PreventEnterComp = defineVaporComponent({
66+
setup() {
67+
preventEnterVisible.value = false
68+
return []
69+
},
70+
})
71+
5572
const activeComponent = shallowRef(VaporCompB)
5673
function toggleComponent() {
5774
activeComponent.value =
@@ -550,6 +567,36 @@ const Comp2 = defineVaporComponent({
550567
</div>
551568
<button @click="changeViewInOut">button</button>
552569
</div>
570+
<div class="if-prevent-enter-when-leaving">
571+
<div class="content" v-if="preventEnterToggle">
572+
<div class="container">
573+
<transition
574+
appear
575+
@before-enter="
576+
() => calls.preventEnterWhenLeaving.push('beforeEnter')
577+
"
578+
@enter="() => calls.preventEnterWhenLeaving.push('enter')"
579+
@enter-cancelled="
580+
() => calls.preventEnterWhenLeaving.push('enterCancelled')
581+
"
582+
@after-enter="
583+
() => calls.preventEnterWhenLeaving.push('afterEnter')
584+
"
585+
@before-leave="
586+
() => calls.preventEnterWhenLeaving.push('beforeLeave')
587+
"
588+
@leave="() => calls.preventEnterWhenLeaving.push('leave')"
589+
@after-leave="
590+
() => calls.preventEnterWhenLeaving.push('afterLeave')
591+
"
592+
>
593+
<div v-if="preventEnterVisible">content</div>
594+
</transition>
595+
</div>
596+
<PreventEnterComp />
597+
</div>
598+
<button @click="togglePreventEnter">button</button>
599+
</div>
553600
<!-- work with vif end -->
554601

555602
<!-- work with vshow -->

0 commit comments

Comments
 (0)