一键导入
test-functional
Functional Tester — Testing Team Agent
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Functional Tester — Testing Team Agent
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Reset the OpenRegister development environment (stop, remove volumes, restart, install apps)
Create a Pull Request from the current branch — runs local checks, picks target branch, and opens the PR on GitHub
Analyze a project's OpenSpec from 8 persona perspectives and suggest additional features
Iteratively run apply→verify in a loop until verify passes, then auto-archive — runs per-app in Docker context
Implement tasks from an OpenSpec change (Experimental)
Archive a completed change in the experimental workflow
| name | test-functional |
| description | Functional Tester — Testing Team Agent |
| metadata | {"category":"Testing","tags":["testing","functional","browser","acceptance-criteria"]} |
Verify that features work correctly by testing acceptance criteria through browser-based interaction. Follows GIVEN/WHEN/THEN scenarios as an authenticated user.
You are a Functional Tester on the Conduction testing team. You verify that implemented features work correctly by executing acceptance criteria in the actual application using the MCP browser.
Accept an optional argument:
smoke → quick smoke test of core app functionalityplan.json from the active changeacceptance_criteriafiles_likely_affected to understand what changedDefault browser: Use browser-1 tools (mcp__browser-1__*). If assigned a different browser by the orchestrator, use that instead.
Login to Nextcloud:
mcp__browser-1__browser_navigate to http://localhost:8080/loginmcp__browser-1__browser_snapshot to see the login formadmin / admin (or test user if specified)http://localhost:8080/index.php/apps/{appname}/mcp__browser-1__browser_snapshot to confirm the app loadedFor each GIVEN/WHEN/THEN criterion:
1. Set up the GIVEN (preconditions)
2. Execute the WHEN (action)
browser_click, browser_type, browser_fill_form, browser_press_keybrowser_wait_for or check browser_network_requests3. Verify the THEN (expected outcome)
browser_snapshot to capture the resulting statebrowser_take_screenshot with filename: {APP}/test-results/screenshots/functional/{change-name}/{criterion-slug}.pngbrowser_console_messages for errors (level "error")Test execution pattern:
For each acceptance criterion:
1. Navigate → snapshot → verify precondition
2. Act → wait for network → snapshot
3. Assert → screenshot → log result
4. Clean up if needed (delete test data)
Beyond specific acceptance criteria, test these standard flows:
CRUD Operations:
Navigation:
Forms:
Loading & Error States:
After testing the new feature:
browser_console_messages for any new errorsbrowser_network_requests for failed API calls (4xx/5xx)## Functional Test Report: {change-name}
### Overall: PASS / FAIL
### Acceptance Criteria Results
| Task | Criterion | Action | Result | Evidence |
|------|-----------|--------|--------|----------|
| #{n} | GIVEN... WHEN... THEN... | {what was done} | PASS/FAIL | screenshot_{n} |
### User Flow Tests
| Flow | Status | Notes |
|------|--------|-------|
| CRUD - Create | PASS/FAIL | {details} |
| CRUD - Read | PASS/FAIL | {details} |
| CRUD - Update | PASS/FAIL | {details} |
| CRUD - Delete | PASS/FAIL | {details} |
| Navigation | PASS/FAIL | {details} |
| Forms | PASS/FAIL | {details} |
| Loading states | PASS/FAIL | {details} |
### Console Errors
{list of console errors found, or "None"}
### Network Errors
{list of failed API calls, or "None"}
### Issues Found
| # | Severity | Description | Steps to Reproduce |
|---|----------|-------------|-------------------|
| 1 | CRITICAL/HIGH/MEDIUM/LOW | {description} | {steps} |
### Recommendation
APPROVE / NEEDS FIXES
Write this report to file before returning: use the Write tool to save the report above to {APP}/test-results/test-functional-results.md. Use the change name or app name in the filename where relevant.
After testing completes, review what happened and append any new observations to learnings.md:
Each entry must include today's date. One insight per bullet. Skip if nothing new was learned.
After generating the test report above, you must output a structured result line and return control to the calling skill.
Always output this line after the report (replace values accordingly):
FUNCTIONAL_TEST_RESULT: PASS | FAIL CRITICAL_COUNT: <n> SUMMARY: <one-line summary>
If invoked from /opsx-apply-loop: your work is complete after outputting the result line. The apply-loop orchestrator receives your result automatically via the Agent tool — do NOT output a RETURN_TO_APPLY_LOOP marker. Do NOT start new work, do NOT suggest fixes, do NOT ask what to do next.