Labsco
MCP SERVER

Testplane MCP

by gemini-testing

Drive a real browser by accessible role, label or test ID — then read the Testplane HTML report afterwards and replay an rrweb snapshot at the exact moment a test went wrong.

Automated Testing & QAVerified
Summary
Browser control and report forensics in the same tool list, and the second half is the rarer one.

The driving half is unremarkable in a good way — actions take accessible-name locators alongside selector, and snapshot trims the DOM by default while telling you what it dropped — but test-results, inspect-result, time-travel-snapshot and time-travel-export-html are the part that is hard to find elsewhere, reading a finished report and replaying an rrweb capture at a chosen time with a diff against an earlier one. Two constraints to know going in: console is documented as working with Chromium-based browsers, and automatic browser download covers Chrome and Firefox, so anything else needs a driver you start yourself and hand over as gridUrl.

What it is

A Testplane-backed browser control and report-reading server with 24 tools: interaction against a live browser, DOM snapshots and console output, tab and session management, arbitrary Testplane script execution, and reading Time Travel rrweb snapshots out of an HTML report.

What you get
  • Elements addressed the way a test would address them: click, hover, type and select each take role, name, labelText, placeholderText, altText, title, testId, displayValue, text and selector, with exact and hidden controlling the match, so an action can be written against the accessible name instead of a CSS path.
  • Waiting expressed as a condition rather than a sleep: wait blocks on an element appearing or, with disappear, on it going away, under timeout, and can fold a snapshot into the response via includeSnapshotInResponse.
  • A DOM snapshot tuned for reading: snapshot drops noisy tags and attributes by default and reports what it omitted, with includeTags, excludeTags, includeAttrs, excludeAttrs, maxTextLength and truncateText available when the default hides what you need.
  • Console messages without the repeats: console returns browser-side messages that were not already returned earlier in the session, documented as working with Chromium-based browsers.
  • Tabs as first-class state: list-tabs returns every open tab with URL, title and active status, while new-tab, switch-tab and close-tab work by 1-based tab number.
  • Sessions you can join rather than only create: launch takes desiredCapabilities, gridUrl, headless and windowSize, attach joins an existing session, attach-repl connects to a running Testplane REPL by host and port, and close-browser ends the session.
  • Browser state saved and restored as a file: save-state writes cookies, localStorage and sessionStorage to JSON, and restore-state reads it back, refreshing the page by default so the restored state is actually observed.
  • An escape hatch that stays inside the framework: run-code takes inline code or a file and runs it against the current browser, receiving browser as its only argument.
  • Report reading, not only report generation: test-results lists final-attempt results from a Testplane HTML report filtered by grep, grepError, status, browser, duration, meta, fields, limit and offset, and inspect-result returns one attempt as JSON.
  • Replay at a chosen moment: time-travel-snapshot returns the DOM of an rrweb snapshot at a given time with an optional diff from an earlier one, and time-travel-export-html writes that moment out as a browser-openable HTML file with inline styles.
Requirements

No account and no key. What has to be present is a browser Testplane can drive — Chrome and Firefox are documented as downloaded automatically, and anything else requires a driver you already have running, passed as gridUrl. The report tools need a Testplane HTML report on disk, and time-travel-snapshot and time-travel-export-html need a Time Travel rrweb snapshot inside it.

Setup effort

One command — npx -y @testplane/mcp