What breaks

Form error states: which field to fix

After a failed Send, the visitor is still at the button and the message is somewhere above. Mimiq sends simulated visitors through a form with mistakes and shows where each one looked next.

5 visitors try to .
First test free with an accountRun it from your coding agent

What should a form error state show a visitor?

A form error state works when the visitor can find the first wrong field without searching: focus moves to it, the message sits beside it, and the message stays until the field passes. It fails when the failure shows as a summary at the top of a long form, when focus stays on the button, or when a sticky header covers the field that was scrolled to. Send a form with two fields wrong and watch where your eyes and the cursor go next. A simulated visitor does the same on a phone and reports the step where it lost the error, with a screenshot.

What this looks like in a report

Who
Esra, booking a caterer for a team lunch
How they arrived
Opened a search result for lunch catering on her phone
Where they stopped
Quote form, after pressing Send with two fields wrong

“The form said there were two problems at the top, but I was down at the button. I pressed Send and nothing changed. I scrolled up and couldn't tell which box had the mistake, so I closed the tab.”

The fix. After a failed Send, move focus to the first field with an error and scroll it clear of any sticky header. Put the message directly under that field, and keep it until the field passes, not until the visitor clicks elsewhere.

An illustration. Run a test to see your own.See a real sample report

After Send, the first error is out of view

The visitor fills most of a long form, presses Send at the bottom, and the page stops. Nothing moves to the mistake. A summary line may appear at the top, saying there were problems, with no link to the fields. The visitor is still at the button, so the wrong box may be a screen above, under a sticky header, or not marked at all. They press Send again, see the same silence, and start scrolling. The owner knows which box is wrong, so the form never looks broken from the owner's side.

  • Submit with only the last field wrong. Does the page bring that field into view, or stay on the button?
  • After Send, run document.activeElement in the Console. If it still reads as the button, the error did not move focus.
  • Scroll the first error into view and check whether a sticky header covers its message.
  • Type a correct value into a flagged field and see whether its message clears at once or waits for Send.
  • Press Tab from the top of the form and check that focus moves through the fields in visual order, with none skipped.

What a visitor sees after the failed Send

The form has a summary at the top, such as 'Please fix the errors below'. The visitor reads that summary only if they are already near the top, and a visitor who has scrolled down to Send usually is not. Each flagged field has a red border, but the border is small, and the message text sits where the visitor is not looking. The visitor does what a person does next: scrolls up, scans for red, and guesses. The first red box they meet is not always the first mistake in the form, so they fix the wrong field, press Send again, and the form reports the same problem.

Where focus goes, and where the first error lands

Focus is the place a keyboard or a screen reader is working. After a failed Send, a form that leaves focus on the button makes a keyboard user start the whole cycle again, and a mouse user is left at the bottom of the page. Moving focus to the first invalid field takes the visitor to the mistake and places the cursor in it. Scrolling alone does not do this. A script can scroll a field into view and still leave focus on the button, so the visitor sees the box but typing goes to the button. A sticky header can then hide the message that the scroll was meant to show.

When an error should clear, and when it should stay

An error should clear when its field passes, and stay until then. Two common mistakes break this. Some forms clear the message the moment the visitor clicks into the field, so it vanishes while they are still deciding what to type, and the red border stays until the next Send. Others keep the message after the field is fixed, so the visitor cannot tell whether the change was accepted. Clear the message on the field's own change event, and recheck the whole form on each Send.

What you get with Mimiq

  1. 01

    Run it by hand, or on every pull request

    Paste a link and a task in the app and watch the visitors work. Or run them on every preview deploy: the GitHub Action comments on the pull request, any other CI can call the MCP endpoint, and your coding agent can run it too.

  2. 02

    Bugs and usability problems in one report

    The browser records errors and failed or slow requests on the step they happened. The visitors say where the wording or the steps confused them, and where they left.

  3. 03

    Visitors that behave like your audience

    Each visitor is a different profile with a reason to be there, matched to who the page is for, described by you, or built from your own customers.

  4. 04

    A prompt to fix each problem

    Every problem comes with a fix to paste into Cursor, Claude Code, Lovable or any coding agent, and one prompt hands over the top problems at once. Then send the same visitors through again.

  5. 05

    Follow every visitor

    See each visitor's whole path, step by step with screenshots, and what it was thinking at every step. Ask any visitor a question.

The browser records relevant JavaScript errors and failed or slow app requests encountered during the run, attached to the step where they occurred. The visitors are simulated: they find problems, they do not predict how many real people will convert.

A new field or sticky header can hide the first error again

A new field, a new step, or a header that grows on phones can put the first error back out of view. Rerun the same visitor after each change, with two or three fields wrong on purpose, and check which field gets focus and whether its message is visible. With paid credits, visitors can reach a form behind a site password, so the same check runs on each preview deploy before release.

Starter

Try it on one launch

$9 once
120 credits, never expire

About 4 tests of 5 visitors

  • Visitors on your landing page, signup and checkout
  • Where they left and why, with a fix to copy for each problem
  • Run it in the app or on every pull request
  • Ask any visitor a question, included
  • Test accounts and protected previews
Buy 120 credits

Builder

Test every build

$19 a month
500 credits every month

About 20 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Builder

Pro

Test every release, as a team

$49 a month
1,500 credits every month

About 60 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Pro

Scale

Test at scale, every day

$149 a month
6,000 credits every month

About 240 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Priority support
  • Cancel anytime
Choose Scale
$0for your first test, with a free account (Google sign-in, no card). It includes 50 credits, enough for 10 visitors. After that a visitor uses 5 credits, and packs start at $9 for 120 credits.
See a sample report

Questions

Should errors show while the visitor types?

Show a rule once the visitor has left the field or paused. Flagging Invalid in the middle of a valid entry is noise. Hold the required-field messages until the first attempt to send, so a new form does not greet the visitor with red.

Why does focus matter if the message is visible?

Keyboard users and screen reader users start where focus is, not where the message is. Setting focus on the first invalid field saves them a search and tells them which field the form means. Check it by pressing Tab after a failed Send and confirming the next stop is the field after the error.

Can a simulated test show me where the error appears?

It shows the screen after each Send, with a screenshot. It does not check keyboard focus, so run one pass with the Tab key yourself. It does not predict how many real visitors would give up at the error, only where a simulated visitor stopped.

Do I need a summary at the top at all?

A short summary helps on a long form, provided each line links to its field. A line that says there were problems, with no link, leaves the visitor to hunt. Keep the summary and the message beside each field, and use the same words in both.

Why does a field turn red before I type anything?

Usually a script marks every required field invalid on load, because it treats an empty field as wrong. Mark a field only after the visitor has touched it or tried to send the form, so the first view is clean.

Keep reading

Send visitors and see what breaks first.

Your first test is free: sign in with Google and it starts right away. Last checked 2026-11-02.

5 visitors try to .