Bỏ qua, đến nội dung

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, assertEvents khác...
  • Khối runFlow, repeat, retry có 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ụ when khô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 assertEvents khớp thì assertEvents sau 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ư $identify bị 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 ​

yaml
- assertEvents: [Onboarding Step Viewed]
- assertEvents:
    - License Selected:
        license type: car
- assertEvents:
    timeout: 8000
    events:
      - Paywall Viewed: { placement: onboarding }

Tham số ​

Tham sốKiểuMô tả
eventsListCác event cần có. Mỗi event là một tên, hoặc tên kèm map các property.
timeoutIntegerSố 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ệnMô tả
equalsGiá trị phải bằng giá trị này.
inGiá trị phải thuộc danh sách này.
minGiá trị phải là số, lớn hơn hoặc bằng giá trị này.
maxGiá trị phải là số, nhỏ hơn hoặc bằng giá trị này.
regexGiá 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).
typestring, boolean, integer hoặc number.

Ví dụ sử dụng ​

yaml
- tapOn: "Continue"
- assertEvents:
    - Onboarding Step Viewed:
        step: { in: [1, 2] }
        source: { regex: "^onb" }