Agent skill
cms-qa-testing
Comprehensive QA automation for dart_desk using Marionette MCP. Run test suites or individual test files against a running Flutter app.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/skill-thangvunguyenviet-dart-desk
SKILL.md
CMS QA Testing Skill
Executes structured QA test cases against a running dart_desk app via Marionette MCP.
Prerequisites
- Dart Desk app running in debug mode with the mock data source and test document types
- Marionette MCP server connected to the app's VM service URI
- The app should be on the studio screen with at least one document type visible in the sidebar
Invocation
User says one of:
- "run the CMS test suite" -> run all test files 01-10
- "run test 04" or "run field types basic" -> run a specific test file
- "re-discover test 02" -> force re-run discovery even if replay exists
Execution Flow
Phase 1: Discovery Run
For each test file to execute:
- Read the test file from
packages/dart_desk/test_automation/tests/ - Check if a replay file exists in
packages/dart_desk/test_automation/replays/and is newer than the test file. If so, use Phase 2 instead. - For each test case in the file:
a. Log the test case ID and title
b. Execute each step using marionette tools:
tapfor button/element interactionsenter_textfor text inputscroll_tofor scrolling to elements c. After each action, callget_interactive_elementsto verify expected state d. Compare actual elements against the Expected section e. Take a screenshot and save toresults/screenshots/{test_case_id}.pngf. Record PASS if all expectations met, FAIL with notes if not g. Record the marionette commands (tap, enter_text, scroll_to only -- NOT get_interactive_elements or take_screenshots) into the replay action list
- After all test cases in a file pass, write the replay JSON to
replays/{test_file_name}.json - Reset app state by calling
mcp__dart__hot_restart(requires DTD connection) - Wait 3 seconds after hot restart for the app to stabilize, then reconnect marionette
Phase 2: Replay Run
- Read the replay JSON from
packages/dart_desk/test_automation/replays/{test_file_name}.json - For each test case:
a. Execute the stored
actionssequentially (tap, enter_text, scroll_to) b. At eachverifycheckpoint, callget_interactive_elementsand checkexpect_textc. Take a screenshot at each verify point d. Record PASS/FAIL - If any verification fails, mark as FAIL and suggest re-running discovery
Replay JSON Format
{
"test_file": "02_document_crud.md",
"recorded": "2026-03-16T10:30:00",
"test_cases": [
{
"id": "TC-02-01",
"title": "Create a new document",
"actions": [
{"action": "tap", "params": {"text": "+"}}
],
"verify": [
{"action": "get_interactive_elements", "expect_text": ["My Test Document"]}
]
}
]
}
Results Report
After all test files complete, write a markdown report to results/reports/YYYY-MM-DD-HHmm.md:
# CMS QA Test Report - {date}
## Summary
- **Total:** X test cases
- **Passed:** Y
- **Failed:** Z
- **Skipped:** W
## Results
### 01 - Sidebar Navigation
| ID | Title | Result | Notes |
|---|---|---|---|
| TC-01-01 | Select document type | PASS | |
| TC-01-02 | Selection indicator | PASS | |
### 02 - Document CRUD
...
Interaction Rules
- Always use
get_interactive_elementsafter every action to verify state - Use
textparameter for tapping -- never coordinates - Take screenshots only at verification checkpoints, not after every action
- If an element cannot be found by text, check if it has a
Keyand use that - If neither text nor key works, report the element as untestable and SKIP the test case
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?