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

it statements dramatically increase test runtime #56

Closed
feifanzhou opened this issue May 29, 2014 · 9 comments
Closed

it statements dramatically increase test runtime #56

feifanzhou opened this issue May 29, 2014 · 9 comments

Comments

@feifanzhou
Copy link

Every it statement, even if the corresponding function is blank, adds roughly 0.2 – 0.5s to the runtime of npm test. Observed by commenting statements in and out.

OS X 10.9.3
npm -v 1.4.9
node -v 0.10.28
Tests are in Coffeescript, set up as described in the tutorial

@jeffmo
Copy link
Contributor

jeffmo commented Jun 1, 2014

I'm trying to find a way to repro this, but it's pretty tricky since I don't have access to a sizeable coffeescript codebase...

When I set up a very basic scenario it doesn't seem to cause any observable speed issues when I add another it spec: https://gist.github.com/jeffmo/f9db99b6c197327a30a7

Here's 3 runs of the test with 2 specs: https://gist.github.com/jeffmo/37220916b440d20a465a
Here's 3 runs of the test with 1 spec: https://gist.github.com/jeffmo/2e80968193c89a8a9e97

It would be good if we could narrow this down to where the time is spent. Any chance you could either point me somewhere where I might be able to repro this or try digging in to see if you could narrow it down?

@feifanzhou
Copy link
Author

I'm getting this issue with my repo here:
https://github.com/feifanzhou/Tunetap-demo/

Test file in /app/assets/javascripts/harness/tests/fan-root-test.coffee

package.json and node_modules in project root

@jeffmo
Copy link
Contributor

jeffmo commented Jun 1, 2014

Ok, after a little investigation it seems the bulk of the time for each it spec is spent in your beforeEach. And, in there, it seems the majority of the time is spent running require('react/addons)

I'm still digging in to what's taking so much time in there, but the gist of the problem here seems to be that every it() has to re-require('react/addons')

@jeffmo
Copy link
Contributor

jeffmo commented Jun 1, 2014

I tried moving the require() out into the top-level (so it doesn't have to run each time), but that seems to break stuff (I'm guessing there's some state in the module that needs to be reset between tests somehow)

@jeffmo
Copy link
Contributor

jeffmo commented Jun 1, 2014

The easiest solution here would be to identify what the shared state is and just find a way to reset it in the beforeEach (rather than re-requiring the whole module).

It seems, however, that if you isolate the react/addons module (even just in raw node...no jest or anything) it takes about 130-150ms just to require() (!?!?) -- so maybe there's something someone can do over on the React side of things to make that module faster

@jeffmo
Copy link
Contributor

jeffmo commented Jun 1, 2014

Going to go ahead and close this issue out because I'm not sure there's anything to be done from the Jest side of things

@jeffmo jeffmo closed this as completed Jun 1, 2014
@sophiebits
Copy link
Contributor

(Possibly related to facebook/react#812, but I'm guessing a different issue.)

@feifanzhou
Copy link
Author

Hmm alright, thanks for check it out Jeff. Out of curiosity, what do you use to check the runtime of the scripts?

@github-actions
Copy link

This issue 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 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants