Vitest не готов заменить Jest (и, возможно, никогда не будет)

Недавно у меня была возможность попытаться улучшить время сборки некоторых клиентских программ. Изучив заявления о том, почему Vitest превосходит Jest (текущий тест-раннер клиентского программного обеспечения), я был убежден, что переход на Vitest будет правильным шагом. Итак, вот что произошло…

Размер программного обеспечения

Программное обеспечение состоит из нескольких пакетов ESM в монорепозитории RushJS. Код написан на TypeScript. Самый важный пакет содержит веб-сайт React/NextJS, который зависит от пакета веб-компонентов (React) и некоторых небольших общих библиотек.

Потребовалось примерно 10 часов, чтобы преобразовать код, достаточный для полного преобразования веб-пакета из Jest в Vitest.

Полученные результаты

Время тестирования с покрытием в Jest: ~58 сек.
Время тестирования с покрытием в Vitest: ~92 сек.

Цифра Vitest была самым быстрым/лучшим числом, которое я смог придумать после перебора всех комбинаций Vitest config, которые могли повлиять на результаты. Именно тогда я начал исследовать, был ли я единственным человеком в мире, который видел такие числа. Оказывается, я не такой.

Известная проблема

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

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

К счастью, я не единственный человек, обнаруживший, что Vitest не быстр.

Послушайте, я понимаю, что писать программное обеспечение бесплатно, а потом получать жалобы на производительность упомянутого программного обеспечения раздражает. А некоторые проблемы трудно исправить. Пользователи не должны ожидать, что программное обеспечение будет работать идеально.

Однако производители программного обеспечения НЕ должны делать ложные заявления (например, это быстро) без реальных тестов, подтверждающих эти утверждения.

Краткое содержание

Используйте Vitest на свой страх и риск. Мне потребовалось 10 часов, чтобы выяснить это. Надеемся, что эта трехминутная статья сэкономит вам 10 часов, чтобы обнаружить, что Vitest работает медленно в реальных случаях использования.

Конечно, мне бы хотелось, чтобы эта статья стала историей успеха Vitest. Но, к сожалению для меня и команды Vitest, это статья с предупреждением о продукте. Если ситуация изменится, моя ветка git по-прежнему доступна для повторного тестирования любой новой версии Vitest, которая решает эти проблемы с производительностью.