master
John Lauer docs/contract: golden fixtures recorded from the Node build 2.0.399 for the Rust port 71c0e87 1mo ago
{
  "_hint": "Ready — pup will drive chrome-for-testing (cache) at C:\\Users\\azureuser\\.cache\\puppeteer\\chrome\\win64-148.0.7778.97\\chrome-win64\\chrome.exe. Available: chrome-for-testing(cache), edge(system). Default: chrome-for-testing (auto). No download needed. Proceed with pup_open_window. Switch/install with pup_use {browser:\"chrome\"|\"edge\"|\"cft\"|\"auto\"}. RECOVERY NOTE: if you were polling this because pup's verbs were TIMING OUT (dim LED in AD / browser.bridgeRunning:false), that means the bridge PROCESS was down — a status probe like this does NOT respawn it; only a window/tab verb (pup_open_window) auto-spawns the bridge. And never SPAM pup_open_window while it says \"bridge_starting\" — concurrent opens on one profile used to collide (fixed v1.9.4, but still: fire ONE open, then poll pup_list_windows with backoff).",
  "_next": [
    "pup_prewarm",
    "pup_open_window"
  ],
  "_timeoutHint": "ab waits up to 60s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure — the work usually keeps running on the bridge. Poll `pup_readiness` until it reports done.",
  "active": [],
  "browserExecutablePath": "C:/Users/azureuser/.cache/puppeteer/chrome/win64-148.0.7778.97/chrome-win64/chrome.exe",
  "browserKind": "chrome-for-testing",
  "browserSource": "cache",
  "bytesDownloaded": 0,
  "bytesTotal": 0,
  "cacheDir": "C:/Users/azureuser/.cache/puppeteer",
  "candidates": [
    {
      "executablePath": "C:/Users/azureuser/.cache/puppeteer/chrome/win64-148.0.7778.97/chrome-win64/chrome.exe",
      "kind": "chrome-for-testing",
      "source": "cache"
    },
    {
      "executablePath": "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe",
      "kind": "edge",
      "source": "system"
    }
  ],
  "chromeBuildId": "148.0.7778.97",
  "chromeExecutablePath": "C:/Users/azureuser/.cache/puppeteer/chrome/win64-148.0.7778.97/chrome-win64/chrome.exe",
  "chromeForTestingInstalled": true,
  "chromeStableAwaitingApproval": false,
  "chromeStableError": null,
  "chromeStableNotifyChannel": null,
  "chromeStableNotifyPeers": null,
  "chromeStablePhase": "idle",
  "defaultBrowser": {
    "forced": false,
    "kind": "chrome-for-testing",
    "pendingInstall": false,
    "source": "cache"
  },
  "diskFreeMb": 79888,
  "downloadElapsedSec": null,
  "downloadEtaSec": null,
  "durationMs": 40,
  "error": "",
  "installPhase": "unknown",
  "installProgressPct": 0,
  "installing": false,
  "installingChrome": false,
  "lastError": null,
  "lastErrorCode": null,
  "lowDisk": false,
  "nodeInstalled": true,
  "nodeVersion": "v22.11.0",
  "output": "{\"ready\":true,\"browserKind\":\"chrome-for-testing\",\"browserSource\":\"cache\",\"browserExecutablePath\":\"C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\\\\chrome\\\\win64-148.0.7778.97\\\\chrome-win64\\\\chrome.exe\",\"candidates\":[{\"kind\":\"chrome-for-testing\",\"source\":\"cache\",\"executablePath\":\"C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\\\\chrome\\\\win64-148.0.7778.97\\\\chrome-win64\\\\chrome.exe\"},{\"kind\":\"edge\",\"source\":\"system\",\"executablePath\":\"C:\\\\Program Files (x86)\\\\Microsoft\\\\Edge\\\\Application\\\\msedge.exe\"}],\"defaultBrowser\":{\"kind\":\"chrome-for-testing\",\"source\":\"cache\",\"forced\":false,\"pendingInstall\":false},\"nodeInstalled\":true,\"nodeVersion\":\"v22.11.0\",\"chromeForTestingInstalled\":true,\"chromeExecutablePath\":\"C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\\\\chrome\\\\win64-148.0.7778.97\\\\chrome-win64\\\\chrome.exe\",\"chromeBuildId\":\"148.0.7778.97\",\"installing\":false,\"installPhase\":\"unknown\",\"installProgressPct\":0,\"unpackBytes\":0,\"unpackElapsedSec\":null,\"unpackMethod\":null,\"bytesDownloaded\":0,\"bytesTotal\":0,\"downloadElapsedSec\":null,\"downloadEtaSec\":null,\"lastError\":null,\"lastErrorCode\":null,\"cacheDir\":\"C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\",\"diskFreeMb\":79888,\"lowDisk\":false,\"installingChrome\":false,\"chromeStablePhase\":\"idle\",\"chromeStableAwaitingApproval\":false,\"chromeStableNotifyChannel\":null,\"chromeStableNotifyPeers\":null,\"chromeStableError\":null,\"puppeteerLoadError\":null,\"active\":[],\"_hint\":\"Ready — pup will drive chrome-for-testing (cache) at C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\\\\chrome\\\\win64-148.0.7778.97\\\\chrome-win64\\\\chrome.exe. Available: chrome-for-testing(cache), edge(system). Default: chrome-for-testing (auto). No download needed. Proceed with pup_open_window. Switch/install with pup_use {browser:\\\"chrome\\\"|\\\"edge\\\"|\\\"cft\\\"|\\\"auto\\\"}. RECOVERY NOTE: if you were polling this because pup's verbs were TIMING OUT (dim LED in AD / browser.bridgeRunning:false), that means the bridge PROCESS was down — a status probe like this does NOT respawn it; only a window/tab verb (pup_open_window) auto-spawns the bridge. And never SPAM pup_open_window while it says \\\"bridge_starting\\\" — concurrent opens on one profile used to collide (fixed v1.9.4, but still: fire ONE open, then poll pup_list_windows with backoff).\",\"_next\":[\"pup_prewarm\",\"pup_open_window\"],\"related\":[\"pup_prewarm\",\"pup_open_window\"],\"pitfalls\":[\"ready:false with installing:true just means Chrome for Testing is still downloading — wait + poll, do NOT treat it as an error\",\"installPhase:\\\"failed\\\" → surface lastError to the user (usually network/proxy blocking the download, or low disk)\"]}",
  "pitfalls": [
    "ready:false with installing:true just means Chrome for Testing is still downloading — wait + poll, do NOT treat it as an error",
    "installPhase:\"failed\" → surface lastError to the user (usually network/proxy blocking the download, or low disk)"
  ],
  "puppeteerLoadError": null,
  "ready": true,
  "related": [
    "pup_prewarm",
    "pup_open_window"
  ],
  "status": "ok",
  "statusVerb": "pup_readiness",
  "success": true,
  "timeoutSeconds": 60,
  "unpackBytes": 0,
  "unpackElapsedSec": null,
  "unpackMethod": null
}