Test your app

How to Test a Vibe-Coded App Without Being a Developer

How to test a vibe coded app if you are not a developer: run real scenarios, check what actually happened, and keep evidence of each result.

To test a vibe-coded app without being a developer, pick a test setup you're allowed to use, walk one realistic scenario from the first click to the saved result, and then poke at the awkward cases. Check what happens with empty, invalid, and failed attempts, confirm your data survives a reload, test privacy with two accounts you control, and watch someone new try the app without your help. You don't need to read a line of code.

You asked an AI tool for an app, it built one, and the screens look great. That's the fun part. The less fun part is that nobody has checked whether the thing actually works, and that job usually lands on you.

The good news is that testing doesn't require reading code. It takes a few dummy accounts, some patience, and a habit of asking "did that really happen?" This guide walks through the checks we'd run on any AI-built app, whichever tool made it.

If your app was built in Lovable, How to Test a Lovable App has the platform-specific steps. Keep the Vibe-Coding Checklist open in another tab while you work.

How do you set up a controlled scenario?

Pick a test setup you're allowed to use, and make sure nothing in it can hurt a real person. Use accounts, inboxes, and payment methods you control, with obviously fake data in place of real customer details. Jot down which version you're testing and what you must not set off, so a test never turns into a real charge or a real email landing in a real person's inbox.

Through the rest of this guide we'll come back to one example we invented: a service-booking app where a visitor picks a service and a time, enters contact details, and gets a booking that's still there when they come back. It's hypothetical, but you'll recognize the shape of it.

1. Does the app do what your prompt asked for?

Not always, and the gap is easier to spot than you'd think. Start by rereading your own prompt or spec, then compare it line by line with what the app actually does.

Say you asked for a habit tracker where a habit can be marked done once per day. Try marking it done twice. AI-generated logic often lets you, because the checkbox works on screen even though the once-a-day rule was never built.

2. Is every button connected to something real?

Some aren't, and you can't tell by looking. AI tools are very good at producing an interface that looks finished, which is lovely right up until you find a button that's styled perfectly and wired to nothing.

So click everything. After each click, ask whether something really changed (some data, a new screen, a different state), or whether you just got a pretty ripple. Reload the page and see whether the change stuck or only lived in memory. Then do the same thing twice in a row, because that's how you catch the app doing it twice.

3. What happens when someone enters unexpected input?

Usually something you didn't plan for. AI-written code tends to handle the example you gave it, and examples tend to describe the easy case.

Take a tip calculator you described as "enter a bill amount and get a 15% tip." Now try a negative number, letters, an empty field, and an enormous number. Most first prompts never ask for input checks, so most first builds don't have them.

While you're in there, paste in a very long name, some emoji, and a little non-English text. Press submit twice, quickly, with dummy data. If the app talks to outside services, try it on a slow or flaky connection too. Apps that look fine on your fast Wi-Fi sometimes fall over anywhere else.

4. Is your data actually saved correctly?

The screen alone can't tell you. Plenty of early prototypes already sit on a real database, so what you're checking is whether the data behaves, which is a different question from whether the page looks right.

If your builder shows a table or database view, open it after each action and see what really got written. Deleting something? Check that it behaves the way the product says it should, and don't assume every related record ought to disappear at once. And if two people can touch the same data, open two accounts side by side and see whether they trip over each other.

5. Can one user see another user's data?

If your app has any idea of "my stuff," test this one first. It's the highest-priority check in the guide, because AI tools frequently produce a login screen that works while the rules behind it don't actually stop one person from seeing another person's records.

Make two test users. Create something as the first one, then try to reach it as the second, both by clicking around and by pasting in the page address or ID you copied from the first user's account. Next, log out and see what someone who isn't signed in can still see or do. If there are admin-only features, make sure a regular account really can't get in, and that the button isn't just hidden.

6. How do you get the AI tool to fix a bug safely?

Describe it in plain language, ask for an explanation first, and change one thing at a time. Most vibe coding platforms let you say what went wrong and get a fix or an explanation back, which is often faster than trying to read unfamiliar generated code yourself.

Tell it the exact steps that led to the bug, what you expected, and what happened instead. Then, before it changes anything, ask it to explain the relevant logic in plain language. That gives you a chance to sanity-check the fix before it lands. Once it has made a narrow change, rerun the scenario that failed and the one next to it. If a fix keeps going sideways, our guide on fixing errors in an AI-built app without starting over has more ways in.

7. What does a repeatable test script look like?

Short, and written down. You don't need automated testing tools to test consistently. A brief checklist gives every change the same set of observable checks.

A sample test script for that habit tracker:

  1. Create a new account.
  2. Add a habit.
  3. Mark it complete, and confirm it can't be marked complete twice the same day.
  4. Reload the page, and confirm the completed state stuck.
  5. Edit the habit name, and confirm the change saved.
  6. Delete the habit, and confirm it's still gone after a reload.
  7. Log out and back in, and confirm nothing changed.

8. Can a new user figure out your app without help?

Probably not the first time, and that's useful to know. You built this thing, so you unconsciously steer around the exact mistakes a first-time user makes. Hand the app to someone else with no instructions and watch quietly. Wherever they pause, misclick, or say "wait, what does this do?" is where the app needs work, whether or not there's a technical bug. When you're ready to make that session a habit, our guide to website usability testing shows how to write the tasks and rate what you see.

Once your own test script passes, you can find out if your app is slop with a scored audit of what a customer sees at your public link.

9. How much testing does your app need?

It depends on what happens if it goes wrong. An app used casually among friends can live with rough edges. One that handles money, health information, or other people's personal data can't. Before you call anything done, ask yourself plainly what happens when something fails, and test harder as the stakes go up.

What does testing a service-booking app look like end to end?

Back to the service-booking app, this time start to finish. The promise: a visitor picks a service and an open time, enters contact details, and gets a confirmation that's still there later.

Start by walking through what goes in, what the visitor does, what comes out, and what should be saved. Then try a normal booking, a day with no open slots, a typo in the email address, a request that fails, and a visitor who comes back the next day. Write down what you actually see, and don't guess at why. You're the witness here, and the detective work can wait.

Then run the two-account check. Book something as Account A, then try to see or change it as Account B. That won't certify the whole system, but it can catch a serious problem early. Next, yank the internet connection mid-submission, plug it back in, and see whether the app lost your input or booked you twice. If an email or calendar service is involved, keep in mind that your app saying "success" and that service saying "delivered" are two different facts.

Finally, hand it to someone who resembles a real customer and let them book without any coaching. Notice where they hesitate and what they click by accident, but don't treat every personal preference as a bug. When you're done, write a short confidence note: which version you tested, what passed, what you didn't test, and which pieces you couldn't see into. I'd take that note over a quick "it works" any day, because it's more honest and more useful.

Vibe coding shifts where your effort goes: less time writing code, more time checking it. Treat the AI's output as a first draft from a fast collaborator nobody is supervising, and test it methodically, at the edges, with dummy data. For steps specific to Lovable, see How to Test a Lovable App, and keep the Vibe-Coding Checklist handy for your next build.