@glubean/browser 0.8.4 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,12 +8,17 @@
8
8
  * trace event (see {@link ./network.ts}).
9
9
  * - **Request mock** (`Fetch` domain) — fulfill matching requests with a canned
10
10
  * response; non-matching requests are continued untouched.
11
- * - **Emulation** (`Emulation` domain) — timezone / geolocation / viewport.
11
+ * - **Emulation** (`Emulation` domain) — timezone / geolocation / viewport / user agent.
12
+ * - **Storage state** — restore cookies / localStorage before the page's
13
+ * first script runs, and capture them back out on demand (a thin "login
14
+ * once, reuse the session" primitive). Cookies go through this session's
15
+ * `Network.setCookies` (browser-context scoped, session-agnostic in CDP).
16
+ * localStorage does **not** — see guardrail ③.
12
17
  *
13
18
  * The keystone spike disproved the "Fetch is near-exclusive" hypothesis: a
14
19
  * self-opened session running `Fetch.enable`/`fulfillRequest` is stable **as
15
20
  * long as the user has not enabled Puppeteer's own request interception**.
16
- * Two coexistence hazards remain, each handled by a guardrail below:
21
+ * Three coexistence hazards exist, each handled below:
17
22
  *
18
23
  * **Guardrail ① — viewport ownership.** Our `Emulation.setDeviceMetricsOverride`
19
24
  * and Puppeteer's `page.setViewport()` both drive device metrics and clobber
@@ -28,6 +33,45 @@
28
33
  * `page.setRequestInterception(true)` with a clear error. When no mocks are
29
34
  * configured we never enable `Fetch`, so the user's own interception is free.
30
35
  *
36
+ * **Guardrail ③ — new-document scripts need Puppeteer's OWN session.**
37
+ * Verified empirically: sending `Page.addScriptToEvaluateOnNewDocument` on
38
+ * our *auxiliary* `page.createCDPSession()` session registers without error
39
+ * (a real `identifier` comes back) but the script never actually fires on
40
+ * subsequent navigations — only the session Puppeteer itself uses for the
41
+ * page's frame-lifecycle bookkeeping gets its new-document scripts run.
42
+ * `storageState.localStorage` therefore seeds via Puppeteer's own
43
+ * `page.evaluateOnNewDocument()`, not a raw CDP call on this session.
44
+ *
45
+ * **Downloads** (`Browser` domain, BT1-M5) — `Browser.setDownloadBehavior`
46
+ * with `eventsEnabled: true`, called on this same auxiliary session, both
47
+ * configures the save directory AND (unlike guardrail ③'s Page-domain
48
+ * finding) reliably delivers `Browser.downloadWillBegin` /
49
+ * `Browser.downloadProgress` back on THIS session — verified empirically
50
+ * (spike script) against puppeteer-core ^24; `Browser.*` is genuinely
51
+ * session-agnostic where `Page.addScriptToEvaluateOnNewDocument` was not.
52
+ * The deprecated `Page.setDownloadBehavior` / `Page.downloadWillBegin` also
53
+ * work on the same spike but `Browser.*` is the protocol's forward path, so
54
+ * that's what's wired here. One caveat verified in the same spike: the file
55
+ * on disk is saved as `suggestedFilename`, not `guid` (despite some CDP docs
56
+ * implying the latter) — `DownloadEntry.path` is built from that name, which
57
+ * is only exact when Chrome didn't have to de-duplicate a collision.
58
+ * Always wired when a page is created (like dialog/popup) — a download IS
59
+ * evidence the moment it happens, not an opt-in capability.
60
+ *
61
+ * **Guardrail ④ — download events are browser-context-global.** Unlike the
62
+ * page-scoped `Network`/`Fetch` domains, `Browser.setDownloadBehavior` sets a
63
+ * single context-wide save path (last caller wins) and its `downloadWillBegin`/
64
+ * `downloadProgress` events fire on *every* session that turned events on, for
65
+ * *every* download in the context. So two instrumented pages in one Chrome
66
+ * would otherwise cross-observe and cross-repoint each other's downloads. Two
67
+ * mitigations: (a) the page layer uses ONE browser-wide download dir (not
68
+ * per-test) so the last-wins path is a no-op; (b) this session enables the
69
+ * `Page` domain, tracks its target's frame ids (`Page.getFrameTree` +
70
+ * `frameAttached`/`frameDetached`), and only records downloads whose
71
+ * originating `frameId` it owns — so a page never resolves another page's
72
+ * download. Both degrade safely: an unreadable frame tree falls back to
73
+ * accepting all events (single-page runs are unaffected).
74
+ *
31
75
  * @module evidence
