Nguồn mở / Thùng chứa.

Công cụ kiểm tra trình duyệt.

"browser-tester" là một môi trường kiểm thử mô phỏng trình duyệt, được xây dựng hoàn toàn bằng ngôn ngữ Rust. Nó kiểm tra các chức năng của DOM (Document Object Model) và xử lý sự kiện mà không cần khởi động một trình duyệt thực tế.

Rỉ sét. Thời gian thực thi xác định. Kiểm thử DOM.

Những ưu điểm của sản phẩm này.

Công cụ "browser-tester" tập trung vào các bài kiểm tra về hành vi dự đoán được của các biểu mẫu và giao diện người dùng, thay vì kiểm tra khả năng tương thích toàn diện với các trình duyệt khác nhau.

Môi trường thực thi chỉ hỗ trợ ngôn ngữ Rust.

Chạy hoàn toàn trong một tiến trình Rust duy nhất. Không cần bất kỳ trình duyệt, WebDriver hoặc môi trường Node.js nào.

Thực thi xác định.

Thiết kế để hỗ trợ các bài kiểm tra lặp lại: bao gồm đồng hồ giả, bộ tạo số ngẫu nhiên xác định và các API điều khiển thời gian rõ ràng.

Kiểm tra DOM và các sự kiện.

Hỗ trợ các quy trình tương tự như trình duyệt thực tế: chọn phần tử, thực thi script trực tiếp, truyền sự kiện và cập nhật DOM.

Phản hồi nhanh chóng và trực tiếp từ cộng đồng địa phương.

Chu kỳ phản hồi nhanh cho các bài kiểm tra giao diện người dùng tập trung vào các biểu mẫu, đồng thời đảm bảo rằng thông báo lỗi tập trung vào các bộ chọn và các giá trị dự kiến/thực tế.

Hướng dẫn nhanh.

Tạo một môi trường kiểm thử từ mã HTML, thực hiện các tương tác và kiểm tra kết quả hiển thị trên DOM. Bắt đầu với một cấu trúc kiểm thử đơn giản và mở rộng nó bằng cách sử dụng các tính năng như hẹn giờ hoặc mô phỏng API.

Cài đặt.

cargo thêm browser_tester.

Ví dụ cơ bản.

Giao diện API chính.

Tận dụng các hành động và khẳng định.

Các thao tác kiểm thử DOM cơ bản: `Harness::from_html`, `type_text`, `set_checked`, `click`, `submit`, và các công cụ hỗ trợ kiểm tra giá trị, nội dung, trạng thái chọn/bỏ chọn, và sự tồn tại.

Bộ đếm xác định.

Điều khiển các hành vi không đồng bộ bằng cách sử dụng một đồng hồ giả. Điều chỉnh thời gian một cách chính xác bằng các hàm `advance_time`, `advance_time_to`, `flush` và các API kiểm tra bộ hẹn giờ.

Mô phỏng tích hợp.

Sử dụng các hàm `set_fetch_mock`, `enqueue_confirm_response` và `enqueue_prompt_response` để mô phỏng các phản hồi từ quá trình lấy dữ liệu và kết quả của các hộp thoại, nhằm đảm bảo tính độc lập của các bài kiểm tra.

Theo dõi và chẩn đoán.

Kích hoạt nhật ký theo dõi và trích xuất thông tin về luồng sự kiện/thời gian khi một bài kiểm tra không thành công. Điều này hữu ích cho việc gỡ lỗi thứ tự các sự kiện và hành vi mặc định.

Chính sách vận hành.

  • Hàm `eval` không được hỗ trợ một cách chủ động để bảo đảm tính bảo mật và tính xác định của hệ thống.
  • Môi trường thực thi này được thiết kế để mô phỏng các tình huống kiểm thử thực tế, chứ không đảm bảo khả năng tương thích 100% với tất cả các trình duyệt web.
  • Việc xử lý dữ liệu đầu vào/đầu ra từ mạng bên ngoài nằm ngoài phạm vi hiện tại; hãy sử dụng các mô phỏng (mocks) để đảm bảo khả năng kiểm thử.

Nếu bạn cần thêm các API trình duyệt cho bộ kiểm thử của mình, hãy mở một yêu cầu (issue) và cung cấp một ví dụ tối giản để thảo luận về phạm vi và mức độ ưu tiên.