Skip to content
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

[expect] Improve mock "return" matchers to properly handle calls that throw #6172

Merged
merged 7 commits into from
May 22, 2018
Merged

[expect] Improve mock "return" matchers to properly handle calls that throw #6172

merged 7 commits into from
May 22, 2018

Conversation

UselessPickles
Copy link
Contributor

Summary

New mock return matchers that were recently added did not properly handle calls to the mock that threw errors. A call that throws an error should not be considered to have successfully returned.

More details here: #5879 (comment)

This PR improves the mock return matchers to properly interpret calls that threw errors.

Also includes:

  • Some improvements to matcher failure messages.
  • Additional edge cases covered by unit tests.
  • Made mock return/throw tracking more robust by explicitly tracking a boolean indicator of whether the call threw an error. This allows for proper detection of a call having thrown an error even if the value undefined was thrown.

Test plan

See new/updated unit tests.

Ran the following to test affected code:

yarn jest jest_mock
yarn jest spy_matchers

NOTE: running the full unit test suite results in failures unrelated to my changes (failures happened before I made any changes). Some of the failures look like file system permissions issues on my machine (a windows machine). A couple others have something to do with lodash mocking (completely unrelated to my changes).

@UselessPickles UselessPickles changed the title Improve mock "return" matchers to properly handle calls that throw [expect] Improve mock "return" matchers to properly handle calls that throw May 12, 2018
@UselessPickles
Copy link
Contributor Author

@rickhanlonii @SimenB

const pass = equals(nthValue, expected, [iterableEquality]);
const nthCallReturned = !received.mock.callsDidThrow[nth - 1];
const pass =
nth <= returnValues.length &&
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added validation that "nth" is within the range of the number of calls

nthValue,
)}`
: `But it did ${RECEIVED_COLOR('not return')}`);
(returnValues.length === 0
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added more precision to the message depending on exactly why it failed

* A list of booleans indicating whether each call to the mock function threw
* an error.
*/
callsDidThrow: Array<boolean>,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any suggestions for a better name?

@SimenB
Copy link
Member

SimenB commented May 12, 2018

I wonder if we should use Symbols in the array, instead of sticking in undefined. Symbol('error thrown'), Symbol('no error') etc instead of having the check in multiple arrays, or using Boolean flags.

These Symbols could be exports from jest-mock for ease of checking

Also, please run yarn lint:md to fix CI :)

@SimenB SimenB requested a review from rickhanlonii May 12, 2018 13:30
@UselessPickles
Copy link
Contributor Author

UselessPickles commented May 12, 2018

I agree that the parallel arrays are getting a bit excessive, but I feel like using symbols to distinguish between "no error because an error wasn't thrown" vs "no error because undefined was explicitly thrown" doesn't do anything to reduce complexity, but just reorganizes the complexity into a less familiar and less convenient format.

I think a more intuitive approach would be to combine everything into a single "results" array, with one entry per call of this type:

export interface MockFunctionResult {
    didThrowError: boolean; // true if error is thrown, false if successfully returned
    returnValue: any; // undefined when didThrow === true, or if undefined was returned
    thrownError: any; // undefined when didThrow === false, or if undefined was thrown
}

Again, this doesn't reduce complexity, but I think it reorganizes it into a more convenient and intuitive form by getting rid of the 3 parallel arrays, and creates a more obvious coupling between the 3 values.

@UselessPickles
Copy link
Contributor Author

I ran yarn lint:md, but it didn't cause any changes to any files:

D:\DevProjects\github\jest>yarn lint:md
yarn run v1.5.1
$ yarn --silent lint:md:ci --fix
Done in 1.44s.

D:\DevProjects\github\jest>git status
On branch spy_return_matchers_fix
Your branch is up-to-date with 'origin/spy_return_matchers_fix'.
nothing to commit, working tree clean

@SimenB
Copy link
Member

SimenB commented May 12, 2018

I like bthe idea of a single array of calls, and them being objects. Suuuuper breaking, but maybe ok? @cpojer thoughts?

@SimenB
Copy link
Member

SimenB commented May 12, 2018

didThrowError should probably just be didThrow - you can throw whatever you want in JS not just Errors.

The advantage of a Symbol is that then we only need 2 fields (or 2 arrays), and not 3. Might not help of course :)

@UselessPickles
Copy link
Contributor Author

UselessPickles commented May 12, 2018

So something like this?

export interface MockFunctionCallData {
    args: any[]; // list of args values passed to this call
    didThrow: boolean; // true if value is thrown, false if successfully returned
    returnValue: any; // undefined when didThrow === true, or if undefined was returned
    thrownValue: any; // undefined when didThrow === false, or if undefined was thrown
}

I think that's an ideal design, but as you said, "super breaking". At least for the scope of this PR, I think it's best to keep the calls array separate.

More justification for the didThrow boolean as opposed to using Symbol...

The boolean both directly and clearly indicates how the call "completed" (it either threw or returned), and is also used to decide which value (returnValue vs thrownValue) to check for further details about how the call "completed". This is pretty intuitive and resulting code will be very readable:

const result = myFn.mock.results[0];
// IDE code completion with TS type defs will allow "didThrow" to be easily discoverable
if (!result.didThrow) {
   const returnValue = result.returnValue;
}

If we get rid of didThrow and use Symbols instead, which property do we store a Symbol on? Store a symbol on returnValue when an error is thrown? Store a symbol on thrownValue when an error is NOT thrown? Both? What's the justification for choosing one over the other? If the decision is "both", then a single piece of information is duplicated in 2 places. It requires introducing what amounts to "magic values" (the symbols), and the resulting code will be unintuitive:

const result = myFn.mock.results[0];
// Need to check "thrownError" before using "returnValue" (awkward).
// Developer needs to know about magic symbol to import it and use it.
// Not discoverable through IDE auto completion.
if (result.thrownValue === NO_ERROR_THROWN) {
   const returnValue = result.returnValue;
}

@rickhanlonii
Copy link
Member

I was initially thinking using a symbol in the existing returnValues and thrownValues as @SimenB said, but after this discussion I think I would recommend:

  • keep the calls the way they are (super breaking, we can combine in a later release)
  • switch to storing both the returned and thrown values in a single mock.results field
  • each item in the results have this value:
export interface MockFunctionResult {
    type: string; // either 'return' or 'throw', could be a symbol
    value: any; // whatever the result was
}

This makes the standard and custom matchers easy to implement, for example:

const nthReturnedWith= string => (received, nth, expected ) => {
  const nthResult = received.mock.results[nth - 1];
  
  // simplified equality for example
  const pass = nthResult && nthResult.type === 'return' && nthResult.value === expected; 

  return {message: 'omitted', pass};
};

const nthThrownWith= string => (received, nth, expected ) => {
  const nthResult = received.mock.results[nth - 1];
  
  // simplified equality for example
  const pass = nthResult && nthResult.type === 'throw' && nthResult.value === expected; 

  return {message: 'omitted', pass};
};

@UselessPickles
Copy link
Contributor Author

@rickhanlonii Collapsing the thrownValue and returnValue into a single value seems so obvious now that you suggested it :)

How about this?

export interface MockFunctionResult {
    // or isThrow? isThrown?
    didThrow: boolean; // true if thrown, false if returned
    value: any; // whatever value was thrown/returned
}

As an end user of jest, a boolean is much more preferable than a string or symbol. A boolean clearly represents that there are only 2 possible values, and the possible values are already known (intuitive to write/read/understand).

A string or symbol type property requires separate knowledge of the possible values to understand how many possibilities there are, and know exactly what values to compare it to. Once the code is written, it would be fairly intuitive to read/understand, but writing the code in the first place is not intuitive because it would require reading documentation to discover the magic values. There's also a much higher chance of typos that allow code to execute without runtime errors, but produce incorrect behavior.

@SimenB
Copy link
Member

SimenB commented May 12, 2018

I think it should also include arguments to the function so it encapsulates the whole function call, and we can soft-deprecate the .calls array

@UselessPickles
Copy link
Contributor Author

UselessPickles commented May 12, 2018

@SimenB I just realized one subtle difference between maintaining call args separately, vs combined with result data.

The current implementation pushes the call args to calls immediately before executing the underlying mock/spy implementation, which would allow code executed by the mock/spy itself to already have access to the call args of the call that is currently executing.

If we combine call args with results info, then the call args will not be recorded until AFTER the mock/spy implementation executes.

This may be a good reason to maintain call args separately.

If anyone already relies on the current behavior, the change would be extremely breaking without any straightforward migration steps to follow.

@UselessPickles
Copy link
Contributor Author

@rickhanlonii I restructured how results are maintained in MockFunctionState and resolved a conflict with master.

@SimenB
Copy link
Member

SimenB commented May 21, 2018

@UselessPickles CI is failing because of linting errors in the markdown. Seems like our pattern doesn't work on windows, but you can do yarn prettylint docs/ExpectAPI.md --fix to fix it.

This also needs a rebase 🙂

@SimenB SimenB added this to the Jest 23 milestone May 21, 2018
@codecov-io
Copy link

Codecov Report

Merging #6172 into master will increase coverage by <.01%.
The diff coverage is 100%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #6172      +/-   ##
==========================================
+ Coverage   64.37%   64.38%   +<.01%     
==========================================
  Files         219      219              
  Lines        8453     8454       +1     
  Branches        4        3       -1     
==========================================
+ Hits         5442     5443       +1     
  Misses       3010     3010              
  Partials        1        1
Impacted Files Coverage Δ
packages/jest-mock/src/index.js 87.42% <100%> (+0.03%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9867e16...006f616. Read the comment docs.

@cpojer cpojer merged commit f55f3d8 into jestjs:master May 22, 2018
@UselessPickles UselessPickles deleted the spy_return_matchers_fix branch May 22, 2018 18:03
wopian referenced this pull request in wopian/eslint-config-wopian May 25, 2018
This Pull Request updates dependency [jest](https://github.com/facebook/jest) from `~22.4.0` to `~23.0.0`



<details>
<summary>Release Notes</summary>

### [`v23.0.0`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2300)
[Compare Source](jestjs/jest@2745e3e...614f739)
##### Features

* `[expect]` Expose `getObjectSubset`, `iterableEquality`, and `subsetEquality`
  ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-snapshot]` Add snapshot property matchers
  ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-config]` Support jest-preset.js files within Node modules
  ([#&#8203;6185](`https://github.com/facebook/jest/pull/6185`))
