Vitest 4.1: Gắn thẻ kiểm tra, thực thi Node.js gốc và hỗ trợ AI Agent
Vitest 4.1 mang đến các tính năng mới như gắn thẻ kiểm tra (test tags) để lọc và cấu hình, chế độ chạy thử nghiệm trực tiếp trên Node.js để tăng tốc độ, và trình báo cáo dành cho AI coding agents. Phiên bản này cũng hỗ trợ đầy đủ Vite 8 và tiếp tục khẳng định hiệu suất vượt trội so với Jest.

Vitest, khung kiểm thử (testing framework) gốc dành cho Vite được duy trì bởi VoidZero, đã phát hành phiên bản 4.1. Bản cập nhật này mang đến một loạt tính năng mới và cải tiến công cụ nhằm giúp việc kiểm thử JavaScript trở nên có tổ chức hơn và gần với môi trường sản xuất thực tế hơn.
Vitest 4.1 giới thiệu một số tính năng đáng chú ý, bao gồm test tags (thẻ kiểm tra) để lọc và cấu hình các nhóm kiểm thử, chế độ thử nghiệm cho phép bỏ qua trình chạy module của Vite hoàn toàn, các lifecycle hooks mới, cải thiện suy luận kiểu (type inference) trong test fixtures, và một trình báo cáo dành riêng cho AI coding agents. Bản phát hành này cũng hỗ trợ đầy đủ Vite 8 ngay từ ngày đầu ra mắt.
Gắn thẻ kiểm tra (Test Tags)
Một trong những tính năng nổi bật nhất là test tags, được lấy cảm hứng từ các markers của pytest trong Python. Thẻ cho phép các nhà phát triển gắn nhãn cho các bài kiểm thử và áp dụng cấu hình chung như thời gian chờ (timeout) hoặc số lần thử lại (retries) cho từng thẻ. Tính năng này được cộng đồng mong đợi từ lâu, với một vấn đề trên GitHub từ tháng 10 năm 2025 nhận xét rằng: "Tôi đến từ Pytest, và việc đánh dấu đơn giản các bài kiểm thử là một tính năng tôi rất nhớ ở hầu hết các khung kiểm thử hiện nay". Cú pháp lọc hỗ trợ các toán tử logic và ký tự đại diện, cho phép các mẫu lệnh như vitest --tags-filter="frontend && !flaky" để chạy các bài kiểm thử frontend trong khi loại bỏ các bài kiểm thử không ổn định.
Thực thi Node.js gốc
Một bổ sung quan trọng khác là tùy chọn thử nghiệm viteModuleRunner: false. Tùy chọn này vô hiệu hóa sandbox của trình chạy module Vite và chạy các bài kiểm thử bằng cách sử dụng import gốc của Node.js. Không có phép chuyển đổi tệp nào được áp dụng, dẫn đến thời gian khởi động nhanh hơn và hành vi gần với môi trường sản xuất hơn. Đối với các nhà phát triển sử dụng Node.js 22.18+ hoặc 23.6+, TypeScript được loại bỏ tự nhiên mà không cần cấu hình thêm. Một cuộc thảo luận trên GitHub của Vitest đã xác nhận rằng tùy chọn này cũng hoạt động với Bun nhưng lưu ý một số tính năng còn thiếu:
Các tính năng còn thiếu duy nhất tôi nhận thấy cho đến nay là:
- Module mocks - Dễ dàng giải quyết bằng cách sử dụng native mocks từ
bun:testimport.- Coverage (Phủ mã) - Sẽ không hoạt động cho đến khi Bun cung cấp API phủ mã tùy chỉnh hoặc thêm hỗ trợ cho các API V8 (không khả thi?).
Lifecycle hooks và cải thiện khác
Bản phát hành giới thiệu các hooks aroundEach và aroundAll để bao bọc các bài kiểm tra trong các ngữ cảnh như giao dịch cơ sở dữ liệu hoặc các khoảng truy xuất (tracing spans). Ngoài ra, có một mẫu builder test.extend mới hỗ trợ suy luận kiểu mà không cần khai báo kiểu thủ công.
Đối với quy trình CI (tích hợp liên tục), trình báo cáo tích hợp github-actions hiện tạo ra một Job Summary với thống kê kiểm thử và làm nổi bật các bài kiểm thử không ổn định (flaky). Một trình báo cáo agent mới giúp giảm việc sử dụng token khi Vitest phát hiện nó đang chạy bên trong một AI coding agent, bằng cách ẩn đầu ra cho các bài kiểm thử vượt qua và nhật ký console.
Hiệu suất và các vấn đề đã biết
Sau khi phát hành, một số vấn đề trên GitHub đã được raised và đã được khắc phục. Một báo cáo cho biết các gợi ý bỏ qua phủ mã (v8 ignore if, v8 ignore next) ngừng hoạt động trong phiên bản 4.1.0 trừ khi chú thích @preserve được thêm vào, đại diện cho một sự thoái lùi so với các phiên bản trước. Một vấn đề riêng biệt đã gắn cờ rằng cú pháp peer dependency Vite đã cập nhật làm hỏng cài đặt cho người dùng Yarn Classic (v1.x).
So với Jest, Vitest tiếp tục nới rộng khoảng cách về hiệu suất. Một điểm chuẩn của SitePoint trên một monorepo sản phẩm với 50.000 bài kiểm thử đã báo cáo khởi động nguội (cold starts) nhanh hơn, chạy lại chế độ theo dõi (watch mode) nhanh hơn, cùng với mức sử dụng bộ nhớ đỉnh thấp hơn. Đối với các nhóm đang cân nhắc việc chuyển đổi, Vitest cung cấp hướng dẫn di chuyển bao gồm quá trình chuyển đổi từ cả Jest và các phiên bản Vitest trước đó, lưu ý rằng API của nó vẫn tương thích với Jest theo thiết kế.
Vitest là một khung kiểm thử mã nguồn mở được duy trì bởi VoidZero. Nó được xây dựng dựa trên Vite để tái sử dụng cùng một cấu hình, giải quyết và chuyển đổi pipeline, khiến nó trở thành một lựa chọn tự nhiên cho các dự án dựa trên Vite đồng thời hỗ trợ sử dụng độc lập với các khung công tác như React, Angular, Vue và Node.js.
Bài viết liên quan

Phần mềm
Thoth: Trợ lý AI mã nguồn mở ưu tiên quyền riêng tư và chạy cục bộ
03 tháng 5, 2026

Phần mềm
Systemd-manager-TUI: Công cụ quản lý dịch vụ systemd hiệu quả trên giao diện dòng lệnh
03 tháng 5, 2026

Công nghệ
Apple SHARP chạy trực tiếp trên trình duyệt: Biến ảnh 2D thành 3D ngay tại máy tính
03 tháng 5, 2026
