browser_refresh
Refresh the current web page in a Playwright MCP Server session, with options to wait for specific events like 'networkidle', 'domcontentloaded', or 'load' before proceeding.
Instructions
Refresh the current page, similar to pressing F5 or clicking browser refresh
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| waitUntil | No | load |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"timeout": {
"type": "number"
},
"waitUntil": {
"default": "load",
"enum": [
"networkidle",
"domcontentloaded",
"load"
],
"type": "string"
}
},
"type": "object"
}
Implementation Reference
- src/server.ts:569-611 (handler)The handler function that parses input, connects to Playwright if needed, reloads the current page with specified waitUntil and timeout options, and returns success or error message including URL changes.async (params: any) => { try { const input = z.object({ waitUntil: z.enum(['networkidle', 'domcontentloaded', 'load']).optional().default('load'), timeout: z.number().optional() }).parse(params); await this.playwright.ensureConnected(); const page = this.playwright.getPage(); // Get current URL before refresh const currentUrl = page.url(); // Perform the refresh with specified options const refreshOptions: any = { waitUntil: input.waitUntil }; if (input.timeout !== undefined) { refreshOptions.timeout = input.timeout; } await page.reload(refreshOptions); // Get URL after refresh (should be the same unless redirected) const newUrl = page.url(); return { content: [{ type: 'text', text: `Successfully refreshed page. URL: ${newUrl}${currentUrl !== newUrl ? ` (redirected from ${currentUrl})` : ''}` }] }; } catch (error) { return { content: [{ type: 'text', text: `Page refresh failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } }
- src/types.ts:54-57 (schema)Zod schema defining the input for the browser_refresh tool: optional waitUntil (default 'load') and optional timeout.export const BrowserRefreshInputSchema = z.object({ waitUntil: z.enum(['networkidle', 'domcontentloaded', 'load']).optional().default('load'), timeout: z.number().optional() });
- src/server.ts:559-612 (registration)Registers the 'browser_refresh' tool with the MCP server, specifying title, description, input schema, and the handler function.this.server.registerTool( 'browser_refresh', { title: 'Refresh Current Page', description: 'Refresh the current page, similar to pressing F5 or clicking browser refresh', inputSchema: { waitUntil: z.enum(['networkidle', 'domcontentloaded', 'load']).optional().default('load'), timeout: z.number().optional() } }, async (params: any) => { try { const input = z.object({ waitUntil: z.enum(['networkidle', 'domcontentloaded', 'load']).optional().default('load'), timeout: z.number().optional() }).parse(params); await this.playwright.ensureConnected(); const page = this.playwright.getPage(); // Get current URL before refresh const currentUrl = page.url(); // Perform the refresh with specified options const refreshOptions: any = { waitUntil: input.waitUntil }; if (input.timeout !== undefined) { refreshOptions.timeout = input.timeout; } await page.reload(refreshOptions); // Get URL after refresh (should be the same unless redirected) const newUrl = page.url(); return { content: [{ type: 'text', text: `Successfully refreshed page. URL: ${newUrl}${currentUrl !== newUrl ? ` (redirected from ${currentUrl})` : ''}` }] }; } catch (error) { return { content: [{ type: 'text', text: `Page refresh failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } );