Multi Persona Comparison
Run the same journey with multiple personas and compare how different users experience your site. (v6.0.0)
The Power of Comparison
Testing with one persona tells you if that user type can complete a task. Testing with multiple personas reveals:
- Who struggles most with your interface
- Where the gaps are between expert and novice users
- Accessibility issues affecting specific user types
- Mobile vs desktop experience differences
- Actionable priorities for UX improvement
Quick Start
npx cbrowser compare-personas \
--start "https://your-site.com" \
--goal "Complete checkout process" \
--personas power-user,first-timer,elderly-user,mobile-user
Understanding the Output
π MULTI-PERSONA COMPARISON REPORT
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Start: https://shop.example.com
π― Goal: Complete checkout process
βββββββββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬ββββββββββββββββββββββββββ
β 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 β
βββββββββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ΄ββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π ANALYSIS
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Success Rate: 75% (3/4 personas completed goal)
Time Analysis:
Fastest: power-user (12.5s)
Slowest: elderly-user (120.3s)
Ratio: 9.6x difference
Friction Points (total: 8):
β’ "Checkout button too small" - elderly-user (3 occurrences)
β’ "Form labels unclear" - first-timer (2 occurrences)
β’ "Horizontal overflow on cart" - mobile-user (1 occurrence)
β’ "CTA not visible above fold" - first-timer (1 occurrence)
β’ "Input field hard to tap" - elderly-user (1 occurrence)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π‘ RECOMMENDATIONS
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π΄ HIGH PRIORITY (blocking users):
β’ Increase button sizes for elderly-user accessibility
β’ Fix mobile horizontal scroll issue
π‘ MEDIUM PRIORITY (causing friction):
β’ Make primary CTA more prominent (first-timer struggled)
β’ Improve form label clarity
π’ LOW PRIORITY (optimizations):
β’ Consider reducing steps for power-users (already fast)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π BASELINE COMPARISON
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
If power-user takes 12.5s (baseline):
β’ first-timer: +262% time (3.6x slower)
β’ elderly-user: +862% time (9.6x slower) β οΈ
β’ mobile-user: +125% time (2.2x slower)
Industry benchmark for checkout: <60s for all users
β power-user: PASS
β first-timer: PASS
β elderly-user: FAIL (needs improvement)
β mobile-user: PASS
Choosing Personas
For E-commerce
--personas power-user,first-timer,elderly-user,mobile-user
- power-user: Your repeat customers
- first-timer: New visitors discovering your site
- elderly-user: Older customers (often high purchasing power)
- mobile-user: Growing segment (50%+ of traffic)
For SaaS Applications
--personas power-user,first-timer,mobile-user,impatient-user
- power-user: Daily active users
- first-timer: Trial users (conversion critical)
- mobile-user: On-the-go usage
- impatient-user: Users with low patience (churn risk)
For Accessibility Testing
--personas screen-reader-user,elderly-user,mobile-user
- screen-reader-user: Tests ARIA labels and keyboard nav
- elderly-user: Vision and motor limitations
- mobile-user: Touch interface challenges
Report Formats
Console (Default)
npx cbrowser compare-personas --start "..." --goal "..."
JSON Report
npx cbrowser compare-personas \
--start "..." \
--goal "..." \
--output comparison-report.json
{
"startUrl": "https://shop.example.com",
"goal": "Complete checkout",
"timestamp": "2025-01-30T12:00:00Z",
"results": [
{
"persona": "power-user",
"success": true,
"totalTime": 12500,
"frictionPoints": [],
"steps": [...]
},
{
"persona": "elderly-user",
"success": false,
"totalTime": 120300,
"frictionPoints": [
"Button too small at step 4",
"Text too small at step 6"
],
"failedAt": {
"step": 8,
"action": "click checkout button",
"error": "Could not click: target too small"
}
}
],
"analysis": {
"successRate": 0.75,
"averageTime": 51525,
"commonFriction": ["small buttons", "unclear labels"],
"recommendations": [...]
}
}
HTML Report
npx cbrowser compare-personas \
--start "..." \
--goal "..." \
--html
Generates a visual dashboard with:
- Success/failure gauges per persona
- Time comparison bar charts
- Friction point heatmaps
- Step-by-step screenshots
- Exportable recommendations
API Usage
import { comparePersonas } from 'cbrowser';
const result = await comparePersonas({
startUrl: 'https://shop.example.com',
goal: 'Add item to cart and begin checkout',
personas: ['power-user', 'first-timer', 'elderly-user', 'mobile-user'],
headless: true,
});
// Check overall success
console.log(`Success rate: ${result.successRate * 100}%`);
// Find failing personas
const failures = result.results.filter(r => !r.success);
for (const f of failures) {
console.log(`${f.persona} failed: ${f.failedAt.error}`);
}
// Get recommendations
for (const rec of result.recommendations) {
console.log(`[${rec.priority}] ${rec.suggestion}`);
}
// Compare times
const baseline = result.results.find(r => r.persona === 'power-user');
for (const r of result.results) {
const ratio = r.totalTime / baseline.totalTime;
console.log(`${r.persona}: ${ratio.toFixed(1)}x baseline`);
}
Best Practices
1. Always Include a Baseline
Use power-user as your baseline. This is the best-case scenario and makes comparisons meaningful.
2. Test Critical User Journeys
Focus on high-value flows:
- Signup/onboarding
- Checkout/purchase
- Key feature usage
- Error recovery
3. Run Regularly
# Weekly comparison in CI
- cron: '0 0 * * 0'
run: npx cbrowser compare-personas --start "..." --goal "..." --output weekly-comparison.json
4. Track Trends Over Time
// Compare this week vs last week
const thisWeek = await comparePersonas({...});
const lastWeek = JSON.parse(fs.readFileSync('last-week.json'));
for (const persona of ['elderly-user', 'first-timer']) {
const current = thisWeek.results.find(r => r.persona === persona);
const previous = lastWeek.results.find(r => r.persona === persona);
const improvement = ((previous.totalTime - current.totalTime) / previous.totalTime) * 100;
console.log(`${persona}: ${improvement > 0 ? 'β' : 'β'} ${Math.abs(improvement).toFixed(1)}%`);
}
5. Act on Recommendations
The recommendations are prioritized:
- π΄ High: Blocking users from completing goals
- π‘ Medium: Causing significant friction
- π’ Low: Optimizations for better experience
Fix high priority items first. They have the biggest impact.
Interpreting Results
Time Ratios
| Ratio | Interpretation |
|---|---|
| < 2x | Acceptable difference |
| 2-3x | Room for improvement |
| 3-5x | Significant UX gap |
| > 5x | Critical accessibility issue |
Friction Points
| Count | Interpretation |
|---|---|
| 0 | Smooth experience |
| 1-2 | Minor issues |
| 3-5 | Notable friction |
| > 5 | Needs redesign |
Success Rate
| Rate | Interpretation |
|---|---|
| 100% | All user types succeed |
| 75%+ | Most users succeed |
| 50-75% | Significant issues |
| < 50% | Critical problems |
Related
- Persona Testing - Deep dive into personas
- CLI Reference - compare-personas command
- API Reference - Programmatic usage
- Examples - More comparison examples
Copyright: (c) 2026 Alexa Eden.
License: MIT License
Contact: [email protected]