click-around
GitHub自动化浏览器QA与UX冒烟测试工具。启动开发服务器,控制Chrome遍历指定功能区的用户故事,监控控制台与网络错误,生成结构化报告,涵盖正常、空状态及异常场景。
Trigger Scenarios
Install
npx skills add stella/stella --skill click-around -g -y
SKILL.md
Frontmatter
{
"name": "click-around",
"description": "Autonomous browser-based QA and UX smoke test. Starts the dev server, takes control of Chrome, walks through user stories for a feature area, monitors the console, and produces a structured report on what works, what breaks, and what feels wrong."
}
Click Around
Autonomous browser-based QA and UX smoke test. Starts the dev server, takes control of Chrome, walks through user stories for a feature area, monitors the console, and produces a structured report on what works, what breaks, and what feels wrong.
Arguments
$ARGUMENTS — The feature area to test (e.g., "time tracking", "invoicing", "document upload"). If empty, ask the user.
Instructions
Phase 1: Setup
-
Start the dev server using the
/devskill flow:- Kill stale processes on ports 3000/3001
- Start API and web servers
- Wait for both to be ready
-
Get browser context:
- Call
tabs_context_mcpto see existing tabs - If
/devalready opened a tab tolocalhost:3000, use that tab; otherwise create a new one
- Call
-
Start monitoring — from this point on, after every significant browser action, check for errors:
read_console_messageswith pattern:"error|Error|warn|Warning|Uncaught|rejected|fail|500|4\\d{2}"read_network_requestsfor failed API calls (4xx, 5xx)- Filter out dev noise: React strict mode double-renders, HMR messages, Vite internal logs
- Log any genuine errors against the current story
-
Authenticate if needed:
- Read the page to check if you're on a login screen
- This app uses email OTP, not password login. First
ensure the test user exists:
bun apps/api/scripts/seed-test-user.ts - Enter
test@stella.devin the email field and submit - In dev mode, the OTP is logged to the API server
console. Read the API process output to find the line:
[DEV] OTP for test@stella.dev: {code} (type: ...) - Enter the OTP code in the browser to complete login
- Verify you land on the dashboard
-
Navigate to the feature area described in
$ARGUMENTS:- Read the sidebar/navigation to find the relevant section
- Click into it
Phase 2: Generate User Stories
Before clicking around, generate 4-8 concrete user stories for the feature area. These should cover:
- Happy path: the most common, expected flow
- Empty state: what happens with no data yet
- Creation flow: adding a new item
- Edit flow: modifying an existing item
- Error case: invalid input, missing required fields
- Edge case: boundary values, long text, special characters
- Batch/bulk: multi-select, bulk actions (if applicable)
- Navigation: back button, breadcrumbs, deep links
Present the stories to the user and ask if they want to adjust the list or add specific scenarios before proceeding.
Phase 3: Execute Stories
For each user story:
-
Announce which story you're starting (print to output)
-
Record baseline — call
read_console_messagesandread_network_requests; note the timestamp (or count) of the most recent entry in each. When checking for errors after actions, only count messages and requests newer than these baselines to avoid re-reporting findings from earlier stories. -
Walk through the story step by step:
- Use
read_pagebefore each action to understand the current UI state - Use
findto locate interactive elements - Use
computer(click/type) orform_inputfor interactions - After each action, pause briefly and
read_pageagain to verify the result - Monitoring is always active (Phase 1, step 3)
- Use
-
Log the result for this story:
- Status: pass / fail / partial
- Console errors (if any), with timestamps
- Network failures (if any)
- UX observations (see Phase 4 rubric)
Phase 4: UX Assessment Rubric
While executing each story, evaluate against these criteria. Don't just check for crashes; assess the experience:
Responsiveness
- Do actions feel instant (<100ms visual feedback)?
- Are there loading spinners, or does the UI freeze?
- Do optimistic updates work, or does the user wait for the server?
Clarity
- Is it obvious what to do next at each step?
- Are form labels clear? Are required fields marked?
- Do error messages explain what went wrong and how to fix it?
- Are empty states helpful (not just blank)?
Consistency
- Do similar actions behave the same way across the feature?
- Do buttons, inputs, and layouts match the rest of the app?
- Are status badges/colors consistent with other features?
Data integrity
- Does created data appear immediately in lists?
- Do edits persist after page refresh?
- Does deletion actually remove the item?
- Are numbers (amounts, durations) formatted correctly?
Edge cases
- What happens with very long text in inputs?
- What happens if you submit an empty form?
- What happens if you double-click a submit button?
- What happens if you navigate away mid-form?
Accessibility basics
- Can you tab through form fields in logical order?
- Do dialogs trap focus?
- Are there visible focus indicators?
Phase 5: Report
After all stories are executed, produce a structured report:
## Click-Around Report: {feature}
**Date:** {date}
**Environment:** localhost:3000 (dev)
**Stories tested:** {n}/{total}
### Summary
{2-3 sentence overall assessment}
### Results
| # | Story | Status | Issues |
|---|-------|--------|--------|
| 1 | ... | pass | — |
| 2 | ... | fail | Console error: ... |
| 3 | ... | partial | UX: no loading state |
### Console Errors
{List all unique console errors with the story that triggered
them. Group duplicates.}
### Network Failures
{List all failed API calls: method, URL, status, response body
if available.}
### UX Issues (by severity)
**Blockers** (prevents completing the task):
- ...
**Bugs** (wrong behavior, but workaround exists):
- ...
**Paper cuts** (annoying but functional):
- ...
**Suggestions** (not broken, but could be better):
- ...
### Recommended Next Steps
{Prioritized list of fixes/improvements, ordered by impact.
Reference specific files and components where possible.}
Save this report to .agents/reports/click-around-{feature-slug}-{date}.md
where {feature-slug} is the feature name lowercased with spaces
replaced by hyphens (e.g., time-tracking, document-upload),
and {date} is YYYY-MM-DD (e.g., 2026-03-15).
Important Guidelines
- Don't get stuck. If a step fails after 2 attempts, log it as a failure and move to the next story. Don't retry endlessly.
- Be realistic. Interact like a real user would: don't use perfect timing, try clicking things that look clickable, notice if labels are confusing.
- Watch for regressions. If you've tested this feature
before (check
.agents/reports/), compare against the previous report and note improvements or regressions. - Don't fix bugs during the test. The goal is to observe and report, not to fix. Fixing changes the state and invalidates subsequent tests.
- Console noise. Some warnings are expected in dev mode (React strict mode double-renders, HMR messages). Filter these out; only report genuine errors.
Version History
- 85792bd Current 2026-07-24 16:12


