diff --git a/packages/vue/__tests__/Transition.spec.ts b/packages/vue/__tests__/Transition.spec.ts index 97b3ccd9625..37204939511 100644 --- a/packages/vue/__tests__/Transition.spec.ts +++ b/packages/vue/__tests__/Transition.spec.ts @@ -1979,9 +1979,7 @@ describe('e2e: Transition', () => { ` }).mount(document.createElement('div')) - expect( - `invalid mode: none` - ).toHaveBeenWarned() + expect(`invalid mode: none`).toHaveBeenWarned() }) // #3227 @@ -2023,4 +2021,74 @@ describe('e2e: Transition', () => { expect(outerSpy).toHaveBeenCalledTimes(1) expect(root.innerHTML).toBe(``) }) + + test( + 'should work with dev root fragment', + async () => { + await page().evaluate(() => { + const { createApp, ref } = (window as any).Vue + createApp({ + components: { + Comp: { + template: ` + +
+ ` + } + }, + template: ` +
+ + +
content
+
+
+
+ + `, + setup: () => { + const toggle = ref(true) + const click = () => (toggle.value = !toggle.value) + return { toggle, click } + } + }).mount('#app') + }) + expect(await html('#container')).toBe( + '
content
' + ) + + // leave + expect(await classWhenTransitionStart()).toStrictEqual([ + 'test', + 'v-leave-from', + 'v-leave-active' + ]) + await nextFrame() + expect(await classList('.test')).toStrictEqual([ + 'test', + 'v-leave-active', + 'v-leave-to' + ]) + await transitionFinish() + expect(await html('#container')).toBe('') + + // enter + expect(await classWhenTransitionStart()).toStrictEqual([ + 'test', + 'v-enter-from', + 'v-enter-active' + ]) + await nextFrame() + expect(await classList('.test')).toStrictEqual([ + 'test', + 'v-enter-active', + 'v-enter-to' + ]) + await transitionFinish() + expect(await html('#container')).toBe( + '
content
' + ) + }, + E2E_TIMEOUT + ) })