From a6b90ba9e5e799b52025264feec71c10d1b01e35 Mon Sep 17 00:00:00 2001 From: Marcel Coetzee Date: Tue, 13 Jan 2026 15:23:07 +0200 Subject: [PATCH] fix: use domcontentloaded instead of load everywhere - getCurrentPage() waitForLoadState: 'load' -> 'domcontentloaded' - prompt.md: consistent guidance for domcontentloaded --- playwriter/src/mcp.ts | 2 +- playwriter/src/prompt.md | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/playwriter/src/mcp.ts b/playwriter/src/mcp.ts index 1b06f1b..ec4c66c 100644 --- a/playwriter/src/mcp.ts +++ b/playwriter/src/mcp.ts @@ -511,7 +511,7 @@ async function getCurrentPage(timeout = 5000) { if (pages.length > 0) { const page = pages[0] - await page.waitForLoadState('load', { timeout }).catch(() => {}) + await page.waitForLoadState('domcontentloaded', { timeout }).catch(() => {}) return page } } diff --git a/playwriter/src/prompt.md b/playwriter/src/prompt.md index c856f6c..9e400c7 100644 --- a/playwriter/src/prompt.md +++ b/playwriter/src/prompt.md @@ -20,7 +20,7 @@ You can collaborate with the user - they can help with captchas, difficult eleme - **Check state after actions**: always verify page state after clicking/submitting (see next section) - **Clean up listeners**: call `page.removeAllListeners()` at end of message to prevent leaks - **CDP sessions**: use `getCDPSession({ page })` not `page.context().newCDPSession()` - the latter doesn't work through playwriter relay -- **Wait for load**: use `page.waitForLoadState('load')` not `page.waitForEvent('load')` - waitForEvent times out if already loaded +- **Wait for load**: use `page.waitForLoadState('domcontentloaded')` not `page.waitForEvent('load')` - waitForEvent times out if already loaded - **Avoid timeouts**: prefer proper waits over `page.waitForTimeout()` - there are better ways to wait for elements ## checking page state @@ -136,6 +136,15 @@ state.newPage = await context.newPage(); await state.newPage.goto('https://example.com'); ``` +## navigation + +**Use `domcontentloaded`** for `page.goto()`: + +```js +await page.goto('https://example.com', { waitUntil: 'domcontentloaded' }); +await waitForPageLoad({ page, timeout: 5000 }); +``` + ## common patterns **Popups** - capture before triggering: