Scope: Áp dụng cho mọi tác vụ Test Automation do Gemini (Antigravity) hoạt động trong dự án này. Mục tiêu: Sinh ra test scripts hiệu quả, ổn định – dễ debug – dễ scale – CI friendly.
- Tuyệt đối KHÔNG dùng lệnh GIT làm thay đổi trạng thái code (như
git pull,git checkout,git merge,git rebase,git reset) để lấy code hoặc thay đổi nhánh. - Vì có nhiều trường hợp code trên server chưa được cập nhật, việc pull code về sẽ ghi đè và làm sai toàn bộ phần code đang chỉnh sửa ở máy local.
- Luôn giữ nguyên trạng thái code local hiện tại để làm việc.
- Nếu cần file hoặc nội dung mới, hãy yêu cầu người dùng cung cấp thay vì tự ý dùng git.
- Được phép dùng lệnh read-only:
git status,git diff,git log— để kiểm tra trạng thái mà không thay đổi code.
- Tất cả UI debugging phải chạy với desktop viewport:
1920x1080 - Bắt buộc mở browser thật khi debug (headed mode)
- Headless mode chỉ được sử dụng sau khi test đã debug PASS trên UI
- CI/CD pipeline được phép chạy headless mặc định
Khi dùng Playwright MCP để debug UI, LUÔN tuân theo thứ tự:
navigate → resize(1920×1080) → wait_for(page_load) → snapshot → interact → screenshot(on_fail)
- KHÔNG gọi
browser_navigatelại nếu đã đang ở đúng trang — tránh reload ngoài ý muốn - LUÔN gọi
browser_resize(width=1920, height=1080)ngay saubrowser_navigate - LUÔN verify page đã load xong trước khi lấy snapshot hoặc tương tác
- Dùng
snapshotđể phân tích DOM và xác định locator - Dùng
screenshotđể lưu bằng chứng khi test fail hoặc để báo cáo - Chụp screenshot ngay khi assertion fail để hỗ trợ truy vết lỗi
- KHÔNG chụp screenshot tràn lan — chỉ khi cần thiết (fail / milestone quan trọng)
- Ưu tiên sử dụng Playwright MCP cho tất cả tác vụ debug UI
- Tham chiếu rule chi tiết: Quy tắc Playwright
- Mở browser thật để debug (headed mode)
- Inspect DOM / HTML thực tế trên trình duyệt — KHÔNG đoán locator
- Execute và debug test trực tiếp trên UI trước khi sinh code
- KHÔNG generate code khi chưa inspect DOM
- Một locator phải được verify chạy được trên browser hiện tại trước khi đưa vào code
- Nếu locator lấy từ code cũ → bắt buộc verify lại trước khi dùng
Test chỉ được coi là hoàn thành khi đáp ứng toàn bộ các tiêu chí sau:
- Xoá toàn bộ
print(),console.log(), debug log tạm thời - Xoá locator không còn sử dụng
- Không để lại commented-out code
- Không có
waitForTimeout/Thread.sleephardcoded - Không có test data hardcoded (email, username, ID phải random/traceable)
- Tuân thủ mô hình Page Object Model — tách biệt Page class, Test class, Utils
- Locator được định nghĩa trong Page class, không viết inline trong test
- Tên file, class, method đặt theo convention rõ ràng và nhất quán
- Import không còn thừa (unused imports)
- Test PASS ổn định ít nhất 2 lần liên tiếp trên UI (headed mode)
- Assertion có message rõ ràng, dễ debug khi fail
- Mỗi test case độc lập — không phụ thuộc thứ tự chạy
- Test data được sinh động (timestamp/random) và traceable
- Source code được lưu đúng vị trí trong project structure
- Không có file tạm, file test thừa trong thư mục source
- File cấu hình (config, .env) không chứa credentials thật
- Tóm tắt kết quả: số test PASS / FAIL / SKIP
- Nêu rõ các TC đã implement và TC nào bị skip (kèm lý do)
- Ghi chú các known issues hoặc limitation nếu có
- Luôn giao tiếp, giải thích ý tưởng và báo cáo bằng Tiếng Việt.
- Diễn giải ngắn gọn, rõ ràng, dễ hiểu.
- Tránh suy đoán lập trình hoặc giải thích mơ hồ về lỗi mà cần có căn cứ trực tiếp.
- Recon (Điều tra): Luôn inspect giao diện thực tế hoặc DOM/HTML/XML trước khi viết automation. Tuyệt đối KHÔNG ĐOÁN locator.
- Implementation: Giữ vững mô hình Page Object Model (POM). Phân tách rõ Page objects, Test execution và Utils/Test data.
- Execution & Self-fix: Chạy test ngay sau khi code xong. Nếu test FAIL → tự đọc log → phân tích root cause → sửa code → chạy lại → đến khi PASS ổn định. Chỉ hỏi User khi gặp business rule mâu thuẫn.
- Cleanup: Gỡ bỏ debug logs, code thừa, locator không dùng trước khi deliver.
| Loại | Công nghệ |
|---|---|
| Ngôn ngữ | Java, TypeScript |
| Web Automation | Playwright (TS/Java), Selenium WebDriver (Java) |
| Mobile Automation | Appium (Java) |
| API Automation | REST Assured |
| Test Framework | TestNG, Playwright Test |
| Build Tool | Maven, npm |
Agent phải tham chiếu quy tắc chi tiết trong .agent/rules/:
- Quy tắc chung Automation — POM, Test Data, Naming, Assertions
- Chiến lược chọn Locator — Thứ tự ưu tiên locator
- Quy tắc Playwright — Browser setup, locator semantic, wait strategy
- Quy tắc Selenium — WebDriverWait, TestNG structure
- Quy tắc Appium — Mobile locator, scroll, permission
Agent sử dụng skills trong .agent/skills/ tùy theo nhiệm vụ:
| Skill | Vai trò |
|---|---|
qa_automation_engineer |
Master skill cho automation — điều phối toàn bộ quy trình |
rbt_manual_testing |
Master skill cho manual testing — 2 modes: QUICK (sinh TC nhanh) và FULL RBT (6 bước) |
requirements_analyzer |
Phân tích requirements từ website/tài liệu |
ui_debug_agent |
Inspect UI/DOM, thu thập locators |
smart_locator_agent |
Sinh locator mới ổn định |
locator_healer_agent |
Sửa locator hỏng |
test_data_generator |
Sinh test data unique, traceable — hỗ trợ multi-step pipeline & combinatorial data |
flaky_test_analyzer |
Phân tích và khắc phục flaky tests |
jira_integration |
Tích hợp Jira/Xray — lấy requirements, đẩy test results |
Các bộ prompt template sẵn dùng trong plans/:
-
plans/manual/— Quy trình sinh Manual Test Cases (2 modes: QUICK + FULL RBT)- Xem
plans/manual/QUICK_START.mdđể bắt đầu nhanh - Workflow QUICK:
/generate_testcases_from_requirements - Workflow FULL RBT:
/generate_manual_testcases_rbt
- Xem
-
plans/automation/— Quy trình 6 bước sinh Automation Scripts- Xem
plans/automation/QUICK_START.mdđể bắt đầu nhanh - One-click: Copy
plans/automation/prompt_automation.txt - Workflow:
/generate_automation_from_testcases
- Xem
-
plans/cross-module/— Quy trình phân tích Cross-Module & Ma trận kết hợp- Xem
plans/cross-module/QUICK_START.mdđể bắt đầu nhanh - Workflow phân tích:
/generate_cross_module_test_plan - Workflow sinh data:
/generate_combinatorial_test_data
- Xem
- Tất cả field yêu cầu unique (Email, Username, Code/ID): BẮT BUỘC dùng dữ liệu random.
- Dữ liệu random phải traceable / deterministic — có thể truy ngược test gây lỗi.
- Format khuyến nghị: kết hợp
test name + timestamp + prefix.
Ví dụ:
email: test_login_1712049200@auto.test
username: auto_user_1712049200
code: TC_LOGIN_1712049200
- KHÔNG dùng hard sleep (
waitForTimeout,Thread.sleep, fixed delay). - Chỉ sử dụng smart waits / auto-waiting:
| Framework | Smart Wait |
|---|---|
| Playwright | expect().toBeVisible(), expect().toBeEnabled(), Locator APIs |
| Selenium | WebDriverWait + ExpectedConditions |
| Appium | WebDriverWait + custom conditions |
- Hạn chế
waitForSelectornếuexpect()đáp ứng được. - Mọi assertion phải có timeout rõ ràng hoặc dùng default timeout hợp lý.
| ❌ Anti-Pattern | ✅ Thay thế đúng |
|---|---|
| Guess selector / đoán locator | Inspect DOM thực tế trước khi code |
Hard sleep (waitForTimeout, Thread.sleep) |
Smart waits (expect(), WebDriverWait) |
| Copy selector từ code cũ không verify | Luôn verify selector trên browser hiện tại |
| Viết test không chạy ngay | Chạy test ngay sau khi implement |
| Commit test FAIL | Chỉ commit khi test PASS ổn định |
| Để debug log / commented code khi deliver | Cleanup trước khi deliver |
| Dùng test data hardcoded trùng lặp | Sinh data random + traceable |
Agent sử dụng workflows trong .agent/workflows/ qua slash commands:
| Workflow | Mô tả |
|---|---|
/generate_requirements_from_website |
Sinh requirements từ website/module |
/analyze_requirement_document |
Phân tích requirement document (Jira/.doc) — sinh tài liệu phân tích, KHÔNG sinh TC |
/generate_manual_testcases_rbt |
Sinh manual test cases theo AI-RBT 6 bước (FULL RBT mode) |
/generate_testcases_from_requirements |
Sinh test cases nhanh từ requirements (QUICK mode) |
/generate_automation_from_testcases |
Chuyển manual test cases → automation scripts |
/generate_automation_from_ui_flow |
Sinh automation từ UI flow trực tiếp |
/generate_application_test_plan |
Khám phá app, sinh test plan (Mode PLAN) hoặc full suite (Mode FULL) |
/generate_automation_framework |
Thiết kế automation framework |
/generate_locator |
Sinh locator ổn định cho UI element |
/generate_test_data |
Sinh test data có cấu trúc |
/generate_cross_module_test_plan |
Phân tích cross-module (2 modes: DOCUMENT/BROWSER), sinh ma trận kết hợp bằng script pairwise |
/generate_combinatorial_test_data |
Sinh test data cho ma trận kết hợp — offline hoặc pipeline qua browser |
/generate_api_tests_from_swagger |
Sinh API tests từ Swagger spec |
/analyze_flaky_tests |
Phân tích và khắc phục flaky tests |
/fetch_jira_requirements |
Lấy requirements/user stories từ Jira |
/import_test_results_xray |
Đẩy kết quả test lên Xray |