Skip to content

Why it broke.Not just that it broke.

Upliftr drives your app like a real user — and when a flow breaks, it traces the failure to the exact backend line that caused it, then files the fix. Run it fully self-hosted — your keys, your data, nothing leaves your infra.

A Upliftr run — a UI failure traced to the exact backend line and filed as a ticket

What it does

Plain-English tests.
Backend-deep answers.

One platform: chat with an AI assistant to build your tests, AI agents drive a real browser to run them, and every failure is root-caused to its exact cause — UI, API, or the exact backend line.

01

AI assistant

Just describe what to test in plain English. The assistant reads your suites, runs, and issues, writes and edits the YAML, and kicks off runs — no selectors, no page objects, no brittle scripts.

Meet the assistant →
02

A real browser, any OS

The LLM is the brain, Playwright the hands — headless or headed on Linux, macOS, or Windows.

How it works →
03

Self-healing

When the UI shifts, Upliftr re-grounds against the live DOM each run instead of failing on a stale locator.

Self-heal →
04

Root-caused to the backend

A failing request's trace_id is correlated to your server logs — the backend error, the likely cause, a suggested fix.

Connect logs →
05

Auto-filed, deduped issues

Verified failures become root-caused tickets on the built-in board — and optionally GitHub, GitLab, or Jira. Re-runs comment, never duplicate.

Filing issues →
06

In your IDE & CI

An MCP server for Cursor and Claude Code, plus a GitHub Action, GitLab CI, and a CLI that gate every PR/MR.

IDE & MCP →

How it works

Three steps.
No test-writing.

01

Describe it in plain English

Author a suite, generate one from a URL or your docs, or record a click-through.

02

It drives a real browser

The LLM is the brain, Playwright the hands — headless on any OS. A suite shares state across its cases.

03

You get the cause & the fix

A failure is traced to its exact cause — UI, API, or the exact backend line — root-caused, and filed (deduped) where your team works.

The differentiator

Every other tool stops
at “the UI broke.”

A UI failure → correlated by trace_id to the real backend error → the cause and a suggested fix → filed as a deduped ticket. In plain English.

UI — what the user hit

“Save profile” returned a silent 500 — nothing shown to the user.

Backend — the real cause

NullPointerException in upload.py:142 — avatar saved before the user row commits.

Filed — GitHub #284

Cause + suggested fix, deduped. The ticket was waiting for you.

Author

A suite is
just YAML.

Describe a flow the way you'd explain it to a teammate — no selectors, no page objects. Cases run in order and share fixtures, so “sign up, then log in as that user” just works.

suite: "Signup & Login"
base_url: http://localhost:8500
fixtures:
  email:    { gen: unique_email }
  password: { gen: password }
cases:
  - title: "A new user can sign up"
    steps:
      - { do: "Open the sign-up page" }
      - { do: "Enter ${email} and ${password}" }
      - { do: "Click 'Create account'" }
    expect:
      - { assert: "'Account created' is shown" }
  - title: "That same user can log in"
    steps:
      - { do: "Log in with ${email} / ${password}" }

Built in

Everywhere your team
already works.

In your editor

An MCP server puts “test this URL” inside Cursor and Claude Code.

In CI

A GitHub Action / GitLab CI and a CLI gate every PR/MR with a JUnit report and a meaningful exit code.

In your tracker

The built-in board, plus GitHub, GitLab, or Jira — deduped by fingerprint.

In your backend

Server-log correlation turns a UI failure into a backend diagnosis.

Pricing

Free to self-host.
A license for companies.

Source-available — run the whole platform yourself, bring your own key.

Self-hosted
Free

For any noncommercial use. The full platform — authoring, backend root-cause, plans, CI gating — bring your own LLM key.

Get started →

Get started

You ship it.
Upliftr tests it.

Plain English in. A root-caused bug out — automatically. Self-hosted, bring your own key.

Get started →Read the docs →

Upliftr — AI-native, self-healing E2E testing. Terms · Privacy · Legal Notice