はじめに
React + TypeScriptのプロジェクトでJestを実行したところ、テストが終わらない、終わっても十数分〜二十分以上かかる、という状態になりました。
原因を追った結果、プロジェクトを ~/Desktop に置いていて、iCloud Driveの同期対象になっていたことでした。
環境
- macOS
- Node.js
- Jest / React Testing Library
- プロジェクトの場所: ~/Desktop/project
症状
npm run test を実行すると、次のように表示されたまま進みませんでした。
RUNS src/__tests__/AddRecordModal.spec.tsx
RUNS src/__tests__/AppComponent.spec.tsx
RUNS src/__tests__/add.spec.ts
Test Suites: 0 of 3 total
Tests: 0 total
Time: 95 s
試したが原因ではなかったこと
- dotenv を疑い、jest.setup.ts から外す
- Node.jsのバージョン確認(v22)
原因: DesktopがiCloudと同期されていた
プロジェクトの場所を確認すると /Users/owner1/Desktop/... でした。
Finderでプロジェクトを移動しようとしたとき、Desktopのフォルダに雲のアイコン(☁️)が付いていて、「デスクトップと書類フォルダ」がiCloud Driveで同期されていることに気づきました。
同期の対象になると、読み込む処理が、極端に遅くなります。
解決方法: 同期されない場所へ移動する
同期をオフにすると他のファイルにも影響するので、プロジェクトをデスクトップではなく別のフォルダに移動しました。
結果
無事に数秒でテストが通るようになりました。
まとめ
- Desktop、書類フォルダ、iCloud Drive配下は、同期の対象になることがある
- 開発用プロジェクトは ~/projects のような同期対象外の場所に置く
