2.2 KiB
2.2 KiB
name, description
| name | description |
|---|---|
| browser-screenshot-disk-and-cookies | Save omp managed-browser screenshots to real files (tab.screenshot path is silently ignored) and reset the shared Chromium cookie jar between persona captures. |
Screenshots to disk with the omp browser eval helper
Traps (both cost a full re-capture to discover)
tab.screenshot({ path })ignorespathsilently — the option is not in its schema ({selector, fullPage, silent, annotate, format, quality, ifChanged, threshold}). The image attaches inline to the tool result and nothing is written to disk;lsshows an empty dir. Inline images may also be dropped from transcript archives later, so "attached to chat" is not "saved".- The shared managed Chromium keeps cookies across tabs and turns (profile
persists after
tab.close()). A second capture script that expects the anonymous view lands signed-in andwaitForSelector("testid/…")fails fast.
Procedure
Write files via tab.run, which exposes the raw Puppeteer page — its
screenshot({path}) does write:
const dir = "/tmp/<session-dir>";
const tab = await browser.open({ name: "caps", url });
const shot = (file) =>
tab.run(async ({ page }, f) => { await page.screenshot({ path: f }); return f; },
{ args: [`${dir}/${file}.png`] });
await tab.clearCookies(); // ALWAYS before an anonymous capture
await tab.goto(url);
await tab.waitForSelector("testid/first-state");
await shot("1-anonymous");
// ...drive states with direct helpers: click/fill("testid/<id>", ...) ...
await shot("2-next-state");
await tab.close();
Verify with ls -la <dir> && file <dir>/*.png — do not trust silent success.
Notes
- Selectors accept
testid/<id>handler; prefer it over CSS on[data-testid]. tab.run(fn, { args }): functions receive{tab, page, browser, wait, assert}first, then each arg; a bare code string runs in an isolated runtime, not the page —documentis undefined there. Use direct helpers ortab.evaluate(page-global expression; top-levelreturninvalid) for page access.- Byte-identical PNG sizes between two frames = same view; fine as proof of a round-trip (state A → B → A).