diff --git a/packages/runtime-core/__tests__/components/Teleport.spec.ts b/packages/runtime-core/__tests__/components/Teleport.spec.ts
index 79125cd04df..1229c5325b7 100644
--- a/packages/runtime-core/__tests__/components/Teleport.spec.ts
+++ b/packages/runtime-core/__tests__/components/Teleport.spec.ts
@@ -10,6 +10,7 @@ import {
markRaw,
nextTick,
nodeOps,
+ onMounted,
h as originalH,
ref,
render,
@@ -18,6 +19,10 @@ import {
} from '@vue/runtime-test'
import { Fragment, createCommentVNode, createVNode } from '../../src/vnode'
import { compile, createApp as createDOMApp, render as domRender } from 'vue'
+import type { HMRRuntime } from '../../src/hmr'
+
+declare var __VUE_HMR_RUNTIME__: HMRRuntime
+const { rerender, createRecord } = __VUE_HMR_RUNTIME__
describe('renderer: teleport', () => {
describe('eager mode', () => {
@@ -741,4 +746,56 @@ describe('renderer: teleport', () => {
expect(tRefInMounted).toBe(target.children[1])
})
}
+
+ test('handle update and hmr rerender', async () => {
+ const target = document.createElement('div')
+ const root = document.createElement('div')
+
+ const Comp = {
+ setup() {
+ const cls = ref('foo')
+ onMounted(() => {
+ // trigger update
+ cls.value = 'bar'
+ })
+ return { cls, target }
+ },
+ template: `
+