QA Persona Testing
Test a solution or app as a specific person from a specific group — an Ideal Customer Profile (ICP) or defined user segment — rather than as a QA engineer. The skill covers the full loop: find the profile (using sibling skills), set the persona up as an executable specification, drive the app through browser automation like that person would, and produce an improvement report with what to fix, what to avoid, and what to keep.
This is persona simulation, not E2E test authoring. It finds friction, confusion, trust breaks, and abandonment; it does not replace assertion-based regression tests (qa-testing-playwright) or research with real users (software-ux-research).
Quick Reference
| Task |
Read or use |
Outcome |
| Find/derive the ICP or persona group |
## Phase 1 — DEFINE + sibling skills table |
Evidence-backed persona candidates |
| Turn a persona into an executable spec |
assets/persona-profile.md + references/persona-construction.md |
Persona profile with behavioral traits and scenario pack |
| Run a browser test session as the persona |
references/browser-execution.md |
Filled assets/session-log.md per scenario |
| Keep the simulation honest (anti-sycophancy) |
references/persona-construction.md |
Persona that abandons, complains, and stays in character |
| Write the improvement report |
assets/findings-report.md + references/reporting-and-validity.md |
Ranked findings, prioritized fixes, validity caveats |
| Decide what simulation can and cannot claim |
references/reporting-and-validity.md |
Correctly-hedged conclusions |
When to Use
- "Test this app like a {{first-time user / busy accountant / 60-year-old iPad user / our ICP}}"
- "Would our target customer actually get through onboarding?"
- "Run a synthetic user / persona-based walkthrough and tell me what to improve"
- Pre-launch UX sanity pass when real-user testing is not yet feasible
- Regression of a redesigned flow against the personas that matter commercially
When NOT to Use
| Situation |
Use instead |
| Writing assertion-based E2E/regression tests |
qa-testing-playwright |
| Research with real users (interviews, usability tests, surveys) |
software-ux-research |
| Heuristic/accessibility audit without persona framing |
software-ui-ux-design, qa-testing-accessibility |
| Validating whether the ICP itself is right for the business |
startup-idea-validation |
| Testing an LLM agent or bot (agent is the system under test) |
qa-agent-testing |
| Load, performance, or security testing |
qa-testing-performance, qa-security-testing |
ASCII Flow
persona-testing request
-> Phase 1 DEFINE: find ICP / segment (sibling skills + evidence) -> persona candidates
-> Phase 2 SETUP: persona profile (traits, budgets, scenario pack, anti-sycophancy contract)
-> Phase 3 EXECUTE: browser session per scenario as the persona
+-- Playwright MCP or Chrome DevTools MCP (preferred)
+-- Playwright script fallback (headless CI)
-> session log: step trace, think-aloud, friction events, screenshots
-> Phase 4 REPORT: rank findings by severity x frequency
-> improvements / avoid-list / keep-list / validity caveats
-> Hand off: severity>=3 -> qa-testing-playwright regression tests
preference findings -> software-ux-research real-user validation
Workflow
Phase 1 — DEFINE the profile
Goal: an evidence-backed persona, not an invented stereotype.
- Ask (or infer from context) what decision the test must inform: launch readiness, redesign check, conversion friction, accessibility fit.
- Source the ICP with the smallest sufficient chain of sibling skills:
| Evidence you need |
Skill to invoke |
| Who the ICP is at all (segment, JTBD, willingness to pay) |
startup-idea-validation, startup-gtm-strategy |
| What real users complain about in this category |
research-review-mining, research-painpoint-scanner |
| Behavioral data from an existing product (funnels, drop-offs) |
marketing-product-analytics |
| Persona craft, research method, bias control |
software-ux-research |
| Product context: roadmap, target users already defined |
product-management, project-specific skills |
- Pick 1-3 personas maximum per run. Prefer one primary ICP plus one edge persona (low tech fluency or accessibility needs) — more personas dilute session depth.
- Record provenance and confidence in the persona profile. An assumed persona is allowed but must be labeled
assumed and its findings hedged accordingly.
Phase 2 — SETUP the persona
- Copy assets/persona-profile.md; fill every field. Behavioral traits (patience, tech fluency, reading style, trust posture, error reaction) are the levers that make the simulation diverge from generic QA — do not leave them at defaults.
- Write the scenario pack: 3-7 tasks phrased in the persona's words, each with an entry point, an observable success criterion, and the persona-specific risk it probes.
- Adopt the anti-sycophancy contract (in the profile): patience budgets, mandatory abandonment, in-character confusion, no tester knowledge. See references/persona-construction.md for calibration and persona-drift checks.
- Configure the environment to match the persona: viewport/device emulation, locale, network throttling if the persona is mobile/low-bandwidth.
Phase 3 — EXECUTE browser sessions
- One session = one persona x one scenario. Start each session from the persona's real entry point (marketing page, app store link, shared URL) — not from a deep link the persona would never have.
- Drive the app with browser tooling per references/browser-execution.md:
- Playwright MCP (
browser_navigate, browser_snapshot, browser_find, browser_click, ...) — default.
- Chrome DevTools MCP — when you also need console/network/performance evidence, device/network emulation, or isolated browser contexts per scenario.
- Playwright script — fallback for CI or when no MCP browser is available.
- At every step, log the dual-channel trace into assets/session-log.md: in-character think-aloud + out-of-character observation + evidence (screenshot, console error, latency).
- Enforce the persona: act only on what is visible in the snapshot, respect patience budgets, abandon when the persona would. An agent that always completes every task is a broken simulation.
- Capture friction events with Nielsen severity 0-4 as they happen.
Phase 4 — REPORT and improve
- Aggregate session logs into assets/findings-report.md: rank by severity, then by how many personas hit the issue.
- Every finding must cite a logged step and, where possible, a persona quote and evidence artifact. No finding without a trace.
- Separate three lists: improve (prioritized fixes with expected effect), avoid (changes that would hurt this ICP), keep (flows that passed — protect with regression tests).
- Apply the validity rules in references/reporting-and-validity.md: mechanical failures (broken flows, errors, dead ends) are real findings; emotional/preference findings are hypotheses for real-user validation.
- Hand off follow-ups: severity ≥3 →
qa-testing-playwright regression tests; top preference hypotheses → software-ux-research; ICP doubts surfaced by testing → startup-idea-validation.
Known Traps
- Sycophantic persona: the LLM completes every task and praises the app. Counter: patience budgets, mandatory abandonment rules, and severity quotas are in the profile contract — enforce them.
- Persona drift: after ~10-15 steps the agent slides back into QA-engineer voice. Counter: re-read the profile at each scenario start; keep the dual-channel log, and flag any step where the persona voice used tester vocabulary.
- Tester knowledge leak: persona "finds" a page via URL guessing or dev shortcuts. Counter: navigation only via visible UI from the declared entry point.
- Over-claiming: presenting simulated emotions as user research. Counter: the report's Validity section is mandatory, and preference findings are labeled hypotheses.
- Persona flattening / stereotyping: demographic caricature instead of behavioral spec. Counter: traits must map to observable behaviors (see profile trait table), and provenance must name evidence.
- The fidelity trap: flawless persona adherence reads as success but correlates with caricature — models with the highest persona fidelity produce the most stereotyped populations (arXiv:2604.24698). Counter: check sessions for stereotyped behavior as well as drift; discount findings that reduce to "this demographic behaved as expected". See references/persona-construction.md.
- One giant session: testing all scenarios in one browser context bleeds state (auth, carts, cookies) between scenarios. Counter: fresh context per session.
Navigation
Resources:
- references/persona-construction.md — ICP-to-persona conversion, behavioral trait calibration, anti-sycophancy contract, drift checks
- references/browser-execution.md — Playwright MCP / Chrome DevTools MCP / script execution patterns, evidence capture, environment emulation
- references/reporting-and-validity.md — severity model, ranking, report assembly, what simulation can and cannot claim
- data/sources.json — primary sources (research + tooling docs) with verification dates
Assets:
- assets/persona-profile.md — executable persona specification template
- assets/session-log.md — dual-channel (in/out of character) session trace template
- assets/findings-report.md — final report template (improve / avoid / keep / validity)
Related skills:
Fact-Checking
- Browser tooling behavior (Playwright MCP tool names, Chrome DevTools MCP capabilities, emulation flags) drifts fast — verify against current official docs before prescribing exact tool calls.
- Research claims about synthetic-user validity (what LLM personas do and do not reproduce) must cite the specific study; do not generalize a single benchmark result.
- Known bugs, framework footguns, and version-specific workarounds must be verified against current primary sources before being treated as current fact.
- Never present simulated persona reactions as evidence from real users.
Learnings Loop
Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.
1---2name: qa-persona-testing3description: Tests apps as an ICP persona through browser automation and reports friction, fixes, and risks. Use when running persona-based, ICP, or synthetic-user testing.4---5
6# QA Persona Testing
7
8Test a solution or app **as a specific person from a specific group** — an Ideal Customer Profile (ICP) or defined user segment — rather than as a QA engineer. The skill covers the full loop: find the profile (using sibling skills), set the persona up as an executable specification, drive the app through browser automation like that person would, and produce an improvement report with what to fix, what to avoid, and what to keep.
9
10This is **persona simulation, not E2E test authoring**. It finds friction, confusion, trust breaks, and abandonment; it does not replace assertion-based regression tests (`qa-testing-playwright`) or research with real users (`software-ux-research`).
11
12## Quick Reference
13
14| Task | Read or use | Outcome |
15|------|-------------|---------|
16| Find/derive the ICP or persona group | `## Phase 1 — DEFINE` + sibling skills table | Evidence-backed persona candidates |
17| Turn a persona into an executable spec | [assets/persona-profile.md](assets/persona-profile.md) + [references/persona-construction.md](references/persona-construction.md) | Persona profile with behavioral traits and scenario pack |
18| Run a browser test session as the persona | [references/browser-execution.md](references/browser-execution.md) | Filled [assets/session-log.md](assets/session-log.md) per scenario |
19| Keep the simulation honest (anti-sycophancy) | [references/persona-construction.md](references/persona-construction.md#anti-sycophancy) | Persona that abandons, complains, and stays in character |
20| Write the improvement report | [assets/findings-report.md](assets/findings-report.md) + [references/reporting-and-validity.md](references/reporting-and-validity.md) | Ranked findings, prioritized fixes, validity caveats |
21| Decide what simulation can and cannot claim | [references/reporting-and-validity.md](references/reporting-and-validity.md#validity-limits) | Correctly-hedged conclusions |
22
23## When to Use
24
25- "Test this app like a {{first-time user / busy accountant / 60-year-old iPad user / our ICP}}"
26- "Would our target customer actually get through onboarding?"
27- "Run a synthetic user / persona-based walkthrough and tell me what to improve"
28- Pre-launch UX sanity pass when real-user testing is not yet feasible
29- Regression of a redesigned flow against the personas that matter commercially
30
31## When NOT to Use
32
33| Situation | Use instead |
34|-----------|-------------|
35| Writing assertion-based E2E/regression tests | `qa-testing-playwright` |
36| Research with real users (interviews, usability tests, surveys) | `software-ux-research` |
37| Heuristic/accessibility audit without persona framing | `software-ui-ux-design`, `qa-testing-accessibility` |
38| Validating whether the ICP itself is right for the business | `startup-idea-validation` |
39| Testing an LLM agent or bot (agent is the system under test) | `qa-agent-testing` |
40| Load, performance, or security testing | `qa-testing-performance`, `qa-security-testing` |
41
42## ASCII Flow
43
44```text
45persona-testing request
46 -> Phase 1 DEFINE: find ICP / segment (sibling skills + evidence) -> persona candidates
47 -> Phase 2 SETUP: persona profile (traits, budgets, scenario pack, anti-sycophancy contract)
48 -> Phase 3 EXECUTE: browser session per scenario as the persona
49 +-- Playwright MCP or Chrome DevTools MCP (preferred)
50 +-- Playwright script fallback (headless CI)
51 -> session log: step trace, think-aloud, friction events, screenshots
52 -> Phase 4 REPORT: rank findings by severity x frequency
53 -> improvements / avoid-list / keep-list / validity caveats
54 -> Hand off: severity>=3 -> qa-testing-playwright regression tests
55 preference findings -> software-ux-research real-user validation
56```
57
58## Workflow
59
60### Phase 1 — DEFINE the profile
61
62Goal: an evidence-backed persona, not an invented stereotype.
63
641. Ask (or infer from context) what decision the test must inform: launch readiness, redesign check, conversion friction, accessibility fit.
652. Source the ICP with the smallest sufficient chain of sibling skills:
66
67| Evidence you need | Skill to invoke |
68|---|---|
69| Who the ICP is at all (segment, JTBD, willingness to pay) | `startup-idea-validation`, `startup-gtm-strategy` |
70| What real users complain about in this category | `research-review-mining`, `research-painpoint-scanner` |
71| Behavioral data from an existing product (funnels, drop-offs) | `marketing-product-analytics` |
72| Persona craft, research method, bias control | `software-ux-research` |
73| Product context: roadmap, target users already defined | `product-management`, project-specific skills |
74
753. Pick 1-3 personas maximum per run. Prefer one primary ICP plus one edge persona (low tech fluency or accessibility needs) — more personas dilute session depth.
764. Record provenance and confidence in the persona profile. An assumed persona is allowed but must be labeled `assumed` and its findings hedged accordingly.
77
78### Phase 2 — SETUP the persona
79
801. Copy [assets/persona-profile.md](assets/persona-profile.md); fill every field. Behavioral traits (patience, tech fluency, reading style, trust posture, error reaction) are the levers that make the simulation diverge from generic QA — do not leave them at defaults.
812. Write the scenario pack: 3-7 tasks phrased **in the persona's words**, each with an entry point, an observable success criterion, and the persona-specific risk it probes.
823. Adopt the anti-sycophancy contract (in the profile): patience budgets, mandatory abandonment, in-character confusion, no tester knowledge. See [references/persona-construction.md](references/persona-construction.md) for calibration and persona-drift checks.
834. Configure the environment to match the persona: viewport/device emulation, locale, network throttling if the persona is mobile/low-bandwidth.
84
85### Phase 3 — EXECUTE browser sessions
86
871. One session = one persona x one scenario. Start each session from the persona's real entry point (marketing page, app store link, shared URL) — not from a deep link the persona would never have.
882. Drive the app with browser tooling per [references/browser-execution.md](references/browser-execution.md):
89 - **Playwright MCP** (`browser_navigate`, `browser_snapshot`, `browser_find`, `browser_click`, ...) — default.
90 - **Chrome DevTools MCP** — when you also need console/network/performance evidence, device/network emulation, or isolated browser contexts per scenario.
91 - **Playwright script** — fallback for CI or when no MCP browser is available.
923. At every step, log the dual-channel trace into [assets/session-log.md](assets/session-log.md): in-character think-aloud + out-of-character observation + evidence (screenshot, console error, latency).
934. Enforce the persona: act only on what is visible in the snapshot, respect patience budgets, abandon when the persona would. An agent that always completes every task is a broken simulation.
945. Capture friction events with Nielsen severity 0-4 as they happen.
95
96### Phase 4 — REPORT and improve
97
981. Aggregate session logs into [assets/findings-report.md](assets/findings-report.md): rank by severity, then by how many personas hit the issue.
992. Every finding must cite a logged step and, where possible, a persona quote and evidence artifact. No finding without a trace.
1003. Separate three lists: **improve** (prioritized fixes with expected effect), **avoid** (changes that would hurt this ICP), **keep** (flows that passed — protect with regression tests).
1014. Apply the validity rules in [references/reporting-and-validity.md](references/reporting-and-validity.md): mechanical failures (broken flows, errors, dead ends) are real findings; emotional/preference findings are hypotheses for real-user validation.
1025. Hand off follow-ups: severity ≥3 → `qa-testing-playwright` regression tests; top preference hypotheses → `software-ux-research`; ICP doubts surfaced by testing → `startup-idea-validation`.
103
104## Known Traps
105
106- **Sycophantic persona**: the LLM completes every task and praises the app. Counter: patience budgets, mandatory abandonment rules, and severity quotas are in the profile contract — enforce them.
107- **Persona drift**: after ~10-15 steps the agent slides back into QA-engineer voice. Counter: re-read the profile at each scenario start; keep the dual-channel log, and flag any step where the persona voice used tester vocabulary.
108- **Tester knowledge leak**: persona "finds" a page via URL guessing or dev shortcuts. Counter: navigation only via visible UI from the declared entry point.
109- **Over-claiming**: presenting simulated emotions as user research. Counter: the report's Validity section is mandatory, and preference findings are labeled hypotheses.
110- **Persona flattening / stereotyping**: demographic caricature instead of behavioral spec. Counter: traits must map to observable behaviors (see profile trait table), and provenance must name evidence.
111- **The fidelity trap**: flawless persona adherence reads as success but correlates with caricature — models with the highest persona fidelity produce the most stereotyped populations (arXiv:2604.24698). Counter: check sessions for stereotyped behavior as well as drift; discount findings that reduce to "this demographic behaved as expected". See [references/persona-construction.md](references/persona-construction.md#the-fidelity-trap).
112- **One giant session**: testing all scenarios in one browser context bleeds state (auth, carts, cookies) between scenarios. Counter: fresh context per session.
113
114## Navigation
115
116Resources:
117
118- [references/persona-construction.md](references/persona-construction.md) — ICP-to-persona conversion, behavioral trait calibration, anti-sycophancy contract, drift checks
119- [references/browser-execution.md](references/browser-execution.md) — Playwright MCP / Chrome DevTools MCP / script execution patterns, evidence capture, environment emulation
120- [references/reporting-and-validity.md](references/reporting-and-validity.md) — severity model, ranking, report assembly, what simulation can and cannot claim
121- [data/sources.json](data/sources.json) — primary sources (research + tooling docs) with verification dates
122
123Assets:
124
125- [assets/persona-profile.md](assets/persona-profile.md) — executable persona specification template
126- [assets/session-log.md](assets/session-log.md) — dual-channel (in/out of character) session trace template
127- [assets/findings-report.md](assets/findings-report.md) — final report template (improve / avoid / keep / validity)
128
129Related skills:
130
131- [../qa-testing-playwright/SKILL.md](../qa-testing-playwright/SKILL.md) — converts findings into durable E2E regression tests
132- [../software-ux-research/SKILL.md](../software-ux-research/SKILL.md) — real-user validation of simulated findings; persona research methods
133- [../software-ui-ux-design/SKILL.md](../software-ui-ux-design/SKILL.md) — heuristic/WCAG framing for design-level fixes
134- `startup-idea-validation` — ICP discovery and validation upstream of testing
135- `research-review-mining` — real-user pain evidence to ground persona traits
136- [../qa-agent-testing/SKILL.md](../qa-agent-testing/SKILL.md) — when the system under test is itself an agent
137- [../qa-testing-accessibility/SKILL.md](../qa-testing-accessibility/SKILL.md) — deep accessibility audit beyond persona-level signals
138
139## Fact-Checking
140
141- Browser tooling behavior (Playwright MCP tool names, Chrome DevTools MCP capabilities, emulation flags) drifts fast — verify against current official docs before prescribing exact tool calls.
142- Research claims about synthetic-user validity (what LLM personas do and do not reproduce) must cite the specific study; do not generalize a single benchmark result.
143- Known bugs, framework footguns, and version-specific workarounds must be verified against current primary sources before being treated as current fact.
144- Never present simulated persona reactions as evidence from real users.
145
146## Learnings Loop
147
148Before applying this skill on a non-trivial task, read `learnings.consolidated.md` in this directory (and `learnings.md` if present).
149
150After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to `learnings.md` via `agents-skills-feedback-loop/scripts/append_learning.py`. Do not modify `SKILL.md` itself.