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

Sample account settings QA run

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

Sample flow

https://persona-probe-6f7d.vercel.app/demo-app/account-settings

Test cases

6

Pass rate

33%

Persona fail rate

67%

Avg duration

9.3s

Persona results

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

Adversarial User

FAILPERSONA FAILURE

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

11.7s

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
FAILED

GitHub workflow_dispatch failed (404): {"message":"Not Found","documentation_url":"https://docs.github.com/rest/actions/workflows#create-a-workflow-dispatch-event","status":"404"}

Mobile-First User

FAILUI AMBIGUITY

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

8.5s

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
WORKFLOW TRIGGEREDWorkflow queued. PR link will appear after GitHub creates it.

Impatient User

FAILPERSONA FAILURE

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

8.5s

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
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.7s

Flow completed and the configured success criteria were observed.

Power User

PASSn/a

Uses search, shortcuts, and completes efficiently.

9.1s

Flow completed and the configured success criteria were observed.

ESL User

FAILPERSONA FAILURE

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

8.4s

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".

Fix Attempts

FAILED

6/21/2026, 5:33:32 PM

Adversarial User

Page text did not contain "Email updated successfully".

pauline-ongchan/userpersonatestwebsite

n/a
WORKFLOW_TRIGGERED

6/21/2026, 5:55:56 PM

Mobile-First User

Page text did not contain "Email updated successfully".

pauline-ongchan/userpersonatestwebsite

n/a
CONTEXT_FETCHED

6/21/2026, 5:58:22 PM

Impatient User

Page text did not contain "Email updated successfully".

pauline-ongchan/userpersonatestwebsite

n/a

Action traces

Raw logs

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}"
]
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}"
]
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}"
]
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}"
]
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}"
]
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}"
]