-
Notifications
You must be signed in to change notification settings - Fork 468
In FindAllBy and FindAll query helper types: spread Arguments to support no arguments #1230
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
Conversation
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 0781b30:
|
Codecov Report
@@ Coverage Diff @@ ## main #1230 +/- ## ========================================= Coverage 100.00% 100.00% ========================================= Files 24 24 Lines 1042 1042 Branches 351 347 -4 ========================================= Hits 1042 1042
Flags with carried forward coverage won't be shown. Click here to find out more. 📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
@astorije
astorije
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@eps1lon, @MatanBobi, @timdeschryver, what do you all think about this? 🙏
Uh oh!
There was an error while loading. Please reload this page.
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
:Screen Shot 2023年05月05日 at 11 48 12 AM
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:Screen Shot 2023年05月05日 at 11 46 16 AM
Checklist:
docs site N/A