Inspect live page DOM
inspect-pageOpen a URL in a fresh headless browser to capture unique Playwright locators, CSS selectors, visibility, text, console messages, DOM inventory, or ARIA snapshots for reliable E2E test authoring.
Instructions
Open a URL in a fresh headless browser and return its elements with Playwright locators proven unique on the page (role + name first), CSS selectors, visibility, text and console messages. Each call starts clean (no cookies kept): put every step to reach a state, login included, in actions, or open it signed in with storageState/headers. By default it returns the compact locator map; view 'elements' gives the full DOM inventory and view 'aria' returns the accessibility snapshot plus a ready toMatchAriaSnapshot assertion.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"url": "<url>"
},
"name": "inspect-page"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| har | No | ||
| url | Yes | Full URL of the page to open (http/https) | |
| view | No | 'locators' (default): compact map of interactive elements; 'aria': accessibility snapshot + toMatchAriaSnapshot check (scoped by selector); 'elements': full DOM inventory with boxes and attributes | |
| device | No | Playwright device preset, e.g. 'iPhone 15', 'Pixel 7', 'iPad Pro 11' (viewport, user agent, touch) | |
| routes | No | Network mocks, first match wins: json/body/status fulfil, abort fails, delayMs alone slows the real request | |
| actions | No | Steps run in order after load to reach a state (modal, step 3). One call = one fresh browser, so include the login steps; end with a 'wait' on what the state shows | |
| browser | No | Engine (default chromium) | |
| channel | No | Branded Chromium to launch instead of the bundled one (must be installed) | |
| connect | No | Remote browser: Playwright ws(s):// endpoint or 'cdp:<url>'; keys as {{env:E2E_…}} | |
| headers | No | Extra HTTP headers, e.g. Authorization | |
| offline | No | Go offline once the page has loaded, before steps run, to check offline and retry states | |
| waitFor | No | Wait for this selector first | |
| selector | No | CSS selector: inspect matches instead of the whole DOM | |
| viewport | No | ||
| timeoutMs | No | Overall inspection limit in ms (default 45000) | |
| waitUntil | No | Navigation wait condition (default domcontentloaded) | |
| blockWrites | No | Abort POST/PUT/PATCH/DELETE requests no mock answers, so steps cannot change real data (default: PW_MCP_BLOCK_WRITES) | |
| includeHtml | No | Include the rendered HTML (truncated) | |
| projectRoot | No | Project whose Playwright launches the browser (default: server root) | |
| maxHtmlChars | No | HTML cap when includeHtml is set (default 20000) | |
| storageState | No | Logged-in session: storageState JSON inside the project, e.g. playwright/.auth/user.json | |
| blockResources | No | Skip these requests for speed and privacy: image, media, font, stylesheet, trackers (known analytics/ad hosts); default PW_MCP_BLOCK_RESOURCES | |
| actionTimeoutMs | No | How long each action waits for its element (default 10000); keep timeoutMs above the total |