Почему мои тесты AngularJS, Karma/Jasmine работают так медленно?

У меня есть несколько простых модульных тестов karma/jasmine, которые работают против приложения angularjs. Я использую последнюю версию Chrome и запускаю свои тесты из среды WebStorm.

Иногда набор тестов работает очень быстро (0,24 секунды)

Иногда точно такой же набор тестов против одного и того же кода работает очень медленно (120 секунд)

Я пробовал каждое здравое решение. Я просмотрел веб-страницы, чтобы попытаться выяснить, что я делаю неправильно.

Почему мои тесты выполняются так медленно?

Ответ 1

Ответ оказывается очень простым.

Я использую Chrome для запуска сервера кармы. Когда вы впервые запускаете сервер кармы, экземпляр Chrome запускается как максимально развернутое окно. Поэтому, естественно, вы минимизируете это, чтобы вы могли проверить, что ваши тесты запущены.

Проблема заключается в том, что Chrome хранит любые минимизированные или вторичные вкладки (переключаемые вкладки) циклов ЦП.

Поэтому, если вы минимизируете экземпляр браузера, на котором запущен сервер кармы, или просто переключаетесь на другую вкладку, тогда сервер кармы сильно голодает от процессора, и тесты требуют много времени.

Решение состоит в том, чтобы сохранить вкладку кармы активным. Окно браузера можно скрывать за другими окнами, но вкладка кармы должна быть выбранной вкладкой, и браузер не должен быть сведен к минимуму.

Следуя этим простым правилам, вы всегда будете работать на полной скорости.

Ответ 2

Биофрактал ответил на свой вопрос, и вы могли это сделать. Вы также можете настроить свои тесты для запуска в PhantomJS или Chrome Headless, что в основном позволяет тестировать модульные тесты только в вашей командной строке, тем самым устраняя влияние на фактические браузеры.