\n\n\u003Cimg width=\"422\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/10035094-1291-49d4-969a-c04e8a428e79\" />\n\nRequested Feature\nI would like the module to support recursive searching in customCollections directories, allowing it to find icons in all nested subdirectories like wor\n\nSteps to Reproduce\nhttps://stackblitz.com/edit/github-monhzc",[],374,"nuxt","icon","open","Feature Request: Recursive search in customCollections directories","2025-03-19T11:15:14Z","https://github.com/nuxt/icon/issues/374",0.7412067,{"description":1993,"labels":1994,"number":1998,"owner":1985,"repository":1999,"state":1987,"title":2000,"updated_at":2001,"url":2002,"score":2003},"### Environment\n\n- Operating System: `Linux`\n- Node Version: `v20.18.1`\n- Nuxt Version: `3.15.4`\n- CLI Version: `3.21.1`\n- Nitro Version: `2.10.4`\n- Package Manager: `bun@1.2.5`\n- Builder: `-`\n- User Config: `$production`, `compatibilityDate`, `telemetry`, `devtools`, `ssr`, `imports`, `runtimeConfig`, `vite`, `build`, `modules`, `css`, `app`, `auth`, `sourcemap`\n- Runtime Modules: `@nuxt/test-utils/module@3.17.2`, `~/modules/vuetify.ts`, `~/modules/DynamicCSSStyles.ts`, `nuxt-svgo@4.0.13`, `@sidebase/nuxt-auth@0.10.0`, `@nuxt/eslint@0.7.5`, `@sentry/nuxt/module@8.52.0`\n- Build Modules: `-`\n\n\n### Reproduction\n\ncomponent\n```vue\n\u003Ctemplate>\n \u003Cv-menu v-model=\"menuShow\">\n \u003Ctemplate #activator=\"{ props }\">\n \u003Cv-btn v-bind=\"props\" />\n \u003C/template>\n \u003Cv-list v-model:selected=\"selected\" selectable density=\"default\" max-height=\"40vh\" select-strategy=\"leaf\">\n \u003Ctemplate v-for=\"item in items\" :key=\"item.title\">\n \u003Cv-list-item>\n {{ item.title }}\n \u003C/v-list-item>\n \u003C/template>\n \u003C/v-list>\n \u003C/v-menu>\n\u003C/template>\n\n\u003Cscript lang=\"ts\">\nimport { defineComponent, reactive, ref } from 'vue'\n\nexport default defineComponent({\n name: 'AppTestComponent',\n setup() {\n const selected = ref([])\n const menuShow = ref(false)\n return {\n menuShow,\n selected,\n }\n },\n computed: {\n items() {\n return [\n {\n title: 'My Title',\n },\n ]\n },\n },\n})\n\u003C/script>\n```\n\ntest\n\n```typescript\n\nimport { describe, expect, test } from 'vitest'\nimport { mountSuspended } from '@nuxt/test-utils/runtime'\nimport AppTestComponent from '~/components/AppTestComponent.vue'\nimport { mount } from '@vue/test-utils'\nimport { VList } from 'vuetify/components/VList'\n\ndescribe('AppTestComponent', () => {\n test('renders', async () => {\n const component = mount(AppTestComponent)\n\n await component.find('button').trigger('click')\n const listContent = component.findComponent(VList).html()\n expect(listContent).toContain('My Title')\n })\n test('will fail', async () => {\n const component = await mountSuspended(AppTestComponent)\n\n await component.find('button').trigger('click')\n const listContent = component.findComponent(VList).html()\n expect(listContent).toContain('My Title')\n })\n})\n\n```\n\n\n### Describe the bug\n\n\nWhen testing Vuetify components with `mountSuspended` from `@nuxt/test-utils/runtime`, I discovered that ref values are not properly unwrapped before being passed to components.\n\nSpecifically, when mounting Vuetify's `VMenu` or `VList` components, props like `modelValue` (for VMenu) or `selected` (for VList) receive the actual ref object instead of the ref's value. This behavior differs from Vue Test Utils' standard `mount` function, which correctly unwraps ref values.\n\n## Reproduction Steps\n\nThe issue occurs when:\n1. Using `mountSuspended` from `@nuxt/test-utils/runtime`\n2. Testing components created with `defineComponent()`\n3. Passing refs as props to Vuetify components from `setup()`\n\nInterestingly, components using `\u003Cscript setup>` syntax work correctly.\n\n## Error Details\n\nThe error occurs in Vuetify's internal code when it tries to iterate over what it expects to be an array value but receives a ref object instead:\n\n```\nTypeError: (v || []) is not iterable\n ❯ Object.in node_modules/vuetify/src/composables/nested/selectStrategies.ts:56:25\n ❯ transformIn node_modules/vuetify/src/composables/nested/nested.ts:184:33\n ❯ ComputedRefImpl.get [as fn] node_modules/vuetify/src/composables/proxiedModel.ts:53:14\n ❯ refreshComputed node_modules/@vue/reactivity/dist/reactivity.cjs.js:384:28\n ❯ ComputedRefImpl.value node_modules/@vue/reactivity/dist/reactivity.cjs.js:1625:5\n ❯ ComputedRefImpl.fn node_modules/vuetify/src/composables/nested/nested.ts:356:53\n ❯ refreshComputed node_modules/@vue/reactivity/dist/reactivity.cjs.js:384:28\n ❯ ComputedRefImpl.value node_modules/@vue/reactivity/dist/reactivity.cjs.js:1625:5\n ❯ ComputedRefImpl.fn node_modules/vuetify/src/components/VList/VListItem.tsx:141:105\n ❯ refreshComputed node_modules/@vue/reactivity/dist/reactivity.cjs.js:384:28\n```\n\n## Investigation Findings\n\nWhen debugging the Vuetify components by placing breakpoints in their setup functions, I observed that:\n- With `@vue/test-utils` mount: Props contain the actual values of refs\n- With `@nuxt/test-utils` mountSuspended: Props contain the ref objects themselves\n\nI suspect this is related to how `mountSuspended` handles the return value of `setup()` when using `defineComponent()`, failing to properly unwrap reactive references before passing them as props.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[1995],{"name":1996,"color":1997},"pending triage","5D08F5",1199,"test-utils","Component props are passed as ref instead of refs value when using defineComponent()","2025-03-20T22:07:30Z","https://github.com/nuxt/test-utils/issues/1199",0.7686753,{"description":2005,"labels":2006,"number":2007,"owner":1985,"repository":2008,"state":2009,"title":2010,"updated_at":2011,"url":2012,"score":2013},"",[],376,"nuxt.com","closed","[Live Collab] Update draft on medias ","2023-02-15T12:31:26Z","https://github.com/nuxt/nuxt.com/issues/376",0.44823906,{"description":2005,"labels":2015,"number":2019,"owner":1985,"repository":2008,"state":2009,"title":2020,"updated_at":2021,"url":2022,"score":2023},[2016],{"name":2017,"color":2018},"enhancement","1ad6ff",378,"[Live Collab] Update draft when collaborators reset it from branches modal","2022-04-21T10:43:38Z","https://github.com/nuxt/nuxt.com/issues/378",0.62028164,{"description":2025,"labels":2026,"number":2019,"owner":1985,"repository":1999,"state":2009,"title":2027,"updated_at":2028,"url":2029,"score":2023},"### Environment\n\nhttps://github.com/Rigo-m/nuxt-vitest-error-test\n\n### Reproduction\n\nhttps://github.com/Rigo-m/nuxt-vitest-error-test\n\n### Describe the bug\n\nRunning pnpm i && pnpm --filter global test gives the following error: \r\n```\r\nError: [@vue/compiler-sfc] No fs option provided to `compileScript` in non-Node environment. File system access is required for resolving imported types.\r\n\r\n/Users/rigo/Projects/nuxt-test-utils-test/packages/layer/components/Test.vue\r\n5 | \u003Cscript setup lang=\"ts\">\r\n6 | import type { TestProps } from \"./test.props\";\r\n7 | defineProps\u003CTestProps>();\r\n | ^^^^^^^^^\r\n8 | \u003C/script>\r\n```\n\n### Additional context\n\nRemoving vitest.config.ts make e2e tests works, but (obviously) kills unit tests using nuxt vitest environment\n\n### Logs\n\n_No response_",[],"nuxt-vitest + nuxt test utils not working properly together","2023-12-02T00:13:09Z","https://github.com/nuxt/test-utils/issues/378",{"description":2005,"labels":2031,"number":2033,"owner":1985,"repository":2008,"state":2009,"title":2034,"updated_at":2035,"url":2036,"score":2037},[2032],{"name":2017,"color":2018},370,"[Live collab] Handle case when current file is deleted by a collaborator","2023-02-15T12:31:24Z","https://github.com/nuxt/nuxt.com/issues/370",0.6907641,{"description":2039,"labels":2040,"number":2033,"owner":1985,"repository":2041,"state":2009,"title":2042,"updated_at":2043,"url":2044,"score":2037},"It introduce unocss as a dependency and it injects unexpected tailwind utilities when developing.\n\ndependencies:\n@nuxt/scripts 0.9.5\n└─┬ @nuxt/devtools-ui-kit 1.7.0\n ├─┬ @unocss/nuxt 0.65.4\n │ └── unocss 0.65.4\n └── unocss 0.65.4",[],"scripts","Why depends on `devtools-ui-kit`?","2025-02-03T13:29:48Z","https://github.com/nuxt/scripts/issues/370",{"description":2005,"labels":2046,"number":2048,"owner":1985,"repository":2008,"state":2009,"title":2049,"updated_at":2050,"url":2051,"score":2052},[2047],{"name":2017,"color":2018},178,"Handle image upload on draft when clicking on `upload` button","2023-02-15T12:31:19Z","https://github.com/nuxt/nuxt.com/issues/178",0.717119,{"description":2054,"labels":2055,"number":2056,"owner":1985,"repository":2008,"state":2009,"title":2057,"updated_at":2058,"url":2059,"score":2060},"An action should be done when receiving a commit by a collaborator. ",[],372,"[Live collab] Update tree and draft when collaborator commits","2023-02-15T12:31:25Z","https://github.com/nuxt/nuxt.com/issues/372",0.73117477,{"description":2062,"labels":2063,"number":2056,"owner":1985,"repository":1999,"state":2009,"title":2064,"updated_at":2028,"url":2065,"score":2060},"This way of overriding options (using spread operator):\r\nhttps://github.com/nuxt-community/module-test-utils/blob/2801ebd478d54e97d95310bbfbd69e642223f363/lib/setup.js#L13-L16\r\nis often very limiting because it makes it impossible to override particular property of an object that has other properties.\r\n\r\nFor example, if we try to override one property from object:\r\n```\r\n{\r\n i18n: {\r\n a: 1,\r\n b: 2,\r\n c: 3,\r\n }\r\n}\r\n```\r\nwith:\r\n```\r\nconst override = {\r\n i18n: {\r\n b: 4\r\n }\r\n}\r\n```\r\nthen that will override whole `i18n` object, leaving just property `b`.\r\n\r\nThis module should rather use something like this:\r\n```\r\nconst deepMerge = require('deepmerge')\r\nconst options = deepMerge.all([options, override])\r\n```\r\n(This would probably be a breaking change if one relied on previous behavior)",[],"Inflexible nuxt options override","https://github.com/nuxt/test-utils/issues/372",["Reactive",2067],{},["Set"],["ShallowReactive",2070],{"TRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"U8RGuxsS6F78GnvJgPp6Im3aENu8MyE-wtb5DlUk16A":-1},"/nuxt/test-utils/376"]