-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cannot query children in <Portal>
s
#62
Comments
When using Vitest, adding this to a file solves the duplication issue for it and allows you to use import { afterEach } from 'vitest';
import { cleanup } from '@solidjs/testing-library';
afterEach(() => {
cleanup();
}); However, this might break (I haven't tested it extensively) when rendering multiple times in one |
You don't need to cleanup afterwards, this is already done automatically. However, unless you choose isolation: true in the testing config, tests might influence each other. |
I saw that in the docs somewhere, but it didn't seem to work properly, and I had to call it manually. Also, I'd rather not incur the slowdown of isolating all tests, just the ones in a specific file. |
I don't want to encourage using isolation of tests at all costs, just explain the mechanism. Your issue might be timing- or error-related (tests could be cleaned up slightly delayed or may not be cleaned up after failure). |
it wont work with a Portal because when you use Portal it will render html attached to the body, you need to use:
PS: I had the same issue and Github Copilot Chat told me to do it this way |
Please use screen.get... accessible queries instead of CSS selectors. |
The query commands (
getByRole
,getByTestId
, etc.) fail to pick up children of<Portal>
s.The children of
<Portal>
s get rendered in a separate<div>
from the content of therender
call. The various query commands seem to use thecontainer
element, which is the first<div>
, and fail to pick up anything in a portal:One workaround is to use the
baseElement
property with a query selector, i.e.baseElement.querySelector('[data-testid="two"]')
. However, Solid Testing Library reuses the<body>
betweenrender()
s:So, if you have two tests in one file, they will both be rendered in the same document, and so you'll likely run into issues when using
baseElement.querySelector
, as it might select elements from a different test.The text was updated successfully, but these errors were encountered: