Persona Testing
Test how real humans experience your site, not just whether buttons work.
The Problem
Traditional automation tests one thing: "Does this work?"
That's the wrong question. The right questions are:
- Does this work for a first-time user?
- Does this work for someone on mobile?
- Does this work for an elderly user with motor limits?
A checkout flow that works for developers might fail for 40% of real users.
Built-in Personas
CBrowser includes 6 realistic personas:
| Persona | Description | Behavior |
|---|---|---|
power-user |
Tech-savvy expert | Fast reactions, no errors, efficient navigation |
first-timer |
New to your site | Slow, exploratory, reads everything |
mobile-user |
Smartphone user | Touch interface, small screen, scroll-heavy |
elderly-user |
Older adult | Vision limits, slower motor control, careful reading |
screen-reader-user |
Blind user | Relies on ARIA, keyboard navigation only |
impatient-user |
Short attention span | Quick to abandon, skips content |
How It Works
Each persona has human behavior parameters:
Timing Parameters
timing: {
reactionTime: { min: 500, max: 2000 }, // MS before first action
clickDelay: { min: 200, max: 800 }, // MS between clicks
typeSpeed: { min: 50, max: 150 }, // MS per keystroke
readingSpeed: 200, // Words per minute
scrollPauseTime: { min: 500, max: 1500 } // MS after scrolling
}
Error Parameters
errors: {
misClickRate: 0.05, // 5% chance of missing target
doubleClickAccidental: 0.02, // 2% accidental double-clicks
typoRate: 0.03, // 3% typo rate per character
backtrackRate: 0.1 // 10% chance of going back
}
Mouse Behavior
mouse: {
curvature: 0.3, // How curved mouse paths are
jitter: 5, // Pixels of random movement
overshoot: 0.1, // 10% chance of overshooting
speed: "normal" // slow | normal | fast
}
Attention Patterns
attention: {
pattern: "f-pattern", // How they scan pages
scrollBehavior: "chunked", // continuous | chunked | jump
focusAreas: ["cta", "prices"], // What they notice first
distractionRate: 0.05 // 5% chance of getting distracted
}
Single Persona Exploration
Run an exploration as a specific persona (heuristic-based, free):
npx cbrowser explore "first-timer" \
--start "https://your-site.com" \
--goal "Complete signup and reach dashboard"
Output:
π Persona: first-timer (New user exploring for the first time)
π Journey Start: https://your-site.com
π― Goal: Complete signup and reach dashboard
Step 1: [2.3s] Scrolled down to explore page
Step 2: [4.1s] Read hero section (slower reading speed)
Step 3: [1.8s] Clicked "Sign Up" button
Step 4: [12.5s] Filled registration form (with 2 typos corrected)
Step 5: [0.8s] Clicked "Create Account"
Step 6: [3.2s] Waited for confirmation...
β
Goal Achieved!
β±οΈ Total Time: 45.2s
π΄ Friction Points: 2
- Form validation error was confusing
- Password requirements not visible until error
Multi-Persona Comparison
The real power: compare how different users experience the same flow.
npx cbrowser compare-personas \
--start "https://your-site.com" \
--goal "Complete checkout" \
--personas power-user,first-timer,elderly-user,mobile-user
Output:
βββββββββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬ββββββββββββββββββββββββββ
β Persona β Success β Time β Friction β Key Issues β
βββββββββββββββββββΌβββββββββββΌβββββββββββΌβββββββββββΌββββββββββββββββββββββββββ€
β power-user β β β 12.5s β 0 β - β
β first-timer β β β 45.2s β 2 β Confusing CTA β
β elderly-user β β β 120.3s β 5 β Small buttons, tiny textβ
β mobile-user β β β 28.1s β 1 β Horizontal scroll issue β
βββββββββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ΄ββββββββββββββββββββββββββ
π Recommendations:
β’ elderly-user failed - increase button sizes, use larger fonts
β’ first-timer took 3.6x longer than power-user - add more guidance
β’ mobile-user experienced horizontal scroll - fix responsive layout
Creating Custom Personas
From Natural Language
Describe the user. CBrowser generates the parameters.
npx cbrowser persona create "impatient developer who hates slow UIs" --name speed-demon
Generated:
{
"name": "speed-demon",
"description": "Impatient developer who hates slow UIs",
"timing": {
"reactionTime": { "min": 100, "max": 300 },
"clickDelay": { "min": 50, "max": 150 }
},
"errors": {
"misClickRate": 0.02,
"backtrackRate": 0.01
},
"attention": {
"pattern": "skim",
"distractionRate": 0.15
}
}
Manually
npx cbrowser persona create-manual --name "careful-reader"
Then edit ~/.cbrowser/personas/careful-reader.json.
List All Personas
npx cbrowser persona list
Export/Import
# Share personas with your team
npx cbrowser persona export elderly-user > elderly-user.json
npx cbrowser persona import teammate-persona.json
Generating Reports
JSON Report
npx cbrowser compare-personas \
--start "https://..." \
--goal "..." \
--personas power-user,elderly-user \
--output report.json
HTML Report
npx cbrowser compare-personas \
--start "https://..." \
--goal "..." \
--personas power-user,elderly-user \
--html
Generates a visual dashboard with:
- Success/failure per persona
- Time comparisons
- Friction point heatmaps
- Screenshot comparisons
- Actionable fixes
API Usage
import { CBrowser, runPersonaJourney, comparePersonas } from 'cbrowser';
// Single journey
const result = await runPersonaJourney({
persona: 'elderly-user',
startUrl: 'https://your-site.com',
goal: 'Find contact information',
});
console.log(result.success); // true/false
console.log(result.frictionPoints); // Array of issues
console.log(result.totalTime); // Duration in ms
// Multi-persona comparison
const comparison = await comparePersonas({
startUrl: 'https://your-site.com',
goal: 'Complete checkout',
personas: ['power-user', 'first-timer', 'elderly-user'],
});
for (const result of comparison.results) {
console.log(`${result.persona}: ${result.success ? 'PASS' : 'FAIL'}`);
}
Best Practices
- Always test with
elderly-user-- if it works for them, it works for everyone - Compare against
power-user-- shows the gap between expert and novice - Test mobile separately -- touch interfaces have different challenges
- Run before every deploy -- catch UX regressions early
- Create personas for your actual users -- generic personas are a starting point
Related
- Constitutional Safety - Another unique CBrowser feature
- Multi-Persona Comparison - Detailed comparison docs
- Examples - More persona testing examples
Copyright: (c) 2026 Alexa Eden.
License: MIT License
Contact: [email protected]