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.
Thay vì viết cứng các giá trị như username, mật khẩu hay ID sản phẩm vào flow, bạn dùng biến và điền giá trị lúc chạy, để một flow dùng lại được với nhiều dữ liệu.
Có hai cách chính để định nghĩa các biến này:
- Tham số: giá trị đến từ bên ngoài flow, ví dụ từ một môi trường (environment) của Astra Scout.
- Hằng số: giá trị khai báo ngay trong flow, bằ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ố
Dùng tham số cho 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 Chạy → 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
Tham số luôn là chuỗi. Nếu cần số hoặc boolean, chuyển kiểu bằng JavaScript (ví dụ parseInt(${COUNT})).
Ví dụ, môi trường có hai biến USERNAME và PASSWORD. Flow sau dùng chúng để đăng nhập.
appId: com.example.app
---
- launchApp
- tapOn: "Username"
- inputText: ${USERNAME}
- tapOn: "Password"
- inputText: ${PASSWORD}Dùng biến môi trường của macOS
Flow cũng đọc được biến môi trường mà Astra Scout được khởi động cùng. Đặt tên biến của bạn bắt đầu bằng MAESTRO_ (ví dụ MAESTRO_API_KEY) để không lẫn với các biến hệ thống như HOME.
Lưu ý
App mở từ Dock hoặc Finder không nhận các biến bạn export trong terminal. Mở Astra Scout từ chính terminal đó, hoặc dùng môi trường của Astra Scout thay thế.
Ví dụ, nếu Astra Scout được khởi động với MAESTRO_API_KEY=12345, flow lấy giá trị đó như sau:
- evalScript: ${output.apiKey = MAESTRO_API_KEY}Hằng số
Hằng số là biến khai báo ngay trong file flow. Dùng cho dữ liệu test, cờ cấu hình, hoặc giá trị dùng lại mà không đổi giữa các run.
Khai báo hằng số inline
Khai báo hằng số ở đầu file flow bằng key env. Trong ví dụ này, DEFAULT_TIMEOUT và IS_DEBUG dùng được trong cả file flow.
appId: com.example.app
env:
DEFAULT_TIMEOUT: 5000
IS_DEBUG: true
---
- launchAppTruyền đối số cho subflow
Khi gọi subflow bằng runFlow, bạn có thể truyền đối số để dùng một subflow với nhiều dữ liệu khác nhau. Biến khai báo trong env chỉ có tác dụng trong lần chạy subflow đó.
Trong ví dụ sau, subflow login.yaml chạy với USER_ROLE là admin.
- runFlow:
file: subflows/login.yaml
env:
USER_ROLE: "admin"Thông tin: độ ưu tiên
Hằng số trong subflow (ở header env hoặc trong runFlow) ghi đè tham số cùng tên từ flow cha.
Hằng số trong header env của một flow cũng ghi đè biến cùng tên từ môi trường đã chọn. Muốn giá trị trong header chỉ là mặc định mà môi trường thay được, viết NAME: ${NAME || "default"}, như ở phần sau.
Đặt giá trị mặc định
Dùng cú pháp JavaScript để đặt giá trị mặc định cho tham số, tránh error khi không ai truyền giá trị. Trong ví dụ này, ${USERNAME} dùng giá trị được cung cấp nếu có, nếu không thì là "guest".
- inputText: ${USERNAME || "guest"}Cách này rất hợp với subflow: subflow chạy riêng được (dùng giá trị mặc định) hoặc chạy trong bộ test lớn hơn (dùng giá trị đượ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
Mọi flow đều có sẵn các tham số sau.
| Tham số | Mô tả |
|---|---|
MAESTRO_FILENAME | Tên file của flow hiện tại, không có đuôi file (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 ý
Biến MAESTRO_DEVICE_UDID không có trong Astra Scout. Đừng dùng nó trong flow.
Step tiếp theo
Xem tiếp:
- Flow lồng nhau: dùng
runFlowđể truyền biến cho subflow. - Tổng quan JavaScript: xử lý tham số bằng JavaScript.
