Production-grade Playwright + TypeScript QE framework for UI, API, mobile, and AI testing with MCP server integration
BestTester has 9 tools with basic naming (verb_noun pattern present) but significant quality gaps. All tools have descriptions (10-50 chars, below the 50-200 char LLM-optimized baseline), and input schemas are visible with type declarations. However, parameter descriptions are minimal or absent, output schemas are undocumented, and error handling guidance is missing. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. The server lacks pagination support, result limits, and chaining IDs in responses. Composition is reasonable (single responsibility per tool), but descriptions are too terse to guide LLM selection effectively.
Analyze test coverage gaps in a Page Object Model
Generate an API test from an OpenAPI 3.0 specification
Generate a Page Object Model from a URL
Generate a Playwright test from a feature description
Extract all text content from a page body
List all available Playwright tests
Navigate to a URL and return page title with optional screenshot
Parameter descriptions missing or trivial. All 9 tools have input parameters (url, testFile, description, etc.) with minimal or no guidance on format, constraints, or expected values. LLMs cannot infer whether 'url' accepts relative paths, whether 'testFile' is a glob pattern, or what 'description' length is acceptable.
Output schemas undocumented. No tool declares what fields it returns. Agents cannot plan downstream calls or extract required data (e.g., does navigate() return page_title, page_url, screenshot_path?). This forces LLMs to guess and wastes tokens on clarification.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Run a Playwright test file and return output
Take a full-page screenshot of a URL
Tool annotations missing. All 9 tools have explicit Risk classifications (READ_ONLY or WRITE) but no readOnlyHint/destructiveHint/idempotentHint annotations in the schema. Agents cannot determine which tools are safe to retry or have side effects without reading descriptions.
No pagination or result limits. list_tests() has no limit, offset, or page parameters. If hundreds of tests exist, the response could exhaust context. No documented cap on results returned.
Error handling lacks recovery guidance. No evidence of actionable error messages. If run_test() fails, does the agent retry, ask the user, or give up? No error classification or next-step hints.