🧪 Tổng quan về Hạ tầng Kiểm thử của iBrowe

iBrowe sử dụng hai loại kiểm thử tự động chính:

  • Kiểm thử đơn vị (Unit Tests) – tập trung vào từng hàm hoặc khối logic riêng lẻ
  • Kiểm thử trình duyệt (Browser Tests) – dạng kiểm thử tích hợp dựa trên một phiên bản trình duyệt hoàn chỉnh

🧱 Kiểm thử Đơn vị

🔹 Kiểm thử C++

Các bài kiểm thử C++ được biên dịch nhằm xác thực hoạt động của từng mô-đun hoặc lớp riêng biệt.

Chạy với lệnh:

npm run test -- ibrowe_unit_tests

Ví dụ kết quả đầu ra:

> ibrowe@1.0.0 test /Users/dev/projects/ibrowe/ibrowe
> node ./scripts/commands.js test "ibrowe_unit_tests"

ninja -C ./src/out/Release ibrowe_unit_tests
./ibrowe_unit_tests --enable-logging --v=0
Using 8 parallel jobs.
[1/9] NetworkHelperTest.NoChangeURL
[9/9] ImporterTest.ImportFavicons
SUCCESS: all tests passed.

Chạy một bài kiểm thử cụ thể theo cách tương tác:

./ibrowe_unit_tests --gtest_filter=YourTestName --single-process-tests

🔹 Kiểm thử Đơn vị JavaScript

Chạy từ thư mục gốc của dự án:

npm run test-unit

Để chạy một số file kiểm thử cụ thể:

npm run test-unit -- --findRelatedTests ./components/test/foo_test.ts

🌐 Kiểm thử Trình duyệt

Các bài kiểm thử này sẽ biên dịch mã trình duyệt iBrowe cùng với các đoạn mã kiểm thử C++.

Chạy với lệnh:

npm run test -- ibrowe_browser_tests

Ví dụ:

[1/4] AdBlockServiceTest.BlocksAds
[4/4] HTTPSRedirectTest.RedirectsKnownSite
SUCCESS: all tests passed.

Lọc theo bộ kiểm thử cụ thể:

npm run test -- ibrowe_browser_tests --filter=ContentSettingsObserverTest.*

Chạy ở chế độ phát hành (release):

npm run test -- ibrowe_browser_tests Release

Chạy không giao diện trên Linux (chế độ headless) với xvfb:

./src/testing/xvfb.py npm run test -- ibrowe_browser_tests

🔕 Vô hiệu hóa kiểm thử

Đánh dấu một bài kiểm thử là đã bị vô hiệu hóa bằng cách đổi tên hàm:

- TEST(MyFeatureTest, Crashes)
+ TEST(MyFeatureTest, DISABLED_Crashes)

Tạo issue theo dõi để ghi nhớ việc kích hoạt lại sau này.


🧩 Mục tiêu khác

Bạn có thể truyền bất kỳ mục tiêu tương thích với Chromium nào vào lệnh npm run test:

npm run test -- browser_tests

Lưu ý: một số bài kiểm thử từ Chromium gốc có thể không chạy được do sự thay đổi riêng của iBrowe.


🔐 Kiểm thử Bảo mật & Quyền riêng tư Mạng

Chạy kiểm thử quyền riêng tư tự động:

npm run test-security

Đối với bản dựng không debug:

npm run test-security -- --output_path="/path/to/iBrowe/binary"

Thử nghiệm thủ công:

open /Applications/iBrowe\ Browser.app --args \
  --log-net-log=/tmp/netlog.json \
  --net-log-capture-mode=IncludeSocketBytes

Truy cập chrome://net-internals, nhập file log, và tìm kiếm các khóa:

  • URL_REQUEST
  • GOOGLE_OWNED_SERVICE

📱 Kiểm thử Dành riêng cho Android

🧰 Thiết lập trình giả lập (Emulator)

Không cần thiết lập giả lập thủ công – các cấu hình mặc định sẽ được sử dụng. Để chọn giả lập cụ thể:

# Liệt kê các AVD khả dụng
~/Android/Sdk/emulator/emulator -list-avds

# Khởi động một AVD
~/Android/Sdk/emulator/emulator @MyEmulator

Khuyến nghị sử dụng ảnh hệ thống dựa trên x86 để đạt hiệu năng tốt nhất.

⚙️ Biên dịch & Chạy kiểm thử

npm run init -- --target_os=android --target_arch=x86
npm run build -- --target_os=android --target_arch=x86
npm run test -- ibrowe_unit_tests --target_os=android --target_arch=x86

🔄 Kiểm thử Từ Chromium Gốc

Chạy kiểm thử Chromium gốc cục bộ:

npm test browser_tests
npm test unit_tests

Để bỏ qua các bài kiểm thử bị lỗi, chỉnh sửa bộ lọc trong:

ibrowe-core/test/filters/

Nhớ ghi rõ lý do vô hiệu hóa và liên kết đến issue theo dõi.


📎 Nguồn tham khảo: Chuyển thể từ tài liệu kiểm thử của Brave, cấu trúc lại phù hợp với dự án iBrowe.