From: daiwei Date: Thu, 13 Mar 2025 09:35:25 +0000 (+0800) Subject: test: add more tests X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5bd63a1830e4102433fbb734639f1f041bd53ad;p=thirdparty%2Fvuejs%2Fcore.git test: add more tests --- diff --git a/packages-private/vapor-e2e-test/__tests__/transition.spec.ts b/packages-private/vapor-e2e-test/__tests__/transition.spec.ts index dde8e33540..196f37e889 100644 --- a/packages-private/vapor-e2e-test/__tests__/transition.spec.ts +++ b/packages-private/vapor-e2e-test/__tests__/transition.spec.ts @@ -5,6 +5,7 @@ import { } from '../../../packages/vue/__tests__/e2e/e2eUtils' import connect from 'connect' import sirv from 'sirv' +import { nextTick } from 'vue' const { page, classList, @@ -778,16 +779,72 @@ describe('vapor transition', () => { E2E_TIMEOUT, ) - test.todo( + test( 'transition with v-if at component root-level', - async () => {}, + async () => { + const btnSelector = '.if-at-component-root-level > button.toggle' + const btnChangeSelector = '.if-at-component-root-level > button.change' + const containerSelector = '.if-at-component-root-level > div' + const childSelector = `${containerSelector} > div` + + expect(await html(containerSelector)).toBe('') + + // change view -> 'two' + await click(btnChangeSelector) + // enter + expect( + (await transitionStart(btnSelector, childSelector)).classNames, + ).toStrictEqual(['test', 'test-enter-from', 'test-enter-active']) + await nextFrame() + expect(await classList(childSelector)).toStrictEqual([ + 'test', + 'test-enter-active', + 'test-enter-to', + ]) + await transitionFinish() + expect(await html(containerSelector)).toBe( + '
two
', + ) + + // change view -> 'one' + await click(btnChangeSelector) + // leave + expect( + (await transitionStart(btnSelector, childSelector)).classNames, + ).toStrictEqual(['test', 'test-leave-from', 'test-leave-active']) + await nextFrame() + expect(await classList(childSelector)).toStrictEqual([ + 'test', + 'test-leave-active', + 'test-leave-to', + ]) + await transitionFinish() + expect(await html(containerSelector)).toBe('') + }, E2E_TIMEOUT, ) + test.todo( 'wrapping transition + fallthrough attrs', - async () => {}, + async () => { + const btnSelector = '.if-fallthrough-attr > button' + const containerSelector = '.if-fallthrough-attr > div' + + expect(await html(containerSelector)).toBe('
content
') + + await click(btnSelector) + // toggle again before leave finishes + await nextTick() + await click(btnSelector) + + await transitionFinish(duration * 2) + expect(await html(containerSelector)).toBe( + '
content
', + ) + }, E2E_TIMEOUT, ) + test.todo( 'transition + fallthrough attrs (in-out mode)', async () => {}, diff --git a/packages-private/vapor-e2e-test/transition/App.vue b/packages-private/vapor-e2e-test/transition/App.vue index ade9c08dc5..7a01e07f23 100644 --- a/packages-private/vapor-e2e-test/transition/App.vue +++ b/packages-private/vapor-e2e-test/transition/App.vue @@ -47,6 +47,14 @@ const MyTransition = defineVaporComponent((props, { slots }) => { return createComponent(VaporTransition, { name: () => 'test' }, slots) }) +const MyTransitionFallthroughAttr = defineVaporComponent((props, { slots }) => { + return createComponent( + VaporTransition, + { foo: () => 1, name: () => 'test' }, + slots, + ) +}) + const One = defineVaporComponent({ setup() { return createIf( @@ -126,7 +134,7 @@ function changeView() {
-
+
button
+
+
+ + + +
+ + +
+
+
+ +
content
+
+
+ +
diff --git a/packages/runtime-vapor/src/components/TransitionGroup.ts b/packages/runtime-vapor/src/components/TransitionGroup.ts index a9c5c0dac2..a811505f56 100644 --- a/packages/runtime-vapor/src/components/TransitionGroup.ts +++ b/packages/runtime-vapor/src/components/TransitionGroup.ts @@ -49,7 +49,7 @@ export const VaporTransitionGroup: ObjectVaporComponent = decorate({ moveClass: String, }), - setup(props: TransitionGroupProps, { slots }: any) { + setup(props: TransitionGroupProps, { slots }) { const instance = currentInstance const state = useTransitionState() const cssTransitionProps = resolveTransitionProps(props)