doc-detective 4.18.0 → 4.19.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 (62) hide show
  1. package/dist/common/src/schemas/schemas.json +1380 -928
  2. package/dist/common/src/types/generated/closeSurface_v3.d.ts +4 -4
  3. package/dist/common/src/types/generated/dragAndDrop_v3.d.ts +2 -2
  4. package/dist/common/src/types/generated/goTo_v3.d.ts +2 -2
  5. package/dist/common/src/types/generated/record_v3.d.ts +2 -2
  6. package/dist/common/src/types/generated/runBrowserScript_v3.d.ts +2 -2
  7. package/dist/common/src/types/generated/screenshot_v3.d.ts +2 -2
  8. package/dist/common/src/types/generated/step_v3.d.ts +16 -16
  9. package/dist/common/src/types/generated/surface_v3.d.ts +2 -2
  10. package/dist/common/src/types/generated/test_v3.d.ts +32 -32
  11. package/dist/common/src/types/generated/type_v3.d.ts +2 -2
  12. package/dist/core/appium.d.ts.map +1 -1
  13. package/dist/core/appium.js +10 -0
  14. package/dist/core/appium.js.map +1 -1
  15. package/dist/core/tests/browserSessions.d.ts +51 -0
  16. package/dist/core/tests/browserSessions.d.ts.map +1 -0
  17. package/dist/core/tests/browserSessions.js +219 -0
  18. package/dist/core/tests/browserSessions.js.map +1 -0
  19. package/dist/core/tests/browserSurface.d.ts +5 -1
  20. package/dist/core/tests/browserSurface.d.ts.map +1 -1
  21. package/dist/core/tests/browserSurface.js +93 -45
  22. package/dist/core/tests/browserSurface.js.map +1 -1
  23. package/dist/core/tests/closeSurface.d.ts.map +1 -1
  24. package/dist/core/tests/closeSurface.js +89 -10
  25. package/dist/core/tests/closeSurface.js.map +1 -1
  26. package/dist/core/tests/dragAndDrop.d.ts.map +1 -1
  27. package/dist/core/tests/dragAndDrop.js +4 -1
  28. package/dist/core/tests/dragAndDrop.js.map +1 -1
  29. package/dist/core/tests/findElement.d.ts.map +1 -1
  30. package/dist/core/tests/findElement.js +5 -3
  31. package/dist/core/tests/findElement.js.map +1 -1
  32. package/dist/core/tests/goTo.d.ts.map +1 -1
  33. package/dist/core/tests/goTo.js +9 -4
  34. package/dist/core/tests/goTo.js.map +1 -1
  35. package/dist/core/tests/runBrowserScript.d.ts.map +1 -1
  36. package/dist/core/tests/runBrowserScript.js +3 -1
  37. package/dist/core/tests/runBrowserScript.js.map +1 -1
  38. package/dist/core/tests/runCode.d.ts +2 -1
  39. package/dist/core/tests/runCode.d.ts.map +1 -1
  40. package/dist/core/tests/runCode.js +2 -1
  41. package/dist/core/tests/runCode.js.map +1 -1
  42. package/dist/core/tests/runShell.d.ts +2 -1
  43. package/dist/core/tests/runShell.d.ts.map +1 -1
  44. package/dist/core/tests/runShell.js +11 -1
  45. package/dist/core/tests/runShell.js.map +1 -1
  46. package/dist/core/tests/saveScreenshot.d.ts.map +1 -1
  47. package/dist/core/tests/saveScreenshot.js +3 -1
  48. package/dist/core/tests/saveScreenshot.js.map +1 -1
  49. package/dist/core/tests/startRecording.d.ts.map +1 -1
  50. package/dist/core/tests/startRecording.js +4 -1
  51. package/dist/core/tests/startRecording.js.map +1 -1
  52. package/dist/core/tests/stopRecording.d.ts.map +1 -1
  53. package/dist/core/tests/stopRecording.js +25 -3
  54. package/dist/core/tests/stopRecording.js.map +1 -1
  55. package/dist/core/tests/typeKeys.d.ts.map +1 -1
  56. package/dist/core/tests/typeKeys.js +9 -5
  57. package/dist/core/tests/typeKeys.js.map +1 -1
  58. package/dist/core/tests.d.ts.map +1 -1
  59. package/dist/core/tests.js +73 -16
  60. package/dist/core/tests.js.map +1 -1
  61. package/dist/index.cjs +1703 -974
  62. package/package.json +1 -1
