$npx -y skills add anhtester/codex-testing-kit --skill generate-automation-from-testcasesConvert manual test cases into automation scripts autonomously using the 6-step AI-RBT Framework and Codex tools.
| 1 | # Workflow: Sinh Automation Scripts từ Manual Test Cases |
| 2 | |
| 3 | > **BẮT BUỘC (MANDATORY SKILLS):** Bạn PHẢI nạp và đọc kỹ nội dung các skills sau trước khi bắt đầu: |
| 4 | > - **`$qa-automation-engineer`** (`.agents/skills/qa-automation-engineer/SKILL.md`) — Quy tắc automation chung + workflow routing |
| 5 | > - **`$ui-debug-agent`** (`.agents/skills/ui-debug-agent/SKILL.md`) — Inspect DOM, thu thập locators |
| 6 | > - **`$smart-locator-agent`** (`.agents/skills/smart-locator-agent/SKILL.md`) — Sinh locator ổn định |
| 7 | > - **`$test-data-generator`** (`.agents/skills/test-data-generator/SKILL.md`) — Sinh test data unique, traceable |
| 8 | |
| 9 | Workflow này giúp agent đọc file manual test cases do user cung cấp, tự mở browser inspect UI, thu thập locators thực tế, sinh automation scripts hoàn chỉnh (POM + Test), chạy test và tự sửa lỗi cho đến khi PASS. |
| 10 | |
| 11 | ## ⚠️ Nguyên tắc thực thi |
| 12 | |
| 13 | - **Vai trò:** Agent đóng vai Senior Automation Engineer — tuân thủ Clean Code + POM |
| 14 | - **Tất cả output bằng Tiếng Việt** |
| 15 | - **TUYỆT ĐỐI KHÔNG ĐOÁN locator** — phải inspect DOM thực tế bằng MCP browser tools |
| 16 | - **Desktop viewport 1920×1080** cho tất cả UI debugging |
| 17 | - ⚠️ **Rule E3 (CRITICAL):** Khi test FAIL → tự đọc log → phân tích → sửa code → chạy lại. **CẤM hỏi user trong quá trình fix lỗi.** Chỉ hỏi khi gặp business rule mâu thuẫn hoặc hết 5 vòng auto-heal |
| 18 | - **Artifact `task.md`** — PHẢI tạo để theo dõi tiến độ 6 bước |
| 19 | |
| 20 | ## Workflow này khác gì `$generate-automation-from-ui-flow`? |
| 21 | |
| 22 | | | `from_testcases` (workflow này) | `from_ui_flow` | |
| 23 | |---|---|---| |
| 24 | | **Input** | File manual test cases có cấu trúc (MD/Excel/JSON) | Mô tả UI steps bằng lời hoặc chỉ URL | |
| 25 | | **Đã có TC** | ✅ Có sẵn — đọc và convert | ❌ Chưa có — agent tự khám phá | |
| 26 | | **Approach** | Đọc TC → inspect UI verify → sinh code | Chạy thật trên browser → thu thập → sinh code | |
| 27 | |
| 28 | ## Input cần thu thập |
| 29 | |
| 30 | | Input | Cách lấy | Độ ưu tiên | |
| 31 | |---|---|---| |
| 32 | | **File test cases** (MD/Excel/JSON/URL) | User cung cấp path hoặc URL | ⭐ Bắt buộc | |
| 33 | | **URL ứng dụng** | User cung cấp hoặc trong TC | ⭐ Bắt buộc | |
| 34 | | **Credentials** (nếu cần login) | User cung cấp hoặc dùng fixture sẵn | Tùy chọn | |
| 35 | | **Tech stack** | User chỉ định hoặc detect từ project | Tùy chọn | |
| 36 | |
| 37 | Nếu user chưa cung cấp đủ → hỏi trước khi bắt đầu. |
| 38 | |
| 39 | ## Các bước thực hiện |
| 40 | |
| 41 | ### Bước 1: Khởi tạo, Phân tích & Lên Kế Hoạch (Context & Analysis) |
| 42 | |
| 43 | 1. **Đọc file test cases** do user cung cấp: |
| 44 | - File local → `view_file` |
| 45 | - URL (Google Sheets, Confluence, etc.) → `read_url_content` |
| 46 | - Xác định format: Markdown table, Excel, JSON, hoặc free-form text |
| 47 | |
| 48 | 2. **Parse test cases** và trích xuất: |
| 49 | - Danh sách TC (ID, Title, Steps, Expected Results, Test Data, Priority) |
| 50 | - Các pages/screens mà TC đi qua |
| 51 | - Pre-conditions (login, setup data, navigate...) |
| 52 | - Dependencies giữa các TC (nếu có) |
| 53 | |
| 54 | 3. **Xác định tech stack** (nếu chưa rõ): |
| 55 | |
| 56 | | Framework | Ngôn ngữ | Runner | Khi nào chọn | |
| 57 | |---|---|---|---| |
| 58 | | Playwright | TypeScript | Playwright Test | Mặc định cho web | |
| 59 | | Playwright | Python | Pytest | Khi project dùng Python | |
| 60 | | Selenium | Java | TestNG | Khi user yêu cầu Java | |
| 61 | | Appium | Java | TestNG | Mobile app | |
| 62 | |
| 63 | 4. **Tạo artifact `task.md`** để theo dõi tiến độ: |
| 64 | ```markdown |
| 65 | # Automation Generation Progress |
| 66 | - [x] Bước 1: Phân tích test cases |
| 67 | - [ ] Bước 2: Khảo sát UI (MCP Recon) |
| 68 | - [ ] Bước 3: Thiết kế POM |
| 69 | - [ ] Bước 4: Chuẩn bị test data |
| 70 | - [ ] Bước 5: Sinh automation scripts |
| 71 | - [ ] Bước 6: Chạy test + Auto-heal |
| 72 | |
| 73 | ## Test Cases to Automate |
| 74 | | TC ID | Title | Pages | Priority | Status | |
| 75 | |---|---|---|---|---| |
| 76 | | TC01 | Login thành công | LoginPage, DashboardPage | P1 | ⏳ | |
| 77 | | TC02 | Login sai password | LoginPage | P1 | ⏳ | |
| 78 | ``` |
| 79 | |
| 80 | ### Bước 2: Khảo sát UI tự động bằng MCP (Autonomous UI Recon) |
| 81 | |
| 82 | 1. **Mở browser** bằng MCP và navigate theo test case steps: |
| 83 | ``` |
| 84 | browser_navigate → URL ứng dụng |
| 85 | browser_resize → 1920 × 1080 |
| 86 | browser_wait_for → page load hoàn tất |
| 87 | browser_snapshot → thu thập DOM |
| 88 | ``` |
| 89 | |
| 90 | 2. **Với mỗi page trong test cases**, thực hiện: |
| 91 | - `browser_snapshot` → đọc accessibility tree |
| 92 | - Xác định tất cả elements cần tương tác (inputs, buttons, links, dropdowns...) |
| 93 | - Thu thập locator tốt nhất cho mỗi element (theo priority trong skill `$smart-locator-agent`) |
| 94 | - Verify locator bằng cách thử tương tác (`browser_click`, `browser_type`) |
| 95 | |
| 96 | 3. **Ghi nhận vào bảng Locator Collection:** |
| 97 | |
| 98 | | Page | Element | Action | Primary Locator | Fallback Locator | Verified | |
| 99 | |---|---|---|---|---|---| |
| 100 | | LoginPage | Email input | Type | `getByLabel('Email')` | `#email` | ✅ | |
| 101 | | LoginPage | Password input | Type | `getByLabel('Password')` | `#password` | ✅ | |
| 102 | | LoginPage | Login button | Click | `getByRole('button', {name: 'Login'})` | `button[type=submit]` | ✅ | |
| 103 | | DashboardPage | Welcome text | Assert | `getByRole('heading', {name: /We |