BlogעבריתLet’s talk

Agentic Browsing: the audits passed. The form still failed its recovery test.

Lighthouse returned 2/2 for Agentic Browsing. The same website code still produced a form error that gave no useful recovery instruction. That is the gap to test: can an AI agent correct a mistake and complete the request after finding the right button?

TL;DR

  • Agentic Browsing means using an AI agent to perform website tasks. Useful testing connects page construction with a verified outcome.
  • The live homepage received 2/2 in Lighthouse and 20/100 in Cloudflare Agent Readiness. They measure different layers; neither score records a completed task.
  • The local Nirlevi.com form passed 2/2 Lighthouse checks, yet a short message padded with spaces produced a misleading sending error.
  • Shared validation, an associated field error and restored focus fixed the recovery path. Corrected input produced one accepted inquiry in the test receiver.
  • The guide covers accessibility, layout stability, llms.txt and WebMCP, with a follow-up task check for each.

Method: On 10 September 2026, Codex audited the live nirlevi.com homepage and a local production build of its code. Lighthouse 13.4.1 ran in Chrome 152 with mobile emulation. The form experiment used a desktop browser, fictitious inputs and a local receiver replacing email; the operator knew the code. The live audits and controlled recovery test are documented separately.

Jump to the form case, use the audit checklist, or download the working template.

What is Agentic Browsing, and who should test it?

Agentic Browsing means an AI agent operates a browser to complete a task: booking a demo, filling a form or placing an order.

I recommend starting with the action that matters most to your customer. For SaaS, that might be trial registration; for services, requesting a quote.

Define the finish line first. “The agent clicked submit” records an action. “The receiving system contains the correct inquiry” defines a checkable result.

The work also helps human visitors. An unclear field or unhelpful error message makes recovery harder for anyone using the form.

WebsiteFirst task to testVerify
SaaSTrial registration or demo requestAn account or request with the right details
ServicesInvalid inquiry input followed by correctionOne accepted inquiry after recovery
CommerceChoose options, use the cart and place a test orderCorrect item, price and quantity
Content and documentationFind an answer or download a documentThe right document and supported answer

The live site: 2/2 in Lighthouse, 20/100 in Agent Readiness

The public homepage at https://nirlevi.com/ was also audited directly. Agentic Browsing returned 2/2, with CLS measuring 0.

Lighthouse report for nirlevi.com showing 2/2 and both passing audits
Live homepage, 10 September 2026: Lighthouse 13.4.1, Chrome 152, mobile emulation. The report identifies nirlevi.com. Open full size ↗

The accessibility tree passed. WebMCP checks and llms.txt were N/A. Inspect the complete report and raw JSON.

Other categories returned Performance 75, Accessibility 97, Best Practices 100 and SEO 100. These are homepage lab results, not measurements of this article.

The same URL received 20/100, at Basic Web Presence, in the Cloudflare Agent Readiness scan.

Cloudflare showing 20 out of 100 for nirlevi.com
Live-site scan, 10 September 2026. Commerce was not checked; results reflect the displayed scan configuration. Open full size ↗
Scan categoryResultWhat it means here
Discoverability2/4robots.txt and sitemap passed; dedicated discovery headers and DNS-AID were absent
Content0/1A Markdown request returned HTML
Bot access control1/2Wildcard rules applied; Content Signals were absent
API, auth, MCP and skill discovery0/8The tested discovery interfaces were not found
CommerceNot checkedThis is neither a passing nor failing payment test

I would not turn the tool’s 12 recommendations into an automatic development backlog. First decide which capabilities this site should provide.

An API catalog adds little without a public API. A useful form error, on the other hand, immediately helps a visitor recover.

The scan observation record preserves the displayed results. The local recovery experiment follows, with reproducible input and a verified repair.

The case: rejected input with no useful explanation

The inquiry form on this site had a small mismatch between browser and server validation. The input was SEO : three letters with a space at either end.

The browser required minlength="5", which that value satisfied. The server trimmed the outer spaces, counted three characters and rejected it.

Rejecting the request was correct. The defect was the explanation: the form said sending was unconfirmed and suggested retrying or emailing directly.

Hebrew inquiry form showing SEO and a generic unconfirmed-send message
Before: the Hebrew message at the bottom gives no indication that the request is too short. Original local reproduction. Open full size ↗

Retrying unchanged input cannot solve this. The visitor needs to know which field to correct, and an agent needs that same information.

This edge case was selected after inspecting the code. It exposes an existing recovery defect; it does not measure how often visitors encounter it.

Meanwhile, Lighthouse returned 2/2 on the same code: the accessibility tree passed and CLS measured 0. Four additional checks were N/A.

Original Lighthouse report showing 2/2, a passing accessibility tree and CLS of zero
The baseline report passed both applicable checks without exercising the form’s error path. Open full size ↗

