Angularjsアプリに対して実行するいくつかの単純なカルマ/ジャスミンユニットテストがあります。最新バージョンのChrome=を使用し、WebStorm IDE内からテストを実行します。
時々テストスイートは非常に速く実行されます(0.24秒)
まったく同じコードに対するまったく同じテストスイートの実行が非常に遅い(120秒)
私はすべての常識的な修正を試みました。私は自分が間違っていることを試し、発見するためにWebを精査しました。
テストの実行速度が遅いのはなぜですか?
答えは非常に簡単であることがわかりました。
私はChromeを使用してKarmaサーバーを実行しています。最初にKarmaサーバーを起動すると、Chromeのインスタンスが最大化されたウィンドウとして開始されます。これにより、実行中のテストを確認できます。
問題は、Chrome= CPUサイクルの最小化またはセカンダリタブ(切り替えられたタブ)が不足することです。
したがって、カルマサーバーを実行しているブラウザーインスタンスを最小化するか、単に別のタブに切り替えると、カルマサーバーのCPUが大幅に不足し、テストの完了に長い時間がかかります。
解決策は、カルマタブをアクティブに保つことです。ブラウザーウィンドウは他のウィンドウの背後に隠すことができますが、カルマタブ選択したタブでなければなりませんおよびブラウザー最小化してはいけませんです。
これらの単純なルールに従うと、テストが常にフルスピードで実行されるようになります。
バイオフラクタルは彼自身の質問に答えました、そしてあなたはそれをすることができました。 PhantomJSまたはChrome Headlessで実行するようにテストを設定することもできます。これにより、基本的にユニットテストをコマンドラインでのみ実行できるため、実際のブラウザーの影響を排除できます。