@@ -0,0 +1,219 @@
1
+ // Multi-surface Phase 4 (ADR 01019): several concurrent WebDriver sessions in
2
+ // one context, keyed by surface name. This module owns the context-scoped
3
+ // session registry — the browser generalization of the run-scoped
4
+ // processRegistry. Sessions are opened by an injected launcher (goTo is the
5
+ // only step allowed to trigger it), selected by the shared `surface`
6
+ // reference, and swept at context teardown. Drivers are injected, never
7
+ // imported — the module stays webdriverio-free and unit-testable with stubs.
8
+ //
9
+ // Every registered driver carries `driver.state.sessionRegistry` back to its
10
+ // registry, so step actions reach cross-session resolution through the driver
11
+ // they already hold instead of a new parameter on every call site.
12
+ export { normalizeEngine, createSessionRegistry, registerSession, findSession, resolveSessionForRef, lookupSessionByName, closeSession, sweepSessions, activeDriver, };
13
+ // Reserved browser engine keywords. A session may only be named after an
14
+ // engine keyword that matches its OWN engine (the default session's name is
15
+ // its engine), never a foreign one — otherwise `surface: "<engine>"` (which
16
+ // prefers an exact name match) would resolve a differently-engined session
17
+ // named after that keyword instead of a browser of that engine.
18
+ const ENGINE_KEYWORDS = new Set([
19
+ "chrome",
20
+ "firefox",
21
+ "safari",
22
+ "webkit",
23
+ "edge",
24
+ ]);
25
+ // context_v3 transforms edge → chrome before the runner sees it, so engine
26
+ // comparisons must treat them as the same engine or `surface: "edge"` would
27
+ // never match an edge context. (The raw engine name is still what gets
28
+ // stamped on `driver.state.engine` and stored on the session entry.)
29
+ function normalizeEngine(engine) {
30
+ const e = String(engine).toLowerCase();
31
+ return e === "edge" ? "chrome" : e;
32
+ }
33
+ // A session name that is a reserved engine keyword must match the session's
34
+ // own engine. Returns an error message when it doesn't, else null.
35
+ function engineKeywordNameConflict(name, engine) {
36
+ const nameLower = name.toLowerCase();
37
+ if (ENGINE_KEYWORDS.has(nameLower) &&
38
+ normalizeEngine(nameLower) !== normalizeEngine(engine)) {
39
+ return `"${name}" is a browser engine keyword, so it can't name a ${String(engine).toLowerCase()} surface. Pick a non-engine name.`;
40
+ }
41
+ return null;
42
+ }
43
+ function createSessionRegistry(opts = {}) {
44
+ return {
45
+ sessions: new Map(),
46
+ activeName: null,
47
+ focusSeq: 0,
48
+ ...(opts.open ? { open: opts.open } : {}),
49
+ ...(opts.isNameTaken ? { isNameTaken: opts.isNameTaken } : {}),
50
+ };
51
+ }
52
+ function activate(registry, entry) {
53
+ entry.lastFocused = ++registry.focusSeq;
54
+ registry.activeName = entry.name;
55
+ }
56
+ // Register a live session and activate it. Throws on a duplicate name, or on a
57
+ // name already taken by another surface kind (e.g. a background process) —
58
+ // names must be unique per context, ACROSS kinds, so `surface` references stay
59
+ // unambiguous. resolveSessionForRef pre-checks the cross-kind collision on the
60
+ // open path and returns a friendly error; this throw is the backstop for any
61
+ // other caller (e.g. the default-session registration at context start).
62
+ function registerSession(registry, { name, engine, driver }) {
63
+ const key = String(name).trim();
64
+ if (registry.sessions.has(key)) {
65
+ throw new Error(`A browser surface named "${key}" already exists in this context. Surface names must be unique.`);
66
+ }
67
+ if (registry.isNameTaken?.(key)) {
68
+ throw new Error(`The surface name "${key}" is already in use by another surface (e.g. a background process). Surface names must be unique across kinds.`);
69
+ }
70
+ const engineConflict = engineKeywordNameConflict(key, engine);
71
+ if (engineConflict)
72
+ throw new Error(engineConflict);
73
+ driver.state = driver.state ?? {};
74
+ driver.state.engine = String(engine).toLowerCase();
75
+ driver.state.sessionRegistry = registry;
76
+ const entry = {
77
+ name: key,
78
+ engine: String(engine).toLowerCase(),
79
+ driver,
80
+ lastFocused: 0,
81
+ };
82
+ registry.sessions.set(key, entry);
83
+ activate(registry, entry);
84
+ return entry;
85
+ }
86
+ function lookupSessionByName(registry, name) {
87
+ return registry.sessions.get(String(name).trim());
88
+ }
89
+ function activeDriver(registry) {
90
+ if (!registry?.activeName)
91
+ return undefined;
92
+ return registry.sessions.get(registry.activeName)?.driver;
93
+ }
94
+ // Match a browser surface reference against the live sessions WITHOUT side
95
+ // effects (no activation, no launch). Matching order: exact name (`name` if
96
+ // given, else the engine keyword), then — for engine-only references — a
97
+ // unique session of that engine, so `surface: "chrome"` still resolves when
98
+ // the only chrome session was opened under another name. `entry: undefined`
99
+ // means "no match" (the caller decides whether that opens, FAILs, or no-ops);
100
+ // `ok: false` is a real conflict (wrong engine for the name, or ambiguity).
101
+ function findSession(registry, ref) {
102
+ if (ref.kind !== "browser") {
103
+ return { ok: false, message: "Not a browser surface reference." };
104
+ }
105
+ const engine = ref.engine ? normalizeEngine(ref.engine) : undefined;
106
+ const name = String(ref.name ?? ref.engine).trim();
107
+ const exact = registry.sessions.get(name);
108
+ if (exact) {
109
+ if (ref.name && engine && normalizeEngine(exact.engine) !== engine) {
110
+ return {
111
+ ok: false,
112
+ message: `Browser surface "${name}" is a ${exact.engine} browser, not ${ref.engine}.`,
113
+ };
114
+ }
115
+ return { ok: true, entry: exact };
116
+ }
117
+ if (!ref.name && engine) {
118
+ const matches = [...registry.sessions.values()].filter((s) => normalizeEngine(s.engine) === engine);
119
+ if (matches.length === 1) {
120
+ return { ok: true, entry: matches[0] };
121
+ }
122
+ if (matches.length > 1) {
123
+ const names = matches.map((m) => `"${m.name}"`).join(", ");
124
+ return {
125
+ ok: false,
126
+ message: `Multiple ${ref.engine} browser surfaces are open (${names}). Name the one you mean: { "browser": "${ref.engine}", "name": … }.`,
127
+ };
128
+ }
129
+ }
130
+ return { ok: true, entry: undefined };
131
+ }
132
+ // Resolve a browser surface reference to a live session (findSession's
133
+ // matching rule), then (goTo only, via allowOpen) launch one on no match. A
134
+ // step that resolves a session activates it: active = most recently opened
135
+ // or focused, across sessions.
136
+ async function resolveSessionForRef(registry, ref, opts = {}) {
137
+ if (ref.kind !== "browser") {
138
+ return { ok: false, message: "Not a browser surface reference." };
139
+ }
140
+ const found = findSession(registry, ref);
141
+ if (!found.ok)
142
+ return found;
143
+ if (found.entry) {
144
+ activate(registry, found.entry);
145
+ return { ok: true, driver: found.entry.driver, name: found.entry.name };
146
+ }
147
+ const name = String(ref.name ?? ref.engine).trim();
148
+ // An engine-less ref (a bare-string name reinterpretation) can never open —
149
+ // there is nothing to launch without an engine.
150
+ if (opts.allowOpen && registry.open && ref.engine) {
151
+ if (registry.isNameTaken?.(name)) {
152
+ return {
153
+ ok: false,
154
+ message: `The surface name "${name}" is already in use by another surface (e.g. a background process). Choose a different name.`,
155
+ };
156
+ }
157
+ const engineConflict = engineKeywordNameConflict(name, ref.engine);
158
+ if (engineConflict)
159
+ return { ok: false, message: engineConflict };
160
+ let driver;
161
+ try {
162
+ driver = await registry.open(ref.engine);
163
+ }
164
+ catch (error) {
165
+ return {
166
+ ok: false,
167
+ message: `Couldn't open browser surface "${name}" (${ref.engine}). ${error?.message ?? error}`,
168
+ };
169
+ }
170
+ const entry = registerSession(registry, {
171
+ name,
172
+ engine: ref.engine,
173
+ driver,
174
+ });
175
+ return { ok: true, driver: entry.driver, name: entry.name };
176
+ }
177
+ return {
178
+ ok: false,
179
+ message: `No browser surface named "${name}" is open in this context. Open it first with a goTo step (e.g. { "goTo": { "url": …, "surface": … } }).`,
180
+ };
181
+ }
182
+ // End one session and deregister it. Idempotent: an unknown name reports
183
+ // `closed: false` (consistent with the process kind's never-fail-on-missing
184
+ // closes). A deleteSession failure still deregisters — the session is gone
185
+ // either way, and teardown must not see it again.
186
+ async function closeSession(registry, name) {
187
+ const key = String(name).trim();
188
+ const entry = registry.sessions.get(key);
189
+ if (!entry)
190
+ return { ok: true, closed: false };
191
+ try {
192
+ await entry.driver.deleteSession();
193
+ }
194
+ catch {
195
+ // Already dead — deregistering is the part that matters.
196
+ }
197
+ registry.sessions.delete(key);
198
+ if (registry.activeName === key) {
199
+ const survivors = [...registry.sessions.values()].sort((a, b) => b.lastFocused - a.lastFocused);
200
+ registry.activeName = survivors[0]?.name ?? null;
201
+ }
202
+ return { ok: true, closed: true };
203
+ }
204
+ // Context-teardown sweep: end every remaining session, tolerating individual
205
+ // failures (a session the test already closed, a crashed browser). Leaves the
206
+ // registry empty so a re-entrant sweep is a no-op.
207
+ async function sweepSessions(registry) {
208
+ for (const entry of registry.sessions.values()) {
209
+ try {
210
+ await entry.driver.deleteSession();
211
+ }
212
+ catch {
213
+ // Best-effort — the finally block that calls this must not throw.
214
+ }
215
+ }
216
+ registry.sessions.clear();
217
+ registry.activeName = null;
218
+ }
219
+ //# sourceMappingURL=browserSessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserSessions.js","sourceRoot":"","sources":["../../../src/core/tests/browserSessions.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  declare const RESERVED_ENGINE_KEYWORDS: Set<string>;
2
- export { RESERVED_ENGINE_KEYWORDS, parseSurfaceRef, ensureSurfaceState, syncHandles, seedWindowLead, deregisterHandle, registerOpenedHandle, resolveWindowTarget, switchToSurface, closeHandle, resolveCloseTargets, };
2
+ export { RESERVED_ENGINE_KEYWORDS, parseSurfaceRef, reinterpretForSessions, ensureSurfaceState, syncHandles, seedWindowLead, deregisterHandle, registerOpenedHandle, resolveWindowTarget, switchToSurface, closeHandle, resolveCloseTargets, };
3
3
  export type ParsedSurface = {
4
4
  kind: "none";
5
5
  } | {
6
6
  kind: "process";
7
7
  name: string;
8
+ explicit?: boolean;
8
9
  } | {
9
10
  kind: "browser";
10
11
  engine?: string;
@@ -15,6 +16,7 @@ export type ParsedSurface = {
15
16
  kind: "unsupported";
16
17
  };
17
18
  declare function parseSurfaceRef(surface: any): ParsedSurface;
19
+ declare function reinterpretForSessions(driver: any, ref: ParsedSurface): ParsedSurface;
18
20
  export interface WindowEntry {
19
21
  handle: string;
20
22
  order: number;
@@ -43,6 +45,7 @@ declare function registerOpenedHandle(driver: any, entry: {
43
45
  type Resolution = {
44
46
  ok: true;
45
47
  handle: string;
48
+ driver?: any;
46
49
  } | {
47
50
  ok: false;
48
51
  message: string;
@@ -50,6 +53,7 @@ type Resolution = {
50
53
  export interface SurfaceResolveOptions {
51
54
  maxWaitMs?: number;
52
55
  pollIntervalMs?: number;
56
+ allowOpen?: boolean;
53
57
  }
54
58
  declare function resolveWindowTarget(driver: any, ref: ParsedSurface, opts?: SurfaceResolveOptions): Promise<Resolution>;
55
59
  declare function switchToSurface(driver: any, surface: any, opts?: SurfaceResolveOptions): Promise<Resolution>;
@@ -1 +1 @@
1
- {"version":3,"file":"browserSurface.d.ts","sourceRoot":"","sources":["../../../src/core/tests/browserSurface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browserSurface.d.ts","sourceRoot":"","sources":["../../../src/core/tests/browserSurface.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
1
  import { matchesExpectedOutput } from "../utils.js";
2
+ import { normalizeEngine, resolveSessionForRef } from "./browserSessions.js";
2
3
  // Multi-surface Phase 3 (ADR 01016): windows & tabs in the active browser.
3
4
  // One WebDriver session, many flat W3C handles. This module owns the
4
- // per-context handle registry (`driver.state.surfaces`) and every selector
5
+ // per-session handle registry (`driver.state.surfaces`) and every selector
5
6
  // resolution rule, so step actions only ever call switchToSurface /
6
7
  // resolveCloseTargets. The driver is injected, never imported — the module
7
8
  // stays webdriverio-free and unit-testable with a stub.
9
+ //
10
+ // Phase 4 (ADR 01019) adds the session level above this one: a browser
11
+ // surface reference picks a SESSION first (via the context's session
12
+ // registry, reached through `driver.state.sessionRegistry`), then resolves
13
+ // windows/tabs inside it with the machinery here.
8
14
  // Declared before the export list so the binding exists when the list is
9
15
  // evaluated (a `const` isn't hoisted like a function declaration).
10
16
  const RESERVED_ENGINE_KEYWORDS = new Set([
@@ -14,14 +20,7 @@ const RESERVED_ENGINE_KEYWORDS = new Set([
14
20
  "webkit",
15
21
  "edge",
16
22
  ]);
17
- export { RESERVED_ENGINE_KEYWORDS, parseSurfaceRef, ensureSurfaceState, syncHandles, seedWindowLead, deregisterHandle, registerOpenedHandle, resolveWindowTarget, switchToSurface, closeHandle, resolveCloseTargets, };
18
- // context_v3 transforms edge → chrome before the runner sees it, so the
19
- // engine check must treat them as the same engine or `surface: "edge"`
20
- // would never match an edge context.
21
- function normalizeEngine(engine) {
22
- const e = engine.toLowerCase();
23
- return e === "edge" ? "chrome" : e;
24
- }
23
+ export { RESERVED_ENGINE_KEYWORDS, parseSurfaceRef, reinterpretForSessions, ensureSurfaceState, syncHandles, seedWindowLead, deregisterHandle, registerOpenedHandle, resolveWindowTarget, switchToSurface, closeHandle, resolveCloseTargets, };
25
24
  // Resolve a `surface` value to a target descriptor:
26
25
  // { process: "name" } → process
27
26
  // "name" (not an engine kw) → process (a bare string names a surface;
@@ -39,7 +38,9 @@ function parseSurfaceRef(surface) {
39
38
  return { kind: "process", name };
40
39
  }
41
40
  if (typeof surface === "object" && typeof surface.process === "string") {
42
- return { kind: "process", name: surface.process.trim() };
41
+ // Explicit process reference — the user named the kind, so it is never
42
+ // reinterpreted as a browser session (see reinterpretForSessions).
43
+ return { kind: "process", name: surface.process.trim(), explicit: true };
43
44
  }
44
45
  if (typeof surface === "object" && typeof surface.browser === "string") {
45
46
  const parsed = {
@@ -54,6 +55,23 @@ function parseSurfaceRef(surface) {
54
55
  // Any other object shape (app) is a future surface kind.
55
56
  return { kind: "unsupported" };
56
57
  }
58
+ // Phase 4: only a BARE-STRING surface is identity-only — its kind resolves at
59
+ // runtime. parseSurfaceRef defaults a non-engine bare string to the process
60
+ // kind; when the context's session registry owns the name, reinterpret it as
61
+ // that browser surface (registry-first precedence). An EXPLICIT `{ process: … }`
62
+ // reference is never reinterpreted — the user named the kind — so a process
63
+ // stays reachable by its explicit form even if a browser session shares the
64
+ // name. (Opening a browser over an existing process name is rejected up front,
65
+ // so the only way the two coexist is a process started after a same-named
66
+ // browser; that process is then reached with `{ process: … }`.)
67
+ function reinterpretForSessions(driver, ref) {
68
+ if (ref.kind === "process" &&
69
+ !ref.explicit &&
70
+ driver?.state?.sessionRegistry?.sessions?.has(ref.name)) {
71
+ return { kind: "browser", name: ref.name };
72
+ }
73
+ return ref;
74
+ }
57
75
  function ensureSurfaceState(driver) {
58
76
  if (!driver.state)
59
77
  driver.state = {};
@@ -196,20 +214,37 @@ async function matchSelector(driver, candidates, selector, nameField) {
196
214
  }
197
215
  return null;
198
216
  }
199
- // Phase 3 gate: the surface must be (or omit) the context's active engine and
200
- // must not name a browser both are multi-browser (Phase 4+) features. The
201
- // name check runs first because it is categorical (never supported in this
202
- // phase), so its message doesn't vary with which engine happens to be active.
203
- function checkPhase3Limits(driver, ref) {
217
+ // Single-session fallback: when no session registry exists (a driver the
218
+ // runner didn't register, or a unit-test stub), a browser reference must
219
+ // match the one live session same engine, no name. With a registry, the
220
+ // session level resolves these instead (resolveTargetDriver below).
221
+ function checkSingleSessionTarget(driver, ref) {
204
222
  if (ref.name) {
205
- return `Named browser surfaces ("${ref.name}") land in a later phase. Omit "name" to target the active browser.`;
223
+ return `No browser surface named "${ref.name}" is open in this context. Open it first with a goTo step (e.g. { "goTo": { "url": …, "surface": { "browser": "${ref.engine}", "name": "${ref.name}" } } }).`;
206
224
  }
207
225
  const active = driver?.state?.engine;
208
226
  if (ref.engine && active && normalizeEngine(ref.engine) !== normalizeEngine(active)) {
209
- return `"${ref.engine}" is not the active browser for this context (${active}). Targeting a different browser lands in a later phase.`;
227
+ return `"${ref.engine}" is not open in this context (active browser: ${active}). Open it first with a goTo step (e.g. { "goTo": { "url": …, "surface": "${ref.engine}" } }).`;
210
228
  }
211
229
  return null;
212
230
  }
231
+ // Phase 4 session resolution: pick the SESSION a browser reference targets.
232
+ // Routes through the context's session registry when the driver carries one;
233
+ // falls back to the single-session engine/name check otherwise. `allowOpen`
234
+ // (goTo only) lets an unresolved reference launch a new session.
235
+ async function resolveTargetDriver(driver, ref, opts = {}) {
236
+ const registry = driver?.state?.sessionRegistry;
237
+ if (registry) {
238
+ return resolveSessionForRef(registry, ref, { allowOpen: opts.allowOpen });
239
+ }
240
+ const missingDriver = requireDriver(driver);
241
+ if (missingDriver)
242
+ return { ok: false, message: missingDriver };
243
+ const check = checkSingleSessionTarget(driver, ref);
244
+ if (check)
245
+ return { ok: false, message: check };
246
+ return { ok: true, driver };
247
+ }
213
248
  // Guard for steps that can run in driverless contexts (type, closeSurface):
214
249
  // a browser surface without a live session is a targeting error, not a crash.
215
250
  function requireDriver(driver) {
@@ -239,9 +274,13 @@ async function resolveWindowTarget(driver, ref, opts = {}) {
239
274
  const missingDriver = requireDriver(driver);
240
275
  if (missingDriver)
241
276
  return { ok: false, message: missingDriver };
242
- const limit = checkPhase3Limits(driver, ref);
243
- if (limit)
244
- return { ok: false, message: limit };
277
+ // Session-registry drivers arrive here already session-resolved (the ref
278
+ // picked THIS driver); without a registry the ref must match this session.
279
+ if (!driver?.state?.sessionRegistry) {
280
+ const check = checkSingleSessionTarget(driver, ref);
281
+ if (check)
282
+ return { ok: false, message: check };
283
+ }
245
284
  const maxWaitMs = opts.maxWaitMs ?? DEFAULT_MAX_WAIT_MS;
246
285
  const pollIntervalMs = opts.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
247
286
  const deadline = Date.now() + maxWaitMs;
@@ -299,19 +338,17 @@ async function resolveWindowTarget(driver, ref, opts = {}) {
299
338
  await sleep(pollIntervalMs);
300
339
  }
301
340
  }
302
- // Resolve a raw `surface` value and focus the resulting tab. The one-call
303
- // entry point for step actions.
341
+ // Resolve a raw `surface` value, pick the session it targets (Phase 4), and
342
+ // focus the resulting tab. The one-call entry point for step actions. The
343
+ // success result carries the resolved DRIVER — a cross-session reference
344
+ // resolves to a different session's driver, and the caller must act on that
345
+ // one from here on.
304
346
  async function switchToSurface(driver, surface, opts = {}) {
305
- const ref = parseSurfaceRef(surface);
306
- if (ref.kind === "browser") {
307
- const missingDriver = requireDriver(driver);
308
- if (missingDriver)
309
- return { ok: false, message: missingDriver };
310
- }
347
+ const ref = reinterpretForSessions(driver, parseSurfaceRef(surface));
311
348
  if (ref.kind === "none") {
312
349
  const handle = await currentHandleSafe(driver);
313
350
  return handle
314
- ? { ok: true, handle }
351
+ ? { ok: true, handle, driver }
315
352
  : { ok: false, message: "No open tabs to act on." };
316
353
  }
317
354
  if (ref.kind !== "browser") {
@@ -320,14 +357,21 @@ async function switchToSurface(driver, surface, opts = {}) {
320
357
  message: `Surface ${JSON.stringify(surface)} is not a browser surface.`,
321
358
  };
322
359
  }
323
- const resolved = await resolveWindowTarget(driver, ref, opts);
360
+ const session = await resolveTargetDriver(driver, ref, opts);
361
+ if (!session.ok)
362
+ return session;
363
+ const target = session.driver;
364
+ const missingDriver = requireDriver(target);
365
+ if (missingDriver)
366
+ return { ok: false, message: missingDriver };
367
+ const resolved = await resolveWindowTarget(target, ref, opts);
324
368
  if (!resolved.ok)
325
369
  return resolved;
326
- const current = await currentHandleSafe(driver);
370
+ const current = await currentHandleSafe(target);
327
371
  if (current !== resolved.handle) {
328
- await driver.switchToWindow(resolved.handle);
372
+ await target.switchToWindow(resolved.handle);
329
373
  }
330
- return resolved;
374
+ return { ...resolved, driver: target };
331
375
  }
332
376
  // Close one handle, keep the registry pruned, and re-focus per the ADR rule:
333
377
  // active tab closed → its parent window's lead if alive, else the newest
@@ -347,7 +391,7 @@ async function closeHandle(driver, handle) {
347
391
  if (!entry.internal && remaining.length === 0) {
348
392
  return {
349
393
  ok: false,
350
- message: "Refusing to close the last open tab — it would end the browser session. Close the whole browser with the run's teardown instead.",
394
+ message: "Refusing to close the last open tab — it would end the browser session. Close the whole browser instead (e.g. { \"closeSurface\": \"chrome\" } or the surface's name).",
351
395
  };
352
396
  }
353
397
  const previous = await currentHandleSafe(driver);
@@ -372,13 +416,15 @@ async function closeHandle(driver, handle) {
372
416
  return { ok: true, handle: next };
373
417
  }
374
418
  // Resolve a closeSurface browser reference to the ordered list of handles to
375
- // close (children before their window lead). A selector that matches nothing
376
- // resolves to an empty list — closing an absent surface is an idempotent
377
- // no-op, consistent with the process kind. A reference without window/tab
378
- // selectors means "close the whole browser", which is a multi-browser
379
- // (later-phase) operation. Selector resolution is bounded-retried the same
380
- // as any other surface reference (ADR 01017) closing a tab shortly after
381
- // the page that opened it appears works without a manual `wait` first.
419
+ // close (children before their window lead) WITHIN the given session. A
420
+ // selector that matches nothing resolves to an empty list — closing an
421
+ // absent surface is an idempotent no-op, consistent with the process kind.
422
+ // A reference without window/tab selectors means "close the whole browser",
423
+ // which is a SESSION-level close the closeSurface step performs against the
424
+ // session registry before ever calling this helper. Selector resolution is
425
+ // bounded-retried the same as any other surface reference (ADR 01017)
426
+ // closing a tab shortly after the page that opened it appears works without
427
+ // a manual `wait` first.
382
428
  async function resolveCloseTargets(driver, ref, opts = {}) {
383
429
  if (ref.kind !== "browser") {
384
430
  return { ok: false, message: "Not a browser surface reference." };
@@ -386,13 +432,15 @@ async function resolveCloseTargets(driver, ref, opts = {}) {
386
432
  const missingDriver = requireDriver(driver);
387
433
  if (missingDriver)
388
434
  return { ok: false, message: missingDriver };
389
- const limit = checkPhase3Limits(driver, ref);
390
- if (limit)
391
- return { ok: false, message: limit };
435
+ if (!driver?.state?.sessionRegistry) {
436
+ const check = checkSingleSessionTarget(driver, ref);
437
+ if (check)
438
+ return { ok: false, message: check };
439
+ }
392
440
  if (ref.window === undefined && ref.tab === undefined) {
393
441
  return {
394
442
  ok: false,
395
- message: "Closing a whole browser surface lands in a later phase. Close a specific tab or window instead: { \"browser\": \"…\", \"tab\": } or { \"browser\": \"…\", \"window\": }.",
443
+ message: "Whole-browser closes are session-level: resolve them against the session registry (closeSession), not the window/tab close helper.",
396
444
  };
397
445
  }
398
446
  if (ref.window !== undefined && ref.tab === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"browserSurface.js","sourceRoot":"","sources":["../../../src/core/tests/browserSurface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browserSurface.js","sourceRoot":"","sources":["../../../src/core/tests/browserSurface.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"closeSurface.d.ts","sourceRoot":"","sources":["../../../src/core/tests/closeSurface.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAM7C,iBAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAQ/C;AAQD,iBAAe,YAAY,CAAC,EAC1B,MAAM,EACN,IAAI,EACJ,MAAM,EACN,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC,gBAwIA"}
1
+ {"version":3,"file":"closeSurface.d.ts","sourceRoot":"","sources":["../../../src/core/tests/closeSurface.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAM7C,iBAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAQ/C;AAQD,iBAAe,YAAY,CAAC,EAC1B,MAAM,EACN,IAAI,EACJ,MAAM,EACN,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC,gBA6NA"}