Inspect the complete baseline report or its raw JSON. Other categories remain visible as measured in the local environment.

The fix: identify the error and let the visitor recover

The fix keeps the server rule and applies it in the browser too. Short input stops at the field before submission.

  • Browser and server share the same message validation function.
  • The field receives aria-invalid and an explanation connected with aria-describedby.
  • Focus returns to that field, while existing entries remain intact.
  • The interface shows success only after the server confirms acceptance.
Focused Hebrew message field with a specific instruction to enter at least five characters
After: the error appears beside the field. The same invalid input produced no POST request. Open full size ↗

In the retest, invalid input stopped in the browser. Replacing it with “בדיקת נראות האתר בחיפוש” produced one accepted inquiry in the test receiver.

StageObservationWhat it establishes
Before the fix5 browser characters, 3 after trimming; generic sending errorNo useful recovery instruction
After the fix, identical inputAssociated field error, focus and 0 POST requestsInvalid input can be corrected before submission
After correcting the messageOne POST, HTTP 200 and one record with matching contentThe local receiver accepted the inquiry

The completion evidence is the accepted record, alongside the request log. A success message alone would not establish that.

The follow-up report stayed at 2/2. What changed was the ability to correct the form and continue.

I would keep this case in the form’s regression checks. It exercises a recovery path that the initial page audit never entered.

The audit checklist: concrete fixes and the next test

Lighthouse helps identify technical obstacles. Open the finding, repair its cause, then exercise the task that depends on it.

Chrome’s documentation describes an experimental category requiring Chrome 150 or later. Its fraction counts passing checks; it is not a weighted 0–100 score.

1. Accessibility tree: names, roles and fields

Lighthouse 13.4.1 groups 33 accessibility rules into its tree check. These include button names, field labels and valid ARIA roles.

For an unnamed control, use a real button with clear text. An icon-only button needs an accessible name that explains its action.

Connect a label with matching for and id values, or wrap the field inside label. Both approaches are valid.

HTML example: a field in an error state, with a connected explanation

<label for="request">What should we review?</label>
<textarea id="request" name="goal"
  aria-invalid="true" aria-describedby="request-error"></textarea>
<p id="request-error">Write a few words about your request.</p>

Application code must clear the error state after correction and manage focus where needed. This example shows the error state only.

Passing does not establish: that the visitor can correct invalid input or that the form saves it. Trigger an error and test recovery.

2. CLS: keep the action in place

CLS measures unexpected layout shifts. An image without reserved space or a late-loading banner can move a button during interaction.

Set image dimensions or aspect-ratio, and reserve space for delayed content. These are established CLS fixes.

Passing does not establish: stability after selecting a plan, loading a price or displaying an error. Exercise those states too.

3. llms.txt: distinguish missing, malformed and irrelevant

The file is optional. Chrome’s documentation says a 404 is N/A, while a server failure is flagged.

For a returned file, version 13.4.1’s implementation also checks for an H1, a Markdown link and at least 50 characters.

Basic structure, if you choose to maintain this file

# Example company

Product documentation and support for customers.