* `[jest-cli]` Add `--detectOpenHandles` flag which enables Jest to potentially
  track down handles keeping it open after tests are complete.
  ([#&#8203;6130](`https://github.com/facebook/jest/pull/6130`))
* `[jest-jasmine2]` Add data driven testing based on `jest-each`
  ([#&#8203;6102](`https://github.com/facebook/jest/pull/6102`))
* `[jest-matcher-utils]` Change "suggest to equal" message to be more advisory
  ([#&#8203;6103](`https://github.com/facebook/jest/issues/6103`))
* `[jest-message-util]` Don't ignore messages with `vendor` anymore
  ([#&#8203;6117](`https://github.com/facebook/jest/pull/6117`))
* `[jest-validate]` Get rid of `jest-config` dependency
  ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-validate]` Adds option to inject `deprecationEntries`
  ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-snapshot]` [**BREAKING**] Concatenate name of test, optional snapshot
  name and count ([#&#8203;6015](`https://github.com/facebook/jest/pull/6015`))
* `[jest-runtime]` Allow for transform plugins to skip the definition process
  method if createTransformer method was defined.
  ([#&#8203;5999](`https://github.com/facebook/jest/pull/5999`))
* `[expect]` Add stack trace for async errors
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for timeouts
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for thrown non-`Error`s
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-runtime]` Prevent modules from marking themselves as their own parent
  ([#&#8203;5235](`https://github.com/facebook/jest/issues/5235`))
* `[jest-mock]` Add support for auto-mocking generator functions
  ([#&#8203;5983](`https://github.com/facebook/jest/pull/5983`))
* `[expect]` Add support for async matchers
   ([#&#8203;5919](`https://github.com/facebook/jest/pull/5919`))
* `[expect]` Suggest toContainEqual
  ([#&#8203;5948](`https://github.com/facebook/jest/pull/5953`))
* `[jest-config]` Export Jest's default options
  ([#&#8203;5948](`https://github.com/facebook/jest/pull/5948`))
* `[jest-editor-support]` Move `coverage` to `ProjectWorkspace.collectCoverage`
  ([#&#8203;5929](`https://github.com/facebook/jest/pull/5929`))
* `[jest-editor-support]` Add `coverage` option to runner
  ([#&#8203;5836](`https://github.com/facebook/jest/pull/5836`))
* `[jest-haste-map]` Support extracting dynamic `import`s
  ([#&#8203;5883](`https://github.com/facebook/jest/pull/5883`))
* `[expect]` Improve output format for mismatchedArgs in mock/spy calls.
  ([#&#8203;5846](`https://github.com/facebook/jest/pull/5846`))
* `[jest-cli]` Add support for using `--coverage` in combination with watch
  mode, `--onlyChanged`, `--findRelatedTests` and more
  ([#&#8203;5601](`https://github.com/facebook/jest/pull/5601`))
* `[jest-jasmine2]` [**BREAKING**] Adds error throwing and descriptive errors to
  `it`/ `test` for invalid arguments. `[jest-circus]` Adds error throwing and
  descriptive errors to `it`/ `test` for invalid arguments
  ([#&#8203;5558](`https://github.com/facebook/jest/pull/5558`))
* `[jest-matcher-utils]` Add `isNot` option to `matcherHint` function
  ([#&#8203;5512](`https://github.com/facebook/jest/pull/5512`))
* `[jest-config]` Add `<rootDir>` to runtime files not found error report
  ([#&#8203;5693](`https://github.com/facebook/jest/pull/5693`))
* `[expect]` Make toThrow matcher pass only if Error object is returned from
  promises ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add isError to utils
  ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add inverse matchers (`expect.not.arrayContaining`, etc.,
  [#&#8203;5517](`https://github.com/facebook/jest/pull/5517`))
* `[expect]` `expect.extend` now also extends asymmetric matchers
  ([#&#8203;5503](`https://github.com/facebook/jest/pull/5503`))
* `[jest-mock]` Update `spyOnProperty` to support spying on the prototype chain
  ([#&#8203;5753](`https://github.com/facebook/jest/pull/5753`))
* `[jest-mock]` Add tracking of return values in the `mock` property
  ([#&#8203;5752](`https://github.com/facebook/jest/pull/5752`))
* `[jest-mock]` Add tracking of thrown errors in the `mock` property
  ([#&#8203;5764](`https://github.com/facebook/jest/pull/5764`))
* `[expect]`Add nthCalledWith spy matcher
  ([#&#8203;5605](`https://github.com/facebook/jest/pull/5605`))
* `[jest-cli]` Add `isSerial` property that runners can expose to specify that
  they can not run in parallel
  ([#&#8203;5706](`https://github.com/facebook/jest/pull/5706`))
* `[expect]` Add `.toBeCalledTimes` and `toHaveBeenNthCalledWith` aliases
  ([#&#8203;5826](`https://github.com/facebook/jest/pull/5826`))
* `[jest-cli]` Interactive Snapshot Mode improvements
  ([#&#8203;5864](`https://github.com/facebook/jest/pull/5864`))
* `[jest-editor-support]` Add `no-color` option to runner
  ([#&#8203;5909](`https://github.com/facebook/jest/pull/5909`))
* `[jest-jasmine2]` Pretty-print non-Error object errors
  ([#&#8203;5980](`https://github.com/facebook/jest/pull/5980`))
* `[jest-message-util]` Include column in stack frames
  ([#&#8203;5889](`https://github.com/facebook/jest/pull/5889`))
* `[expect]` Introduce toStrictEqual
  ([#&#8203;6032](`https://github.com/facebook/jest/pull/6032`))
* `[expect]` Add return matchers
  ([#&#8203;5879](`https://github.com/facebook/jest/pull/5879`))
* `[jest-cli]` Improve snapshot summaries
  ([#&#8203;6181](`https://github.com/facebook/jest/pull/6181`))
* `[expect]` Include custom mock names in error messages
  ([#&#8203;6199](`https://github.com/facebook/jest/pull/6199`))
* `[jest-diff]` Support returning diff from oneline strings
  ([#&#8203;6221](`https://github.com/facebook/jest/pull/6221`))
* `[expect]` Improve return matchers
  ([#&#8203;6172](`https://github.com/facebook/jest/pull/6172`))
* `[jest-cli]` Overhaul watch plugin hooks names
  ([#&#8203;6249](`https://github.com/facebook/jest/pull/6249`))
* `[jest-mock]` Include tracked call results in serialized mock
  ([#&#8203;6244](`https://github.com/facebook/jest/pull/6244`))
##### Fixes

* `[jest-cli]` Fix stdin encoding to utf8 for watch plugins.
  ([#&#8203;6253](`https://github.com/facebook/jest/issues/6253`))
* `[expect]` Better detection of DOM Nodes for equality
  ([#&#8203;6246](`https://github.com/facebook/jest/pull/6246`))
* `[jest-cli]` Fix misleading action description for F key when in "only failed
  tests" mode. ([#&#8203;6167](`https://github.com/facebook/jest/issues/6167`))
* `[jest-worker]` Stick calls to workers before processing them
  ([#&#8203;6073](`https://github.com/facebook/jest/pull/6073`))
* `[babel-plugin-jest-hoist]` Allow using `console` global variable
  ([#&#8203;6075](`https://github.com/facebook/jest/pull/6075`))
* `[jest-jasmine2]` Always remove node core message from assert stack traces
  ([#&#8203;6055](`https://github.com/facebook/jest/pull/6055`))
* `[expect]` Add stack trace when `expect.assertions` and `expect.hasAssertions`
  causes test failures. ([#&#8203;5997](`https://github.com/facebook/jest/pull/5997`))
* `[jest-runtime]` Throw a more useful error when trying to require modules
  after the test environment is torn down
  ([#&#8203;5888](`https://github.com/facebook/jest/pull/5888`))
* `[jest-mock]` [**BREAKING**] Replace timestamps with `invocationCallOrder`
  ([#&#8203;5867](`https://github.com/facebook/jest/pull/5867`))
* `[jest-jasmine2]` Install `sourcemap-support` into normal runtime to catch
  runtime errors ([#&#8203;5945](`https://github.com/facebook/jest/pull/5945`))
* `[jest-jasmine2]` Added assertion error handling inside `afterAll hook`
  ([#&#8203;5884](`https://github.com/facebook/jest/pull/5884`))
* `[jest-cli]` Remove the notifier actions in case of failure when not in watch
  mode. ([#&#8203;5861](`https://github.com/facebook/jest/pull/5861`))
* `[jest-mock]` Extend .toHaveBeenCalled return message with outcome
  ([#&#8203;5951](`https://github.com/facebook/jest/pull/5951`))
* `[jest-runner]` Assign `process.env.JEST_WORKER_ID="1"` when in runInBand mode
  ([#&#8203;5860](`https://github.com/facebook/jest/pull/5860`))
* `[jest-cli]` Add descriptive error message when trying to use
  `globalSetup`/`globalTeardown` file that doesn't export a function.
  ([#&#8203;5835](`https://github.com/facebook/jest/pull/5835`))
* `[expect]` Do not rely on `instanceof RegExp`, since it will not work for
  RegExps created inside of a different VM
  ([#&#8203;5729](`https://github.com/facebook/jest/pull/5729`))
* `[jest-resolve]` Update node module resolution algorithm to correctly handle
  symlinked paths ([#&#8203;5085](`https://github.com/facebook/jest/pull/5085`))
* `[jest-editor-support]` Update `Settings` to use spawn in shell option
  ([#&#8203;5658](`https://github.com/facebook/jest/pull/5658`))
* `[jest-cli]` Improve the error message when 2 projects resolve to the same
  config ([#&#8203;5674](`https://github.com/facebook/jest/pull/5674`))
* `[jest-runtime]` remove retainLines from coverage instrumentation
  ([#&#8203;5692](`https://github.com/facebook/jest/pull/5692`))
* `[jest-cli]` Fix update snapshot issue when using watchAll
  ([#&#8203;5696](`https://github.com/facebook/jest/pull/5696`))
* `[expect]` Fix rejects.not matcher
  ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[jest-runtime]` Prevent Babel warnings on large files
  ([#&#8203;5702](`https://github.com/facebook/jest/pull/5702`))
* `[jest-mock]` Prevent `mockRejectedValue` from causing unhandled rejection
  ([#&#8203;5720](`https://github.com/facebook/jest/pull/5720`))
* `[pretty-format]` Handle React fragments better
  ([#&#8203;5816](`https://github.com/facebook/jest/pull/5816`))
* `[pretty-format]` Handle formatting of `React.forwardRef` and `Context`
  components ([#&#8203;6093](`https://github.com/facebook/jest/pull/6093`))
* `[jest-cli]` Switch collectCoverageFrom back to a string
  ([#&#8203;5914](`https://github.com/facebook/jest/pull/5914`))
* `[jest-regex-util]` Fix handling regex symbols in tests path on Windows
  ([#&#8203;5941](`https://github.com/facebook/jest/pull/5941`))
* `[jest-util]` Fix handling of NaN/Infinity in mock timer delay
  ([#&#8203;5966](`https://github.com/facebook/jest/pull/5966`))
* `[jest-resolve]` Generalise test for package main entries equivalent to ".".
  ([#&#8203;5968](`https://github.com/facebook/jest/pull/5968`))
* `[jest-config]` Ensure that custom resolvers are used when resolving the
  configuration ([#&#8203;5976](`https://github.com/facebook/jest/pull/5976`))
* `[website]` Fix website docs
  ([#&#8203;5853](`https://github.com/facebook/jest/pull/5853`))
* `[expect]` Fix isEqual Set and Map to compare object values and keys
  regardless of order ([#&#8203;6150](`https://github.com/facebook/jest/pull/6150`))
* `[pretty-format]` [**BREAKING**] Remove undefined props from React elements
  ([#&#8203;6162](`https://github.com/facebook/jest/pull/6162`))
* `[jest-haste-map]` Properly resolve mocked node modules without package.json
  defined ([#&#8203;6232](`https://github.com/facebook/jest/pull/6232`))
##### Chore & Maintenance

* `[jest-runner]` Move sourcemap installation from `jest-jasmine2` to
  `jest-runner` ([#&#8203;6176](`https://github.com/facebook/jest/pull/6176`))
* `[jest-cli]` Use yargs's built-in `version` instead of rolling our own
  ([#&#8203;6215](`https://github.com/facebook/jest/pull/6215`))
* `[docs]` Add explanation on how to mock methods not implemented in JSDOM
* `[jest-jasmine2]` Simplify `Env.execute` and TreeProcessor to setup and clean
  resources for the top suite the same way as for all of the children suites
  ([#&#8203;5885](`https://github.com/facebook/jest/pull/5885`))
* `[babel-jest]` [**BREAKING**] Always return object from transformer
  ([#&#8203;5991](`https://github.com/facebook/jest/pull/5991`))
* `[*]` Run Prettier on compiled output
  ([#&#8203;5858](`https://github.com/facebook/jest/pull/3497`))
* `[jest-cli]` Add fileChange hook for plugins
  ([#&#8203;5708](`https://github.com/facebook/jest/pull/5708`))
* `[docs]` Add docs on using `jest.mock(...)`
  ([#&#8203;5648](`https://github.com/facebook/jest/pull/5648`))
* `[docs]` Mention Jest Puppeteer Preset
  ([#&#8203;5722](`https://github.com/facebook/jest/pull/5722`))
* `[docs]` Add jest-community section to website
  ([#&#8203;5675](`https://github.com/facebook/jest/pull/5675`))
* `[docs]` Add versioned docs for v22.4
  ([##&#8203;5733](https://github.com/facebook/jest/pull/#&#8203;5733))
* `[docs]` Improve Snapshot Testing Guide
  ([#&#8203;5812](`https://github.com/facebook/jest/issues/5812`))
* `[jest-runtime]` [**BREAKING**] Remove `jest.genMockFn` and
  `jest.genMockFunction` ([#&#8203;6173](`https://github.com/facebook/jest/pull/6173`))
* `[jest-message-util]` Avoid adding unnecessary indent to blank lines in stack
  traces ([#&#8203;6211](`https://github.com/facebook/jest/pull/6211`))

---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.com).
wopian referenced this pull request in wopian/kitsu May 25, 2018
This Pull Request updates dependency [jest](https://github.com/facebook/jest) from `~22.4.0` to `~23.0.0`



<details>
<summary>Release Notes</summary>

### [`v23.0.0`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2300)
[Compare Source](jestjs/jest@2745e3e...v23.0.0)
##### Features

* `[expect]` Expose `getObjectSubset`, `iterableEquality`, and `subsetEquality`
  ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-snapshot]` Add snapshot property matchers
  ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-config]` Support jest-preset.js files within Node modules
  ([#&#8203;6185](`https://github.com/facebook/jest/pull/6185`))
* `[jest-cli]` Add `--detectOpenHandles` flag which enables Jest to potentially
  track down handles keeping it open after tests are complete.
  ([#&#8203;6130](`https://github.com/facebook/jest/pull/6130`))
* `[jest-jasmine2]` Add data driven testing based on `jest-each`
  ([#&#8203;6102](`https://github.com/facebook/jest/pull/6102`))
* `[jest-matcher-utils]` Change "suggest to equal" message to be more advisory
  ([#&#8203;6103](`https://github.com/facebook/jest/issues/6103`))
* `[jest-message-util]` Don't ignore messages with `vendor` anymore
  ([#&#8203;6117](`https://github.com/facebook/jest/pull/6117`))
* `[jest-validate]` Get rid of `jest-config` dependency
  ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-validate]` Adds option to inject `deprecationEntries`
  ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-snapshot]` [**BREAKING**] Concatenate name of test, optional snapshot
  name and count ([#&#8203;6015](`https://github.com/facebook/jest/pull/6015`))
* `[jest-runtime]` Allow for transform plugins to skip the definition process
  method if createTransformer method was defined.
  ([#&#8203;5999](`https://github.com/facebook/jest/pull/5999`))
* `[expect]` Add stack trace for async errors
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for timeouts
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for thrown non-`Error`s
  ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-runtime]` Prevent modules from marking themselves as their own parent
  ([#&#8203;5235](`https://github.com/facebook/jest/issues/5235`))
* `[jest-mock]` Add support for auto-mocking generator functions
  ([#&#8203;5983](`https://github.com/facebook/jest/pull/5983`))
* `[expect]` Add support for async matchers
   ([#&#8203;5919](`https://github.com/facebook/jest/pull/5919`))
* `[expect]` Suggest toContainEqual
  ([#&#8203;5948](`https://github.com/facebook/jest/pull/5953`))
* `[jest-config]` Export Jest's default options
  ([#&#8203;5948](`https://github.com/facebook/jest/pull/5948`))
* `[jest-editor-support]` Move `coverage` to `ProjectWorkspace.collectCoverage`
  ([#&#8203;5929](`https://github.com/facebook/jest/pull/5929`))
* `[jest-editor-support]` Add `coverage` option to runner
  ([#&#8203;5836](`https://github.com/facebook/jest/pull/5836`))
* `[jest-haste-map]` Support extracting dynamic `import`s
  ([#&#8203;5883](`https://github.com/facebook/jest/pull/5883`))
* `[expect]` Improve output format for mismatchedArgs in mock/spy calls.
  ([#&#8203;5846](`https://github.com/facebook/jest/pull/5846`))
* `[jest-cli]` Add support for using `--coverage` in combination with watch
  mode, `--onlyChanged`, `--findRelatedTests` and more
  ([#&#8203;5601](`https://github.com/facebook/jest/pull/5601`))
* `[jest-jasmine2]` [**BREAKING**] Adds error throwing and descriptive errors to
  `it`/ `test` for invalid arguments. `[jest-circus]` Adds error throwing and
  descriptive errors to `it`/ `test` for invalid arguments
  ([#&#8203;5558](`https://github.com/facebook/jest/pull/5558`))
* `[jest-matcher-utils]` Add `isNot` option to `matcherHint` function
  ([#&#8203;5512](`https://github.com/facebook/jest/pull/5512`))
* `[jest-config]` Add `<rootDir>` to runtime files not found error report
  ([#&#8203;5693](`https://github.com/facebook/jest/pull/5693`))
* `[expect]` Make toThrow matcher pass only if Error object is returned from
  promises ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add isError to utils
  ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add inverse matchers (`expect.not.arrayContaining`, etc.,
  [#&#8203;5517](`https://github.com/facebook/jest/pull/5517`))
* `[expect]` `expect.extend` now also extends asymmetric matchers
  ([#&#8203;5503](`https://github.com/facebook/jest/pull/5503`))
* `[jest-mock]` Update `spyOnProperty` to support spying on the prototype chain
  ([#&#8203;5753](`https://github.com/facebook/jest/pull/5753`))
* `[jest-mock]` Add tracking of return values in the `mock` property
  ([#&#8203;5752](`https://github.com/facebook/jest/pull/5752`))
* `[jest-mock]` Add tracking of thrown errors in the `mock` property
  ([#&#8203;5764](`https://github.com/facebook/jest/pull/5764`))
* `[expect]`Add nthCalledWith spy matcher
  ([#&#8203;5605](`https://github.com/facebook/jest/pull/5605`))
* `[jest-cli]` Add `isSerial` property that runners can expose to specify that
  they can not run in parallel
  ([#&#8203;5706](`https://github.com/facebook/jest/pull/5706`))
* `[expect]` Add `.toBeCalledTimes` and `toHaveBeenNthCalledWith` aliases
  ([#&#8203;5826](`https://github.com/facebook/jest/pull/5826`))
* `[jest-cli]` Interactive Snapshot Mode improvements
  ([#&#8203;5864](`https://github.com/facebook/jest/pull/5864`))
* `[jest-editor-support]` Add `no-color` option to runner
  ([#&#8203;5909](`https://github.com/facebook/jest/pull/5909`))
* `[jest-jasmine2]` Pretty-print non-Error object errors
  ([#&#8203;5980](`https://github.com/facebook/jest/pull/5980`))
* `[jest-message-util]` Include column in stack frames
  ([#&#8203;5889](`https://github.com/facebook/jest/pull/5889`))
* `[expect]` Introduce toStrictEqual
  ([#&#8203;6032](`https://github.com/facebook/jest/pull/6032`))
* `[expect]` Add return matchers
  ([#&#8203;5879](`https://github.com/facebook/jest/pull/5879`))
* `[jest-cli]` Improve snapshot summaries
  ([#&#8203;6181](`https://github.com/facebook/jest/pull/6181`))
* `[expect]` Include custom mock names in error messages
  ([#&#8203;6199](`https://github.com/facebook/jest/pull/6199`))
* `[jest-diff]` Support returning diff from oneline strings
  ([#&#8203;6221](`https://github.com/facebook/jest/pull/6221`))
* `[expect]` Improve return matchers
  ([#&#8203;6172](`https://github.com/facebook/jest/pull/6172`))
* `[jest-cli]` Overhaul watch plugin hooks names
  ([#&#8203;6249](`https://github.com/facebook/jest/pull/6249`))
* `[jest-mock]` Include tracked call results in serialized mock
  ([#&#8203;6244](`https://github.com/facebook/jest/pull/6244`))
##### Fixes

* `[jest-cli]` Fix stdin encoding to utf8 for watch plugins.
  ([#&#8203;6253](`https://github.com/facebook/jest/issues/6253`))
* `[expect]` Better detection of DOM Nodes for equality
  ([#&#8203;6246](`https://github.com/facebook/jest/pull/6246`))
* `[jest-cli]` Fix misleading action description for F key when in "only failed
  tests" mode. ([#&#8203;6167](`https://github.com/facebook/jest/issues/6167`))
* `[jest-worker]` Stick calls to workers before processing them
  ([#&#8203;6073](`https://github.com/facebook/jest/pull/6073`))
* `[babel-plugin-jest-hoist]` Allow using `console` global variable
  ([#&#8203;6075](`https://github.com/facebook/jest/pull/6075`))
* `[jest-jasmine2]` Always remove node core message from assert stack traces
  ([#&#8203;6055](`https://github.com/facebook/jest/pull/6055`))
* `[expect]` Add stack trace when `expect.assertions` and `expect.hasAssertions`
  causes test failures. ([#&#8203;5997](`https://github.com/facebook/jest/pull/5997`))
* `[jest-runtime]` Throw a more useful error when trying to require modules
  after the test environment is torn down
  ([#&#8203;5888](`https://github.com/facebook/jest/pull/5888`))
* `[jest-mock]` [**BREAKING**] Replace timestamps with `invocationCallOrder`
  ([#&#8203;5867](`https://github.com/facebook/jest/pull/5867`))
* `[jest-jasmine2]` Install `sourcemap-support` into normal runtime to catch
  runtime errors ([#&#8203;5945](`https://github.com/facebook/jest/pull/5945`))
* `[jest-jasmine2]` Added assertion error handling inside `afterAll hook`
  ([#&#8203;5884](`https://github.com/facebook/jest/pull/5884`))
* `[jest-cli]` Remove the notifier actions in case of failure when not in watch
  mode. ([#&#8203;5861](`https://github.com/facebook/jest/pull/5861`))
* `[jest-mock]` Extend .toHaveBeenCalled return message with outcome
  ([#&#8203;5951](`https://github.com/facebook/jest/pull/5951`))
* `[jest-runner]` Assign `process.env.JEST_WORKER_ID="1"` when in runInBand mode
  ([#&#8203;5860](`https://github.com/facebook/jest/pull/5860`))
* `[jest-cli]` Add descriptive error message when trying to use
  `globalSetup`/`globalTeardown` file that doesn't export a function.
  ([#&#8203;5835](`https://github.com/facebook/jest/pull/5835`))
* `[expect]` Do not rely on `instanceof RegExp`, since it will not work for
  RegExps created inside of a different VM
  ([#&#8203;5729](`https://github.com/facebook/jest/pull/5729`))
* `[jest-resolve]` Update node module resolution algorithm to correctly handle
  symlinked paths ([#&#8203;5085](`https://github.com/facebook/jest/pull/5085`))
* `[jest-editor-support]` Update `Settings` to use spawn in shell option
  ([#&#8203;5658](`https://github.com/facebook/jest/pull/5658`))
* `[jest-cli]` Improve the error message when 2 projects resolve to the same
  config ([#&#8203;5674](`https://github.com/facebook/jest/pull/5674`))
* `[jest-runtime]` remove retainLines from coverage instrumentation
  ([#&#8203;5692](`https://github.com/facebook/jest/pull/5692`))
* `[jest-cli]` Fix update snapshot issue when using watchAll
  ([#&#8203;5696](`https://github.com/facebook/jest/pull/5696`))
* `[expect]` Fix rejects.not matcher
  ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[jest-runtime]` Prevent Babel warnings on large files
  ([#&#8203;5702](`https://github.com/facebook/jest/pull/5702`))
* `[jest-mock]` Prevent `mockRejectedValue` from causing unhandled rejection
  ([#&#8203;5720](`https://github.com/facebook/jest/pull/5720`))
* `[pretty-format]` Handle React fragments better
  ([#&#8203;5816](`https://github.com/facebook/jest/pull/5816`))
* `[pretty-format]` Handle formatting of `React.forwardRef` and `Context`
  components ([#&#8203;6093](`https://github.com/facebook/jest/pull/6093`))
* `[jest-cli]` Switch collectCoverageFrom back to a string
  ([#&#8203;5914](`https://github.com/facebook/jest/pull/5914`))
* `[jest-regex-util]` Fix handling regex symbols in tests path on Windows
  ([#&#8203;5941](`https://github.com/facebook/jest/pull/5941`))
* `[jest-util]` Fix handling of NaN/Infinity in mock timer delay
  ([#&#8203;5966](`https://github.com/facebook/jest/pull/5966`))
* `[jest-resolve]` Generalise test for package main entries equivalent to ".".
  ([#&#8203;5968](`https://github.com/facebook/jest/pull/5968`))
* `[jest-config]` Ensure that custom resolvers are used when resolving the
  configuration ([#&#8203;5976](`https://github.com/facebook/jest/pull/5976`))
* `[website]` Fix website docs
  ([#&#8203;5853](`https://github.com/facebook/jest/pull/5853`))
* `[expect]` Fix isEqual Set and Map to compare object values and keys
  regardless of order ([#&#8203;6150](`https://github.com/facebook/jest/pull/6150`))
* `[pretty-format]` [**BREAKING**] Remove undefined props from React elements
  ([#&#8203;6162](`https://github.com/facebook/jest/pull/6162`))
* `[jest-haste-map]` Properly resolve mocked node modules without package.json
  defined ([#&#8203;6232](`https://github.com/facebook/jest/pull/6232`))
##### Chore & Maintenance

* `[jest-runner]` Move sourcemap installation from `jest-jasmine2` to
  `jest-runner` ([#&#8203;6176](`https://github.com/facebook/jest/pull/6176`))
* `[jest-cli]` Use yargs's built-in `version` instead of rolling our own
  ([#&#8203;6215](`https://github.com/facebook/jest/pull/6215`))
* `[docs]` Add explanation on how to mock methods not implemented in JSDOM
* `[jest-jasmine2]` Simplify `Env.execute` and TreeProcessor to setup and clean
  resources for the top suite the same way as for all of the children suites
  ([#&#8203;5885](`https://github.com/facebook/jest/pull/5885`))
* `[babel-jest]` [**BREAKING**] Always return object from transformer
  ([#&#8203;5991](`https://github.com/facebook/jest/pull/5991`))
* `[*]` Run Prettier on compiled output
  ([#&#8203;5858](`https://github.com/facebook/jest/pull/3497`))
* `[jest-cli]` Add fileChange hook for plugins
  ([#&#8203;5708](`https://github.com/facebook/jest/pull/5708`))
* `[docs]` Add docs on using `jest.mock(...)`
  ([#&#8203;5648](`https://github.com/facebook/jest/pull/5648`))
* `[docs]` Mention Jest Puppeteer Preset
  ([#&#8203;5722](`https://github.com/facebook/jest/pull/5722`))
* `[docs]` Add jest-community section to website
  ([#&#8203;5675](`https://github.com/facebook/jest/pull/5675`))
* `[docs]` Add versioned docs for v22.4
  ([##&#8203;5733](https://github.com/facebook/jest/pull/#&#8203;5733))
* `[docs]` Improve Snapshot Testing Guide
  ([#&#8203;5812](`https://github.com/facebook/jest/issues/5812`))
* `[jest-runtime]` [**BREAKING**] Remove `jest.genMockFn` and
  `jest.genMockFunction` ([#&#8203;6173](`https://github.com/facebook/jest/pull/6173`))
* `[jest-message-util]` Avoid adding unnecessary indent to blank lines in stack
  traces ([#&#8203;6211](`https://github.com/facebook/jest/pull/6211`))

---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.com).
calebeby referenced this pull request in Pigmice2733/scouting-frontend May 30, 2018
This Pull Request updates dependency [jest](https://github.com/facebook/jest) from `v22.4.3` to `v23.0.1`



<details>
<summary>Release Notes</summary>

### [`v23.0.1`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2301)
[Compare Source](jestjs/jest@v23.0.0...3a3b4e3)
##### Chore & Maintenance

* `[jest-jasemine2]` Add dependency on jest-each ([#&#8203;6308](`https://github.com/facebook/jest/pull/6308`))
* `[jest-each]` Move jest-each into core Jest ([#&#8203;6278](`https://github.com/facebook/jest/pull/6278`))
* `[examples]` Update typescript example to using ts-jest ([#&#8203;6260](`https://github.com/facebook/jest/pull/6260`))
##### Fixes

* `[pretty-format]` Serialize inverse asymmetric matchers correctly ([#&#8203;6272](`https://github.com/facebook/jest/pull/6272`))

---

### [`v23.0.0`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2300)
[Compare Source](jestjs/jest@2745e3e...v23.0.0)
##### Features

* `[expect]` Expose `getObjectSubset`, `iterableEquality`, and `subsetEquality` ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-snapshot]` Add snapshot property matchers ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-config]` Support jest-preset.js files within Node modules ([#&#8203;6185](`https://github.com/facebook/jest/pull/6185`))
* `[jest-cli]` Add `--detectOpenHandles` flag which enables Jest to potentially track down handles keeping it open after tests are complete. ([#&#8203;6130](`https://github.com/facebook/jest/pull/6130`))
* `[jest-jasmine2]` Add data driven testing based on `jest-each` ([#&#8203;6102](`https://github.com/facebook/jest/pull/6102`))
* `[jest-matcher-utils]` Change "suggest to equal" message to be more advisory ([#&#8203;6103](`https://github.com/facebook/jest/issues/6103`))
* `[jest-message-util]` Don't ignore messages with `vendor` anymore ([#&#8203;6117](`https://github.com/facebook/jest/pull/6117`))
* `[jest-validate]` Get rid of `jest-config` dependency ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-validate]` Adds option to inject `deprecationEntries` ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-snapshot]` [**BREAKING**] Concatenate name of test, optional snapshot name and count ([#&#8203;6015](`https://github.com/facebook/jest/pull/6015`))
* `[jest-runtime]` Allow for transform plugins to skip the definition process method if createTransformer method was defined. ([#&#8203;5999](`https://github.com/facebook/jest/pull/5999`))
* `[expect]` Add stack trace for async errors ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for timeouts ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for thrown non-`Error`s ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-runtime]` Prevent modules from marking themselves as their own parent ([#&#8203;5235](`https://github.com/facebook/jest/issues/5235`))
* `[jest-mock]` Add support for auto-mocking generator functions ([#&#8203;5983](`https://github.com/facebook/jest/pull/5983`))
* `[expect]` Add support for async matchers  ([#&#8203;5919](`https://github.com/facebook/jest/pull/5919`))
* `[expect]` Suggest toContainEqual ([#&#8203;5948](`https://github.com/facebook/jest/pull/5953`))
* `[jest-config]` Export Jest's default options ([#&#8203;5948](`https://github.com/facebook/jest/pull/5948`))
* `[jest-editor-support]` Move `coverage` to `ProjectWorkspace.collectCoverage` ([#&#8203;5929](`https://github.com/facebook/jest/pull/5929`))
* `[jest-editor-support]` Add `coverage` option to runner ([#&#8203;5836](`https://github.com/facebook/jest/pull/5836`))
* `[jest-haste-map]` Support extracting dynamic `import`s ([#&#8203;5883](`https://github.com/facebook/jest/pull/5883`))
* `[expect]` Improve output format for mismatchedArgs in mock/spy calls. ([#&#8203;5846](`https://github.com/facebook/jest/pull/5846`))
* `[jest-cli]` Add support for using `--coverage` in combination with watch mode, `--onlyChanged`, `--findRelatedTests` and more ([#&#8203;5601](`https://github.com/facebook/jest/pull/5601`))
* `[jest-jasmine2]` [**BREAKING**] Adds error throwing and descriptive errors to `it`/ `test` for invalid arguments. `[jest-circus]` Adds error throwing and descriptive errors to `it`/ `test` for invalid arguments ([#&#8203;5558](`https://github.com/facebook/jest/pull/5558`))
* `[jest-matcher-utils]` Add `isNot` option to `matcherHint` function ([#&#8203;5512](`https://github.com/facebook/jest/pull/5512`))
* `[jest-config]` Add `<rootDir>` to runtime files not found error report ([#&#8203;5693](`https://github.com/facebook/jest/pull/5693`))
* `[expect]` Make toThrow matcher pass only if Error object is returned from promises ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add isError to utils ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add inverse matchers (`expect.not.arrayContaining`, etc., [#&#8203;5517](`https://github.com/facebook/jest/pull/5517`))
* `[expect]` `expect.extend` now also extends asymmetric matchers ([#&#8203;5503](`https://github.com/facebook/jest/pull/5503`))
* `[jest-mock]` Update `spyOnProperty` to support spying on the prototype chain ([#&#8203;5753](`https://github.com/facebook/jest/pull/5753`))
* `[jest-mock]` Add tracking of return values in the `mock` property ([#&#8203;5752](`https://github.com/facebook/jest/pull/5752`))
* `[jest-mock]` Add tracking of thrown errors in the `mock` property ([#&#8203;5764](`https://github.com/facebook/jest/pull/5764`))
* `[expect]`Add nthCalledWith spy matcher ([#&#8203;5605](`https://github.com/facebook/jest/pull/5605`))
* `[jest-cli]` Add `isSerial` property that runners can expose to specify that they can not run in parallel ([#&#8203;5706](`https://github.com/facebook/jest/pull/5706`))
* `[expect]` Add `.toBeCalledTimes` and `toHaveBeenNthCalledWith` aliases ([#&#8203;5826](`https://github.com/facebook/jest/pull/5826`))
* `[jest-cli]` Interactive Snapshot Mode improvements ([#&#8203;5864](`https://github.com/facebook/jest/pull/5864`))
* `[jest-editor-support]` Add `no-color` option to runner ([#&#8203;5909](`https://github.com/facebook/jest/pull/5909`))
* `[jest-jasmine2]` Pretty-print non-Error object errors ([#&#8203;5980](`https://github.com/facebook/jest/pull/5980`))
* `[jest-message-util]` Include column in stack frames ([#&#8203;5889](`https://github.com/facebook/jest/pull/5889`))
* `[expect]` Introduce toStrictEqual ([#&#8203;6032](`https://github.com/facebook/jest/pull/6032`))
* `[expect]` Add return matchers ([#&#8203;5879](`https://github.com/facebook/jest/pull/5879`))
* `[jest-cli]` Improve snapshot summaries ([#&#8203;6181](`https://github.com/facebook/jest/pull/6181`))
* `[expect]` Include custom mock names in error messages ([#&#8203;6199](`https://github.com/facebook/jest/pull/6199`))
* `[jest-diff]` Support returning diff from oneline strings ([#&#8203;6221](`https://github.com/facebook/jest/pull/6221`))
* `[expect]` Improve return matchers ([#&#8203;6172](`https://github.com/facebook/jest/pull/6172`))
* `[jest-cli]` Overhaul watch plugin hooks names ([#&#8203;6249](`https://github.com/facebook/jest/pull/6249`))
* `[jest-mock]` Include tracked call results in serialized mock ([#&#8203;6244](`https://github.com/facebook/jest/pull/6244`))
##### Fixes

* `[jest-cli]` Fix stdin encoding to utf8 for watch plugins. ([#&#8203;6253](`https://github.com/facebook/jest/issues/6253`))
* `[expect]` Better detection of DOM Nodes for equality ([#&#8203;6246](`https://github.com/facebook/jest/pull/6246`))
* `[jest-cli]` Fix misleading action description for F key when in "only failed tests" mode. ([#&#8203;6167](`https://github.com/facebook/jest/issues/6167`))
* `[jest-worker]` Stick calls to workers before processing them ([#&#8203;6073](`https://github.com/facebook/jest/pull/6073`))
* `[babel-plugin-jest-hoist]` Allow using `console` global variable ([#&#8203;6075](`https://github.com/facebook/jest/pull/6075`))
* `[jest-jasmine2]` Always remove node core message from assert stack traces ([#&#8203;6055](`https://github.com/facebook/jest/pull/6055`))
* `[expect]` Add stack trace when `expect.assertions` and `expect.hasAssertions` causes test failures. ([#&#8203;5997](`https://github.com/facebook/jest/pull/5997`))
* `[jest-runtime]` Throw a more useful error when trying to require modules after the test environment is torn down ([#&#8203;5888](`https://github.com/facebook/jest/pull/5888`))
* `[jest-mock]` [**BREAKING**] Replace timestamps with `invocationCallOrder` ([#&#8203;5867](`https://github.com/facebook/jest/pull/5867`))
* `[jest-jasmine2]` Install `sourcemap-support` into normal runtime to catch runtime errors ([#&#8203;5945](`https://github.com/facebook/jest/pull/5945`))
* `[jest-jasmine2]` Added assertion error handling inside `afterAll hook` ([#&#8203;5884](`https://github.com/facebook/jest/pull/5884`))
* `[jest-cli]` Remove the notifier actions in case of failure when not in watch mode. ([#&#8203;5861](`https://github.com/facebook/jest/pull/5861`))
* `[jest-mock]` Extend .toHaveBeenCalled return message with outcome ([#&#8203;5951](`https://github.com/facebook/jest/pull/5951`))
* `[jest-runner]` Assign `process.env.JEST_WORKER_ID="1"` when in runInBand mode ([#&#8203;5860](`https://github.com/facebook/jest/pull/5860`))
* `[jest-cli]` Add descriptive error message when trying to use `globalSetup`/`globalTeardown` file that doesn't export a function. ([#&#8203;5835](`https://github.com/facebook/jest/pull/5835`))
* `[expect]` Do not rely on `instanceof RegExp`, since it will not work for RegExps created inside of a different VM ([#&#8203;5729](`https://github.com/facebook/jest/pull/5729`))
* `[jest-resolve]` Update node module resolution algorithm to correctly handle symlinked paths ([#&#8203;5085](`https://github.com/facebook/jest/pull/5085`))
* `[jest-editor-support]` Update `Settings` to use spawn in shell option ([#&#8203;5658](`https://github.com/facebook/jest/pull/5658`))
* `[jest-cli]` Improve the error message when 2 projects resolve to the same config ([#&#8203;5674](`https://github.com/facebook/jest/pull/5674`))
* `[jest-runtime]` remove retainLines from coverage instrumentation ([#&#8203;5692](`https://github.com/facebook/jest/pull/5692`))
* `[jest-cli]` Fix update snapshot issue when using watchAll ([#&#8203;5696](`https://github.com/facebook/jest/pull/5696`))
* `[expect]` Fix rejects.not matcher ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[jest-runtime]` Prevent Babel warnings on large files ([#&#8203;5702](`https://github.com/facebook/jest/pull/5702`))
* `[jest-mock]` Prevent `mockRejectedValue` from causing unhandled rejection ([#&#8203;5720](`https://github.com/facebook/jest/pull/5720`))
* `[pretty-format]` Handle React fragments better ([#&#8203;5816](`https://github.com/facebook/jest/pull/5816`))
* `[pretty-format]` Handle formatting of `React.forwardRef` and `Context` components ([#&#8203;6093](`https://github.com/facebook/jest/pull/6093`))
* `[jest-cli]` Switch collectCoverageFrom back to a string ([#&#8203;5914](`https://github.com/facebook/jest/pull/5914`))
* `[jest-regex-util]` Fix handling regex symbols in tests path on Windows ([#&#8203;5941](`https://github.com/facebook/jest/pull/5941`))
* `[jest-util]` Fix handling of NaN/Infinity in mock timer delay ([#&#8203;5966](`https://github.com/facebook/jest/pull/5966`))
* `[jest-resolve]` Generalise test for package main entries equivalent to ".". ([#&#8203;5968](`https://github.com/facebook/jest/pull/5968`))
* `[jest-config]` Ensure that custom resolvers are used when resolving the configuration ([#&#8203;5976](`https://github.com/facebook/jest/pull/5976`))
* `[website]` Fix website docs ([#&#8203;5853](`https://github.com/facebook/jest/pull/5853`))
* `[expect]` Fix isEqual Set and Map to compare object values and keys regardless of order ([#&#8203;6150](`https://github.com/facebook/jest/pull/6150`))
* `[pretty-format]` [**BREAKING**] Remove undefined props from React elements ([#&#8203;6162](`https://github.com/facebook/jest/pull/6162`))
* `[jest-haste-map]` Properly resolve mocked node modules without package.json defined ([#&#8203;6232](`https://github.com/facebook/jest/pull/6232`))
##### Chore & Maintenance

* `[jest-runner]` Move sourcemap installation from `jest-jasmine2` to `jest-runner` ([#&#8203;6176](`https://github.com/facebook/jest/pull/6176`))
* `[jest-cli]` Use yargs's built-in `version` instead of rolling our own ([#&#8203;6215](`https://github.com/facebook/jest/pull/6215`))
* `[docs]` Add explanation on how to mock methods not implemented in JSDOM
* `[jest-jasmine2]` Simplify `Env.execute` and TreeProcessor to setup and clean resources for the top suite the same way as for all of the children suites ([#&#8203;5885](`https://github.com/facebook/jest/pull/5885`))
* `[babel-jest]` [**BREAKING**] Always return object from transformer ([#&#8203;5991](`https://github.com/facebook/jest/pull/5991`))
* `[*]` Run Prettier on compiled output ([#&#8203;5858](`https://github.com/facebook/jest/pull/3497`))
* `[jest-cli]` Add fileChange hook for plugins ([#&#8203;5708](`https://github.com/facebook/jest/pull/5708`))
* `[docs]` Add docs on using `jest.mock(...)` ([#&#8203;5648](`https://github.com/facebook/jest/pull/5648`))
* `[docs]` Mention Jest Puppeteer Preset ([#&#8203;5722](`https://github.com/facebook/jest/pull/5722`))
* `[docs]` Add jest-community section to website ([#&#8203;5675](`https://github.com/facebook/jest/pull/5675`))
* `[docs]` Add versioned docs for v22.4 ([#&#8203;5733](`https://github.com/facebook/jest/pull/5733`))
* `[docs]` Improve Snapshot Testing Guide ([#&#8203;5812](`https://github.com/facebook/jest/issues/5812`))
* `[jest-runtime]` [**BREAKING**] Remove `jest.genMockFn` and `jest.genMockFunction` ([#&#8203;6173](`https://github.com/facebook/jest/pull/6173`))
* `[jest-message-util]` Avoid adding unnecessary indent to blank lines in stack traces ([#&#8203;6211](`https://github.com/facebook/jest/pull/6211`))

---

### [`v22.4.4`](jestjs/jest@6851d8b...v22.4.4)
[Compare Source](jestjs/jest@6851d8b...v22.4.4)


---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.com).
@github-actions
Copy link

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.
Please note this issue tracker is not a help forum. We recommend using StackOverflow or our discord channel for questions.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 12, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants