Do not highlight passing asymmetric matchers in diffs
See original GitHub issue🚀 Feature Proposal
This is another idea related to more helpful failure diffs in the same vein as #6170.
The diff of a failing expectation currently highlights nested usages of expect.objectContaining
and expect.anything
because they are not “equal” to whatever was received. I propose only printing out a diff if the matcher fails.
Motivation
Both this issue and #6170 are the product of a pairing session where we had a hard time tracking down what the actual error was when an existing test started failing. I think that test could have been broken up into several more specific tests or used chained expectations, but it would have been nice to pinpoint the failing property right away.
Example
Here’s an example of a failing test that uses a combination of matchers:
https://repl.it/repls/DifficultSvelteMonitors
The only property that doesn’t match is “rank” due to a type mismatch, but it’s hard to see that when scanning the failure diff because the nested matchers are displaying.
The desired approach would look like this:
Pitch
Why does this feature belong in the Jest core platform?
This is a change to the default reporter that will help identify the cause of failures faster.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:14
- Comments:9 (5 by maintainers)
Top GitHub Comments
This one sounds like fun. I can give it a try if nobody is actively working on it.
I can offer another use case in support of the output being more specific.
When using
expect.objectContaining
it can be really hard to see what’s changed when the structure is really large, such as when checking theheaders
of a Restify Request or Response object.It would be much easier to see the mismatch if the output only printed the fields that you’re attempting to partially match on.
For example: