Open
Description
Describe the bug
Components that render multiple root nodes or <slot />
in root won't be cleaned up properly after each test or by calling cleanup
manually.
To Reproduce
The following test cases will currently fail if added to auto-cleanup.js
.
test('renders single slot component', () => {
render({template: `<slot />`})
expect(document.body.innerHTML).toMatchInlineSnapshot(`<div></div>`)
})
// this is about to fail because wrapping <div> from previous test won't be removed.
test('renders multiple root nodes component', () => {
render({template: `
<h1>Hello World</h1>
<h2>Hello World</h2>`
})
expect(document.body.innerHTML).toMatchInlineSnapshot(`
<div>
<h1>Hello World</h1>
<h2>Hello World</h2>
</div>
`)
})
// this will fail because body will still have 2 `<div>` elements attached.
test('cleans up after each test by default', () => {
expect(document.body.innerHTML).toMatchInlineSnapshot(``)
})
Expected behavior
cleanup
should remove all attached wrapping elements from body
.
Related information:
@testing-library/vue
version: 6.6.1Vue
version: 3.2.45node
version: 18.2.1npm
(oryarn
) version: yarn 3.2.4
Activity
XavierChevalier commentedon May 19, 2023
I have the same issue actually. Any news about this?
pathai-scasarotto commentedon Jan 8, 2024
I think I am also seeing something similar. I was in the process of upgrading a number of dependencies.
adamdehaven commentedon Jun 20, 2024
I've tried calling
cleanup
manually along withcomponent.unmount
(for@testing-library/vue
) and the previous instance is still in the DOM when the test runsSerhansolo commentedon Dec 2, 2024
ah crap, we just adopted VTL here! I think I am running into the same issue.. any updates?
fix: properly clean up multi-root components (testing-library#295)
test: add test coverage for multi-root and slot cleanup (testing-libr…