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.
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ị đó:
- 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.
appId: com.example.app
env:
DEFAULT_TIMEOUT: 5000
IS_DEBUG: true
---
- launchAppTruyề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.
- 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".
- 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).
# 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_FILENAME | Tên file của flow hiện tại, không có phần mở rộng (ví dụ login). |
MAESTRO_SHARD_ID | Luôn là 1: Astra Scout không chia một run ra nhiều device. |
MAESTRO_SHARD_INDEX | Luô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:
- Flow lồng nhau: tìm hiểu thêm về dùng
runFlowđể truyền biến môi trường. - Tổng quan JavaScript: tìm hiểu cách xử lý tham số bằng logic JavaScript.
