diff --git a/packages/runtime-core/__tests__/vnode.spec.ts b/packages/runtime-core/__tests__/vnode.spec.ts index b25a6682d..5f27d99c4 100644 --- a/packages/runtime-core/__tests__/vnode.spec.ts +++ b/packages/runtime-core/__tests__/vnode.spec.ts @@ -405,6 +405,39 @@ describe('vnode', () => { })) expect(vnode.dynamicChildren).toStrictEqual([vnode1]) }) + + test('openBlock w/ disableTracking: true', () => { + const hoist = createVNode('div') + let vnode1 + const vnode = (openBlock(), + createBlock('div', null, [ + // a v-for fragment block generated by the compiler + // disables tracking because it always diffs its + // children. + (vnode1 = (openBlock(true), + createBlock(Fragment, null, [ + hoist, + /*vnode2*/ createVNode(() => {}, null, 'text') + ]))) + ])) + expect(vnode.dynamicChildren).toStrictEqual([vnode1]) + expect(vnode1.dynamicChildren).toStrictEqual([]) + }) + + test('openBlock without disableTracking: true', () => { + const hoist = createVNode('div') + let vnode1, vnode2 + const vnode = (openBlock(), + createBlock('div', null, [ + (vnode1 = (openBlock(), + createBlock(Fragment, null, [ + hoist, + (vnode2 = createVNode(() => {}, null, 'text')) + ]))) + ])) + expect(vnode.dynamicChildren).toStrictEqual([vnode1]) + expect(vnode1.dynamicChildren).toStrictEqual([vnode2]) + }) }) describe('transformVNodeArgs', () => {