mcpField
T
tc-run

tc-run

github.com/rheinmirTesting & quality1082 installsUpdated 2w ago
Repository

About tc-run

tc-run is a skill for turning a complete .xlsx test-case file into batched browser test results and tester-kit reports. It classifies cases, runs eligible tests in an already authenticated user session, and records status with screenshots and observed results.

Key features

  1. 01Extract and classify spreadsheet test cases
  2. 02Plan batches of up to 8 test cases
  3. 03Run browser tests in an authenticated session
  4. 04Record PASS/FAIL/BLOCK with screenshots
  5. 05Create per-batch tester-kit reports

Use cases

  1. 01Run SIT, UAT, or regression test spreadsheets
  2. 02Separate UI cases from calculation and gap cases
  3. 03Capture evidence for each executed test case
  4. 04Summarize batch results in Excel reports

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/rheinmir/setup --skill tc-run

After installing, type/tc-runin Claude Code to confirm it loaded.

Details

From the project README

Skill: tc-run — từ file test case đầy đủ đến report từng lô

Bóc từ phiên Payroll SIT 15/09/2026 (335 TC, 7 sheet). Tool tất định: harness/scripts/tc-xlsx.py (extract · classify · plan · report). Runtime chạy lô: /orca-graph. Trình duyệt: claude-in-chrome trên phiên user đã đăng nhập (SSO). Report: MCP tester-kit → tao_report_test.

WHAT

Purpose và context
  • Purpose: biến MỘT file test case .xlsx đầy đủ thành kết quả PASS/FAIL/BLOCK có ảnh từng TC và mỗi lô một report .xlsx tester-kit.
  • Trigger (when to use): User đưa một file test case .xlsx (SIT/UAT/regression) và muốn "chạy xem", "break nhỏ", "xuất report".
  • Non-goals: KHÔNG dùng để viết test case mới (đó là /uat-nonit-testcase), không dùng cho unit test code.
Mental model

xlsx → tcs.json (extract) → nhãn ui|calc|perf|security|gap (classify) → PLAN theo lô → orca-graph (t1 hitl đăng nhập → các lô song song → report) → results/<lô>.json + shots/<id>.png → report-<lô>.xlsx → summary.md.

Input và output contract
FieldRequired?Ý nghĩa
Infile test case .xlsxcónhiều sheet, cột Test Case ID/Description/Steps/Expected/Priority/Type
InURL app + phiên đăng nhậpcóuser tự đăng nhập trong tab claude-in-chrome (HITL)
Indữ liệu đầu vào calckhôngpersona/kỳ lương do user chuẩn bị; thiếu thì TC calc không chạy
Outtcs.json + bảng phân loại theo sheetcósố ui/calc/perf/security/gap
OutPLAN.md + graphcólô ≤ 8 TC, graph ≤ 20 node
Outresults/<lô>.json + shots/<id>.pngcóPASS/FAIL/BLOCK + actual + evidence từng TC
Outreport-<lô>.xlsx + summary.mdcóreport tester-kit mỗi lô; tổng hợp theo lô
Rules và capabilities
  • RULE-01 (MUST): Kết quả từng TC phải có ảnh thật + actual quan sát được; không có ảnh thì không được PASS.
  • RULE-02 (MUST): calc chỉ chạy khi có dữ liệu đầu vào (persona/kỳ lương) do user chuẩn bị; không tự bịa số.
  • RULE-03 (MUST): security và perf ghi rõ "ngoài phạm vi tự động" trong summary, không lặng lẽ bỏ.
  • RULE-04 (MUST): Lô ≤ 8 TC để ảnh và context không phình; graph ≤ 20 node (giới hạn orca-graph) → file > ~150 TC ui thì chia nhiều PLAN (graph mẹ → con).
  • RULE-05 (MUST): Report đúng schema tester-kit: priority High/Medium/Low (P0,P1→High, P2→Medium, P3→Low), description gồm STEPS/EXPECTED/ACTUAL/STATUS.
  • Capabilities: đọc xlsx + phân loại tất định; điều khiển trình duyệt trên phiên user đã đăng nhập; ghi file kết quả/ảnh cục bộ; gọi dịch vụ xuất report.
Failure boundaries
  • Gặp trang login/SSO → blocked chờ user đăng nhập trong chính tab; không nhập mật khẩu, không bấm SSO thay user.
  • Bước cần Lưu/Xoá/Cập nhật trên dữ liệu thật → TC đó BLOCK "cần môi trường SIT riêng", trừ khi user cho phép rõ.
  • TC calc thiếu dữ liệu đầu vào, gap steps rỗng → không chạy, liệt kê trong summary (partial).
  • Không chụp được ảnh → TC không được PASS.

HOW

