نسخه ۵ Vitest با آپدیتهای سرعتی منتشر شد
خلاصهٔ کاملتر
به گفتهٔ تیم Vitest، این نسخه عمدتاً حول سرعت ساخته شده. برای سنجش واقعی، از یه پروژهٔ کوچیک ۵ فایلی تا مونولیتی با ۱۲۸۰ ماژول رو زیر Vitest 4.1 و Vitest 5 اجرا کردهن. توی پروژههای بزرگ و ایزولهشده زمان اجرا تا ۵۳ درصد کم شده و توی Browser Mode هم حدود ۱۶ تا ۱۸ درصد سریعتر شده. دلیلش چندتا تغییره: سرور Vite بین پروژههای داخل projects مشترک شده، کش ماژولهای ترنسفورمشده روی دیسک پایدار شده، و pool های vm کد کامپایلشده رو بین contextها دوباره استفاده میکنن.
یکی از فیچرهای تازهٔ این نسخه Trace View هست که برای Browser Mode اضافه شده. وقتی فعالش کنی، Vitest هر تعامل و assertion رو مثل یه اسنپشات از DOM ضبط میکنه و بعد از تموم شدن تست میشه قدمبهقدم برگشت و دید دقیقا چی شده؛ حتی المنتی که باهاش تعامل شده هم هایلایت میشه. این ابزار توی UI مرورگر، Vitest UI و گزارش HTML هم در دسترسه.
چندتا تغییر دیگه هم اضافه شده: پروژههای inline حالا بهصورت پیشفرض تنظیمات ریشه (مثل پلاگینها) رو ارثبری میکنن و لازم نیست دیگه دستی extends: true بنویسی. API جدید vi.when هم رفتار متفاوت یه موک رو بر اساس آرگومانهای ورودی مشخص میکنه، بهجای اینکه دستی توی mockImplementation شرط بذاری:
vi.when(findById)
.calledWith(1)
.thenResolve({ id: 1, name: 'Ella' })
.calledWith(2)
.thenResolve({ id: 2, name: 'Gracie' })بخش بنچمارک هم بازنویسی شده؛ bench دیگه یه import سطح بالا نیست، بلکه یه fixture داخل test() هست که به fixtureها و retry هم دسترسی داره. assertion های async مثل resolves و rejects هم اگه await نشن، حالا تست رو fail میکنن؛ قبلا فقط یه warning چاپ میشد ولی تست پاس میشد.
نکات کلیدی:
- Vitest 5.0 روی پروژههای بزرگ و ایزولهشده تا ۵۳ درصد سریعتره
- Trace View جدید برای دیباگ قدمبهقدم تستهای Browser Mode
- پروژههای inline حالا تنظیمات ریشه رو خودکار ارثبری میکنن
- API تازهٔ vi.when برای موککردن بر اساس آرگومان ورودی
- assertion های async بدون await حالا تست رو fail میکنن، نه فقط warning




