Bỏ qua, đến nội dung

Tìm test và tag ​

Tổ chức test bằng tag và kiểm soát flow nào chạy bằng bộ lọc include và exclude.

Khi bộ test lớn từ vài file lên hàng trăm flow, việc quản lý test nào cần chạy và chúng nằm ở đâu trở nên quan trọng. Astra Scout kết hợp pattern bao gồm và tag metadata để bạn kiểm soát chính xác việc thực thi.

Tìm test bằng pattern ​

Mặc định, khi chạy cả thư mục workspace, Astra Scout chỉ thực thi các file flow nằm ở cấp trên cùng của thư mục đó. Nó bỏ qua thư mục con để tránh vô tình chạy các flow lồng hoặc flow tiện ích. Thư mục có tên bắt đầu bằng . luôn bị bỏ qua.

Để thay đổi hành vi này và tổ chức repo thành các thư mục con (như /auth, /checkout hay /journeys), bạn phải khai báo pattern bao gồm (Inclusion Patterns) trong config.yaml.

Key flows dùng cú pháp glob để xác định file nào được đưa vào run bộ test.

yaml
# config.yaml
appId: com.example.app
flows:
  - "*"            # Mặc định: chỉ gồm các flow ở thư mục gốc
  - "auth/*"       # Gồm mọi flow trong thư mục con auth
  - "tests/**"     # Đệ quy: gồm mọi flow trong tests và các thư mục con

Loại trừ file bằng pattern phủ định ​

Thêm ! trước glob để loại trừ các file lẽ ra được đưa vào. Dùng cách này để bỏ qua mọi thứ bạn không muốn Astra Scout chạy, dù là file .yaml không phải flow (như file helper hay dữ liệu nằm cạnh test), một flow đang làm dở, hay cả một thư mục con.

Astra Scout trước tiên gom mọi file khớp pattern dương, rồi loại bỏ các file khớp pattern phủ định.

yaml
# config.yaml
appId: com.example.app
flows:
  - "**"                    # Gồm mọi flow, đệ quy
  - "!ignored.yaml"         # Loại một file
  - "!config_dir/**"        # Loại cả một thư mục con
  - "!featureA/skip.yaml"   # Loại một file cụ thể trong thư mục đã được gồm

Lưu ý

Danh sách flows cần ít nhất một pattern dương. Danh sách chỉ gồm pattern phủ định sẽ không khớp gì, nên không flow nào chạy.

Lọc test bằng tag ​

Tag cho phép bạn phân loại flow theo mục đích, mức ưu tiên hoặc môi trường thực thi mà không đổi cấu trúc thư mục.

Để thêm tag cho một flow, khai báo chúng trong khối cấu hình ở đầu từng file flow:

yaml
# flows/login_smoke.yaml
appId: com.example.app
tags:
  - smoke
  - registration
---
- launchApp
# ... phần còn lại của flow

Khi chạy một workspace, Astra Scout lọc flow theo tag của môi trường bạn đã chọn. Trong sheet Environments (Run → Quản lý môi trường…), mỗi môi trường có ô Tag bao gồm và ô Tag loại trừ, nhập các tag cách nhau bằng dấu phẩy.

  • Bao gồm: nhập smoke vào Tag bao gồm để chỉ chạy các smoke test.
  • Loại trừ: nhập wip vào Tag loại trừ để chạy mọi thứ trừ các test đang làm dở.

Logic của tag ​

Khi liệt kê nhiều tag trong một ô, bộ lọc dùng logic OR.

  • Nhiều tag bao gồm: auth,checkout chạy mọi flow gắn tag auth HOẶC checkout.
  • Nhiều tag loại trừ: experimental,stagingOnly bỏ qua mọi flow gắn tag experimental HOẶC stagingOnly.

Thông tin: toán tử AND

Không có option chỉ chạy các flow khớp một tổ hợp nhiều tag (logic AND) trong cùng một ô, ví dụ chỉ các flow gắn cả smoke và auth.

Nếu dùng đồng thời tag bao gồm và loại trừ, giữa hai nhóm là phép AND:

  1. Astra Scout xác định mọi flow chứa các tag bao gồm.
  2. Sau đó loại bỏ các flow chứa tag loại trừ.

Giả sử bạn có hai flow:

  • Flow A: tags: [dev, pull-request]
  • Flow B: tags: [dev]
yaml
# flowA.yaml
appId: com.example.app
tags: 
  - dev
  - pull-request
yaml
# flowB.yaml
appId: com.example.app
tags: 
  - dev
Tag bao gồmTag loại trừKết quảVì sao?
devFlow A & BCả hai đều có tag dev.
dev,pull-requestFlow A & BDùng logic OR, cả hai đều có ít nhất một trong các tag.
pull-requestFlow BFlow A bị loại do có tag pull-request.
devpull-requestFlow BCả hai được gồm nhờ dev, sau đó Flow A bị loại.
devKhông flow nào chạyCả hai flow đều có dev nên đều bị loại.

Cấu hình tag toàn cục ​

Trong khi tag riêng trong file flow phân loại một test là gì, khai báo tag trong config.yaml đặt ra chính sách cho cả workspace. Nó hoạt động như một cổng cố định, đảm bảo một số loại test luôn được đưa vào hoặc bị bỏ qua mà bạn không phải nhớ điền môi trường mỗi lần.

yaml
# config.yaml
includeTags:
  - production_ready
excludeTags:
  - experimental
  - flaky

Bạn có thể dùng tag toàn cục để:

  • Nhắm tới môi trường: dùng một môi trường với tag bao gồm và loại trừ riêng cho từng giai đoạn, ví dụ môi trường bao gồm tag của các tính năng chỉ dùng nội bộ, không nên chạy trên production.
  • Áp dụng cổng chất lượng: nếu có 10 test đang "flaky" do một bug môi trường đã biết, bạn không muốn xoá chúng. Bằng cách gắn tag flaky trong flow và thêm excludeTags: [flaky] vào config.yaml, bạn đảm bảo không ai trong team vô tình chạy chúng và làm hỏng build.

Thông tin

Tag của môi trường đang chọn và của config.yaml được gộp lại: các danh sách bao gồm được hợp nhất, các danh sách loại trừ cũng vậy. Một flow chạy khi khớp một tag bao gồm (nếu có) và không khớp tag loại trừ nào.

Ví dụ ​

Hình dung một repo tổ chức theo tính năng:

.
├── config.yaml
├── auth/
│   ├── login.yaml (tags: [smoke])
│   └── signup.yaml
└── payments/
    ├── credit_card.yaml (tags: [smoke])
    └── paypal.yaml

Để chạy bộ smoke trên mọi tính năng, config.yaml của bạn nên như sau:

yaml
# config.yaml
appId: com.example.app
flows:
  - "**"          # Tìm ở mọi nơi
includeTags:
  - smoke         # Nhưng chỉ chạy smoke test

Step tiếp theo ​

Giờ bạn đã tìm được test, hãy học cách quản lý thực thi tuần tự của chúng.