For developers who inherited QA

You ship features.
Someone piled QA on top.

There's no QA team. There's you, a Next.js / React / Vue app, a roadmap that keeps growing, and a checkout flow that nobody can let break. Lastest gives you real browser tests without opening Playwright docs. Click through the flow once. Every commit replays it - free, forever, in CI.

No test DSL to learnRuns in your CI$0 self-hosted
Lastest test recorder capturing a browser flow for a developer who owns QA on a Next.js, React, or Vue app
Record. Ship. Sleep.
“There's no QA team. Apparently that means me now. I still have a roadmap.”

- Senior dev, Tuesday standup

“My Playwright suite is 80% flaky and nobody trusts the green check. We just rerun until it passes.”

- Any engineer on the on-call rota

“I spent 4 hours this sprint fixing selectors because someone changed a className.”

- Also you, probably this week

You can do the QA yourself. You probably already are. Here's why it's crushing you.

When a team kills QA and hands it to developers, the maintenance burden doesn't go away - it just gets hidden inside “engineering time.” The real cost of DIY E2E tests is the hours a month per developer that vanish into flake triage and selector repair. Four ways you've probably tried to solve it, and where each one leaks time.

01

Rely on unit tests and hope.

Jest is green. Vitest is green. Types pass. You ship. Then a Server Action throws on serialization, the pricing page renders 12px off on staging, or the signup button wires up to nothing on Safari. Unit tests never touched any of that.

  • Zero real-browser coverage
  • No visual layer - silent layout drift
  • Integration bugs show up in Slack, not CI
02

Hand-write Playwright tests on Fridays.

You carve out time. You write a Page Object Model. Then selectors break, you inherit the test suite, the intern's tests assert on <div class="text-blue-500">, and you spend more time babysitting the suite than building features.

  • Brittle selectors - one className change, five broken tests
  • Page Object sprawl - duplicated across PRs
  • Flake loops - rerun until green, trust evaporates
  • Hours a month per dev on maintenance alone
03

Ask Cursor or Claude Code to write the tests.

Coding agents often take several attempts to generate a working E2E test. The tests they write target the feature just built (the easy part) and miss the integration seams where real regressions live. And every run burns tokens.

  • Coverage bias - tests the happy path, misses the regression zone
  • DOM-only - passes when the UI visibly broke
  • Non-deterministic - different path every run
  • Tokens compound across CI, PR, branch, forever
04

Use Lastest. Record once. Replay forever.

Point Lastest at your running app. Click through the flows that would hurt if they broke - signup, checkout, dashboard, that one weird reporting page - hit stop. Lastest stores each run as deterministic Playwright code with 7-layer fallback selectors and a visual baseline, then replays it on every commit for free.

  • Zero test code to write or maintain - you click, it codes
  • Self-healing selectors - data-testid → id → role → aria → text → css → OCR
  • 3 visual diff engines - pixelmatch, SSIM, Butteraugli
  • AI failure triage - real regression vs flake vs env issue
  • Zero tokens per replay - run 10k times in CI for $0
  • Human-in-the-loop - you approve diffs in one click, not debug stack traces
“The worst Playwright suite is the one your team inherited. The second worst is the one Cursor wrote. Lastest makes you decide what matters - once - and guards it forever.”

You're a developer. Not a test framework.

Lastest meets you where your week already is: in a browser, in a PR, in CI. Four capabilities that matter when QA was piled on your plate and your roadmap didn't get any shorter.

01 · Record

Click through your app. That is the test.

