jest-community / vscode-jest

The optimal flow for Jest based testing in VS Code
MIT License
2.84k stars 294 forks source link

[BUG] VSCode freezes on file change in large repo #1196

Open christianvuerings opened 1 week ago

christianvuerings commented 1 week ago

Describe the bug

VSCode freezes when making a file change (create / rename / delete) in a repo with lots of tests.

To Reproduce Steps to reproduce the behavior:

  1. Clone repo with many test files: git clone https://github.com/christianvuerings/vscode-jest-large-repo.git
  2. Open VSCode with that repo: cd vscode-jest-large-repo; code .
  3. Run all tests in test explorer (running just 1 test also repros the issue) Image
  4. After tests finish to run, rename a non-test file src/main.js to src/main_renamed.js: mv src/main.js src/main_renamed.js

Expected behavior VSCode doesn't freeze

Actual behavior VSCode freezes for 5-10 seconds

Screenshots If applicable, add screenshots to help explain your problem.

First part: shows freezing issue with 2 separate renames. Second part: renaming works smoothly without the VSCode Jest extension

https://github.com/user-attachments/assets/12033b73-72e2-4a4f-9754-7ac703b23b2c

Environment:

Prerequisite

Additional context Add any other context about the problem here.

When debugging the root cause seems to be updateTestFileList: https://github.com/jest-community/vscode-jest/blob/fae16e86446379f907079dab9129041869d1c585/src/JestExt/core.ts#L744-L765

Which gets called on every file create, delete or rename https://github.com/jest-community/vscode-jest/blob/fae16e86446379f907079dab9129041869d1c585/src/JestExt/core.ts#L767-L775

If we comment out the contents of updateTestFileList everything works smoothly