@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.
- package/README.md +17 -14
- package/dist/.build.json +1 -1
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +24 -4
- package/dist/actions.js.map +1 -1
- package/dist/attempt-session.d.ts +38 -3
- package/dist/attempt-session.d.ts.map +1 -1
- package/dist/attempt-session.js +71 -16
- package/dist/attempt-session.js.map +1 -1
- package/dist/browser-connection.d.ts.map +1 -1
- package/dist/browser-connection.js +12 -1
- package/dist/browser-connection.js.map +1 -1
- package/dist/{web.d.ts → browser.d.ts} +18 -9
- package/dist/browser.d.ts.map +1 -0
- package/dist/{web.js → browser.js} +35 -19
- package/dist/browser.js.map +1 -0
- package/dist/downloads.d.ts +29 -0
- package/dist/downloads.d.ts.map +1 -0
- package/dist/downloads.js +74 -0
- package/dist/downloads.js.map +1 -0
- package/dist/engine.d.ts +2 -2
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +113 -18
- package/dist/engine.js.map +1 -1
- package/dist/in-page/read-semantics.d.ts.map +1 -1
- package/dist/in-page/read-semantics.js +143 -34
- package/dist/in-page/read-semantics.js.map +1 -1
- package/dist/index.d.ts +19 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/locators.d.ts.map +1 -1
- package/dist/locators.js +26 -7
- package/dist/locators.js.map +1 -1
- package/dist/protected-app.d.ts +6 -2
- package/dist/protected-app.d.ts.map +1 -1
- package/dist/protected-app.js +18 -5
- package/dist/protected-app.js.map +1 -1
- package/dist/provider-video.d.ts +48 -0
- package/dist/provider-video.d.ts.map +1 -0
- package/dist/provider-video.js +80 -0
- package/dist/provider-video.js.map +1 -0
- package/dist/provider.d.ts +100 -5
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +148 -14
- package/dist/provider.js.map +1 -1
- package/dist/surface.d.ts +57 -13
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +41 -10
- package/dist/surface.js.map +1 -1
- package/dist/video.d.ts +34 -10
- package/dist/video.d.ts.map +1 -1
- package/dist/video.js +19 -10
- package/dist/video.js.map +1 -1
- package/package.json +4 -4
- package/dist/web.d.ts.map +0 -1
- 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
|
|
12
|
-
import {
|
|
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
|
-
|
|
182
|
+
const env = { [variable]: encodeHandoff({ slots: leases.length, leases }) };
|
|
183
|
+
this.workersRan.add(info.targetName);
|
|
184
|
+
return { workers: leases.length, env };
|
|
160
185
|
}
|
|
161
|
-
/**
|
|
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
|
|
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
|
-
|
|
170
|
-
|
|
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 = {
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
package/dist/provider.js.map
CHANGED
|
@@ -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 `
|
|
5
|
-
* fixture 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
|
|
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
|
|
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
|
-
|
|
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
|
|
56
|
-
* `
|
|
57
|
-
*
|
|
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
|
|
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
|
-
* `
|
|
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
|
|
179
|
-
*
|
|
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
|
package/dist/surface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAW,cAAc,EAA+B,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACpG,OAAO,
|
|
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 `
|
|
5
|
-
* fixture 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
|
|
188
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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) {
|