Open the recorder, walk through signup, checkout, or that new feature your PM wouldn't stop talking about. Hit stop. Lastest captures every click, type, upload, and navigation and emits deterministic Playwright code with multi-selector fallback. No selectors to choose. No waits to tune. No Page Object Model to keep tidy.

  • Works on localhost, staging, or Vercel preview URLs
  • Captures file upload, clipboard, downloads, network
  • Produces real Playwright code you could hand-edit if you wanted (you won't)
Recorder timeline capturing a developer's user flow

02 · Self-healing selectors

Someone changed a className. Your tests still pass.

Every action Lastest records gets seven selector candidates - data-testid, id, ARIA role, aria-label, text content, CSS, and OCR. At replay time, the runner walks down the chain until one matches. When a Tailwind refactor lands, your tests keep working. When the chain finally breaks, AI Test Fixing proposes a patch you approve in one click.

  • Survives redesigns, component rewrites, Tailwind class churn
  • OCR fallback catches text inside canvas, SVG, or image-based UIs
  • AI Test Fixing - up to 3 repair attempts before asking you
AI create test panel generating deterministic Playwright test code

03 · Visual diff

The green check lied. Lastest shows you the pixel.

DOM assertions pass even when your UI visibly broke - wrong color, collapsed layout, missing icon, layout shifted 8px. Lastest captures screenshots on every run and compares them with three diff engines: pixelmatch (pixel-exact), SSIM (structural), and Butteraugli (perceptual). Text-region-aware diffs suppress false positives from dynamic content. You see the regression with a slider, not a stack trace.

  • Auto-mask timestamps, UUIDs, relative times
  • Branch-to-branch compare for PR review
  • AI failure triage classifies regression vs flake vs env issue
Visual diff slider comparing baseline vs new screenshot

04 · Play Agent

Or skip clicking entirely.

When even recording feels like too much, the Play Agent crawls your app, plans functional areas (auth, dashboard, billing, settings), generates tests, runs them, self-heals broken selectors, and reports back. 11-step pipeline, specialized sub-agents (Orchestrator, Planner, Scout, Diver, Generator, Healer). It pauses when it needs input. You resume. It keeps going.

  • Auto-discovers routes from your source code
  • Applies templates for SaaS, marketing, e-commerce, SPA
  • WCAG 2.2 AA accessibility scoring on every build
Play Agent discovering functional areas of the application

Let your coding agent run the QA loop.

Lastest ships a Model Context Protocol server that exposes ~20 tools to any MCP-compatible agent - Claude Code, Cursor, Windsurf, Zed, or your own.

Your agent can create tests, trigger builds, run specific suites, review visual diffs, heal broken selectors, and classify failures - without you context-switching. When a PR fails a visual check, your coding agent reads the diff, proposes a fix, reruns the test, and reports back.

QA work moves out of your queue and into the agent loop you're already using to write features.

~/our-app

# Install the MCP server

$ npx @lastest/mcp-server

 

# In Claude Code:

> run the checkout suite on this PR

✓ calling lastest.run_tests { area: "checkout" }

✓ 14 tests queued on preview URL

✓ 13 passed, 1 visual diff flagged

 

> show me the flagged diff

✓ calling lastest.review_diff

checkout button shifted 4px left,

regression introduced by commit c4a9b2.

Works with everything you already use

▸ Next.js▸ React▸ Vue▸ Remix / Vite / Astro▸ GitHub Actions▸ GitLab CI▸ Playwright▸ Docker Compose▸ Claude Code / Cursor▸ Ollama (local AI)

Generate once.
Replay forever.
Zero tokens.

You already have a day job. Lastest uses AI only when you create or fix a test. Every subsequent run is pure Playwright execution - no AI calls, no per-screenshot fees, no CI bills that scale with your suite.

01

Self-host in one command

docker-compose up -d. Your screenshots never leave your infra. Your source code never leaves your infra. Your API keys stay yours.

02

Wire it into your PR flow

GitHub Action, GitLab CI, webhook, or cron schedule. Smart Run analyzes git diffs to run only the tests affected by the changes - keep your PR feedback loop fast.

03

Bring your own AI (or none)

Claude CLI, OpenRouter, Anthropic API, OpenAI, or local Ollama. Use one provider for diff analysis and another for test generation. Or skip AI entirely and just record.

Common questions for developers stuck with QA

Our team has no QA. How do I stop regressions without writing a huge test suite?
Record the 5-10 flows that would be catastrophic if they broke (signup, checkout, the core dashboard action) and let Lastest replay them on every PR. You get real browser coverage in an afternoon instead of a sprint. Nothing to maintain: the 7-layer self-healing selector chain survives refactors, and visual diffs catch what DOM assertions miss.
I'm a developer, not a QA engineer. How much testing expertise do I actually need?
None. You click through your app in a browser once. Lastest generates deterministic Playwright code with multi-selector fallback and captures a visual baseline. You never touch Page Object Model files, never debug locator timeouts, never learn a test DSL. Lastest meets you in the browser, not in a framework.
How much of my week should go to writing and maintaining tests?
For teams writing E2E tests by hand with Playwright or Cypress, hand-maintaining a brittle suite can quietly eat hours every month per developer on flake triage and selector repair. With Lastest it drops to roughly the time it takes to approve or reject a visual diff: typically a few minutes per PR. Replays run free in CI; selectors self-heal across refactors.
Will adding Lastest slow down my feature velocity?
Opposite. You stop running the same manual smoke test on every PR and you stop debugging regressions after they ship. Recording a test takes 30 seconds. Lastest pays back the day a teammate refactors a component and your suite still passes, because the selectors self-healed instead of breaking.
Our test suite is flaky and nobody trusts the green check. What changes with Lastest?
Flakiness usually comes from brittle selectors, race conditions, and LLM-generated tests asserting on Tailwind classes. Lastest uses 7-layer fallback (data-testid → id → role → aria → text → CSS → OCR), auto-waits for network quiescence, and AI-triages failures as real regression vs flake vs env issue. Green means green again.
Can I just ask Cursor or Claude Code to write Playwright tests for me?
You can, but coding agents often need several attempts to produce a working E2E test, and the tests they write land where generation is easy (the just-built feature), not where regressions hide. LLMs also tend to assert on Tailwind classes that break on the next redesign. Lastest inverts this: record once, store as code, replay forever.
Does this work in CI? What about our GitHub Actions budget?
Yes. Lastest replays are pure Playwright execution with zero AI calls per run, so your CI bill stays flat regardless of suite size. Works with GitHub Actions, GitLab CI, CircleCI, or any runner that can pull a Docker image. Smart Run further reduces cost by only running tests affected by the git diff.
What happens when a teammate refactors the UI and breaks half my tests?
Lastest's self-healing selector chain walks the 7-layer fallback until something matches, so most className or component refactors pass untouched. If the whole chain breaks, AI Test Fixing proposes a patch you approve in one click. You are not hand-editing XPath strings at 11pm.

Get QA off
your plate.
In five minutes.

No cloud account. No API key. No procurement process. No seat limits. No per-screenshot fees. It's open source, FSL-1.1-ALv2 licensed, and costs $0 forever.

★ Star & Install from GitHub →
install

# 1. clone

$ git clone https://github.com/las-team/lastest

 

# 2. start

$ cd lastest && docker-compose up -d

 

# 3. record your first test

$ open http://localhost:3000

 

✓ get back to shipping features.