@e2e-dev/web 0.11.0-canary-20260928184528 → 0.11.0

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.
Files changed (57) hide show
  1. package/README.md +17 -14
  2. package/dist/.build.json +1 -1
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +24 -4
  5. package/dist/actions.js.map +1 -1
  6. package/dist/attempt-session.d.ts +38 -3
  7. package/dist/attempt-session.d.ts.map +1 -1
  8. package/dist/attempt-session.js +71 -16
  9. package/dist/attempt-session.js.map +1 -1
  10. package/dist/browser-connection.d.ts.map +1 -1
  11. package/dist/browser-connection.js +12 -1
  12. package/dist/browser-connection.js.map +1 -1
  13. package/dist/{web.d.ts → browser.d.ts} +18 -9
  14. package/dist/browser.d.ts.map +1 -0
  15. package/dist/{web.js → browser.js} +35 -19
  16. package/dist/browser.js.map +1 -0
  17. package/dist/downloads.d.ts +29 -0
  18. package/dist/downloads.d.ts.map +1 -0
  19. package/dist/downloads.js +74 -0
  20. package/dist/downloads.js.map +1 -0
  21. package/dist/engine.d.ts +2 -2
  22. package/dist/engine.d.ts.map +1 -1
  23. package/dist/engine.js +113 -18
  24. package/dist/engine.js.map +1 -1
  25. package/dist/in-page/read-semantics.d.ts.map +1 -1
  26. package/dist/in-page/read-semantics.js +143 -34
  27. package/dist/in-page/read-semantics.js.map +1 -1
  28. package/dist/index.d.ts +19 -10
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +7 -5
  31. package/dist/index.js.map +1 -1
  32. package/dist/locators.d.ts.map +1 -1
  33. package/dist/locators.js +26 -7
  34. package/dist/locators.js.map +1 -1
  35. package/dist/protected-app.d.ts +6 -2
  36. package/dist/protected-app.d.ts.map +1 -1
  37. package/dist/protected-app.js +18 -5
  38. package/dist/protected-app.js.map +1 -1
  39. package/dist/provider-video.d.ts +48 -0
  40. package/dist/provider-video.d.ts.map +1 -0
  41. package/dist/provider-video.js +80 -0
  42. package/dist/provider-video.js.map +1 -0
  43. package/dist/provider.d.ts +100 -5
  44. package/dist/provider.d.ts.map +1 -1
  45. package/dist/provider.js +148 -14
  46. package/dist/provider.js.map +1 -1
  47. package/dist/surface.d.ts +57 -13
  48. package/dist/surface.d.ts.map +1 -1
  49. package/dist/surface.js +41 -10
  50. package/dist/surface.js.map +1 -1
  51. package/dist/video.d.ts +34 -10
  52. package/dist/video.d.ts.map +1 -1
  53. package/dist/video.js +19 -10
  54. package/dist/video.js.map +1 -1
  55. package/package.json +4 -4
  56. package/dist/web.d.ts.map +0 -1
  57. package/dist/web.js.map +0 -1
package/dist/provider.js CHANGED
@@ -8,8 +8,10 @@
8
8
  * a Chrome on a machine down the hall are each one small provider in user code.
9
9
  */
10
10
  import { createHash } from 'node:crypto';
11
- import { ConfigurationError, EngineError, obj, raceAbort, } from 'e2e/engine';
12
- import { message } from './support.js';
11
+ import path from 'node:path';
12
+ import { ConfigurationError, EngineError, isProviderRecording, obj, raceAbort, } from 'e2e/engine';
13
+ import { connectionAbort } from './operation-budget.js';
14
+ import { invalidState, message } from './support.js';
13
15
  const SCOPES = new Set(['worker', 'attempt']);
14
16
  /** Narrows an intended provider, or names what it is missing. */
15
17
  export function asBrowserProvider(browser) {
@@ -22,6 +24,20 @@ export function asBrowserProvider(browser) {
22
24
  throw new ConfigurationError('INVALID_CONFIG', `web: browser provider "${candidate.name}" must implement ${member}()`);
23
25
  }
24
26
  }
