FlowProof logoFlowProofPre-production UI QA for fragile flows.
Back to runs

Demo-safe account settings probe

Change the account email to test@example.com and reach the confirmation screen.

Sample flow

https://userpersonatestwebsite.vercel.app/demo-app

Test cases

6

Pass rate

33%

Persona fail rate

67%

Avg duration

8.5s

Persona results

Each result shows where the flow stopped and why that persona struggled.

Impatient User

FAILPERSONA FAILURE

Max 5 steps, no retries, clicks the first plausible control, gives up quickly.

9.7s

Where

First-plausible path on /demo-app/account-settings: the persona saved after choosing the first reasonable-looking email field.

Why

This persona clicks the first plausible control and does not retry. Billing email and the vague save action looked good enough, so they stopped before finding the exact path to "Email updated successfully".

Evidence

Final location: /demo-app/account-settings; expected "Email updated successfully".

BrowserbaseSentry trace
WORKFLOW TRIGGEREDWorkflow queued. PR link will appear after GitHub creates it.

Adversarial User

FAILPERSONA FAILURE

Enters weird inputs, tries invalid values, navigates back, changes choices mid-flow.

8.5s

Where

Validation recovery on blank: invalid input and back navigation left the flow off the success path.

Why

This persona intentionally tries invalid input, changes direction, and uses back navigation. The flow did not recover clearly from that edge-case path, so it never reached "Email updated successfully".

Evidence

Final location: blank; expected "Email updated successfully".

BrowserbaseSentry trace
WORKFLOW TRIGGEREDWorkflow queued. PR link will appear after GitHub creates it.

ESL User

FAILPERSONA FAILURE

Prefers simple labels and may confuse billing email with account email.

7.9s

Where

Email fields on /demo-app/account-settings: Account email and Billing email were easy to confuse.

Why

This persona needs literal labels. The Account email versus Billing email distinction was too subtle, so they chose the wrong email field and never reached "Email updated successfully".

Evidence

Final location: /demo-app/account-settings; expected "Email updated successfully".

BrowserbaseSentry trace
WORKFLOW TRIGGEREDWorkflow queued. PR link will appear after GitHub creates it.

Power User

PASSn/a

Uses search, shortcuts, and completes efficiently.

8.7s

Flow completed and the configured success criteria were observed.

Mobile-First User

FAILUI AMBIGUITY

Uses a 390x844 viewport and only obvious visible touch targets.

6.6s

Where

Mobile viewport on /demo-app/account-settings: the visible field was reachable, but the save/update action was not an obvious touch target.

Why

On the 390x844 mobile viewport, this persona uses only obvious visible touch targets. The account email field was reachable, but the save/update action was not visible enough to complete the confirmation "Email updated successfully".

Evidence

Final location: /demo-app/account-settings; expected "Email updated successfully".

BrowserbaseSentry trace
CONTEXT FETCHEDWorkflow queued. PR link will appear after GitHub creates it.

Privacy-Sensitive User

PASSn/a

Refuses newsletter, tracking, permissions, and unnecessary personal data.

9.2s

Flow completed and the configured success criteria were observed.

Fix Attempts

WORKFLOW_TRIGGERED

6/21/2026, 3:39:44 PM

Impatient User

Page text did not contain "Email updated successfully".

pauline-ongchan/userpersonatestwebsite

n/a
WORKFLOW_TRIGGERED

6/21/2026, 3:56:08 PM

Adversarial User

Page text did not contain "Email updated successfully".

pauline-ongchan/userpersonatestwebsite

n/a
WORKFLOW_TRIGGERED

6/21/2026, 4:07:39 PM

ESL User

Page text did not contain "Email updated successfully".

pauline-ongchan/userpersonatestwebsite

n/a
CONTEXT_FETCHED

6/21/2026, 4:12:46 PM

Mobile-First User

Page text did not contain "Email updated successfully".

pauline-ongchan/userpersonatestwebsite

n/a

Action traces

Raw logs

Impatient User
[
  "{\n  \"type\": \"demo_safe_policy\",\n  \"persona\": \"impatient\",\n  \"policy\": \"Policy: maxSteps=5; maxRetries=0. Click the first plausible button or field. Do not inspect alternatives deeply. Give up quickly when a flow is unclear.\",\n  \"selfHealed\": false\n}"
]
Adversarial User
[
  "{\n  \"type\": \"demo_safe_policy\",\n  \"persona\": \"adversarial\",\n  \"policy\": \"Policy: try one invalid input first, use back navigation once, and change choices midway before attempting completion.\",\n  \"selfHealed\": false\n}"
]
ESL User
[
  "{\n  \"type\": \"demo_safe_policy\",\n  \"persona\": \"esl\",\n  \"policy\": \"Policy: prefer simple obvious labels. Dense helper text is easy to miss. You may confuse Billing email and Account email when both appear.\",\n  \"selfHealed\": false\n}"
]
Power User
[
  "{\n  \"type\": \"demo_safe_policy\",\n  \"persona\": \"power-user\",\n  \"policy\": \"Policy: use search, keyboard shortcuts, and direct field targeting. Complete efficiently with the fewest useful actions.\",\n  \"selfHealed\": false\n}"
]
Mobile-First User
[
  "{\n  \"type\": \"demo_safe_policy\",\n  \"persona\": \"mobile-first\",\n  \"policy\": \"Policy: viewport=390x844. Use only obvious visible touch targets. Do not hunt below the fold unless there is a visible cue.\",\n  \"selfHealed\": false\n}"
]
Privacy-Sensitive User
[
  "{\n  \"type\": \"demo_safe_policy\",\n  \"persona\": \"privacy-sensitive\",\n  \"policy\": \"Policy: refuse newsletters, tracking, optional permissions, and unnecessary personal data. Only provide the required account email.\",\n  \"selfHealed\": false\n}"
]