-
Notifications
You must be signed in to change notification settings - Fork 278
Description
Describe the bug
In render trees where there is a recursive component being rendered, changing the props of the root component does not re-render the component tree. This was introduces in version 2.3.1.
To Reproduce
https://stackblitz.com/edit/vitest-dev-vitest-mbp4xz?file=test/basic.test.ts
Expected behavior
When the props of the root component change, the children that receive those props should be updated, too, regardless of any other component being recursive or not.
Related information:
The issue can be reproduced in @vue/test-utils v2.3.1, v2.3.2 and v2.4.0-alpha.0. The issue does not affect v2.3.0.
System:
OS: Linux 5.0 undefined
CPU: (4) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
Memory: 0 Bytes / 0 Bytes
Shell: 1.0 - /bin/jsh
npmPackages:
@vue/test-utils: 2.3.1 => 2.3.1
vitest: latest => 0.30.1
vue: latest => 3.2.47
Additional context
Note that the issue is about non-recursive components not being updated when part of a tree that also includes other recursive-components, even if the non-recursive components are direct children of the root component.
In the test scenario I'm trying to render a simple folder structure like this one:
- Root
- The Folder
- The File
Where both Root and The Folder and FolderItem components while The File is a FileItem component. The test first renders the tree without passing an icon prop and then changes the icon prop to a different value. The icon prop is passed directly to both FolderItem and FileItem components.
I was expecting FileItem to be updated and finding the new value of the prop when calling its .props('item'). This is what happens in @vue/test-utils v2.3.0 and also what happens in all versions when I don't try to render any other FolderItem component in that tree.
However, when I render another FolderItem component, in @vue/test-utils v2.3.1 and later the FileItem component never gets updated and the test always get the original value for the item prop.
I believe this is a regression: even if all FolderItem instances but the root one are stubbed, the FileItem component is a direct child of the root FolderItem so I don't think it should be affected by its sibling being stubs or not. Please, correct me if I misunderstood something and this is actually the intended behavior.