Main workflow
StepTypeInputsActionOutputs/exitFailure/next
W01deterministicfile .xlsxBóc + phân loại (tc-xlsx.py extract rồi classify), báo bảng theo sheettcs.json + bảngheuristic sai → sửa nhãn auto, nói rõ TC nào
W02deterministictcs.jsonSinh PLAN theo lô rồi dựng graph (orca-graph.py build --strict)PLAN + graphbuild lỗi → sửa PLAN rồi lặp
W03effectURL appPhiên đăng nhập HITL, ghi app.json → set t1 done_user_reportedđã loginthấy login/SSO → dừng nhờ user
W04effectlôChạy từng lô: lock → dispatched → làm → set done, chụp ảnh, so Expectedresults/<lô>.jsonghi dữ liệu thật → BLOCK TC đó
W05effectresultsReport mỗi lô qua tao_report_test + summary.mdreport-<lô>.xlsx, summary—
W06deterministicgraphTheo dõi tiến độ trên cockpit, audit câu trả lời modeltiến độ—

Chi tiết từng bước (nguồn chân lý cho W01–W06):

  1. Bóc + phân loại (0 token):
    python3 harness/scripts/tc-xlsx.py extract <file.xlsx> -o scratchpad/<tên>/tcs.json
    python3 harness/scripts/tc-xlsx.py classify scratchpad/<tên>/tcs.json
    
    Báo user bảng theo sheet: bao nhiêu ui (chạy được bằng trình duyệt), calc (cần dữ liệu đầu vào, kiểm số), perf, security (SSO/đăng nhập, không tự động hoá an toàn), gap (steps rỗng/chờ nghiệp vụ). Heuristic sai thì sửa nhãn auto trong tcs.json và nói rõ đã sửa TC nào.
  2. Sinh PLAN theo lô rồi dựng graph:
    python3 harness/scripts/tc-xlsx.py plan tcs.json --app "<tên app (URL)>" --batch 8 --only ui -o llmwiki/wiki/sources/draft/DDMMYY-<tên>-PLAN.md
    python3 harness/scripts/orca-graph.py build <PLAN> --strict && orca-graph.py ask <id> parallel
    
    Task 1 luôn là hitl (khảo sát app + phiên đăng nhập); các lô song song; task cuối xuất report. Mỗi lô là một node có verify = file results đủ số TC.
  3. Phiên đăng nhập — HITL, không được vượt: mở URL trong tab claude-in-chrome; thấy trang login/SSO → dừng, nhờ user bấm đăng nhập trong chính tab đó. Không nhập mật khẩu, không bấm nút SSO thay user. Đăng nhập xong → ghi app.json (logged_in: true, menu thật) → set t1 done_user_reported.
  4. Chạy từng lô (lock → dispatched → làm → set done): mỗi TC theo Test Steps bằng find/computer/read_page, chụp ảnh shots/<id>.png, so Expected → PASS|FAIL|BLOCK + actual + evidence. Dừng trước mọi Lưu/Xoá/Cập nhật trên dữ liệu thật → BLOCK "cần môi trường SIT riêng", trừ khi user cho phép rõ. Ghi results/<lô>.json.
  5. Report mỗi lô: tc-xlsx.py report results/<lô>.json --tcs tcs.json --url <URL> → payload → gọi MCP tao_report_test → chép xlsx về report-<lô>.xlsx. Cuối cùng summary.md: PASS/FAIL/BLOCK theo lô, TC cần người, TC calc/perf/security còn lại.
  6. Theo dõi tiến độ trên cockpit (control-room.html); audit câu trả lời model như orca-graph.
Branches
IDKindGuardHành viSkip / failureRejoin
B01recoveryheuristic classify gán nhãn saisửa nhãn auto trong tcs.json, nói rõ đã sửa TC nào—W02
B02conditional_requiredfile > ~150 TC ui (vượt 20 node)chia nhiều PLAN (graph mẹ → con)—W03
B03user_optionaluser cho phép rõ ghi dữ liệu thậtchạy cả bước Lưu/Xoá/Cập nhậtkhông cho phép → BLOCK "cần môi trường SIT riêng"W04
B04conditional_requiredcó TC calc và user đã chuẩn bị persona/kỳ lươngchạy TC calc, kiểm sốthiếu dữ liệu → không chạy, ghi summaryW05
Validation và stopping

Mỗi lô là một node có verify = file results đủ số TC; PASS chỉ khi có ảnh thật + actual. Dừng khi mọi node lô done và mỗi lô có report; TC còn lại (calc/perf/security/gap, BLOCK) liệt kê trong summary.md.

Examples
  • Positive: file SIT Payroll 335 TC, 7 sheet → classify ra phần ui → plan --batch 8 --only ui → user đăng nhập SSO trong tab → mỗi lô 8 TC có shots/<id>.png + results/<lô>.json → report-<lô>.xlsx + summary.md PASS/FAIL/BLOCK theo lô.
  • Boundary/failure: TC yêu cầu bấm "Lưu" bảng lương trên dữ liệu thật, user chưa cho phép → TC đó BLOCK "cần môi trường SIT riêng", không bấm; TC không chụp được ảnh → không PASS.
Recap

/tc-run = xlsx → tc-xlsx.py extract/classify → PLAN theo lô → orca-graph → chạy trên phiên đã login → results JSON + ảnh → tao_report_test mỗi lô → summary. Use-case bất ngờ: chạy classify trên file test case của team để thấy ngay bao nhiêu % là gap/chờ nghiệp vụ trước khi ai đó hứa ngày xong.

Comments

Markdown supported