]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
test: add tests for dynamic component in ssr vnode-based slot
authordaiwei <daiwei521@126.com>
Wed, 13 Aug 2025 07:53:02 +0000 (15:53 +0800)
committerdaiwei <daiwei521@126.com>
Wed, 13 Aug 2025 07:53:02 +0000 (15:53 +0800)
packages/runtime-vapor/__tests__/hydration.spec.ts

index 2173894b289cffa5b741f8901e4672569ca468a6..b501f1a5806a3a460d629e0be33d86cfcfbc26ca 100644 (file)
@@ -1263,7 +1263,42 @@ describe('Vapor Mode hydration', () => {
       )
     })
 
-    test.todo('with ssr slot vnode fallback', () => {})
+    test('in ssr slot vnode fallback', async () => {
+      const { container, data } = await testHydration(
+        `<template>
+            <components.Child>
+              <span>{{ data }}</span>
+            </components.Child>
+          </template>`,
+        {
+          Child: `
+          <template>
+            <component :is="'div'">
+              <slot />
+            </component>
+          </template>`,
+        },
+        ref('foo'),
+      )
+
+      expect(formatHtml(container.innerHTML)).toMatchInlineSnapshot(
+        `
+        "<div>
+        <!--[--><span>foo</span><!--]-->
+        <!--slot--></div><!--dynamic-component-->"
+      `,
+      )
+
+      data.value = 'bar'
+      await nextTick()
+      expect(formatHtml(container.innerHTML)).toMatchInlineSnapshot(
+        `
+        "<div>
+        <!--[--><span>bar</span><!--]-->
+        <!--slot--></div><!--dynamic-component-->"
+      `,
+      )
+    })
   })
 
   describe('if', () => {