Your Tests Pass.
Your UX Breaks.
CI is green. Deploy shipped. But users can't checkout because a promo banner covers the button on mobile.
Capture real rendered UI state — with salience scoring — so LLMs catch regressions that E2E tests miss.
✓ Button exists
✓ Button clickable
✓ Form submits
All pass. Ship it.
⚠ "Pay" button: salience 95%
⚠ Promo banner: salience 70%
⚠ Occlusion detected: 60%
CTA blocked on mobile. Regression.
"We don't ask the model what matters — we tell it."
SiFR pre-weights elements by salience. LLM interprets, not discovers. That's why CSS noise is ignored, but hidden CTAs trigger alerts.
What tests miss, this catches
🎯 Layout Regressions
- Banner covers checkout button
- Products pushed below the fold
- CMS update breaks grid
- A/B variant hides CTA
📱 Responsive Breaks
- Desktop OK, mobile broken
- Tablet layout overlap
- Third-party widget covers form
- Chat widget blocks action
🔒 Security Issues Bonus
- Defacement detection (high-salience content replaced)
- Phishing overlay (new form over login)
- Content injection in critical areas
How it compares
| Issue | E2E Tests | Visual Diff | E2LLM |
|---|---|---|---|
| Button covered by banner | ✗ Pass | ⚠ Noise | ✓ Alert |
| Content pushed off-screen | ✗ Pass | ✗ Pass | ✓ Alert |
| Mobile-only break | ✗ Miss | ⚠ Maybe | ✓ Alert |
| CSS font change | ✓ Ignore | ✗ 500 alerts | ✓ Ignore |
How it works
1. Capture
SiFR extracts DOM with salience scores
2. Interpret
LLM describes functional state
3. Compare
Detect meaning changes, not pixel changes
The Loop
No screenshots. No guessing. Real state → Real answers.
🔒 100% Local
Nothing leaves your browser. Ever. No tracking, no cloud.
⚡ Token Efficient
Compact JSON. 2KB instead of 10MB HTML. Built for LLM context.
🔧 Playwright Ready
Programmatic API for CI/CD integration. Post-deploy checks.
🧠 LLM Agnostic
Works with Claude, GPT, Grok, Llama. Your choice.
Your tests check if code works.
This checks if users can use it.
Free. Open source. Install in seconds.