Bỏ qua, đến nội dung

Flow lồng nhau ​

Tái sử dụng logic test bằng cách gọi flow con từ flow cha với runFlow.

Khi bộ test lớn lên, bạn sẽ thấy một số chuỗi lệnh lặp lại ở nhiều flow. Ví dụ phổ biến là đăng nhập, xoá trạng thái app hoặc điều hướng tới một màn hình cụ thể.

Thay vì nhân bản các lệnh này trong từng file, bạn có thể định nghĩa chúng một lần trong flow riêng và chạy bằng lệnh runFlow. Cách này, gọi là lồng flow, giúp bạn tuân thủ nguyên tắc DRY (Don't Repeat Yourself), khiến test dễ đọc, dễ bảo trì và dễ tối ưu hơn.

Cách dùng cơ bản ​

Để chạy một subflow, dùng lệnh runFlow kèm đường dẫn tới file flow.

Trong ví dụ này, subflow login.yaml xử lý toàn bộ quy trình đăng nhập cho app Wikipedia trên Android, gồm mở app và điều hướng menu. Flow chính profile_test.yaml chạy subflow này để xác thực trước khi thực hiện các kiểm tra khác.

yaml
appId: org.wikipedia
---
- launchApp
- runFlow: ../common/login.yaml 
- assertVisible: "Explore"
yaml
appId: org.wikipedia
---
- tapOn:
    id: drawer_icon_menu
- tapOn: LOG IN / JOIN WIKIPEDIA
- tapOn: Username
- inputText: myUsername
- tapOn: Password
- inputText: myPassword
- tapOn: LOG IN

Truyền đối số ​

Bạn có thể làm flow lồng nhau trở nên động bằng cách truyền đối số. Cách này cho phép tái sử dụng cùng một logic với dữ liệu khác nhau, ví dụ đăng nhập với các vai trò người dùng khác nhau.

Dùng key env để truyền biến vào subflow. Bên trong subflow, bạn truy cập các biến này bằng cú pháp ${VAR_NAME}.

yaml
appId: org.wikipedia
---
- launchApp
- runFlow:
    file: ../common/login.yaml
    env:
        USERNAME: "myUser"
        PASSWORD: "myPassword"
- assertVisible: "Explore"
yaml
appId: org.wikipedia
---
- tapOn:
    id: drawer_icon_menu
- tapOn: LOG IN / JOIN WIKIPEDIA
- tapOn: Username
- inputText: ${USERNAME}
- tapOn: Password
- inputText: ${PASSWORD}
- tapOn: LOG IN

Thông tin: thực thi có điều kiện

Bạn có thể tối ưu việc thực thi test bằng cách chỉ chạy flow lồng nhau khi thỏa điều kiện cụ thể.

Để tìm hiểu thêm về thực thi có điều kiện, xem trang Điều kiện.

Thực hành tốt để tối ưu ​

Áp dụng chiến lược flow lồng nhau góp phần trực tiếp vào quy trình test được tối ưu.

Giữ flow ở mức nguyên tử ​

Mỗi flow lồng nhau nên thực hiện một tác vụ duy nhất, xác định rõ. Ví dụ, tách riêng các flow login.yaml, logout.yaml và onboarding.yaml. Cách chia nhỏ này cho phép bạn ghép các flow linh hoạt để tạo kịch bản test phức tạp mà không tốn thêm chi phí không cần thiết.

Cấu trúc thư mục có tổ chức ​

Giữ cấu trúc project gọn gàng bằng cách nhóm các flow tái sử dụng. Mẫu phổ biến là có thư mục subflows/ hoặc common/ tách khỏi các test case chính.

.
├── flows/
│   ├── e2e/
│   │   ├── checkout_flow.yaml
│   │   └── profile_flow.yaml
│   └── subflows/
│       ├── login.yaml
│       └── payment_setup.yaml

Thiết lập và dọn dẹp ​

Dùng flow lồng nhau cho các quy trình thiết lập và dọn dẹp. Bằng cách tách các step này ra, bạn có thể nhanh chóng điều chỉnh trạng thái ban đầu cho mọi test chỉ bằng cách sửa một file. Ví dụ, nếu UI đăng nhập thay đổi, bạn chỉ cần cập nhật subflows/login.yaml, và mọi test dùng nó sẽ tự động chạy đúng.

Step tiếp theo ​

Xem lệnh runFlow để biết chi tiết kỹ thuật, hoặc khám phá Điều kiện để thêm logic vào flow.