fix: Run render queries in the render container only #1097
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What: This is a bugfix (as far as I can tell).
Why:
render()by default appends a newcontainerto abaseElementwhich is, by default, the global variabledocument.body. Thiscontainerends up containing the resulting markup for the system under test. However, when using the query methods on theRenderResultobject, the wholedocumentis scanned for matches, not just the markup resulting from therender()call. This breaks assumptions about the scope in which queries a run : one would expect thegetByTextand other queries to be scoped to that particular render.As a matter of fact, this is what happens when the
containerparameter is given explicitly andbaseElementtakes it value, however this is not what happens otherwise. The default behaviour (global querying on all renders) is redundant with whatscreenfrom@testing-library/domdoes, without being very clear about it being global.How:
Checklist:
docs site (pull request)