Autonomous browser testing engine & MCP toolset for AI coding agents
19 tools with complete Zod schemas and descriptions. Naming follows verb_noun convention (browser_*). Descriptions average ~80 chars, meeting baseline. However, many parameter descriptions are terse (10-30 chars), and output schemas are not documented. Error handling returns isError flag but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Session management is well-structured but sessionId parameter appears on nearly every tool, suggesting potential composition issues.
Feature #11: Runs axe accessibility audit on current page.
Executes an interaction on a referenced element.
Feature #1: Asserts page state — visibility, text, value, count, checked, etc.
Feature #15: Asserts Web Vitals performance budget (FCP/Load/TTFB/DCL).
Closes the browser session and cleans up resources.
Feature #13: Crawls sitemap.xml and returns list of URLs.
Generates a comprehensive test report (Markdown/HTML/JUnit).
Output schemas not documented. Tools return text summaries via LLM context but no structured response schema is defined. LLMs cannot plan downstream calls or extract typed fields.
Parameter descriptions are terse (10-30 chars). E.g., 'Element reference number' for ref, 'Session identifier' for sessionId. Descriptions should explain WHAT the parameter controls and WHEN to use it, not just restate the name.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe read-only tools from destructive ones (e.g., browser_close vs browser_get_state). Agents may incorrectly retry destructive operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Returns captured console messages (logs, errors, warnings).
Returns captured network requests and responses.
Returns current page state including all interactive elements and telemetry.
Refreshes interactive element refs and all captured console/network errors.
Feature #10: Mocks a network route (simulate 500/401 error states without backend changes).
Removes network mocks (all or a specific pattern).
Opens target URL in browser, returns sessionId + interactive elements.
Feature #14: Runs a multi-step test scenario from YAML/JSON definition.
Saves cookies/localStorage to JSON for reuse.
Takes a screenshot; supports visual regression compare against a baseline.
Lists open tabs or switches active tab by index.
Waits for an element to appear or disappear on the page.
Error handling returns isError flag with text message but no recovery guidance. E.g., '❌ Failed: <error>' tells LLM nothing about whether to retry, ask user, or abort. Errors should categorize as retryable/user-fixable/fatal.
sessionId parameter is optional on all tools but required for multi-session workflows. No guidance on when to omit vs provide. Ambiguous parameter relationships force LLM guessing.