27
+ for (const member of ['record', 'sweep']) {
28
+ if (candidate[member] !== undefined && typeof candidate[member] !== 'function') {
29
+ throw new ConfigurationError('INVALID_CONFIG', `web: browser provider "${candidate.name}" has a ${member} that is not a function`);
30
+ }
31
+ }
32
+ const downloads = candidate.downloads;
33
+ if (downloads !== undefined &&
34
+ (typeof downloads !== 'object' || downloads === null || !isNonEmptyString(downloads.dir) || typeof downloads.read !== 'function')) {
35
+ throw new ConfigurationError('INVALID_CONFIG', `web: browser provider "${candidate.name}" has downloads that are not { dir, read() }`);
36
+ }
37
+ // The browser's own machine may be POSIX or Windows, whatever the runner's is.
38
+ if (downloads !== undefined && !path.posix.isAbsolute(downloads.dir) && !path.win32.isAbsolute(downloads.dir)) {
39
+ throw new ConfigurationError('INVALID_CONFIG', `web: browser provider "${candidate.name}" has downloads.dir ${JSON.stringify(downloads.dir)}; name an absolute path on the browser's machine`);
40
+ }
25
41
  if (candidate.scope !== undefined && (typeof candidate.scope !== 'string' || !SCOPES.has(candidate.scope))) {
26
42
  throw new ConfigurationError('INVALID_CONFIG', `web: browser provider "${candidate.name}" has scope ${JSON.stringify(candidate.scope)}; use "worker" or "attempt"`);
27
43
  }
