sickn33/agentic-awesome-skills · warning

Page load timeout, continuing...

Error message

Page load timeout, continuing...

What it means

waitForPageReady called page.waitForLoadState with the configured waitUntil state and timeout, and Playwright gave up before the page reached that state. The helper deliberately swallows the error ('continuing...') because many pages never reach 'networkidle'; the flow then proceeds to optional selector waits and content extraction. The warning means readiness is unconfirmed, not that navigation failed.

Source

Thrown at skills/playwright-skill/lib/helpers.js:100

}

/**
 * Smart wait for page to be ready
 * @param {Object} page - Playwright page
 * @param {Object} options - Wait options
 */
async function waitForPageReady(page, options = {}) {
  const waitOptions = {
    waitUntil: options.waitUntil || 'networkidle',
    timeout: options.timeout || 30000
  };
  
  try {
    await page.waitForLoadState(waitOptions.waitUntil, { 
      timeout: waitOptions.timeout 
    });
  } catch (e) {
    console.warn('Page load timeout, continuing...');
  }
  
  // Additional wait for dynamic content if selector provided
  if (options.waitForSelector) {
    await page.waitForSelector(options.waitForSelector, { 
      timeout: options.timeout 
    });
  }
}

/**
 * Safe click with retry logic
 * @param {Object} page - Playwright page
 * @param {string} selector - Element selector
 * @param {Object} options - Click options
 */
async function safeClick(page, selector, options = {}) {
  const maxRetries = options.retries || 3;

View on GitHub (pinned to 58d857988f)

Solutions

  1. Use waitUntil: 'domcontentloaded' or 'load' instead of 'networkidle' for SPAs
  2. Raise the timeout passed in options for slow targets or CI environments
  3. Anchor readiness to a concrete element with options.waitForSelector instead of a load state

Example fix

// before
await waitForPageReady(page, { waitUntil: 'networkidle', timeout: 10000 });

// after
await waitForPageReady(page, { waitUntil: 'domcontentloaded', timeout: 30000, waitForSelector: '#results' });
Defensive patterns

Strategy: fallback

Validate before calling

await waitForPageReady(page, { waitUntil: 'domcontentloaded', timeout: 30000, waitForSelector: '#main-content' });

Try / catch

// Anchor readiness to a selector with its own timeout instead of load-state waits
try {
  await page.waitForSelector(selector, { timeout });
} catch {
  await page.screenshot({ path: 'timeout-debug.png' }); // diagnose, then decide
}

Prevention

When it happens

Trigger: Waiting for 'networkidle' on an SPA with websockets, analytics beacons, or long-polling; a slow third-party resource blocking 'load'; timeout too small for CI networks or throttled CPUs.

Common situations: Default networkidle strategy against modern apps; a hung font or tracking script keeping the network busy; heavy pages under CI where everything is slower; the document actually loaded fine and only the readiness signal was late.

Understand the failure class

Related errors


AI-assisted analysis of sickn33/agentic-awesome-skills@58d857988f (2026-08-26). Data as JSON: /api/errors/e481fbfc60001a8e. Report an issue: GitHub.