assertEvents
Xác nhận app đã gửi các analytics event (chỉ có trong Astra Scout).
Chỉ có trong Astra Scout
assertEvents không phải command của Maestro. Flow dùng nó không chạy được trên Maestro thường. Astra Scout lấy event từ phần capture Amplitude, xem Tracking.
Command assertEvents kiểm tra app đã gửi các analytics event bạn liệt kê. Event nào chưa tới thì nó chờ, tối đa bằng timeout.
Dùng nó ngay sau một thao tác trong flow để xác nhận thao tác đó gửi đúng event, ví dụ chạm Continue thì có Onboarding Step Viewed.
Event nào được tính
Mỗi assertEvents chỉ xét các event gửi trong một khoảng thời gian gần đây (gọi là cửa sổ). Cửa sổ mở ra 500 ms trước thao tác cuối cùng tác động lên app.
- Thao tác tác động lên app: tap, nhập text, swipe,
launchApp... - Command chỉ quan sát hoặc chờ không làm cửa sổ dịch đi:
assertVisible,assertTrue,extendedWaitUntil,takeScreenshot,evalScript,assertEventskhác... - Khối
runFlow,repeat,retrycó command bên trong tác động lên app được tính như một thao tác bắt đầu lúc khối bắt đầu.assertEventsđặt ngay sau khối kiểm mọi event khối đó gửi. Ví dụ: kiểm các event đầu tiên của app sau một vòng trả lời hộp xin quyền, dù các hộp hiện theo thứ tự nào. - Khối không làm gì (ví dụ
whenkhông khớp) thì cửa sổ giữ nguyên. - Chưa có thao tác nào thì cửa sổ mở từ đầu flow.
Vì vậy với tapOn, assertVisible, assertEvents, bước cuối kiểm các event của lần tap.
Thời gian chờ là timeout mili giây tính từ chính assertEvents, không tính từ command trước.
Nếu thao tác trước gửi event chưa tới 500 ms trước khi thao tác tiếp theo bắt đầu, event đó có thể bị tính cho thao tác tiếp theo.
Đồng hồ trên device có thể lệch so với đồng hồ của Mac, và SDK analytics thường gửi event theo lô nên có thể tới trễ. Astra Scout tự bù độ lệch này, nên hai điều đó không làm event lọt vào hay rơi khỏi cửa sổ.
Cách khớp event
Viết tên event như trong catalog (tên Display).
Mỗi event trong danh sách phải khớp đúng một event app đã gửi: event đầu tiên, theo thứ tự thời gian, có đúng tên và đúng các property bạn mô tả.
- Event đã được một
assertEventskhớp thìassertEventssau trong cùng run không khớp lại. - Thứ tự các event trong cùng một step không quan trọng.
- Các event nội bộ của SDK như
$identifybị bỏ qua.
Nếu thiếu event, step fail và nói rõ event nào thiếu, cùng các event đã nhận được. Nếu event tới nhưng sai property, thông báo ghi property và giá trị nhận được. assertEvents fail không dừng flow: các command sau vẫn chạy, nhưng run kết thúc ở trạng thái fail.
Cú pháp
- assertEvents: [Onboarding Step Viewed]
- assertEvents:
- License Selected:
license type: car
- assertEvents:
timeout: 8000
events:
- Paywall Viewed: { placement: onboarding }Tham số
| Tham số | Kiểu | Mô tả |
|---|---|---|
events | List | Các event cần có. Mỗi event là một tên, hoặc tên kèm map các property. |
timeout | Integer | Số mili giây chờ tối đa cho các event. Mặc định 5000. |
Giá trị của một property là một giá trị thường, phải bằng giá trị nhận được, hoặc một map điều kiện. Ngày viết dưới dạng giá trị thường (date: 2026-10-19) được so đúng như chữ đã viết, có nháy hay không cũng vậy.
| Điều kiện | Mô tả |
|---|---|
equals | Giá trị phải bằng giá trị này. |
in | Giá trị phải thuộc danh sách này. |
min | Giá trị phải là số, lớn hơn hoặc bằng giá trị này. |
max | Giá trị phải là số, nhỏ hơn hoặc bằng giá trị này. |
regex | Giá trị phải là chuỗi khớp regex này (mẫu mô tả chuỗi, ví dụ ^onb là chuỗi bắt đầu bằng onb). |
type | string, boolean, integer hoặc number. |
Ví dụ sử dụng
- tapOn: "Continue"
- assertEvents:
- Onboarding Step Viewed:
step: { in: [1, 2] }
source: { regex: "^onb" }