🧪 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.