32
76
  */
33
77
  import type { CDPSession, Page } from "puppeteer-core";
@@ -136,8 +180,8 @@ export interface ViewportOverride {
136
180
  /**
137
181
  * Environment emulation applied on the shared evidence session.
138
182
  *
139
- * Timezone and geolocation are pure overrides with no Puppeteer conflict.
140
- * Viewport is special: see guardrail ① — do **not** also call
183
+ * Timezone, geolocation, and user agent are pure overrides with no Puppeteer
184
+ * conflict. Viewport is special: see guardrail ① — do **not** also call
141
185
  * `page.setViewport()`, it will race with this override.
142
186
  */
143
187
  export interface EmulationOptions {
@@ -147,6 +191,71 @@ export interface EmulationOptions {
147
191
  geolocation?: GeolocationOverride;
148
192
  /** Viewport / device metrics. Glubean becomes the sole viewport owner. */
149
193
  viewport?: ViewportOverride;
194
+ /** User-agent string override (`Emulation.setUserAgentOverride`). */
195
+ userAgent?: string;
196
+ }
197
+ /**
198
+ * A cookie as accepted by {@link EvidenceSession.attach}'s `storageState.cookies`
199
+ * and returned by {@link EvidenceSession.captureStorageState}. Mirrors the CDP
200
+ * `Network.CookieParam` / `Network.Cookie` shapes closely enough to round-trip:
201
+ * a captured cookie can be fed straight back in as an applied one.
202
+ */
203
+ export interface StorageCookie {
204
+ name: string;
205
+ value: string;
206
+ /** Either `domain` or `url` must be resolvable for CDP to place the cookie. */
207
+ domain?: string;
208
+ path?: string;
209
+ url?: string;
210
+ /** Unix time in seconds, or `-1` for a session cookie. */
211
+ expires?: number;
212
+ httpOnly?: boolean;
213
+ secure?: boolean;
214
+ sameSite?: "Strict" | "Lax" | "None";
215
+ }
216
+ /**
217
+ * Cookies + localStorage for one page — a thin "login once, reuse the
218
+ * session" primitive (à la Playwright's `storageState`). Cookies apply via
219
+ * CDP `Network.setCookies`; localStorage applies via Puppeteer's own
220
+ * `page.evaluateOnNewDocument()` (see guardrail ③) so it is present before
221
+ * the page's own scripts run on every navigation of this page.
222
+ */
223
+ export interface StorageState {
224
+ cookies?: StorageCookie[];
225
+ /** Key/value pairs seeded into `localStorage` on every new document. */
226
+ localStorage?: Record<string, string>;
227
+ }
228
+ /** Lifecycle state of a browser download (mirrors CDP `Browser.downloadProgress.state`). */
229
+ export type DownloadState = "inProgress" | "completed" | "canceled";
230
+ /**
231
+ * A browser download captured via CDP `Browser.downloadWillBegin` /
232
+ * `Browser.downloadProgress`.
233
+ */
234
+ export interface DownloadEntry {
235
+ /** CDP-assigned globally-unique download id. */
236
+ guid: string;
237
+ /** URL the download was initiated from (may be `data:`/`blob:`). */
238
+ url: string;
239
+ /** Filename suggested by the server/anchor at download start. */
240
+ suggestedFilename: string;
241
+ /**
242
+ * Best-effort on-disk path: `${dir}/${suggestedFilename}`. Exact only when
243
+ * Chrome didn't have to de-duplicate a filename collision in `dir` — see
244
+ * the module doc's Downloads note.
245
+ */
246
+ path: string;
247
+ }
248
+ /** Options wiring the shared session's download capture. */
249
+ export interface DownloadOptions {
250
+ /** Directory downloads are saved to. Must already exist — the caller creates it. */
251
+ dir: string;
252
+ /**
253
+ * Called on every state transition (`inProgress` fires once per progress
254
+ * tick — usually more than once per download; `completed`/`canceled` fire
255
+ * exactly once). Mainly for evidence emission; {@link EvidenceSession.waitForDownload}
256
+ * is the ergonomic way to correlate a triggering action with its result.
257
+ */
258
+ onDownload?: (entry: DownloadEntry, state: DownloadState) => void;
150
259
  }
151
260
  /** Options for {@link EvidenceSession.attach}. */
152
261
  export interface EvidenceSessionOptions {
@@ -159,8 +268,15 @@ export interface EvidenceSessionOptions {
159
268
  network?: Pick<NetworkTracerOptions, "include" | "excludePaths" | "filter">;
160
269
  /** Request-mock rules. When non-empty, the `Fetch` domain is enabled (guardrail ②). */
161
270
  mocks?: MockRule[];
162
- /** Environment emulation (timezone / geolocation / viewport). */
271
+ /** Environment emulation (timezone / geolocation / viewport / user agent). */
163
272
  emulate?: EmulationOptions;
273
+ /**
274
+ * Cookies / localStorage to restore before the page's first script runs
275
+ * (`storageState.cookies` via `Network.setCookies`, `storageState.localStorage`
276
+ * via Puppeteer's `page.evaluateOnNewDocument()` — see guardrail ③).
277
+ * Capture the current state with {@link EvidenceSession.captureStorageState}.
278
+ */
279
+ storageState?: StorageState;
164
280
  /**
165
281
  * Screenshot capture policy and I/O delegate.
166
282
  *
@@ -169,6 +285,12 @@ export interface EvidenceSessionOptions {
169
285
  * Omit (or set `mode: "off"`) to disable all automatic screenshot capture.
170
286
  */
171
287
  screenshots?: EvidenceScreenshotOptions;
288
+ /**
289
+ * Download capture (`Browser.setDownloadBehavior` + `downloadWillBegin`/
290
+ * `downloadProgress`). When provided, every download on this page is
291
+ * allowed (not blocked) and reported via `onDownload` / {@link EvidenceSession.waitForDownload}.
292
+ */
293
+ downloads?: DownloadOptions;
172
294
  }
173
295
  /** A single CDP call: `{ method, params }`. Kept pure for testing. */
174
296
  export interface CdpCall {
@@ -201,10 +323,18 @@ export declare function buildFulfillParams(rule: MockRule, requestId: string): {
201
323
  /**
202
324
  * @internal Build the ordered list of `Emulation.*` CDP calls.
203
325
  *
204
- * Timezone and geolocation come first; the viewport override is applied **last**
205
- * (guardrail ①) so it is the final word on device metrics at setup time.
326
+ * Timezone, geolocation, and user agent come first (order-independent among
327
+ * themselves); the viewport override is applied **last** (guardrail ①) so it
328
+ * is the final word on device metrics at setup time.
206
329
  */
207
330
  export declare function buildEmulationCalls(emulate: EmulationOptions): CdpCall[];
331
+ /**
332
+ * @internal Build `Network.setCookies` params from `storageState.cookies`.
333
+ * Returns `undefined` when there is nothing to set (caller skips the call).
334
+ */
335
+ export declare function buildSetCookiesParams(cookies: StorageCookie[] | undefined): {
336
+ cookies: StorageCookie[];
337
+ } | undefined;
208
338
  /**
209
339
  * @internal Replace `page[method]` with a guard, returning a restore function.
210
340
  *
@@ -226,6 +356,28 @@ export declare class EvidenceSession {
226
356
  private _screenshotOpts;
227
357
  private _screenshotSeq;
228
358
  private _screenshotLog;
359
+ private _downloadsEnabled;
360
+ private _downloadDir;
361
+ private _onDownload;
362
+ /**
363
+ * Frame ids owned by THIS page's target. `Browser.setDownloadBehavior`'s
364
+ * events are browser-context-global — every session that turned events on
365
+ * receives every download in the context. We only record downloads whose
366
+ * originating `frameId` belongs to this page, so two instrumented pages
367
+ * sharing one Chrome never cross-observe each other's downloads.
368
+ */
369
+ private _ownedFrames;
370
+ /**
371
+ * True only once the initial `Page.getFrameTree` seeded {@link _ownedFrames}.
372
+ * The frame filter engages ONLY when this is set — otherwise we accept all
373
+ * download events (fallback mode). Without this flag, a later
374
+ * `Page.frameAttached` would grow `_ownedFrames` from empty to non-empty and
375
+ * silently flip fallback mode into a PARTIAL filter that drops the page's own
376
+ * top-frame downloads (codex R2 P2).
377
+ */
378
+ private _frameTreeSeeded;
379
+ private _pendingDownloads;
380
+ private _downloadWaiters;
229
381
  private constructor();
230
382
  /** The underlying CDP session, for advanced/raw use. */
231
383
  get cdp(): CDPSession;
@@ -255,13 +407,57 @@ export declare class EvidenceSession {
255
407
  captureShot(label: string, trigger: ScreenshotTrigger): Promise<void>;
256
408
  /**
257
409
  * Open one CDP session on `page` and wire up the requested capabilities:
258
- * Network trace, Fetch mock (guardrail ②), and Emulation (guardrail ① for
259
- * viewport). Capabilities are only enabled when their config is present, so a
260
- * page with no mocks never enables `Fetch` and leaves the user's own request
261
- * interception untouched.
410
+ * Network trace, Fetch mock (guardrail ②), Emulation (guardrail ① for
411
+ * viewport), and storage state (cookies + localStorage). Capabilities are
412
+ * only enabled when their config is present, so a page with no mocks never
413
+ * enables `Fetch` and leaves the user's own request interception untouched.
262
414
  */
263
415
  static attach(page: Page, options: EvidenceSessionOptions): Promise<EvidenceSession>;
264
416
  private _installMocks;
417
+ private _applyStorageState;
418
+ /**
419
+ * @internal Wire `Browser.setDownloadBehavior` (`eventsEnabled: true`) plus
420
+ * the `downloadWillBegin` / `downloadProgress` listeners on this session.
421
+ * See the module doc's Downloads note for why `Browser.*` (not the
422
+ * deprecated `Page.*` pair) and why it works on an auxiliary session.
423
+ *
424
+ * `Browser.*` download events are browser-context-global, so we also enable
425
+ * the `Page` domain and track this target's frame ids, then only record
426
+ * downloads originating from a frame we own — two instrumented pages in one
427
+ * Chrome must not cross-observe each other's downloads.
428
+ */
429
+ private _enableDownloads;
430
+ /** @internal Best-effort onDownload callback — never let it wedge the waiter machine. */
431
+ private _notifyDownload;
432
+ /**
433
+ * Wait for the NEXT download (one that completes after this call) to finish,
434
+ * and resolve with its metadata. Register the wait *before* triggering the
435
+ * action that starts the download — `GlubeanPage.waitForDownload(action)` in
436
+ * `page.ts` does exactly this and is the ergonomic wrapper most callers
437
+ * should use instead of this lower-level method.
438
+ *
439
+ * Rejects if the next download is canceled, after `timeoutMs`, if `signal`
440
+ * aborts (e.g. the triggering action threw), or if the session has detached.
441
+ * Does **not** resolve from downloads that already completed before the call —
442
+ * each wait is scoped to a fresh, future download.
443
+ */
444
+ waitForDownload(timeoutMs: number, signal?: AbortSignal): Promise<DownloadEntry>;
445
+ /**
446
+ * Capture the current page's cookies + localStorage as a {@link StorageState}
447
+ * snapshot — the counterpart to {@link EvidenceSessionOptions.storageState}.
448
+ * Cookies are scoped to the page's current URL (`Network.getCookies`), not
449
+ * every cookie the browser holds, so unrelated tabs/origins never leak in.
450
+ *
451
+ * @example
452
+ * ```ts
453
+ * await page.goto("/login");
454
+ * // ... perform login ...
455
+ * const state = await page.getStorageState();
456
+ * // Reuse on a fresh page to skip the login flow:
457
+ * const chrome2 = browser({ launch: true, storageState: state });
458
+ * ```
459
+ */
460
+ captureStorageState(page: Page): Promise<StorageState>;
265
461
  private _guardViewport;
266
462
  /**
267
463
  * Remove all listeners/overrides, restore guarded page methods, and detach
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}