@@ -110,8 +126,12 @@ const discard = () => undefined;
110
126
  export class LeasedBrowsers {
111
127
  provider;
112
128
  scope;
129
+ /** The provider's name, for messages. */
130
+ name;
113
131
  /** Leases granted so far, per target, filled as each `acquire` settles. */
114
132
  held = new Map();
133
+ /** Targets whose `prepare` succeeded, so workers ran and may have left leases open. */
134
+ workersRan = new Set();
115
135
  run;
116
136
  /** The lease the worker's shared browser attaches to, and whether `endpoint` has handed it out yet. */
117
137
  current;
@@ -124,6 +144,7 @@ export class LeasedBrowsers {
124
144
  constructor(provider) {
125
145
  this.provider = provider;
126
146
  this.scope = provider.scope ?? 'worker';
147
+ this.name = provider.name;
127
148
  }
128
149
  // --- runner side ---
129
150
  /**
@@ -136,11 +157,13 @@ export class LeasedBrowsers {
136
157
  if (info.slots === 0)
137
158
  return {};
138
159
  const variable = handoffVariable(info.targetName);
139
- if (this.scope === 'attempt')
140
- return { env: { [variable]: encodeHandoff({ slots: info.slots, leases: [] }) } };
141
- const { provider } = this;
142
160
  const held = [];
143
161
  this.held.set(info.targetName, held);
162
+ if (this.scope === 'attempt') {
163
+ this.workersRan.add(info.targetName);
164
+ return { env: { [variable]: encodeHandoff({ slots: info.slots, leases: [] }) } };
165
+ }
166
+ const { provider } = this;
144
167
  info.log(`leasing ${info.slots} browser(s) from ${provider.name}`);
145
168
  const leases = await allOrFirstFailure(Array.from({ length: info.slots }, (_, slot) => async () => {
146
169
  const lease = await this.acquire({
@@ -156,18 +179,57 @@ export class LeasedBrowsers {
156
179
  info.log(`${provider.name}: leased ${lease.id}`);
157
180
  return lease;
158
181
  }), `browser provider "${provider.name}" could not lease a browser`);
159
- return { workers: leases.length, env: { [variable]: encodeHandoff({ slots: leases.length, leases }) } };
182
+ const env = { [variable]: encodeHandoff({ slots: leases.length, leases }) };
183
+ this.workersRan.add(info.targetName);
184
+ return { workers: leases.length, env };
160
185
  }
161
- /** Releases what `prepare` leased for the target, every lease before the first failure is reported. */
186
+ /**
187
+ * Releases what `prepare` leased for the target, every lease before the
188
+ * first failure is reported, then has the provider sweep up the leases a
189
+ * worker that died left open, in either scope, once workers ran: the sweep
190
+ * runs whatever the releases did, and is skipped when `prepare` failed and
191
+ * no worker started.
192
+ */
162
193
  async finish(info) {
163
194
  const { provider } = this;
164
195
  const leases = this.held.get(info.targetName);
196
+ const swept = this.workersRan.delete(info.targetName);
165
197
  this.held.delete(info.targetName);
166
- if (leases === undefined || leases.length === 0)
198
+ if (leases === undefined)
167
199
  return;
168
200
  const context = { runId: info.runId, targetName: info.targetName, env: info.env, signal: info.signal, log: (line) => info.log(`${provider.name}: ${line}`) };
169
- await allOrFirstFailure(leases.map((lease) => () => provider.release(lease, context)), `browser provider "${provider.name}" could not release a browser`);
170
- info.log(`${provider.name}: released ${leases.length} browser(s)`);
201
+ try {
202
+ if (leases.length === 0)
203
+ return;
204
+ await allOrFirstFailure(leases.map((lease) => () => provider.release(lease, context)), `browser provider "${provider.name}" could not release a browser`);
205
+ info.log(`${provider.name}: released ${leases.length} browser(s)`);
206
+ }
207
+ finally {
208
+ if (swept)
209
+ await this.sweep(context);
210
+ }
211
+ }
212
+ /**
213
+ * The provider's sweep of the leases workers left open, bounded by the
214
+ * cleanup budget. A backstop, so a sweep that fails is reported as a line,
215
+ * never as the run's failure: the service still ends an idle browser.
216
+ */
217
+ async sweep(context) {
218
+ const { provider } = this;
219
+ const sweep = provider.sweep?.bind(provider);
220
+ if (sweep === undefined)
221
+ return;
222
+ let released;
223
+ try {
224
+ released = await raceAbort(sweep(context), context.signal, `sweeping browsers of "${provider.name}"`);
225
+ }
226
+ catch (cause) {
227
+ context.log(`could not release the browsers a worker left open: ${message(cause)}`);
228
+ return;
229
+ }
230
+ const ids = Array.isArray(released) ? released.filter(isNonEmptyString) : [];
231
+ if (ids.length > 0)
232
+ context.log(`released ${ids.length} browser(s) a worker left open: ${ids.join(', ')}`);
171
233
  }
172
234
  // --- worker side ---
173
235
  /**
@@ -185,7 +247,14 @@ export class LeasedBrowsers {
185
247
  if (handoff === undefined) {
186
248
  throw new EngineError('ENGINE_FAILURE', `browser provider "${provider.name}" prepared nothing for target "${info.targetName}"; the runner must prepare the target before a worker starts`, { retryable: false });
187
249
  }
188
- this.run = { runId: info.runId, targetName: info.targetName, env: info.env, slot: info.workerSlot, slots: handoff.slots };
250
+ this.run = {
251
+ runId: info.runId,
252
+ targetName: info.targetName,
253
+ env: info.env,
254
+ slot: info.workerSlot,
255
+ slots: handoff.slots,
256
+ log: (line) => info.log(`${provider.name}: ${line}`),
257
+ };
189
258
  if (this.scope === 'attempt')
190
259
  return;
191
260
  const lease = handoff.leases[info.workerSlot];
@@ -211,7 +280,7 @@ export class LeasedBrowsers {
211
280
  return previous.lease.cdpEndpoint;
212
281
  }
213
282
  const { tenure } = this;
214
- const lease = await this.acquire({ runId: run.runId, targetName: run.targetName, slot: run.slot, slots: run.slots, env: run.env, signal, log: discard });
283
+ const lease = await this.acquire({ runId: run.runId, targetName: run.targetName, slot: run.slot, slots: run.slots, env: run.env, signal, log: run.log });
215
284
  if (signal.aborted || this.tenure !== tenure) {
216
285
  await this.provider.release(lease, this.releaseContext(run, signal)).catch(discard);
217
286
  throw new EngineError('CANCELLED', `browser lease from "${this.provider.name}" arrived after the worker gave up; released`, { retryable: false });
@@ -240,7 +309,7 @@ export class LeasedBrowsers {
240
309
  attemptId: context.attemptId,
241
310
  env: run.env,
242
311
  signal: context.signal,
243
- log: discard,
312
+ log: run.log,
244
313
  });
245
314
  if (context.signal.aborted || this.opened !== opened) {
246
315
  await this.provider.release(lease, this.releaseContext(run, context.signal)).catch(discard);
@@ -268,6 +337,71 @@ export class LeasedBrowsers {
268
337
  return;
269
338
  await this.release(current.lease, context);
270
339
  }
340
+ /**
341
+ * How the attempt records its browser when the provider records: starts
342
+ * the provider's recording of the browser the attempt rides, the
343
+ * attempt's lease in `attempt` scope and the worker's current one in
344
+ * `worker` scope. Undefined when the provider does not record. A start
345
+ * that fails is named after the provider, or is the cancellation when the
346
+ * attempt gave up first; `stopProviderRecording` checks the stop.
347
+ */
348
+ recorder(attemptId) {
349
+ const { provider } = this;
350
+ const record = provider.record?.bind(provider);
351
+ if (record === undefined)
352
+ return undefined;
353
+ const label = `browser provider "${provider.name}"`;
354
+ return async (signal) => {
355
+ const run = this.requireRun();
356
+ const lease = this.scope === 'attempt' ? this.attempt : this.current?.lease;
357
+ if (lease === undefined)
358
+ throw invalidState(`${label} was asked to record before the attempt had a browser`);
359
+ let recording;
360
+ try {
361
+ recording = await record(lease, { runId: run.runId, targetName: run.targetName, attemptId, env: run.env, signal });
362
+ }
363
+ catch (cause) {
364
+ if (signal.aborted)
365
+ throw connectionAbort(signal, `recording from "${provider.name}"`);
366
+ throw new EngineError('ENGINE_FAILURE', `${label} could not start recording browser ${lease.id}: ${message(cause)}`, { retryable: false, cause });
367
+ }
368
+ if (!isProviderRecording(recording)) {
369
+ throw new EngineError('ENGINE_FAILURE', `${label} returned a recording of browser ${lease.id} without a start time and a stop()`, { retryable: false });
370
+ }
371
+ return { recording, provider: label, leaseId: lease.id };
372
+ };
373
+ }
374
+ /**
375
+ * The downloads of the browser the attempt rides, when the provider
376
+ * serves them: the attempt's lease in `attempt` scope and the worker's
377
+ * current one in `worker` scope. A read that fails is named after the
378
+ * provider, or is the cancellation when the caller gave up first.
379
+ */
380
+ downloads() {
381
+ const { provider } = this;
382
+ const served = provider.downloads;
383
+ if (served === undefined)
384
+ return undefined;
385
+ const label = `browser provider "${provider.name}"`;
386
+ return {
387
+ provider: label,
388
+ dir: served.dir,
389
+ read: async (file, signal) => {
390
+ const run = this.requireRun();
391
+ const lease = this.scope === 'attempt' ? this.attempt : this.current?.lease;
392
+ if (lease === undefined)
393
+ throw invalidState(`${label} was asked for a download before the attempt had a browser`);
394
+ try {
395
+ return await served.read(lease, file, { runId: run.runId, targetName: run.targetName, env: run.env, signal });
396
+ }
397
+ catch (cause) {
398
+ if (signal.aborted)
399
+ throw connectionAbort(signal, `download from "${provider.name}"`);
400
+ throw new EngineError('ENGINE_FAILURE', `${label} could not read download ${file} from browser ${lease.id}: ${message(cause)}`, { retryable: false, cause });
401
+ }
402
+ },
403
+ };
404
+ }
271
405
  requireRun() {
272
406
  if (this.run === undefined) {
273
407
  throw new EngineError('ENGINE_FAILURE', `browser provider "${this.provider.name}" was asked for a browser before init`, { retryable: false });
@@ -305,7 +439,7 @@ export class LeasedBrowsers {
305
439
  }
306
440
  }
307
441
  releaseContext(run, signal) {
308
- return { runId: run.runId, targetName: run.targetName, env: run.env, signal, log: discard };
442
+ return { runId: run.runId, targetName: run.targetName, env: run.env, signal, log: run.log };
309
443
  }
310
444
  }
311
445
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/dist/surface.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * The Playwright surface: one browser per worker, one browser context per
3
3
  * attempt, and the page every engine member delegates to. This is the closure
4
- * state behind `web()`; the engine hooks in `engine.ts` and the `web`
5
- * fixture in `web.ts` are thin delegates onto it. Action dispatch lives in
4
+ * state behind `web()`; the engine hooks in `engine.ts` and the `browser`
5
+ * fixture in `browser.ts` are thin delegates onto it. Action dispatch lives in
6
6
  * `actions.ts` and tree capture in `observation.ts`. `AttemptSession` owns
7
7
  * the attempt's live binding, recovery, references, and recordings.
8
8
  */
9
9
  import type { BrowserContext, Page, Route } from 'playwright';
10
- import { type EngineAppDeclaration, type EngineAttemptContext, type EngineCleanupContext, type EngineInitInfo, type EngineObserveOptions, type EnginePrepareInfo, type EnginePrepareResult, type EngineFinishInfo, type EngineSnapshot, type EngineState, type LocatorAction, type LocatorExpression, type NodeRef, type OperationContext, type PointerAction, type SemanticNode, type VideoSegment, type ViewportPoint, type ViewportSize } from 'e2e/engine';
10
+ import { type EngineAttemptContext, type EngineCleanupContext, type EngineInitInfo, type EngineObserveOptions, type EnginePrepareInfo, type EnginePrepareResult, type EngineFinishInfo, type EngineSnapshot, type EngineState, type LocatorAction, type LocatorExpression, type NodeRef, type OperationContext, type PointerAction, type Secret, type SemanticNode, type VideoSegment, type ViewportPoint, type ViewportSize } from 'e2e/engine';
11
11
  import { type BrowserName } from './browser-connection.ts';
12
- import { type BrowserProvider } from './provider.ts';
12
+ import { type BrowserProvider, type LeaseDownloads } from './provider.ts';
13
13
  import { DialogRouter } from './dialogs.ts';
14
14
  import { ErrorLatch } from './support.ts';
15
15
  type RoutePredicate = (url: URL) => boolean;
@@ -41,7 +41,7 @@ export interface WebConnectOptions {
41
41
  * same browser after a transport drop. Called once before the next
42
42
  * operation, within its budget. The original browser and page must survive.
43
43
  * Dispatched operations are never retried. The host owns browser cleanup.
44
- * Context replacement, headers, and basicAuth are unavailable in this mode.
44
+ * Context replacement, headers, basicAuth, and userAgent are unavailable in this mode.
45
45
  */
46
46
  readonly reconnectEndpoint?: (signal: AbortSignal) => string | Promise<string>;
47
47
  }
@@ -49,14 +49,26 @@ export interface WebConnectOptions {
49
49
  export interface WebBasicAuth {
50
50
  /** The user name; `:` is not allowed in one (RFC 7617). */
51
51
  readonly username: string;
52
- readonly password: string;
52
+ /**
53
+ * The password, or `secrets.get(name)` for one in `config.secrets`: resolved
54
+ * when each attempt starts and redacted from reports, logs, and observations
55
+ * like any configured secret.
56
+ */
57
+ readonly password: string | Secret;
58
+ }
59
+ /** The engine's screencast of the page: the frame size and the JPEG quality of the frames it encodes. */
60
+ export interface WebScreencastOptions {
61
+ /** Frame size in pixels; default the viewport's, or the window's under `viewport: null`. A smaller size makes a smaller file. */
62
+ readonly size?: ViewportSize;
63
+ /** JPEG quality of each captured frame, 0 through 100; Playwright's default when unset. */
64
+ readonly quality?: number;
53
65
  }
54
66
  /**
55
- * Options of the browser engine: the app it drives (`url`, `command`,
56
- * `services`, `environment`, `identity`, `readyUrl` - the
57
- * engine contract's app declaration) plus the browser itself.
67
+ * Options of the browser engine: how it drives the app. The app itself
68
+ * (its `url`, `environment`, `identity`, and the command that starts it) is
69
+ * the target's `app`.
58
70
  */
59
- export interface WebOptions extends EngineAppDeclaration {
71
+ export interface WebOptions {
60
72
  /**
61
73
  * Browser to launch, `chromium` by default. A `BrowserProvider` leases
62
74
  * hosted browsers instead: one per worker slot at `prepare`, or one per
@@ -68,9 +80,16 @@ export interface WebOptions extends EngineAppDeclaration {
68
80
  * Initial viewport of every attempt's page; default 1280 by 720. `null`
69
81
  * emulates no size: the page fills the browser window, whatever size the
70
82
  * window has (a hosted browser's live view, a headed run), and
71
- * `web.setViewport` still fixes one for the rest of the attempt.
83
+ * `browser.setViewport` still fixes one for the rest of the attempt.
72
84
  */
73
85
  readonly viewport?: ViewportSize | null;
86
+ /**
87
+ * How the engine's own screencast records an attempt that records video.
88
+ * A browser provider that records (`BrowserProvider.record`) records in
89
+ * its place, and ignores these. Which attempts record is the config's
90
+ * `video`, not an engine option.
91
+ */
92
+ readonly screencast?: WebScreencastOptions;
74
93
  /**
75
94
  * Attach to a remote browser over CDP instead of launching locally. Requires
76
95
  * the chromium browser (the default). Wired by a hosted-browser engine.
@@ -103,6 +122,15 @@ export interface WebOptions extends EngineAppDeclaration {
103
122
  * Defaults to `data-testid`.
104
123
  */
105
124
  readonly testIdAttribute?: string;
125
+ /**
126
+ * The `User-Agent` every attempt's context sends and `navigator.userAgent`
127
+ * reports, as Playwright's own `userAgent` context option sets it: for an
128
+ * app that switches into a test mode on a marker in the agent string.
129
+ * Defaults to the browser's own. A `user-agent` entry in `headers` beside
130
+ * it is `INVALID_CONFIG`, and so is a persistent context
131
+ * (`connect.reconnectEndpoint`, or a provider with `scope: 'attempt'`).
132
+ */
133
+ readonly userAgent?: string;
106
134
  }
107
135
  export declare class PlaywrightSurface {
108
136
  /**
@@ -119,10 +147,12 @@ export declare class PlaywrightSurface {
119
147
  private session;
120
148
  private readonly usedContexts;
121
149
  private readonly viewport;
150
+ private readonly screencast;
122
151
  /** Injected request headers, names lowercased so they replace the browser's own of the same name. */
123
152
  private readonly headers;
124
153
  private readonly basicAuth;
125
154
  private readonly testIdAttribute;
155
+ private readonly userAgent;
126
156
  private app;
127
157
  private headed;
128
158
  private artifactsDir;
@@ -175,8 +205,9 @@ export declare class PlaywrightSurface {
175
205
  /**
176
206
  * The persistent remote context this attempt rides, when it does: the
177
207
  * `connect` resolvers, or a browser leased for this attempt alone, which
178
- * reconnects through the lease's own endpoint. Undefined for isolated
179
- * contexts on the shared browser.
208
+ * reconnects through the lease's own endpoint and is fresh by the
209
+ * provider's contract, so no earlier attempt's context is checked against
210
+ * it. Undefined for isolated contexts on the shared browser.
180
211
  */
181
212
  private persistentBinding;
182
213
  /** Opens one attempt owner before setup starts, so cleanup can cancel pending attachment. */
@@ -210,8 +241,21 @@ export declare class PlaywrightSurface {
210
241
  unroute(predicate: RoutePredicate, handler: RouteHandler): Promise<void>;
211
242
  requirePage(): Page;
212
243
  requireContext(): BrowserContext;
244
+ /**
245
+ * The downloads of a leased browser, read through its provider, when the
246
+ * provider serves them; undefined for a local launch, a `connect`, or a
247
+ * provider that does not, whose downloads Playwright saves as usual.
248
+ */
249
+ remoteDownloads(): LeaseDownloads | undefined;
250
+ /** Why a download from a leased browser may never reach the runner, when its provider serves none. */
251
+ unservedDownloads(): string | undefined;
213
252
  /** Creates the active page through the attempt's sole binding owner. */
214
253
  ensurePage(): Promise<Page>;
254
+ /** Sizes the open page, or the one the next navigation opens, for the rest of the attempt. */
255
+ setViewport(size: {
256
+ readonly width: number;
257
+ readonly height: number;
258
+ }): Promise<void>;
215
259
  /**
216
260
  * The single entry of every operation: rethrows an error latched on an
217
261
  * unawaited path, refuses a cancelled operation, races `fn` against the
@@ -1 +1 @@
1
- {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
package/dist/surface.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * The Playwright surface: one browser per worker, one browser context per
3
3
  * attempt, and the page every engine member delegates to. This is the closure
4
- * state behind `web()`; the engine hooks in `engine.ts` and the `web`
5
- * fixture in `web.ts` are thin delegates onto it. Action dispatch lives in
4
+ * state behind `web()`; the engine hooks in `engine.ts` and the `browser`
5
+ * fixture in `browser.ts` are thin delegates onto it. Action dispatch lives in
6
6
  * `actions.ts` and tree capture in `observation.ts`. `AttemptSession` owns
7
7
  * the attempt's live binding, recovery, references, and recordings.
8
8
  */
@@ -55,10 +55,12 @@ export class PlaywrightSurface {
55
55
  session;
56
56
  usedContexts = new Set();
57
57
  viewport;
58
+ screencast;
58
59
  /** Injected request headers, names lowercased so they replace the browser's own of the same name. */
59
60
  headers;
60
61
  basicAuth;
61
62
  testIdAttribute;
63
+ userAgent;
62
64
  app = {};
63
65
  headed = false;
64
66
  artifactsDir = '';
@@ -75,9 +77,11 @@ export class PlaywrightSurface {
75
77
  this.leases = typeof options.browser === 'object' && options.browser !== null ? new LeasedBrowsers(options.browser) : undefined;
76
78
  this.connect = options.connect;
77
79
  this.viewport = options.viewport === undefined ? DEFAULT_VIEWPORT : options.viewport;
80
+ this.screencast = options.screencast ?? {};
78
81
  this.headers = options.headers === undefined ? undefined : lowercaseNames(options.headers);
79
82
  this.basicAuth = options.basicAuth;
80
83
  this.testIdAttribute = options.testIdAttribute ?? DEFAULT_TEST_ID_ATTRIBUTE;
84
+ this.userAgent = options.userAgent;
81
85
  }
82
86
  // --- lifecycle ---
83
87
  /**
@@ -184,8 +188,9 @@ export class PlaywrightSurface {
184
188
  /**
185
189
  * The persistent remote context this attempt rides, when it does: the
186
190
  * `connect` resolvers, or a browser leased for this attempt alone, which
187
- * reconnects through the lease's own endpoint. Undefined for isolated
188
- * contexts on the shared browser.
191
+ * reconnects through the lease's own endpoint and is fresh by the
192
+ * provider's contract, so no earlier attempt's context is checked against
193
+ * it. Undefined for isolated contexts on the shared browser.
189
194
  */
190
195
  async persistentBinding(context) {
191
196
  const { connect, usedContexts } = this;
@@ -195,12 +200,18 @@ export class PlaywrightSurface {
195
200
  if (this.leases?.scope !== 'attempt')
196
201
  return undefined;
197
202
  const lease = await this.leases.startAttempt(context);
198
- return { provision: () => lease.cdpEndpoint, reconnect: () => lease.reconnectEndpoint ?? lease.cdpEndpoint, usedContexts };
203
+ return { provision: () => lease.cdpEndpoint, reconnect: () => lease.reconnectEndpoint ?? lease.cdpEndpoint };
199
204
  }
200
205
  /** Opens one attempt owner before setup starts, so cleanup can cancel pending attachment. */
201
206
  async startAttempt(context) {
202
207
  if (this.session !== undefined)
203
208
  throw invalidState('an attempt is already running');
209
+ // Raced with the launch budget: a provider still resolving when the
210
+ // runner gives up must not open a session after the runner ended it.
211
+ const basicAuth = this.basicAuth;
212
+ const credentials = basicAuth === undefined
213
+ ? undefined
214
+ : await raceAbort(() => httpCredentials(basicAuth, context.resolveSecret), context.signal, 'resolving the basic-auth password');
204
215
  const persistent = await this.persistentBinding(context);
205
216
  this.artifactsDir = context.artifactsDir;
206
217
  this.artifactCounter = 0;
@@ -209,15 +220,16 @@ export class PlaywrightSurface {
209
220
  const dialogs = new DialogRouter(this.latch);
210
221
  this.routes = routes;
211
222
  this.dialogs = dialogs;
212
- const credentials = httpCredentials(this.basicAuth);
213
223
  const session = new AttemptSession({
214
224
  artifactsDir: context.artifactsDir,
215
225
  viewport: this.viewport,
226
+ screencast: this.screencast,
216
227
  acquire: (signal) => this.acquireBrowser(signal),
217
228
  contextOptions: {
218
229
  viewport: this.viewport,
219
230
  acceptDownloads: true,
220
231
  ...(credentials === undefined ? {} : { httpCredentials: credentials }),
232
+ ...(this.userAgent === undefined ? {} : { userAgent: this.userAgent }),
221
233
  ...(this.headers === undefined ? {} : { serviceWorkers: 'block' }),
222
234
  },
223
235
  configure: async (target) => {
@@ -229,6 +241,7 @@ export class PlaywrightSurface {
229
241
  await target.route(stored.predicate, stored.handler);
230
242
  },
231
243
  ...(persistent === undefined ? {} : { persistent }),
244
+ record: this.leases?.recorder(context.attemptId),
232
245
  });
233
246
  this.session = session;
234
247
  await session.start(context.signal);
@@ -289,7 +302,7 @@ export class PlaywrightSurface {
289
302
  throw invalidState('no attempt is running');
290
303
  return this.session;
291
304
  }
292
- // --- network routes shared with the web fixture ---
305
+ // --- network routes shared with the browser fixture ---
293
306
  /** Registers one attempt-scoped route on the current context. */
294
307
  async route(predicate, handler) {
295
308
  const context = this.requireContext();
@@ -304,22 +317,40 @@ export class PlaywrightSurface {
304
317
  this.routes.splice(index, 1);
305
318
  await context.unroute(predicate, handler);
306
319
  }
307
- // --- page access shared with the web fixture ---
320
+ // --- page access shared with the browser fixture ---
308
321
  requirePage() {
309
322
  this.latch.throwPending();
310
323
  const page = this.requireSession().current().page;
311
324
  if (page === null || page.isClosed())
312
- throw invalidState('no app page is open; call app.open() or web.goto() first');
325
+ throw invalidState('no app page is open; call app.open() or browser.goto() first');
313
326
  return page;
314
327
  }
315
328
  requireContext() {
316
329
  this.latch.throwPending();
317
330
  return this.requireSession().current().context;
318
331
  }
332
+ /**
333
+ * The downloads of a leased browser, read through its provider, when the
334
+ * provider serves them; undefined for a local launch, a `connect`, or a
335
+ * provider that does not, whose downloads Playwright saves as usual.
336
+ */
337
+ remoteDownloads() {
338
+ return this.leases?.downloads();
339
+ }
340
+ /** Why a download from a leased browser may never reach the runner, when its provider serves none. */
341
+ unservedDownloads() {
342
+ if (this.leases === undefined || this.leases.downloads() !== undefined)
343
+ return undefined;
344
+ return `browser provider "${this.leases.name}" serves no downloads, so a browser on another machine keeps the file on its own disk (BrowserProvider.downloads)`;
345
+ }
319
346
  /** Creates the active page through the attempt's sole binding owner. */
320
347
  ensurePage() {
321
348
  return this.requireSession().ensurePage();
322
349
  }
350
+ /** Sizes the open page, or the one the next navigation opens, for the rest of the attempt. */
351
+ setViewport(size) {
352
+ return this.requireSession().setViewport(size);
353
+ }
323
354
  /**
324
355
  * The single entry of every operation: rethrows an error latched on an
325
356
  * unawaited path, refuses a cancelled operation, races `fn` against the
@@ -615,7 +646,7 @@ export class PlaywrightSurface {
615
646
  }
616
647
  /** Starts the attempt's video before a trace chooses its screencast dimensions. */
617
648
  startVideo(operation) {
618
- return this.guard(operation, 'video', () => this.requireSession().startVideo());
649
+ return this.guard(operation, 'video', (current) => this.requireSession().startVideo(current.signal));
619
650
  }
620
651
  /** Finishes the attempt's recording and returns its finalized segments. */
621
652
  stopVideo(operation) {