$ the-wire · showcase
Test-utils confines stubs to one app, Suspense stops leaking unmount hooks
By RepoJournal · Filed · About Vue.js · Composed from the cited sources · methodology
vuejs/test-utils fixed a stub leak that contaminated every app rendered after a shallowMount in the same file, and vuejs/core stopped unmounting a pending Suspense branch from firing hooks the boundary had already discarded.
fix: only apply stubs to the app being rendered vuejs/test-utils
mount, shallowMount and renderToString installed their stubs through Vue's global transformVNodeArgs and never removed them, so a plain createApp or createSSRApp rendered later in the same test file still produced <b-loading-stub> or <transition-stub> output even after unmount(). The stubs now apply only to the app being rendered, which should fix tests that only passed or failed depending on f...
fix(suspense): drop the unmount hooks of a pending branch when the boundary is unmounted vuejs/core
edison1105's fix drops the unmount hooks of a pending Suspense branch when the boundary itself is unmounted, and late events from discarded components are now ignored while deferred cleanup effects still run on resolve. Relevant if you render Suspense content that can be torn down before it ever becomes visible.
fix(#2541): stub globally registered components by their registration key vuejs/test-utils
The stubs transformer matched only the keys of locally registered components and the component name, so a component registered via app.component() under a different key could not be stubbed by that key. It now matches the registration key too, meaning stubs: { NButton: true } works for naive-ui and stubs: { AButton: true } for Arco instead of silently rendering the real component.
feat: add VueWrapper.emit vuejs/test-utils
wrapper.emit(eventName, ...args) is a shorthand for wrapper.vm.$emit that returns nextTick(). It replaces the findComponent(Child).vm.$emit(...) pattern for simulating child-emitted custom events, which trigger cannot dispatch since it only handles DOM events.
fix(client): improve timeline layers a11y vuejs/devtools
The devtools client reworked three interaction surfaces for keyboard and screen-reader users: timeline layers now render selection as a native button with aria-pressed instead of a click-only list item, with collection controls revealed on focus within the row; state entry toggles and pages route actions got matching fixes. Alongside, vuejs/core merged four Renovate dependency PRs (eslint to ^1...