Open dturcotte opened 1 year ago
This pull request is automatically built and testable in CodeSandbox.
To see build info of the built libraries, click here or the icon next to each commit SHA.
Latest deployment of this branch, based on commit 0781b30edecdefb938e99c537c1569e061a12d63:
Sandbox | Source |
---|---|
react-testing-library-examples | Configuration |
Merging #1230 (0781b30) into main (39a64d4) will not change coverage. The diff coverage is
n/a
.
@@ Coverage Diff @@
## main #1230 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 24 24
Lines 1042 1042
Branches 351 347 -4
=========================================
Hits 1042 1042
Flag | Coverage Δ | |
---|---|---|
node-14 | 100.00% <ø> (ø) |
|
node-16 | 100.00% <ø> (ø) |
|
node-18 | 100.00% <ø> (ø) |
Flags with carried forward coverage won't be shown. Click here to find out more.
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more
What: Custom queries returned by
buildQueries
whose implementation required no arguments (besidescontainer
) still required one argument forfind*
andfindAll*
even when used onscreen
orwithin
.Without the
query-helpers.d.ts
changes introduced by this PR, see these TS errors in the updatedtype-tests
:Why: There was a lot of great work done on these types here and here, I want to build on that to solve this one additional edge case.
For context on why we have queries with no arguments: we have a library with UI components that other teams consume. We also provide a few custom queries for things we don't want the consumers to worry about. For example: We provide a
DataGrid
component with the option to select rows. It's possible to find the input to select a row using base testing-library features but consumers shouldn't need to know how the sausage is made, for their convenience we want them to be able to simply say:await userEvent.click(within(row).getGridRowSelectionInput())
This works, however I noticed that for the
find
andfindAll
queries the first arg is always required. It would end up looking like this to make TS happy:await within(row).findGridRowSelectionInput(undefined)
How: Spreading
Arguments
inFindBy
andFindAllBy
types would fix this; the resulting queries should better match the types passed intobuildQueries
. If there are no arguments aftercontainer
then the resulting query would have two:container
andwaitForOptions
. This would also allow for more than two args if needed. Lastly, this doesn't change the fact thatcontainer
is required:Checklist: