-
-
Notifications
You must be signed in to change notification settings - Fork 26.9k
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
After upgrade to CRA 2.0, tests run very slow. #5304
Comments
Did you use the Node test environment previously? We switched the default to JSDOM which has some overhead. |
I used default settings |
Maybe it would help a bit. Some time ago, I setup next.js project with Jest 23 and I had the same issue. I solved problem by downgrade Jest to 22.x.x. |
cc @rogeliog is there a reason to expect slowdown in 23? |
We've had reports of slowdown on windows, see e.g. jestjs/jest#6783 We haven't been able to pin it down, though, unfortunately... |
IIRC this was slowing down watch mode a bit: jestjs/jest#6647 |
@SimenB do you know if the issue is only affecting windows? |
I've had cases where I saw a big slow down on mac and not on watch mode. Two snapshot tests took over 30 seconds to run (and time varies on different runs). Will test it a bit more today and see if i can file something. |
I set up a repo locally where I run 100 test suites to benchmark jest@21, jest@22 and jest@23. It seems that... All tests suites have this exact code. describe('Simple assertions', () => {
it('has a simple assertion', () => {
expect(1).toBe(1);
});
it('using matchers', () => {
expect({
username: 'foo',
password: '123456'
}).toMatchObject(expect.objectContaining({
username: 'foo'
}));
});
}) And I am running them all in non-watch mode. Jest@23 is running slower in my benchmark. After doing a lot of git bisect and I see a big performance hit introduced in this PR jestjs/jest#5932... Checking out a version right before that PR performs way better, any thoughts @cpojer? |
Hmmm, might be related to jestjs/jest#6694 Maybe we should look into caching module lookups? |
By "related", you mean that jestjs/jest#5932 might be the part of the root cause of jestjs/jest#6694? |
Kinda. My point was that resolution is probably slow as we do it for every single modules in every single test. So anything adding work to the resolution by definition is super-hot code, and thus suspectible to performance regressions. Especially FS stuff as that's notoriously slow on Windows |
@rogeliog - yes I tried do that. Problem still occurs :( |
Not only Windows. Test also run very slow inside node container, example:
|
I've been investigating the issue and created jestjs/jest#7110, but I don't think that is the specific reason for CRA... I'll keep investigating it. |
@someden are you also noticing long startup times in a node container? I'm in the process of upgrading to Babel 7 and I'm now running across this. Outside the container tests are fast (<1s a piece), inside the suite takes 20-30s to start, and then each test takes 15-20s. |
@mcmillion Yep |
Fresh create-react-app (2.1.1).
So while the test actually seems to run pretty fast (41ms), the setup takes 6 seconds. Re-running doesn't make it faster. Windows 10 x64, I7 4690K, SSD... |
Confirmed, jest is running ~18 seconds with --coverage as opposed to ~28 seconds without... for 60 odd tests. Why so slow? And ~12 seconds with CI=true ... |
Could someone check if the issue still persists with Jest 24, shipped with CRA@3 |
Hey, have just tested this now and yes, there is a huge improvement: w 3.0.0 So the bump to 3.0.0 seems to have fixed this issue for windows(windows 10, w node 11.9.0) |
That's awesome @marius-ionescu! For everyone else: closing this as improved on 3.0.0, but do still post if having similar issues and we can re-open this one. |
A bunch of performance improvements landed in 24.6.0, happy to see it translates to real gains! |
Thanks SimenB |
Is this a bug report?
I think so.
After upgrade to CRA 2.0 Jest tests run much slower than before.
I think it could be made by Jest 23
Did you try recovering your dependencies?
yes, but problem still exists
Which terms did you search for in User Guide?
Running Tests
Environment
Environment:
OS: Windows 10
Node: 8.11.2
Yarn: 1.10.1
npm: 6.4.1
Watchman: Not Found
Xcode: N/A
Android Studio: Not Found
Packages: (wanted => installed)
react: ^16.5.2 => 16.5.2
react-dom: ^16.5.2 => 16.5.2
react-scripts: 2.0.3 => 2.0.3
Steps to Reproduce
Tests in previous version reloaded less than 1s. After upgrade to CRA 2.0 tests reload in about 3-4sec. Problec occurs even if I create new empty project
Expected Behavior
It should be faster :(
Actual Behavior
Reproducible Demo
(Paste the link to an example project and exact instructions to reproduce the issue.)
The text was updated successfully, but these errors were encountered: