Help us improve
Share bugs, ideas, or general feedback.
From user-testing-agent
Runs smoke tests for login, signup, checkout, navigation, and search flows in web apps. Validates critical functionality before releases, deployments, or CI/CD.
npx claudepluginhub ncklrs/claude-chrome-user-testing --plugin user-testing-agentHow this skill is triggered — by the user, by Claude, or both
Slash command
/user-testing-agent:smoke-testingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run pre-configured smoke tests for common user flows. Quick validation that critical functionality works.
Automates visual testing, UI interactions, accessibility audits, and performance checks on deployed web apps using browser automation like Playwright or Puppeteer.
Guides manual testing of app features with checklists, edge case identification, cross-browser and mobile verification, and structured QA workflows before deployment.
Audits web app UX by dogfooding as user persona: tracks emotional friction, click efficiency, resilience to back/refresh, return intent. Uses Playwright/Chrome MCP for live sites, outputs ranked reports.
Share bugs, ideas, or general feedback.
Run pre-configured smoke tests for common user flows. Quick validation that critical functionality works.
Smoke testing is a quick sanity check to ensure basic functionality works before deeper testing. The name comes from electronics - if you turn on a circuit and smoke comes out, you know something is wrong without further testing.
Purpose: Verify authentication works
Steps:
test@example.com / testpassword123)Failure Indicators:
Purpose: Verify registration works
Steps:
Test Data:
test-{timestamp}@example.comPurpose: Verify purchase flow initiates
Steps:
Does NOT:
/stripe-test for that)Purpose: Verify site navigation works
Steps:
Checks:
Purpose: Verify search works
Steps:
Checks:
{
"name": "preset-name",
"description": "What this preset tests",
"defaultPersona": "persona-id",
"tasks": [
"First task description",
"Second task description",
"Third task description"
],
"successCriteria": [
"What indicates success",
"Another success indicator"
],
"timeout": 120,
"testData": {
"email": "test@example.com",
"password": "testpassword123"
}
}
For each task in tasks array:
1. Announce task (unless --quiet)
2. Execute using persona's timing
3. Capture evidence:
- Screenshot on success
- Screenshot + error details on failure
4. Record status: PASS / FAIL / SKIP
5. If FAIL and not --continue-on-error: stop
PASS: All success criteria met FAIL: Any task fails or criteria unmet SKIP: Step skipped due to earlier failure
--quiet mode: minimal delaystimeout field# Smoke Test Report: [preset]
## Configuration
- **URL**: [url]
- **Preset**: [preset]
- **Persona**: [name] ([id])
- **Date**: [timestamp]
## Results
| Step | Status | Duration | Notes |
|------|--------|----------|-------|
| [Task 1] | PASS | 2.3s | - |
| [Task 2] | PASS | 1.8s | - |
| [Task 3] | FAIL | 5.0s | Element not found |
## Summary
- **Overall**: FAIL
- **Steps Passed**: 2/3
- **Duration**: 9.1s
## Failure Details
### Step 3: [Task 3]
- **Error**: Element not found
- **Expected**: Submit button visible
- **Actual**: Page showed error message

## Recommendations
1. Check if [specific element] exists on the page
2. Verify [specific functionality]
Smoke Test: login @ https://example.com
Persona: busy-executive
[1/5] Find login.......... PASS (1.2s)
[2/5] Navigate............ PASS (0.8s)
[3/5] Enter credentials... PASS (2.1s)
[4/5] Submit form......... FAIL (5.0s)
Error: Form validation failed
Result: FAIL (3/5 steps)
Duration: 9.1s
Users can create custom presets in .claude/smoke-presets/:
.claude/
└── smoke-presets/
├── onboarding.json
├── checkout-guest.json
└── admin-login.json
.claude/smoke-presets/{preset}.json (project custom)skills/smoke-testing/presets/{preset}.json (built-in)# If smoke test passes, run detailed testing
/smoke-test --url https://example.com --preset checkout --quiet
# If passed:
/user-test --url https://example.com --persona comparison-shopper --tasks "complete purchase" --stripe
# Run all smoke tests
/smoke-test --url $DEPLOY_URL --preset login --quiet
/smoke-test --url $DEPLOY_URL --preset navigation --quiet
/smoke-test --url $DEPLOY_URL --preset search --quiet
# If all pass, run full suite
/user-test --url $DEPLOY_URL --personas "genz-digital-native,boomer-tech-averse" --quiet
--quiet for automation