jestjs / jest

Delightful JavaScript Testing.
https://jestjs.io
MIT License
44.21k stars 6.46k forks source link

[Bug]: workerThreads break --watch-all when function does not meet expected. #14423

Open roffelund opened 1 year ago

roffelund commented 1 year ago

Version

29.6.2

Steps to reproduce

  1. Clone my repo at: https://github.com/roffelund/jest-function-expect-bug
  2. yarn
  3. yarn test test.test.js --watch-all

Expected behavior

Screenshot 2023-08-17 at 10 36 09

I expected the test to show that the expected and received do not match.

Actual behavior

Screenshot 2023-08-17 at 10 35 19

Test stops running with exception

Additional context

This only happens when running with workers. Turning off workers expected behaviour works fine.

Environment

System:
    OS: macOS 13.4
    CPU: (10) arm64 Apple M1 Pro
  Binaries:
    Node: 18.17.0 - /opt/homebrew/opt/node@18/bin/node
    Yarn: 1.22.19 - /opt/homebrew/bin/yarn
    npm: 9.6.7 - /opt/homebrew/opt/node@18/bin/npm
  npmPackages:
    jest: 29.6.2 => 29.6.2
mrazauskas commented 1 year ago

Thanks for the reproduction! I saw this happening, but didn’t had time to figure out what was the exact cause. Huge objects were around, so it was difficult to reason about.

Seems like serialization fails somewhere in the threads worker, because all is smooth with workerThreads: false.

mrazauskas commented 1 year ago

By the way, could you mention in the title that the issue is specifically related with workerThreads, not just workers in general.

roffelund commented 1 year ago

Thanks for the reproduction! I saw this happening, but didn’t had time to figure out what was the exact cause. Huge objects were around, so it was difficult to reason about.

Seems like serialization fails somewhere in the threads worker, because all is smooth with workerThreads: false.

Took some debugging to narrow it down. As you say workerThreads: false all is smooth sailing.

dj-stormtrooper commented 1 year ago

Hey, I tried to fix this issue here, would appreciate any feedback/suggestions https://github.com/jestjs/jest/pull/14436/