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

fix(jest-circus) correct concurrent event ordering #15381

Open
wants to merge 13 commits into
base: main
Choose a base branch
from

Conversation

madcapnmckay
Copy link

@madcapnmckay madcapnmckay commented Nov 15, 2024

Summary

Note this is a re-raise of an old PR that I previously let go stale.

I'm unsure if this is a major, minor, or patch change. It does not change the API, but it changes the order of events emitted from jest-circus. Please advise.

This fixes the issue documented here

When using test.concurrent events such as test_start, test_started, and test_fn_start are dispatched after the body of the test is executed. This is due to the _runTest function not being executed as part of the parallel execution runner; instead, it was executed synchronously like non-concurrent tests.

The solution was to use _runTest within startTestsConcurrently() and then wait for that process to complete instead of replacing the test.fn as was being done before.

I also added a bunch of e2e tests for concurrent, this change most likely closes some other issues relating to before/afterAll.

Test plan

  • Checkout commit 953bbed700
  • Run yarn test packages/jest-circus/src/__tests__/baseTest.test.ts to observe the broken snapshot content for the concurrent test.
hello one <-- test running before `test_start` has fired.
hello two
hello three
run_describe_start: describe
test_start: one
test_started: one
test_fn_start: one
test_fn_failure: one
  • Check out HEAD and rerun the test. Note that the output has been reordered to match the expectation that the circus actions occur before and after the test execution.
  • Execute the new concurrent e2e tests with yarn jest e2e/__tests__/circusConcurrent.test.ts and yarn jest e2e/__tests__/testRetries.test.ts

Note: at the time this is being raised main does not pass yarn test, I have confirmed that the same tests are failing before and after my change.

Copy link

netlify bot commented Nov 15, 2024

Deploy Preview for jestjs ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 0578d54
🔍 Latest deploy log https://app.netlify.com/sites/jestjs/deploys/6737ed0775ef970008e581fe
😎 Deploy Preview https://deploy-preview-15381--jestjs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@madcapnmckay madcapnmckay changed the title Jest circus concurrent event ordering2 fix(jest-circus) correct concurrent event ordering Nov 15, 2024
@madcapnmckay
Copy link
Author

@SimenB - the failures on the checks seem to be affecting other PRs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant