fix: use domcontentloaded instead of load everywhere

- getCurrentPage() waitForLoadState: 'load' -> 'domcontentloaded'
- prompt.md: consistent guidance for domcontentloaded
This commit is contained in:
Marcel Coetzee
2026-01-13 15:23:07 +02:00
parent cbe62bc1a4
commit a6b90ba9e5
2 changed files with 11 additions and 2 deletions
+1 -1
View File
@@ -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
}
}
+10 -1
View File
@@ -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: