@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/README.md CHANGED
@@ -25,20 +25,23 @@ import type { E2EConfig } from 'e2e';
25
25
  import { web } from '@e2e-dev/web';
26
26
 
27
27
  export default {
28
- targets: [{ name: 'web', engine: web({ url: 'http://localhost:3000' }) }],
28
+ targets: [{ name: 'web', engine: web(), app: { url: 'http://localhost:3000' } }],
29
29
  } satisfies E2EConfig;
30
30
  ```
31
31
 
32
- The engine declares the app it drives. App options: `url` (the base URL
33
- `app.open()` opens; required once a test navigates), `command` (a process the
34
- runner starts before the run and stops after it, with `readyUrl` to poll,
35
- default `url`), `environment`
36
- (`test`, `staging`, `production`; inferred from the host), and `identity` (a
37
- stable cache and session key when the origin is ephemeral). Browser options:
32
+ The target declares the app; the engine only drives it. The target's `app`
33
+ takes `url` (the base URL `app.open()` opens; required on a `web()` target),
34
+ `command` (a process the runner starts before the run and stops after it,
35
+ with `readyUrl` to poll, default `url`), `environment` (`test`, `staging`,
36
+ `production`; inferred from the host), and `identity` (a stable cache and
37
+ session key when the origin is ephemeral). `web({ url })` and the other old
38
+ app options are `INVALID_CONFIG`. A target with `app.url` is a `browser`
39
+ target, so a test can `requires: ['browser']`. Browser options:
38
40
  `browser` (`chromium`, `firefox`, `webkit`; default `chromium`; or a
39
41
  `BrowserProvider` that leases hosted browsers, see below), `viewport`
40
42
  (`{ width, height }`; default 1280x720), `testIdAttribute` (the attribute
41
- `getByTestId` and a node's `testId` read; default `data-testid`), and
43
+ `getByTestId` and a node's `testId` read; default `data-testid`), `userAgent`
44
+ (the `User-Agent` every attempt sends and `navigator.userAgent` reports), and
42
45
  `connect` — attach to a remote browser over CDP instead of launching a local
43
46
  one.
44
47
 
@@ -68,7 +71,7 @@ engine verifies the default context ID and active page target ID, clears stale
68
71
  references, and never repeats a dispatched operation. A missing target fails
69
72
  the attempt. The host owns deleting the remote browser after cleanup.
70
73
 
71
- This mode does not support `headers`, `basicAuth`, context reset, or session
74
+ This mode does not support `headers`, `basicAuth`, `userAgent`, context reset, or session
72
75
  state capture and restore. Recording resumes after reconnect, but a segment
73
76
  lost during the disconnect remains unavailable. See the
74
77
  [Playwright reference](../../docs/reference/web.mdx#recovering-a-cdp-transport)
@@ -99,10 +102,10 @@ engine: web({
99
102
  });
100
103
  ```
101
104
 
102
- ## The `web` fixture
105
+ ## The `browser` fixture
103
106
 
104
- The engine contributes `web`: navigation, routes, cookies, dialogs, frames,
105
- downloads, keyboard and mouse, plus `expect(web).toHaveURL()` and
107
+ The engine contributes `browser`: navigation, routes, cookies, dialogs, frames,
108
+ downloads, keyboard and mouse, plus `expect(browser).toHaveURL()` and
106
109
  `toHaveTitle()` and `toHaveClass()`. Import `test` from this package to have it
107
110
  typed; it is the same runtime `test` as `e2e`'s.
108
111
 
@@ -110,10 +113,10 @@ typed; it is the same runtime `test` as `e2e`'s.
110
113
  import { test } from '@e2e-dev/web';
111
114
  import { expect } from 'e2e';
112
115
 
113
- test('signs in', async ({ app, screen, web }) => {
116
+ test('signs in', async ({ app, screen, browser }) => {
114
117
  await app.open('/login');
115
118
  await screen.getByLabel('Email').fill('user@example.test');
116
- await expect(web).toHaveURL('/dashboard');
119
+ await expect(browser).toHaveURL('/dashboard');
117
120
  });
118
121
  ```
119
122
 
package/dist/.build.json CHANGED
@@ -1 +1 @@
1
- {"version":"0.11.0-canary-20260928184528"}
1
+ {"version":"0.11.0"}
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACnH,OAAO,EAWL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAKtB;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,YAAY,GACrC,OAAO,CAAC,IAAI,CAAC,CA8Ef;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B/G;AAkBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,KAAK,CA4BnF"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAiC,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACrI,OAAO,EAWL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAUtB;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,YAAY,GACrC,OAAO,CAAC,IAAI,CAAC,CA8Ef;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B/G;AAoCD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,KAAK,CA4BnF"}
package/dist/actions.js CHANGED
@@ -3,6 +3,10 @@ import { EngineError } from 'e2e/engine';
3
3
  import { asActionable, isClassified, isPwTimeout, message, nearestPixel, performElementSwipe, performPointDrag, performPointerDrag, performViewportSwipe, POST_DISPATCH_PATTERN, } from './support.js';
4
4
  /** How long a long press holds the button when the action names no duration. */
5
5
  const DEFAULT_LONG_PRESS_MS = 500;
6
+ /** The keys a click holds, as Playwright's `modifiers` takes them; the contract spells them the same. */
7
+ function heldKeys(action) {
8
+ return action.modifiers === undefined ? {} : { modifiers: [...action.modifiers] };
9
+ }
6
10
  /**
7
11
  * Dispatches one deterministic locator action onto a Playwright target with the
8
12
  * platform's own actionability checks. `lookup` resolves the second ref of a
@@ -12,13 +16,13 @@ export async function dispatchLocatorAction(target, action, timeout, lookup) {
12
16
  const locator = asActionable(target);
13
17
  switch (action.kind) {
14
18
  case 'tap':
15
- await locator.click({ timeout });
19
+ await locator.click({ timeout, ...heldKeys(action) });
16
20
  return;
17
21
  case 'doubleTap':
18
- await locator.dblclick({ timeout });
22
+ await locator.dblclick({ timeout, ...heldKeys(action) });
19
23
  return;
20
24
  case 'secondaryTap':
21
- await locator.click({ button: 'right', timeout });
25
+ await locator.click({ button: 'right', timeout, ...heldKeys(action) });
22
26
  return;
23
27
  case 'longPress':
24
28
  await locator.click({ timeout, delay: action.durationMs ?? DEFAULT_LONG_PRESS_MS });
@@ -144,6 +148,22 @@ function redactSensitive(text, action) {
144
148
  return text;
145
149
  return text.replaceAll(action.value, '[redacted]');
146
150
  }
151
+ /** A call-log line naming what kept a node from being acted on: an element over it, or a state it never reached. */
152
+ const BLOCKER_PATTERN = /^element is (?:not (?:visible|enabled|stable|editable)|outside of the viewport)$| intercepts pointer events$/i;
153
+ /**
154
+ * Playwright's timeout cut to its headline and the last blocker its call log
155
+ * names: `<div data-popover>… intercepts pointer events` says what to close,
156
+ * where the whole log repeats it once per retry, thousands of characters a
157
+ * report prints and the agent pays for as model input. A log without a
158
+ * blocker is kept whole.
159
+ */
160
+ function actionabilitySummary(text) {
161
+ const [headline = text, ...log] = text.split('\n');
162
+ const blocker = log
163
+ .map((line) => line.trim().replace(/^- /, ''))
164
+ .findLast((line) => BLOCKER_PATTERN.test(line));
165
+ return blocker === undefined ? text : `${headline} ${blocker}`;
166
+ }
147
167
  /**
148
168
  * Classifies a failed action onto the error contract (see the table above
149
169
  * `POST_DISPATCH_PATTERN` in support.ts): stale, not actionable, possibly
@@ -164,7 +184,7 @@ export function classifyActionError(rawCause, action) {
164
184
  if (POST_DISPATCH_PATTERN.test(text)) {
165
185
  return new EngineError('ACTION_MAY_HAVE_COMMITTED', `${action.kind} timed out after its input was dispatched: ${text}`, { retryable: false, cause });
166
186
  }
167
- return new EngineError('NOT_ACTIONABLE', `${action.kind} did not become actionable in time: ${text}`, { retryable: false, cause });
187
+ return new EngineError('NOT_ACTIONABLE', `${action.kind} did not become actionable in time: ${actionabilitySummary(text)}`, { retryable: false, cause });
168
188
  }
169
189
  if (/not an? <?(input|checkbox|radio|select)|not editable|not checkable/i.test(text)) {
170
190
  return new EngineError('NOT_ACTIONABLE', text, { retryable: false, cause });
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
@@ -2,18 +2,30 @@ import type { Browser, BrowserContext, BrowserContextOptions, Page } from 'playw
2
2
  import { type EngineCleanupContext, type OperationContext, type VideoSegment, type ViewportSize } from 'e2e/engine';
3
3
  import { type CdpEndpointResolver, type SessionBinding } from './cdp-recovery.ts';
4
4
  import { RefRegistry } from './refs.ts';
5
+ import type { LeaseRecording } from './provider.ts';
6
+ import type { WebScreencastOptions } from './surface.ts';
5
7
  export type StorageState = Exclude<NonNullable<BrowserContextOptions['storageState']>, string>;
6
8
  interface SessionOptions {
7
9
  readonly artifactsDir: string;
8
10
  /** The emulated page size, or `null` to follow the window. */
9
11
  readonly viewport: ViewportSize | null;
12
+ /** How the engine's own screencast records, when the provider does not record. */
13
+ readonly screencast: WebScreencastOptions;
10
14
  readonly contextOptions: BrowserContextOptions;
11
15
  readonly acquire: (signal: AbortSignal) => Promise<Browser>;
12
16
  readonly configure: (context: BrowserContext) => Promise<void>;
17
+ /** Starts the browser provider's own recording of the attempt's browser, when it records; the attempt records the screencast otherwise. */
18
+ readonly record?: ((signal: AbortSignal) => Promise<LeaseRecording>) | undefined;
13
19
  readonly persistent?: {
14
20
  readonly provision: CdpEndpointResolver;
15
21
  readonly reconnect: CdpEndpointResolver;
16
- readonly usedContexts: Set<string>;
22
+ /**
23
+ * The default contexts earlier attempts rode, for an endpoint that could
24
+ * hand one back (a `connect` resolver). Absent for a provider's lease,
25
+ * fresh by contract: a hosted service may restore browsers from one
26
+ * snapshot, so a new browser can carry an earlier one's context id.
27
+ */
28
+ readonly usedContexts?: Set<string>;
17
29
  };
18
30
  }
19
31
  export declare class AttemptSession {
@@ -24,9 +36,12 @@ export declare class AttemptSession {
24
36
  private state;
25
37
  private generation;
26
38
  private observed;
39
+ /** Until the attempt's first page opens: a persistent browser's own first tab can serve as that page. */
40
+ private firstPage;
27
41
  private tracing;
28
42
  private traceSegments;
29
43
  private traceParts;
44
+ private requestedViewport;
30
45
  constructor(options: SessionOptions);
31
46
  /** Captures an immutable connection generation for publication after asynchronous reads. */
32
47
  token(): object;
@@ -48,6 +63,20 @@ export declare class AttemptSession {
48
63
  private transition;
49
64
  /** Creates the attempt's active page and records its exact target before exposing it. */
50
65
  ensurePage(): Promise<Page>;
66
+ /**
67
+ * The page the attempt shows next. A persistent browser is fresh for the
68
+ * attempt, so its own first tab serves as the attempt's first page instead
69
+ * of a second tab beside it, which a hosted browser's live view and
70
+ * recording would show behind the test's. The tab is navigated to
71
+ * `about:blank` first, so its document runs the context's init scripts
72
+ * as a new tab's does. Every later page is a new tab.
73
+ */
74
+ private nextPage;
75
+ /** Sizes the open page, if any, and every page this attempt opens after it. */
76
+ setViewport(size: {
77
+ readonly width: number;
78
+ readonly height: number;
79
+ }): Promise<void>;
51
80
  /** Restarts the document while retaining this context's storage. */
52
81
  restart(): Promise<void>;
53
82
  /** Replaces an ordinary context; persistent recovery never advertises this capability. */
@@ -64,8 +93,14 @@ export declare class AttemptSession {
64
93
  startTrace(): Promise<void>;
65
94
  /** Returns finalized segments, including any retained before context replacement failed. */
66
95
  private stopTrace;
67
- /** Starts video before tracing can choose the page's screencast size. */
68
- startVideo(): Promise<void>;
96
+ /**
97
+ * Starts video once the page is open, so a provider's recording of the
98
+ * browser starts on the attempt's own tab. A screencast is shared with the
99
+ * trace, which sizes it for itself, so a trace already running (a host
100
+ * that starts the video mid-attempt) is split around a screencast's start:
101
+ * its segment so far is saved, and it resumes on the video's screencast.
102
+ */
103
+ startVideo(signal: AbortSignal): Promise<void>;
69
104
  /** Collects finalized trace segments even when connection replacement failed. */
70
105
  collectTrace(operation: OperationContext): Promise<string | readonly string[]>;
71
106
  /** Collects this attempt's video independently of a failed connection. */
@@ -1 +1 @@
1
- {"version":3,"file":"attempt-session.d.ts","sourceRoot":"","sources":["../src/attempt-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attempt-session.d.ts","sourceRoot":"","sources":["../src/attempt-session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAA+C,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACjK,OAAO,EAAoD,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpI,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAE/F,UAAU,cAAc;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,2IAA2I;IAC3I,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC;IACjF,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;QACxC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;QACxC;;;;;WAKG;QACH,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;KACrC,CAAC;CACH;AAWD,qBAAa,cAAc;IAcb,OAAO,CAAC,QAAQ,CAAC,OAAO;IAbpC,QAAQ,CAAC,IAAI,cAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,yGAAyG;IACzG,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,iBAAiB,CAAkE;IAE3F,YAA6B,OAAO,EAAE,cAAc,EAInD;IAED,4FAA4F;IAC5F,KAAK,IAAI,MAAM,CAA4B;IAE3C,6EAA6E;IAC7E,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIzB;IAED,gGAAgG;IAChG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGtC;IAED,4FAA4F;IAC5F,kBAAkB,IAAI,IAAI,CAEzB;IAED,8FAA8F;IAC9F,OAAO,IAAI,cAAc,CAIxB;IAED,4FAA4F;IAC5F,OAAO,CAAC,UAAU;IAKlB,0FAA0F;IAC1F,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxC;IAED,6EAA6E;IACvE,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAuBtH;IAED,0FAA0F;YAC5E,UAAU;IA6CxB,yFAAyF;IACnF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBhC;IAED;;;;;;;OAOG;YACW,QAAQ;IAatB,+EAA+E;IACzE,WAAW,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1F;IAED,oEAAoE;IAC9D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAW7B;IAED,0FAA0F;IACpF,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhG;IAED,mFAAmF;IAC7E,KAAK,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvD;IAED,2FAA2F;IAC3F,OAAO,CAAC,OAAO;IAIf,gFAAgF;IAChF,OAAO,CAAC,SAAS;IAOjB,mEAAmE;YACrD,iBAAiB;IAY/B,sDAAsD;IAChD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAKhC;IAED,4FAA4F;YAC9E,SAAS;IAUvB;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnD;IAED,iFAAiF;IACjF,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAE7E;IAED,0EAA0E;IAC1E,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAE1E;IAED,wFAAwF;YAC1E,QAAQ;CASvB"}
@@ -5,6 +5,7 @@ import { EngineError, raceAbort, withinCleanupBudget } from 'e2e/engine';
5
5
  import { attachPersistent, recoveryFailed, targetIdentity } from './cdp-recovery.js';
6
6
  import { connectionAbort, withConnectionBudget } from './operation-budget.js';
7
7
  import { RefRegistry } from './refs.js';
8
+ import { ProviderVideo } from './provider-video.js';
8
9
  import { invalidState, translatePwError } from './support.js';
9
10
  import { VideoRecorder } from './video.js';
10
11
  const TRACE_OPTIONS = { screenshots: true, snapshots: true };
@@ -16,12 +17,17 @@ export class AttemptSession {
16
17
  state = { kind: 'empty' };
17
18
  generation = {};
18
19
  observed = true;
20
+ /** Until the attempt's first page opens: a persistent browser's own first tab can serve as that page. */
21
+ firstPage = true;
19
22
  tracing = false;
20
23
  traceSegments = 0;
21
24
  traceParts = [];
25
+ requestedViewport;
22
26
  constructor(options) {
23
27
  this.options = options;
24
- this.video = new VideoRecorder(options.viewport, options.artifactsDir);
28
+ this.video = options.record === undefined
29
+ ? new VideoRecorder(options.artifactsDir, options.screencast)
30
+ : new ProviderVideo(options.record, options.artifactsDir);
25
31
  }
26
32
  /** Captures an immutable connection generation for publication after asynchronous reads. */
27
33
  token() { return this.generation; }
@@ -65,12 +71,15 @@ export class AttemptSession {
65
71
  return { browser, context, page: null };
66
72
  }
67
73
  const binding = await attachPersistent(persistent.provision, remaining());
74
+ const { usedContexts } = persistent;
75
+ if (usedContexts === undefined)
76
+ return binding;
68
77
  const contextId = binding.identity.contextId;
69
- if (persistent.usedContexts.has(contextId)) {
78
+ if (usedContexts.has(contextId)) {
70
79
  await binding.browser.close().catch(() => undefined);
71
80
  throw recoveryFailed('cdpEndpoint reused a browser from a previous attempt; provision a fresh browser');
72
81
  }
73
- persistent.usedContexts.add(contextId);
82
+ usedContexts.add(contextId);
74
83
  return binding;
75
84
  }));
76
85
  }
@@ -120,7 +129,7 @@ export class AttemptSession {
120
129
  throw connectionAbort(budget.signal, 'connection');
121
130
  await this.options.configure(candidate.context);
122
131
  if (recover && candidate.page !== null) {
123
- const size = previous?.page?.viewportSize() ?? this.options.viewport;
132
+ const size = previous?.page?.viewportSize() ?? this.requestedViewport ?? this.options.viewport;
124
133
  if (size !== null)
125
134
  await candidate.page.setViewportSize(size);
126
135
  await this.video.pageOpened(candidate.page);
@@ -159,14 +168,14 @@ export class AttemptSession {
159
168
  return binding.page;
160
169
  this.invalidate();
161
170
  const token = this.token();
162
- const page = await binding.context.newPage();
171
+ const page = await this.nextPage(binding.context);
163
172
  try {
164
173
  let identity = binding.identity;
165
- if (identity !== undefined) {
166
- if (this.options.viewport !== null)
167
- await page.setViewportSize(this.options.viewport);
174
+ const size = this.requestedViewport ?? (identity === undefined ? null : this.options.viewport);
175
+ if (size !== null)
176
+ await page.setViewportSize(size);
177
+ if (identity !== undefined)
168
178
  identity = { ...identity, target: await targetIdentity(page) };
169
- }
170
179
  this.check(token);
171
180
  await this.video.pageOpened(page);
172
181
  this.check(token);
@@ -178,6 +187,37 @@ export class AttemptSession {
178
187
  throw cause;
179
188
  }
180
189
  }
190
+ /**
191
+ * The page the attempt shows next. A persistent browser is fresh for the
192
+ * attempt, so its own first tab serves as the attempt's first page instead
193
+ * of a second tab beside it, which a hosted browser's live view and
194
+ * recording would show behind the test's. The tab is navigated to
195
+ * `about:blank` first, so its document runs the context's init scripts
196
+ * as a new tab's does. Every later page is a new tab.
197
+ */
198
+ async nextPage(context) {
199
+ const first = this.firstPage;
200
+ this.firstPage = false;
201
+ if (first && this.options.persistent !== undefined) {
202
+ const initial = context.pages().find((page) => !page.isClosed());
203
+ if (initial !== undefined) {
204
+ await initial.goto('about:blank');
205
+ return initial;
206
+ }
207
+ }
208
+ return context.newPage();
209
+ }
210
+ /** Sizes the open page, if any, and every page this attempt opens after it. */
211
+ async setViewport(size) {
212
+ const { width, height } = size;
213
+ if (![width, height].every((side) => Number.isInteger(side) && side >= 0)) {
214
+ throw new Error(`the viewport needs whole, non-negative pixels, got ${width}x${height}`);
215
+ }
216
+ const page = this.current().page;
217
+ if (page !== null && !page.isClosed())
218
+ await page.setViewportSize({ width, height });
219
+ this.requestedViewport = { width, height };
220
+ }
181
221
  /** Restarts the document while retaining this context's storage. */
182
222
  async restart() {
183
223
  const binding = this.current();
@@ -219,8 +259,7 @@ export class AttemptSession {
219
259
  const binding = 'binding' in state ? state.binding : undefined;
220
260
  if (binding === undefined)
221
261
  return;
222
- if (this.video.isRecording)
223
- await withinCleanupBudget(this.video.pageClosing(), budget);
262
+ await withinCleanupBudget(this.video.abandon(budget.signal), budget);
224
263
  if (this.tracing)
225
264
  await withinCleanupBudget(binding.context.tracing.stop(), budget);
226
265
  await withinCleanupBudget(this.release(binding), budget);
@@ -268,22 +307,38 @@ export class AttemptSession {
268
307
  this.tracing = false;
269
308
  return parts.length === 0 ? relative : [...parts, relative];
270
309
  }
271
- /** Starts video before tracing can choose the page's screencast size. */
272
- async startVideo() { await this.video.arm(await this.ensurePage()); }
310
+ /**
311
+ * Starts video once the page is open, so a provider's recording of the
312
+ * browser starts on the attempt's own tab. A screencast is shared with the
313
+ * trace, which sizes it for itself, so a trace already running (a host
314
+ * that starts the video mid-attempt) is split around a screencast's start:
315
+ * its segment so far is saved, and it resumes on the video's screencast.
316
+ */
317
+ async startVideo(signal) {
318
+ const page = await this.ensurePage();
319
+ const resume = this.video.startsScreencast ? await this.closeTraceSegment(this.current().context) : false;
320
+ try {
321
+ await this.video.arm(page, signal);
322
+ }
323
+ finally {
324
+ if (resume)
325
+ await this.startTrace();
326
+ }
327
+ }
273
328
  /** Collects finalized trace segments even when connection replacement failed. */
274
329
  collectTrace(operation) {
275
330
  return this.finalize(operation, 'trace', () => this.stopTrace());
276
331
  }
277
332
  /** Collects this attempt's video independently of a failed connection. */
278
333
  collectVideo(operation) {
279
- return this.finalize(operation, 'video', () => this.video.stop());
334
+ return this.finalize(operation, 'video', (signal) => this.video.stop(signal));
280
335
  }
281
336
  /** Terminal artifact collection needs its own budget, but no successful UI dispatch. */
282
337
  async finalize(operation, label, collect) {
283
338
  try {
284
339
  return this.state.kind === 'failed' || this.state.kind === 'closed'
285
- ? await withConnectionBudget(operation, label, (remaining) => raceAbort(collect, remaining().signal, label))
286
- : await this.run(operation, label, collect);
340
+ ? await withConnectionBudget(operation, label, (remaining) => raceAbort(() => collect(remaining().signal), remaining().signal, label))
341
+ : await this.run(operation, label, (current) => collect(current.signal));
287
342
  }
288
343
  catch (cause) {
289
344
  throw translatePwError(cause, label);
@@ -1 +1 @@
1
- {"version":3,"file":"attempt-session.js","sourceRoot":"","sources":["../src/attempt-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attempt-session.js","sourceRoot":"","sources":["../src/attempt-session.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAA0F,MAAM,YAAY,CAAC;AACjK,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAiD,MAAM,mBAAmB,CAAC;AACpI,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAyB,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAC;AAmC9D,MAAM,aAAa,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAW,CAAC;AAEtE,MAAM,OAAO,cAAc;IAcI,OAAO;IAb3B,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;IACjB,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,KAAK,CAAe;IAC7B,KAAK,GAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACxC,UAAU,GAAG,EAAE,CAAC;IAChB,QAAQ,GAAG,IAAI,CAAC;IACxB,yGAAyG;IACjG,SAAS,GAAG,IAAI,CAAC;IACjB,OAAO,GAAG,KAAK,CAAC;IAChB,aAAa,GAAG,CAAC,CAAC;IAClB,UAAU,GAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAkE;IAE3F,YAA6B,OAAuB;uBAAvB,OAAO;QAClC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS;YACvC,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC;YAC7D,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,4FAA4F;IAC5F,KAAK,KAAa,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE3C,6EAA6E;IAC7E,KAAK,CAAC,KAAa;QACjB,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7D,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,iDAAiD,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IAED,gGAAgG;IAChG,kBAAkB,CAAC,KAAa;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,4FAA4F;IAC5F,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,2DAA2D,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5I,CAAC;IAED,8FAA8F;IAC9F,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,YAAY,CAAC,gCAAgC,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,4FAA4F;IACpF,UAAU;QAChB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,MAAmB;QACvB,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,EACtH,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC/D,SAAS,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC1C,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1E,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;YACpC,IAAI,YAAY,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;YAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC7C,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrD,MAAM,cAAc,CAAC,iFAAiF,CAAC,CAAC;YAC1G,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,GAAG,CAAI,SAA2B,EAAE,KAAa,EAAE,IAAiD;QACxG,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3C,MAAM,SAAS,GAAG,CAChB,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC5G,CAAC;QACF,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAClH,OAAO,oBAAoB,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC/E,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;oBACtD,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC/B,OAAO,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChF,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;YACD,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0FAA0F;IAClF,KAAK,CAAC,UAAU,CACtB,QAAoC,EACpC,MAAwB,EACxB,IAAmC,EACnC,OAAO,GAAG,KAAK;QAEf,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9E,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAC5C,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC9E,MAAM,SAAS,GAAG,MAAM,IAAI,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC;gBACH,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAC9E,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAChD,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACvC,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAC/F,IAAI,IAAI,KAAK,IAAI;wBAAE,MAAM,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oBAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,WAAW;oBAAE,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACtE,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAC9E,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;oBAAE,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBACtF,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;gBAC3B,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrD,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACpF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC3H,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;gBAAE,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YACtF,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3E,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,MAAM,IAAI,CAAC;IACb,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC;QAC3E,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/F,IAAI,IAAI,KAAK,IAAI;gBAAE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,QAAQ,KAAK,SAAS;gBAAE,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/G,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,QAAQ,CAAC,OAAuB;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClC,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,WAAW,CAAC,IAAyD;QACzE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,sDAAsD,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAAE,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,iBAAiB,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC7C,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1F,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;YAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACpE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,MAAM;YAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,OAAO,CAAC,YAAsC,EAAE,SAA2B;QAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/I,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAChD,IAAI,MAAM;YAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,KAAK,CAAC,MAA4B;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QAClC,MAAM,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACpF,MAAM,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,2FAA2F;IACnF,OAAO,CAAC,OAAuB;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACnG,CAAC;IAED,gFAAgF;IACxE,SAAS,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,mEAAmE;IAC3D,KAAK,CAAC,iBAAiB,CAAC,OAAuB;QACrD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC,CAAC,mEAAmE,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,UAAU;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,4FAA4F;IACpF,KAAK,CAAC,SAAS;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACpD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,MAAmB;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1G,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,IAAI,MAAM;gBAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,YAAY,CAAC,SAA2B;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,0EAA0E;IAC1E,YAAY,CAAC,SAA2B;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,wFAAwF;IAChF,KAAK,CAAC,QAAQ,CAAI,SAA2B,EAAE,KAAa,EAAE,OAA4C;QAChH,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;gBACjE,CAAC,CAAC,MAAM,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACtI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-connection.d.ts","sourceRoot":"","sources":["../src/browser-connection.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAA8B,MAAM,YAAY,CAAC;AAGlE,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5D;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAA+B;IAE9C;;;;;;OAMG;IACG,OAAO,CACX,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,OAAO,CAAC,CAkBlB;IAED,6FAA6F;IACvF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ7B;CACF;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,QAAQ,CAI9D;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtF"}
1
+ {"version":3,"file":"browser-connection.d.ts","sourceRoot":"","sources":["../src/browser-connection.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAA8B,MAAM,YAAY,CAAC;AAGlE,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAc5D;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAA+B;IAE9C;;;;;;OAMG;IACG,OAAO,CACX,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,OAAO,CAAC,CAkBlB;IAED,6FAA6F;IACvF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ7B;CACF;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,QAAQ,CAI9D;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtF"}
@@ -1,6 +1,17 @@
1
1
  /** Shares one browser process connection across a worker's attempts. */
2
2
  import { chromium, firefox, selectors, webkit } from 'playwright';
3
3
  import { SELECTOR_ENGINES } from './selector-engines.js';
4
+ /**
5
+ * Playwright's default SIGINT handler closes the browser and exits the
6
+ * process, and its SIGTERM handler closes the browser. A terminal Ctrl-C
7
+ * reaches the worker's whole process group, so they would end the test
8
+ * mid-step before the runner's interrupt reports it. The runner owns those
9
+ * interrupts; the browser runs in its own process group, so the signal never
10
+ * reaches it, and the engine's `dispose` closes it. SIGHUP stays Playwright's:
11
+ * the runner does not handle a hangup, and its handler is what closes the
12
+ * browser when the terminal goes away.
13
+ */
14
+ const RUNNER_OWNS_SIGNALS = { handleSIGINT: false, handleSIGTERM: false };
4
15
  /**
5
16
  * Launching a browser process costs hundreds of milliseconds; per-attempt
6
17
  * isolation lives in browser contexts, so every attempt a worker runs can
@@ -28,7 +39,7 @@ export class BrowserConnection {
28
39
  this.pending = undefined;
29
40
  }
30
41
  await registerSelectorEngines();
31
- const launching = connect !== undefined ? connect() : browserType(name).launch({ headless: !headed, timeout: timeoutMs });
42
+ const launching = connect !== undefined ? connect() : browserType(name).launch({ headless: !headed, timeout: timeoutMs, ...RUNNER_OWNS_SIGNALS });
32
43
  this.pending = launching;
33
44
  try {
34
45
  return await launching;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-connection.js","sourceRoot":"","sources":["../src/browser-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-connection.js","sourceRoot":"","sources":["../src/browser-connection.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * The `web` fixture: the browser-shaped deterministic surface this engine
2
+ * The `browser` fixture: the browser-shaped deterministic surface this engine
3
3
  * contributes. It lives here, not in core, because the harness knows the
4
4
  * engine contract and never a platform's fixture shape. Every async method
5
- * runs as a harness-recorded `web.<method>` step; `expect(web)` reaches the
5
+ * runs as a harness-recorded `browser.<method>` step; `expect(browser)` reaches the
6
6
  * matchers attached through `context.expectable`.
7
7
  *
8
8
  * Layering rule: validation (`resolveUrl`, JSON checks, cookie URLs, the
@@ -80,9 +80,9 @@ export type Cookie = CookieFields & ({
80
80
  domain: string;
81
81
  path?: string;
82
82
  });
83
- export interface WebExpectation {
83
+ export interface BrowserExpectation {
84
84
  /** Inverts the matcher. */
85
- readonly not: WebExpectation;
85
+ readonly not: BrowserExpectation;
86
86
  /** Waits for the current URL to match. */
87
87
  toHaveURL(expected: string | RegExp, options?: {
88
88
  timeout?: number;
@@ -97,7 +97,7 @@ export interface WebExpectation {
97
97
  }): Promise<void>;
98
98
  }
99
99
  /**
100
- * The screen scope `web.frameLocator` returns. Every `Screen` query answers
100
+ * The screen scope `browser.frameLocator` returns. Every `Screen` query answers
101
101
  * from inside the frame, and because the frame's document is Playwright's,
102
102
  * the web-only escape hatches follow it in: `locator` for a CSS or XPath
103
103
  * selector on a control with no accessible name, `frameLocator` for a frame
@@ -109,7 +109,16 @@ export interface FrameScreen extends Screen {
109
109
  /** Creates a screen query scope inside an iframe nested in this frame. */
110
110
  frameLocator(selector: string): FrameScreen;
111
111
  }
112
- export interface Web extends Expectable<WebExpectation> {
112
+ /**
113
+ * The browser the attempt drives, showing one active tab. Navigation, reads,
114
+ * `locator`, `frameLocator`, `evaluate`, `waitForResponse`, `waitForDownload`,
115
+ * the keyboard and mouse, `expect(browser)`, and `screen` act on the active
116
+ * tab; cookies, routes, and dialog handlers cover the whole browser, every
117
+ * tab included. A tab the app opens itself (a `target="_blank"` link,
118
+ * `window.open`) is not followed: the active tab stays the one the attempt
119
+ * opened.
120
+ */
121
+ export interface Browser extends Expectable<BrowserExpectation> {
113
122
  /** Navigates to an allowed URL. */
114
123
  goto(url: string, options?: {
115
124
  waitUntil?: 'load' | 'domcontentloaded' | 'networkidle';
@@ -186,6 +195,6 @@ export interface Web extends Expectable<WebExpectation> {
186
195
  up(): Promise<void>;
187
196
  };
188
197
  }
189
- /** Builds the `web` fixture for one attempt over the shared surface. */
190
- export declare function createWebFixture(surface: PlaywrightSurface, context: EngineFixtureContext): Web;
191
- //# sourceMappingURL=web.d.ts.map
198
+ /** Builds the `browser` fixture for one attempt over the shared surface. */
199
+ export declare function createBrowserFixture(surface: PlaywrightSurface, context: EngineFixtureContext): Browser;
200
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}