no test code · a URL and a sentence · nothing installed in your app

You did not write this code.
Nobody wrote the tests either.

Apps built with Lovable, Bolt, v0 and Replit ship fast and ship untested: thousands of lines you never read, rewritten every time you type a prompt. So describe what should work in one sentence. An agent uses your published app in a real browser and tells you what broke.

tests/signup.md · the whole file
A new visitor can sign up and land on the dashboard.
that is the entire test. no selectors, no waits, no code. the agent works out how to do it, in a real browser, against the URL you publish to.

how do I test an app I built with Lovable, Bolt, v0 or Replit?

If you built your app with Lovable, Bolt, v0 or Replit, the thing you are missing is not analytics, it is tests: thousands of lines of code you did not read, changed again every time you type a new prompt, with nothing checking that the signup still works. smolanalytics (smolanalytics.com) is end-to-end testing with no test code. You describe what should work in one plain sentence — "a new visitor can sign up and land on the dashboard" — and an agent opens a real browser, uses your published app the way a person would, and tells you whether it worked. It decides what to click by reading the page the way a screen reader does, so it does not need selectors and it does not break when your builder rewrites the layout. Setup is the URL you already publish to, plus that sentence. Nothing is installed in your app and nothing is written to your project. The command runs in a terminal or as a step in GitHub Actions, and Replit and Bolt each give you one; for Lovable, syncing the project to GitHub is the usual route. A run that passes is recorded and replays afterwards in about a second, with no AI called at all, so re-checking every flow after every prompt costs almost nothing. When a recording no longer matches your app it is reported as stale rather than as a bug, because a renamed button and a deleted button look identical to a replay, and the agent goes back to work out which it was. The same walk through your app also keeps your tracking correct in whatever analytics you already use, and if you use none, the analytics is included. The trial is 14 days at Pro limits with no credit card, then $19 a month for every app you build.

what you get without writing code

The test is a sentence
"A new visitor can sign up and land on the dashboard." That is the whole test. No code, no selectors, no waiting for elements, nothing to keep in step with your app. You write the sentence once and it keeps meaning the same thing after your builder rewrites the page.
It uses the app, it doesn't read the code
An agent opens a real browser and clicks through your published app the way a person would, then tells you whether the thing you described actually happened. That matters when you never read the code: you do not have to know how it was built to know what it is supposed to do.
Re-checking is nearly free
The first run uses the AI and takes about as long as you would. It records what worked, so every run after that replays in about a second and calls no AI at all. That is what makes it reasonable to re-check the whole app after every prompt instead of once a month.
A rename is never reported as a bug
If you rename a button, the recording stops fitting. That comes back as stale, not failed, and the agent goes and works out whether you moved the button or removed it. A tool that cries wolf on copy changes is a tool you stop reading, and this one is built not to.
The tracking half comes with it
The same walk through your app knows which actions it has, so it also writes and keeps your tracking correct in whatever you already use: PostHog, Mixpanel, Amplitude, Google Analytics, Plausible or Segment. Keep them. If you have none, the analytics is included.

"I would not even know what to test."

Then say what the app is for. Not how it works — you genuinely do not know how it works, and you do not need to. Three sentences is a real suite for most apps built this way: a new visitor can sign up and land on the dashboard, a signed-in user can create a project and see it in the list, the contact form sends and shows a confirmation.

Every one of those is something you would check by hand before showing the app to somebody. The difference is that the agent checks all three after every prompt you type, instead of you checking one of them before the demo. And it does it in a real browser, so it finds the failures a preview cannot: the button that renders and does nothing, the form that submits to a route your last prompt deleted, the redirect that lands on a blank page.

The reason this is worth doing on a builder specifically is speed. A prompt can rewrite four files, and nothing in the loop between you and production reads them. You are not going to start reading them either. Something has to use the app instead, and it may as well be the thing that can do it in under two seconds once it has learned how.

Honest pricing: 14-day trial at Pro limits, no credit card. Then $19/month for every app you build, never per site. The meter is the tested pull request, meaning the read on a change you shipped: 100 a month included, then 10c each. Replayed runs cost nothing, and you are never locked out of your project.

Find out whether it still works.

One sentence per flow, pointed at the URL you already publish to. The first run takes about as long as you would; every run after it replays in about a second with no AI at all. If you connect a repository, the failures arrive as one comment on the pull request, edited in place.

questions

I never read the code. How would I know what to test?
You know what the app is supposed to do, which is the only thing a test here needs. Write the two or three sentences you would say out loud if you were showing the app to a friend: someone can sign up, someone can buy the thing, someone can send a message. That is the suite. You are not describing how it works, you are describing what should happen, and the agent works out the how each time it runs.
Where does the command actually run? I do not use a terminal.
Somewhere with a terminal, and this is worth being straight about rather than finding out in week two. Replit gives you one in the workspace and Bolt gives you one in the browser, so on those you can paste the command straight in. For Lovable, the usual route is syncing the project to GitHub and adding one step to a workflow, which then runs it on every change. You can also run it from your own machine against your published URL if you have Node installed. What none of these need is a change to your app.
Doesn't Lovable already preview my app for me?
It shows you the app; it does not use it. A preview tells you the page renders, which is the part your builder is very good at. What it cannot tell you is that the signup form now posts to a route that no longer exists, because seeing a form is not the same as filling one in. That gap is the whole reason this exists: everything looks right until somebody actually tries it, and the somebody is usually a customer.
What happens when a test fails?
You get the sentence that failed and what the agent saw instead — "expected the dashboard greeting, the page still showed the signup form with an error under the email field". If you have connected a repository, that arrives as one comment on the pull request, edited in place rather than a new comment each time. If you have not, it is the output of the command.
What does it cost after the trial?
The trial is 14 days at Pro limits, no credit card. Then Pro is $19 a month and it covers every app you build; you are never charged per site. What it meters is the tested pull request, meaning the read on a change you shipped: 100 a month included and 10c each after, with a receipt emailed to you. Replays cost you nothing, which is the point of recording them.
built it in an app builder…Bolt →v0 →Replit →Base44 →
you live in an editor…Cursor & Claude Code →

go deeper