attach
Attach to existing browser session
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.
LABSCO SUMMARY
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.
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.
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.
One command — npx -y @testplane/mcp
USE CASES
Open the page, act on it by the labels and roles a person would see, and take a trimmed DOM snapshot at the point where it goes wrong.
Wait for the element that should have appeared, read the console messages you have not seen yet, and snapshot the DOM to see what is actually there.
Filter the report down to the failing test, inspect the attempt as JSON, then pull the replayed DOM at a chosen time with a diff against an earlier point.
Export the replayed moment as a standalone HTML file with its styles inlined, and attach a viewport screenshot when the difference is visual.
Save the cookies and web storage once, restore them on the next run so the page comes up authenticated, and carry on from there.
Start your own driver, point the session at it as a grid URL with the capabilities you need, or attach to a session that is already running.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
attachAttach to existing browser session
attach-replAttach to a running Testplane REPL session
clickClick an element on the page.
close-browserClose the current browser session
close-tabClose a specific browser tab by its number (1-based), or close the current tab if no number is provided
consoleGet browser-side console messages. This command only works with Chromium-based browsers and returns only "unseen" messages - those that were not returned by the previous getLogs call in the current session.
hoverHover an element on the page.
inspect-resultRead a Testplane HTML report and inspect test result attempt details as JSON
launchLaunch a new browser session with custom desired capabilities. Avoid using this tool unless the user explicitly requests a custom browser configuration; browsers are launched automatically for commands like navigate to URL. Testplane can ONLY download Chrome and Firefox automatically, for other browsers you MUST ensure that driver is launched and provide it as custom gridUrl.
list-tabsGet a list of all currently opened browser tabs with their URLs, titles, and active status
navigateOpen a URL in the browser
new-tabOpen a new browser tab, optionally navigate to a URL, and automatically switch to it
restore-stateRestore browser state from a JSON file. By default the page is refreshed after restore so it can observe restored cookies and web storage.
run-codeRun arbitrary Testplane script using the current browser, useful when other tools don't provide the functionality you need. Inline input may be code or a function that receives browser as its only argument. In REPL sessions, the code is passed directly to the Testplane REPL.
save-stateSave the current browser state, including cookies and web storage, to a JSON file
screenshotCapture a PNG screenshot of the current browser viewport. Strongly prefer capturing text-based snapshots using takePageSnapshot tool. Only use to test for visual changes when text-based snapshots are not useful.
selectSelect an option in a native <select> element.
snapshotCapture a DOM snapshot of the current page. Note: by default, not useful tags and attributes are excluded (e.g. script, style, etc.). Prefer to use defaults. Response contains info as to what was omitted. If you need more info, request a snapshot with more tags and attributes.
switch-tabSwitch to a specific browser tab by its number (starting from 1)
test-resultsRead a Testplane HTML report and list final-attempt test results with filters
time-travel-export-htmlExport a Testplane Time Travel rrweb snapshot at a selected time as a browser-openable HTML file with captured inline styles
time-travel-snapshotInspect Testplane Time Travel rrweb snapshot at a selected time and return a DOM snapshot of the replayed page, optionally with a diff from a previous time
typeType text into an element on the page.
waitWait for an element to appear or disappear on the page. Useful for waiting until page loads fully or loading spinners disappear.
BEFORE YOU INSTALL
24 tools when we connected.
npx on PATH
CONTEXT COST
Rated by the size of the 24 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
Add the block to your client, or run the command directly.
{
"mcpServers": {
"testplane": {
"command": "npx",
"args": [
"-y",
"@testplane/mcp"
]
}
}
}npx -y @testplane/mcp