These pass every functional test. That's the point. Your report is often the only voice the user has.
Sneak into basket / PreselectionSEV HIGH
Trailhead Tent 2P£129.00
✓Gear-Guard™ £4.99/mo — added for you
Total£133.99
A paid add-on arrives pre-ticked. The user never chose it — they just failed to notice it.
Log: "Paid add-on preselected at checkout — opt-OUT instead of opt-in. Repro: open checkout, observe ticked box."
Hidden costs / Drip pricingSEV HIGH
checkout — step 3 of 3
Subtotal£147.00
Handling & processing+£6.50
"Small order" fee+£2.99
Total£156.49
Fees that only appear at the last step, after the user is invested. The advertised price was fiction.
Log: "Fees first disclosed at final step — price on product page ≠ checkout total. Screenshot both."
ConfirmshamingSEV MED
Get 10% off your first order
Yes, I love saving money
No thanks, I prefer paying full price
The decline option is written to insult you. Choice is legal; humiliation is the pattern.
Log: "Opt-out copy uses shaming language — quote it verbatim in the ticket."
Hard to cancel (Roach motel)SEV HIGH
Join: one click ✓
Cancel: call us Mon–Fri 9–11am, wait ~40 min, confirm by post
Easy in, hard out. Sign-up is one tap; cancelling needs a phone call and a stamp.
Log: "Cancellation path materially harder than signup — count the steps of each and put both numbers in the report."
Fake scarcitySEV MED
Ridgeline 55LOnly 2 left!
…same "2 left" yesterday, last week, and in incognito
Stock pressure that never changes. If "2 left" survives a week, it's not inventory — it's theater.
Log: "Scarcity claim not backed by stock data — same count across sessions/days. Attach dated screenshots."
Fake urgency (countdown)SEV MED
Flash sale ends in
01:59:12
refresh the page… it's 01:59:12 again
A timer that resets on refresh. The deadline is a prop.
Log: "Countdown resets on reload — record screen while refreshing to prove it."
Fake social proofSEV HIGH
★★★★★"Best tent ever!"
— Anna K., 2 min ago
— Anna K., 2 min ago (identical, different product)
Reviews or activity popups that are generated, duplicated, or unverifiable.
Log: "Identical review text/name across products — link both URLs side by side."
Trick wordingSEV MED
✓Untick this box if you do not want to avoid missing offers
Double and triple negatives engineered so any answer means "yes, email me."
Log: "Consent copy requires multi-negative parsing — paste the sentence, note the default state."
Disguised adsSEV MED
⬇ DOWNLOAD NOW
actual download is a tiny text link below
get file (2.3 MB)
The big shiny button is an advert; the real action is the small grey link. Classic on download sites.
Log: "Ad styled as the primary action — mark which element is the real control in an annotated screenshot."
NaggingSEV LOW
Enable notifications?
YesAsk me later
"later" = every single visit, forever · no "never" option
The same interruption on every visit with no permanent "no". Wears users down until they surrender.
Log: "Prompt reappears each session; no permanent decline. Note frequency and absence of 'never'."
Bait and switchSEV HIGH
Advertised: Tent £89from the ad
On arrival: "Sold out" → shows £149 model
You came for one thing; it's mysteriously unavailable and a pricier one is waiting.
Log: "Advertised item consistently unavailable; redirect targets higher-price SKU. Keep the ad + landing screenshots."
Forced continuitySEV HIGH
FREE TRIAL — day 14card on file
Tomorrow: charged £19reminder email: none
The free trial silently becomes a paid subscription. No warning, no reminder, charge first.
Log: "Trial converts to paid with no notice — verify: is there a reminder email/notification before charge? Test with a real trial."
Comparison preventionSEV MED
Scout
£9 /mo
Trekker
£0.63 /day*
Expedition
£499 /2yrs
three plans, three different units — good luck comparing
Prices shown in deliberately mismatched units (per day / per month / per 2 years) so no honest comparison is possible.
Log: "Plan prices use inconsistent units — normalize all to monthly in the ticket to show the obfuscation."
Nobody designed these to hurt. They hurt anyway — and they're the easiest wins in your report.
Silent failureSEV HIGH
Delivery notes: leave at №14
Save changes…clicked. nothing. saved? who knows.
The action works (or fails) with zero feedback. Users click again, then distrust everything.
Log: "No success/failure feedback on Save — expected: toast/confirmation. Actual: silence. Video helps."
Cryptic error messageSEV HIGH
ERROR 204: VALIDATION_FAILED
which field? what's wrong? what now?
An error that names nothing, blames nothing, offers nothing. The user's only option is to give up.
Log: "Error text is developer-facing — expected: what happened + how to fix. Paste exact string + trigger steps."
Form wipes on errorSEV HIGH
Email: dana@example ✗
Password: (was filled — now empty)
Address: (gone too)
One invalid field and the form deletes everything the user typed. Punishment for a typo.
Log: "Validation error clears sibling fields — data loss on retry. List which fields survive and which don't."
Dead clickSEV MED
Free shipping over £50*
underlined, blue, cursor: pointer… does nothing
Looks clickable, isn't. Every dead click erodes trust in every other control on the page.
Log: "Element styled as link but has no action — expected either behavior or non-link styling."
Rage-click magnetSEV MED
Continue
disabled — but WHY? no hint. users click ×7
A disabled button with no explanation. The user can't know what's missing, so they hammer it.
Log: "Disabled CTA gives no reason — expected inline hint ('add a size first'). Session recordings will show rage clicks."
Infinite spinnerSEV HIGH
3 minutes now · no timeout · no error · no retry
Loading forever with no timeout or fallback. The app never admits it failed.
Log: "Request hangs with endless loader — expected timeout + retry after Ns. Note network state (throttle to repro)."
Totals disagreeSEV HIGH
Plan card says£19.00/mo
Checkout says£22.80/mo
VAT? fee? nobody says
Two screens, two different numbers for the same thing, no explanation between them.
Log: "Price mismatch: plan page vs checkout (£19 vs £22.80) — screenshot both, note if any label explains the delta."
No undo on destructive actionSEV HIGH
Delete project?
DeleteCancel
one tap · permanent · no undo · no grace period
Permanent destruction one accidental tap away, with no undo window or soft-delete.
Log: "Irreversible delete without undo/grace — expected: 30-day soft delete or undo toast."
Layout shift (CLS)SEV MED
ad loads 2s late, pushes everything down…
Confirm orderCancel ← was where Confirm just was
Content jumps as things load and the user's finger lands on the wrong button.
Log: "Late-loading element shifts CTA position — misclick risk. Capture on slow 3G throttle; mention CLS."
Low contrast textSEV MED
Shipping takes 5–7 business days
This line is readable. The one above failed WCAG.
Grey-on-white "aesthetic" text that fails accessibility contrast — invisible in sunlight, invisible to many always.
Log: "Text fails WCAG AA contrast (measure the ratio — DevTools shows it). Element + computed colors in ticket."
Tiny tap targetSEV MED
Gear-Guard™ £4.99/mo✕
the remove ✕ is 9px on mobile — thumb needs 44px
The control users need most is the smallest thing on the screen. Coincidence, surely.
Log: "Tap target under 44×44px on mobile — name the element, device, and miss rate when you try it 5 times."
Keyboard trap / focus lostSEV HIGH
Newsletter modal
Tab… Tab… Tab… focus cycles inside forever — Esc does nothing
Keyboard users get stuck inside a dialog with no Escape and no way out. A hard accessibility failure.
Log: "Modal traps keyboard focus; Esc/close unreachable without mouse — WCAG 2.1.2. Steps: open modal, Tab through."
Stale cache shows old dataSEV MED
Price shown£129
Price charged£149
page cached yesterday · price changed this morning
The page shows yesterday's price, the backend charges today's. Cache made the UI lie.
Log: "Displayed price stale vs charged price — repro with hard-refresh comparison; note cache headers if you can."