## Documentation
- [Getting started](https://example.com/docs): Setup instructions.

If you provide it, check both the server response and content. Creating a file simply to replace N/A with a pass is a weak priority.

Passing does not establish: that an agent read it, relied on it or completed a task. Test the system you intend to support.

4. WebMCP: registration, form coverage and schema validity

WebMCP exposes structured actions to a supporting agent. Availability search, for example, can accept defined inputs and return a clear result.

CheckInspect and repairStill exercise
Tool registrationRegistration timing; a name and description that explain the actionThe supporting consumer discovers and selects the right tool
Form coverageThe intended form is correctly exposed through the declarative implementationInputs map to the correct business fields
Schema validityInput types and required fields match the action’s contractInvalid input has a useful error; valid output is saved

Current JavaScript registration uses document.modelContext.registerTool. Feature-detect support and follow the current API documentation.

For HTML integration, see the declarative API. Define the action before adding tool names to forms.

WebMCP audits require the relevant trial setup. In the tested release they have zero weight in the fraction; this local report marked them N/A.

Passing does not establish: authorization, acceptance by the destination system or duplicate prevention. Test each in the action you expose.

Agent Readiness vs Agentic Browsing vs a task test

I use this comparison to choose the next test. The question is what evidence the decision needs, rather than which tool gives the highest number.

QuestionLighthouse Agentic BrowsingCloudflare Agent ReadinessTask test
Unit testedA page in the chosen audit modeA URL and discovery resourcesA predefined journey and outcome
Main purposeStructure, stability and WebMCP integrationDiscovery mechanisms and protocol supportWhether the user achieves the intended result
Accessibility tree and CLSDirect auditsNot the measures in its scan summaryObserve their effect during interaction
robots.txt and sitemapOutside the Agentic categoryDiscovery checksCheck only if relevant to the task
Markdownllms.txt checking is not format negotiationTests Accept: text/markdown responsesCheck the content and output the task requires
WebMCPRegistration, coverage and schema checks under supported conditionsCapability discoveryInvoke an action with a supporting consumer
Errors and retriesA navigation audit does not submit the formA standards scan does not complete an inquiryCorrect input; check acceptance and duplicates
Nirlevi.com result2/2 on the live homepage20/100 in the live scanLocal defect fixed; one inquiry accepted
Closure conditionTechnical finding resolvedDesired capability is available and discoverableCorrect output exists in the destination system

The results complement each other. A low Cloudflare score does not invalidate the passing Lighthouse checks; both leave the actual user outcome to verify.

How to run a test you can repeat

Open the exact page in Chrome, enter DevTools and select Lighthouse. Enable Agentic Browsing, run the audit and save the report.

If the category is absent, check your Chrome and Lighthouse versions. The CLI is another option, used for this example.

Export JSON and HTML; replace the URL with your page

npx lighthouse@13.4.1 https://example.com/ \
  --only-categories=agentic-browsing \
  --output=json --output=html --output-path=./audit

Record the URL, date, versions, authentication state and emulated device. Otherwise, changed conditions can be mistaken for the effect of a repair.

  • Submit valid input and inspect the record in the receiving system.
  • Enter invalid input: is the required correction clear, and are the other entries retained?
  • Correct and resubmit: does the exact requested result exist?
  • Test a retry after a delay or disconnection, checking for duplicate outcomes.

Use a test environment or coordinated test data for commercial forms. A booking test should produce a test booking without an accidental charge.

Is the defect in the website or the testing tool?

An agent failure starts an investigation. First check whether the tool supports the action and whether its instruction matched the interface.

FailureInspectClose when
Field not foundAccessible name, label, loading state and the tool instructionThe correct field is identified
Submission rejectedServer response and the visible field explanationCorrection and resubmission preserve other entries
Success shown without an outcomeServer response and destination recordThe correct content exists in the receiving system
A retry creates two actionsSubmission locking and server-side duplicate preventionRetrying does not create a duplicate result
Agent cannot access a downloadTool download support and whether the file actually existsA missing file is distinguished from a tool access limitation

The form mismatch appeared in both the code and the interface. That supports a site fix. A failed tool instruction alone would not.

How does this relate to GEO, and what comes first?

Agentic Browsing concerns completing actions. GEO concerns visibility in AI answers. They address different goals, even when they involve the same website.

Google Search says its AI features need no special files and that it ignores llms.txt. An audit pass promises neither a mention nor a ranking.

My recommended order: choose a valuable action, fix its obstacles, then decide whether WebMCP adds something useful to that path.

Use the test template to hand development an actionable finding: input, defect, repair and acceptance criteria. For answer visibility, use the AI measurement guide.

Frequently asked questions

How do you verify that the agent actually completed the task?

Inspect the destination record, test booking or downloaded file, including its content and count. Then check that the agent received a matching confirmation. A screenshot of a click or success message cannot replace the actual outcome.

How can one site receive both 2/2 and 20/100?

The tools measure different things. Lighthouse passed Nirlevi.com’s accessibility tree and layout stability checks. Cloudflare also checked resource discovery, content formats and protocols the site had not implemented. There is no valid conversion between those numbers.

Does an agent need WebMCP to use a website?

No. A browser-capable agent can operate ordinary fields, buttons and links. WebMCP adds a structured action interface for supporting consumers. Implement it when you have a defined action and a benefit you can test.

Does a content website need task testing?

Yes, when readers need to find a document, download a file or locate specific information. For a reading-only site, define a retrieval and comprehension task. Do not invent a checkout or public API just to satisfy a score.

How should you test login or payment flows?

Use a test account with defined permissions and a payment sandbox. Record where human participation is required. A CAPTCHA or confirmation step is not automatically a defect because the agent must stop and hand control back.

Should you fix every failed Agent Readiness check?

No. Start with the user’s need and the capabilities the site actually offers. An API catalog adds little when there is no public API. Content-use preferences belong to the site owner; do not copy them merely to improve a score.

When should you repeat the test?

After changing forms, navigation, input validation, consent banners or components that move the layout. Repeat the same scenario against the same acceptance criteria. Browser and agent updates also justify retesting important journeys.

Who should own the findings?

Product or the site owner defines success; developers repair behavior and validation; QA checks completion and recovery. SEO helps select journeys tied to customer demand. Assign an owner and a clear closure condition to each finding.

Sources & further reading

Need to turn findings into a development plan? See how technical SEO connects diagnosis, priorities and implementation.

A question about your website?

Share your site and what is getting in the way. We’ll work out what to check.

Let’s talk