A successful click is not a successful task.

Browser agents must verify the world after acting. Simulate selectors, delayed updates, stale pages, retries, and irreversible actions while the state graph reveals where false success enters.

Open the verification lab
72%verified success
18%false-success risk
1.4sexpected latency
1expected retries

Reliability begins after the interaction returns.

Precondition

Before acting, confirm identity, permissions, target object, and current state. A valid selector can still point to the wrong record.

may_act = target ∧ permission ∧ state

Action receipt

Record operation identity, inputs, timestamp, and browser evidence. Idempotency keys prevent retries from duplicating side effects.

receipt = hash(intent, target, nonce)

Postcondition

Observe the durable business outcome, not just a toast or disabled button. Triangulate independent signals when stakes are high.

success = observed_state ⊨ expected_state

Design verification as part of the plan.

DOM success can be a false positive

A click event may fire while the request fails, the session expires, a modal covers the target, or the page updates optimistically. Verify server-backed state where possible.

Retries need operation identity

After a timeout the agent may not know whether the action committed. Retrying blindly can send two messages or create two bookings. Query by idempotency key before repeating.

Irreversible actions need stronger gates

Payments, deletions, submissions, and external messages deserve explicit confirmation, narrower selectors, stronger postconditions, and a clear human escalation path.

Verification questions

Is checking the URL enough?

Usually not. Single-page apps can change state without navigation, and redirects can occur after failure. Check the domain-specific outcome.

How many postconditions are enough?

Use the minimum independent evidence appropriate to impact. A draft save may need one signal; a payment may require order state, transaction identity, and amount.

When should an agent stop retrying?

Stop when the budget is exhausted, failure is non-transient, the outcome is ambiguous for an irreversible action, or a safety boundary requires review.

Primary sources

RFC 9110 defines HTTP method semantics and idempotency. W3C WebDriver specifies browser automation commands and state. Playwright actionability documentation explains pre-action checks. WebArena evaluates autonomous browser agents on realistic tasks.