-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
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
Document and test custom, async, inline snapshot matcher #10922
Document and test custom, async, inline snapshot matcher #10922
Conversation
Test failures look like they're unrelated since the same errors happen on |
CI should be fixed via #10924 - could you rebase? |
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.
Awesome stuff, thanks! Can you update the relevant versioned docs? I assume that works the same across Jest versions supporting inline snapshots?
2890d96
to
ce36eac
Compare
I tried the same implementation in 25 and 23. Only 25 was working. 23 threw with I won't have time to investigate the issue for 23. |
That's perfectly fine, thanks for taking the time to check at all! |
|
||
expect.extend({ | ||
async toMatchObservationInlineSnapshot(fn, ...rest) { | ||
// The error (and its stacktrace) must be created before any `await` |
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.
I wonder if Jest itself could instantiate an error and store it before calling this function? So that particular gotcha is gone. Not needed for now of course, and documenting for Jest 25 and 26 is great regardless
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.
Yeah, I did some shallow debugging but couldn't really figure out why it was working without this.error = new Error()
for existing snapshots but not for new snapshots. I might revisit this though having a test in the repo is a sufficient guarantee for me now 😉
* master: (30 commits) chore: verify TS project references are correct (jestjs#10941) chore(deps): bump actions/setup-node from v2.1.2 to v2.1.3 (jestjs#10940) docs: Rectify typo in tutorialReactNative (jestjs#10930) chore: patch react-native jest preprocessor to avoid warning Ensure `toContain` only accepts strings when `received` is a string (jestjs#10929) chore: update lockfile after publish v27.0.0-next.2 Document and test custom, async, inline snapshot matcher (jestjs#10922) feat(transform): pass config options through to transformer (jestjs#10926) chore: bump eslint-config-prettier chore: run prettier using eslint chore: update lockfile after publish v27.0.0-next.1 fix: move binary file declaration from runtime to repl (jestjs#10925) chore(test-result): remove deprecated `sourcemap` property (jestjs#10355) chore: remove mapCoverage remainings; remove deprecated CLI options test (jestjs#9968) refactor(jest-runtime,jest-transform): add readonly for some class fields (jestjs#10918) chore: ensure single environment package as well chore: fix failing tests (jestjs#10924) chore: fix lint warning ...
This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Summary
Documents and tests how to implement custom, async, inline snapshot matchers. Specifically, that
this.error = new Error()
must be set before anyawait
.Without overriding the stack jest fails when it encounters new snapshots with "Multiple inline snapshots for the same call are not supported"
Test plan