Đặt nhãn và xử lý error
Dùng label và optional để cải thiện báo cáo và xử lý error trong flow.
Ngoài hành động chính, hầu hết lệnh có chung hai property: label và optional. Chúng cho phép bạn tinh chỉnh cách run được báo cáo, ghi tài liệu, và cách chúng hoạt động khi gặp trạng thái UI bất ngờ.
Đặt nhãn cho lệnh
Property label cho phép thay mô tả kỹ thuật mặc định trong danh sách step và báo cáo run bằng một mô tả tùy chỉnh dễ đọc.
Một số lý do nên dùng label:
- Ý định thay vì cách triển khai: thay vì hiện selector kỹ thuật (như resource ID), label mô tả logic nghiệp vụ của step.
- Bảo mật và riêng tư: che dữ liệu nhạy cảm (như mật khẩu hoặc PII) để chúng không xuất hiện trong kết quả chạy chia sẻ hay bản ghi màn hình.
- Dễ bảo trì: label đóng vai trò tài liệu "sống" đi kèm lệnh, giúp người cùng làm dễ hiểu mục đích của flow.
Đoạn code sau cho thấy cách dùng label để cải thiện báo cáo test:
- tapOn:
id: "buy-now-btn-v2"
label: "Confirm purchase on the final checkout screen"
- inputText:
text: "super-secret-password-123"
label: "Enter the secure test user password"
- swipe:
direction: LEFT
label: "Navigate through the onboarding tutorial"Nếu dùng label, danh sách step sẽ rõ ràng và dễ hiểu hơn:
Input text "super-secret-password-123" (without a label)
Enter the secure test user password (with the label)Thông tin
Dù label ẩn văn bản nhạy cảm khỏi UI và phần tóm tắt trên console, giá trị thực vẫn có thể xuất hiện trong log debug thô.
Xử lý error với optional
Mặc định, Astra Scout theo triết lý "fail-fast": nếu một lệnh không tìm thấy phần tử hoặc không thực hiện được hành động, flow dừng ngay. Property optional: true ghi đè điều này, cho phép test tiếp tục dù một step cụ thể fail.
Một số trường hợp thường dùng optional:
- UI không quan trọng: kiểm tra các phần tử không chặn hành trình người dùng, như badge "tính năng mới" hay liên kết ở footer.
- Nội dung thoáng qua: xử lý banner, popup hoặc biến thể A/B test chỉ xuất hiện với một số người dùng hay khu vực.
- Xử lý yếu tố môi trường: đối phó với hộp thoại hệ thống hoặc thông báo đồng bộ xuất hiện không ổn định và không quan trọng với mục tiêu của test.
Đoạn code sau là ví dụ cách dùng optional:
- launchApp: com.example.example
- assertVisible:
text: Summer sale is here!
optional: true # Nếu không có banner, test vẫn tiếp tục
- tapOn: Sign up now!Nếu một lệnh optional fail, nó được đánh dấu là warning, nhưng việc thực thi vẫn chuyển sang step tiếp theo:
Launch app "com.example.example" passed
Assert that "Summer sale is here!" warned
Tap on "Sign up now!" passedAstra Scout dùng các rule sau để xác định giá trị mặc định của optional cho các lệnh:
- Lệnh thông thường: mặc định
optional: false. - Lệnh AI: các lệnh như
assertNoDefectsWithAIvàassertWithAImặc địnhoptional: truedo tính xác suất của chúng.
Thông tin
Dù có thể thêm optional vào bất kỳ lệnh nào, nó không có tác dụng thực tế với các hành động về mặt kỹ thuật không thể "fail" khi thực thi, như back, stopRecording hoặc clearState.
