Bỏ qua, đến nội dung

Tham số và hằng số ​

Truyền giá trị động vào flow bằng tham số và hằng số khai báo trực tiếp.

Flow có thể nhận dữ liệu từ bên ngoài để trở nên động và tái sử dụng được. Thay vì hardcode các giá trị như username, mật khẩu hay ID sản phẩm, bạn có thể dùng biến được điền khi chạy.

Có hai cách chính để định nghĩa các biến này:

  • Tham số: giá trị truyền từ bên ngoài (ví dụ từ một môi trường của Astra Scout).
  • Hằng số: giá trị khai báo ngay trong flow (ví dụ dùng key env).

Cả hai đều được truy cập bằng cùng cú pháp ${VARIABLE_NAME}.

Phân biệt chữ hoa, chữ thường

Tên biến phân biệt chữ hoa, chữ thường. ${APP_ID} khác với ${App_ID}.

Tham số ​

Tham số hữu ích để truyền dữ liệu nhạy cảm (như thông tin đăng nhập) hoặc cấu hình riêng theo môi trường (như URL) mà bạn không muốn commit vào repo.

Truyền tham số từ một môi trường ​

Trong Astra Scout, chọn Run → Quản lý môi trường… và tạo một môi trường. Môi trường có tên, các tag bao gồm và loại trừ (không bắt buộc), và danh sách Biến môi trường. Chọn môi trường trước khi chạy flow, mỗi biến sẽ dùng được dưới dạng ${NAME}.

Thông tin: kiểu dữ liệu

Hãy nhớ rằng tham số được truyền dưới dạng chuỗi. Nếu cần số hoặc boolean, bạn có thể phải phân tích bằng JavaScript (ví dụ parseInt(${COUNT})).

Ví dụ, với các biến USERNAME và PASSWORD đặt trong môi trường, flow có thể truy cập chúng bằng cú pháp ${VARIABLE_NAME}. Flow sau dùng username và mật khẩu được cung cấp để đăng nhập.

yaml
appId: com.example.app
---
- launchApp
- tapOn: "Username"
- inputText: ${USERNAME}
- tapOn: "Password"
- inputText: ${PASSWORD}

Truy cập biến môi trường của tiến trình ​

Astra Scout cũng đọc các biến môi trường có tiền tố MAESTRO_ từ môi trường tiến trình của chính nó và đưa chúng vào flow.

Lưu ý

Chỉ các biến mà chính Astra Scout được khởi động cùng mới nhìn thấy được. App mở từ Dock hoặc Finder không kế thừa các biến bạn export trong terminal. Hãy khởi động app từ terminal đó, hoặc dùng môi trường thay thế.

Ví dụ, nếu app được khởi động với MAESTRO_API_KEY=12345 trong môi trường, một biểu thức inline có thể lấy giá trị đó:

yaml
- evalScript: ${output.apiKey = MAESTRO_API_KEY}

Hằng số ​

Hằng số là biến khai báo trực tiếp trong file flow. Chúng hữu ích để định nghĩa dữ liệu test, cờ cấu hình, hoặc các giá trị tái sử dụng không cần thay đổi giữa các run.

Khai báo hằng số inline ​

Bạn có thể khai báo hằng số ở đầu file flow bằng key env.

Trong ví dụ này, DEFAULT_TIMEOUT và IS_DEBUG được đặt làm hằng số cho toàn bộ file flow.

yaml
appId: com.example.app
env:
    DEFAULT_TIMEOUT: 5000
    IS_DEBUG: true
---
- launchApp

Truyền đối số cho subflow ​

Khi dùng flow lồng nhau, bạn có thể truyền đối số để tái sử dụng cùng một subflow với dữ liệu khác nhau. Biến khai báo trong env chỉ dùng được trong lần thực thi subflow đó.

Trong ví dụ sau, subflow login.yaml được chạy với hằng số USER_ROLE đặt là admin.

yaml
- runFlow:
    file: subflows/login.yaml
    env:
        USER_ROLE: "admin"

Thông tin: độ ưu tiên

Hằng số khai báo trong subflow (ở header env hoặc trong lệnh runFlow) ghi đè tham số cùng tên từ flow cha.

Đặt giá trị mặc định ​

Bạn có thể dùng cú pháp JavaScript để đặt giá trị mặc định cho tham số. Cách này giúp tránh error khi không truyền tham số.

Trong ví dụ này, ${USERNAME} dùng giá trị được cung cấp nếu có, nếu không thì mặc định là "guest".

yaml
- inputText: ${USERNAME || "guest"}

Kỹ thuật này đặc biệt hữu ích trong subflow, cho phép chạy độc lập (dùng giá trị mặc định) hoặc như một phần của bộ test lớn hơn (dùng tham số được truyền).

yaml
# subflows/login.yaml
appId: com.example.app
env:
    # Dùng giá trị được truyền, hoặc mặc định là một tài khoản test
    USER_ID: ${USER_ID || "test_user_1"}
---
- tapOn: "User ID"
- inputText: ${USER_ID}

Tham số có sẵn ​

Astra Scout cung cấp các tham số có sẵn sau trong mọi flow.

Tham sốMô tả
MAESTRO_FILENAMETên file của flow hiện tại, không có phần mở rộng (ví dụ login).
MAESTRO_SHARD_IDLuôn là 1: Astra Scout không chia một run ra nhiều device.
MAESTRO_SHARD_INDEXLuôn là 0: Astra Scout không chia một run ra nhiều device.

Lưu ý

Maestro còn định nghĩa MAESTRO_DEVICE_UDID. Astra Scout không đặt biến này, nên đừng dựa vào nó trong các flow bạn chia sẻ.

Step tiếp theo ​

Để tiếp tục tìm hiểu cách tạo flow, xem các trang sau: