Specnote
Back to docs home
Usage guide

Running verification and reading results

Once your scenarios are ready, it's time to run verification. Learn how to run it, how to read the pass and fail results, and how to get a fix report and hand it to your AI when something breaks.

Once your scenarios are ready, it's time to run verification — clicking through your app yourself to confirm it really behaves the way the scenario says (what people usually call testing). Below we walk through how to run a check, how to read the pass and fail results, and how to take a fix report and hand it to your AI when something breaks.

Run a verification

Go to the service map (the "User scenarios" tab) in your workspace, and your scenarios show up grouped by area. On the scenario you want to check, press Run test to start.

When you press it, a real browser opens and clicks through the scenario steps one by one, just like a person would. "Open the signup page" really opens that page; "enter email" really types into the email field. While it runs, the screen shows Verifying.

Each verification costs 1 credit. If you're short on credits, you can top up (add more credits) on Credits and plans.

If you have several scenarios to check, just run them one after another. Each verification leaves its own result, so you can compare which scenario passed and which got stuck on a single screen. Flows that need a fresh account every time, like sign up, run with new random details on each check, so repeating the same verification never collides.

To run a check, your code needs to be connected — that means registering the address of the app you want to check (your test environment's frontend address). If you haven't connected yet, see Connect your code first.

Read the results — pass and fail

When a verification finishes, the result shows up as a badge (a small status marker). It's one of two things.

  • Pass — the app worked just as the scenario said. Every step finished without getting stuck.
  • Fail — at some step, it didn't go the way the scenario expected. It also shows you which step it stopped at.

Next to the result is the verification time (when it ran). That keeps you from confusing "was this result just now, or from yesterday?" Pass is green and fail is red, so it reads at a glance even from afar.

The result is either "pass" or "fail," just those two. There's no vague middle ground like "almost worked." That way you can tell, plainly, whether something works or not.

Replay the video and screenshots

Every time you run a verification, the path the browser clicked through is saved as a video and screenshots. On the result screen, press the video to watch it again from the start. You see with your own eyes which screen appeared at which step, and where it stopped.

You don't need to read code. Just watching the video, you can tell right away — "ah, it pressed the pay button but the next dialog never opened." A screenshot is also saved at each step, so you can quickly scan "which screen it stopped at" without watching the whole video. When you need to explain the situation to someone, that one screenshot is often enough.

Run the same scenario several times and the video updates to the newest one. If a scenario's result has been invalidated (for example, you reordered the steps so the old result can no longer be trusted), the remaining video gets a Previous video note. That marks that the video may differ from the current scenario.

When it fails — the fix report

When a verification fails, you can get a fix report. Press the View suggestions button and AI analyzes the failed step and lays out things like this.

  • Which step got stuck — e.g., "Cancel payment — button not responding"
  • Cause — e.g., "The cancel confirmation dialog never opened, so the flow didn't continue"
  • Suggestion — e.g., "Check the handler wired to the cancel button"

Let's be clear about one thing. Specnote does not fix your code directly. Instead, it produces a report that neatly organizes the failure cause, the expected result versus the actual result, any error shown on screen, and so on.

Here's what comes next. Copy the report and paste it into the AI coding tool you usually use (Cursor, Claude Code, and the like), and the actual fix begins there. In other words, Specnote finds and organizes the cause, and your AI tool does the code fixing — split between the two. After the fix, just run the verification again to see if it passes this time.

Failures come in three kinds. Blocked (stopped at that step), Skipped due to an earlier step (an earlier step blocked it), and Diverged from spec (the app behaves differently from the scenario — drift). Which kind it is changes what you need to touch.

Get result notifications

You can't watch the screen every time a check finishes. So you can get results as notifications.

Where it arrivesWhen it's on
In-app notification centerAlways on
EmailOn only if you turn it on (opt-in)
SlackOn once you register a webhook (the address notifications are sent to)

Notifications come by category: screen walk-through, re-walk, verification, auto-recovery, and code sync. Of these, code sync notifications are off for external delivery by default — to keep them from arriving so often that they get in the way. You can turn them on in settings if you need them.

With notifications on, you can step away to other work while a long verification runs and just catch the result when it's done. You set which notification goes where, by category, in settings — so you might take only the important verification results by email or Slack and check the rest inside the app.

Verify again

When you fix code, you have to verify again to confirm it's really fixed. The simplest way is to press Run test one more time on the same scenario. That gives you a new video and a new result.

If you changed code in several places, running everything every time gets tedious. For that, use Re-check changes — it picks only the changed parts and re-checks just the affected screens. Unchanged spots are confirmed quickly with no AI cost, and only the screens that genuinely need another look get re-checked, so it saves money too.

When a re-check turns into a pass, the pass badge comes back on the scenario. Repeat this fix-and-recheck loop and your scenarios stay in sync with the app as it is now. Instead of confirming "it works as planned" once and being done, you can easily realign every time the code changes.

Hooking verification to run on its own every time you push code (CI integration) is coming soon. For now, you press to run a verification yourself.

If you want to know more about how verification works under the hood, see How verification works; if you haven't connected your code yet, see Connect your code.