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.
- package/dist/common/src/schemas/schemas.json +1380 -928
- package/dist/common/src/types/generated/closeSurface_v3.d.ts +4 -4
- package/dist/common/src/types/generated/dragAndDrop_v3.d.ts +2 -2
- package/dist/common/src/types/generated/goTo_v3.d.ts +2 -2
- package/dist/common/src/types/generated/record_v3.d.ts +2 -2
- package/dist/common/src/types/generated/runBrowserScript_v3.d.ts +2 -2
- package/dist/common/src/types/generated/screenshot_v3.d.ts +2 -2
- package/dist/common/src/types/generated/step_v3.d.ts +16 -16
- package/dist/common/src/types/generated/surface_v3.d.ts +2 -2
- package/dist/common/src/types/generated/test_v3.d.ts +32 -32
- package/dist/common/src/types/generated/type_v3.d.ts +2 -2
- package/dist/core/appium.d.ts.map +1 -1
- package/dist/core/appium.js +10 -0
- package/dist/core/appium.js.map +1 -1
- package/dist/core/tests/browserSessions.d.ts +51 -0
- package/dist/core/tests/browserSessions.d.ts.map +1 -0
- package/dist/core/tests/browserSessions.js +219 -0
- package/dist/core/tests/browserSessions.js.map +1 -0
- package/dist/core/tests/browserSurface.d.ts +5 -1
- package/dist/core/tests/browserSurface.d.ts.map +1 -1
- package/dist/core/tests/browserSurface.js +93 -45
- package/dist/core/tests/browserSurface.js.map +1 -1
- package/dist/core/tests/closeSurface.d.ts.map +1 -1
- package/dist/core/tests/closeSurface.js +89 -10
- package/dist/core/tests/closeSurface.js.map +1 -1
- package/dist/core/tests/dragAndDrop.d.ts.map +1 -1
- package/dist/core/tests/dragAndDrop.js +4 -1
- package/dist/core/tests/dragAndDrop.js.map +1 -1
- package/dist/core/tests/findElement.d.ts.map +1 -1
- package/dist/core/tests/findElement.js +5 -3
- package/dist/core/tests/findElement.js.map +1 -1
- package/dist/core/tests/goTo.d.ts.map +1 -1
- package/dist/core/tests/goTo.js +9 -4
- package/dist/core/tests/goTo.js.map +1 -1
- package/dist/core/tests/runBrowserScript.d.ts.map +1 -1
- package/dist/core/tests/runBrowserScript.js +3 -1
- package/dist/core/tests/runBrowserScript.js.map +1 -1
- package/dist/core/tests/runCode.d.ts +2 -1
- package/dist/core/tests/runCode.d.ts.map +1 -1
- package/dist/core/tests/runCode.js +2 -1
- package/dist/core/tests/runCode.js.map +1 -1
- package/dist/core/tests/runShell.d.ts +2 -1
- package/dist/core/tests/runShell.d.ts.map +1 -1
- package/dist/core/tests/runShell.js +11 -1
- package/dist/core/tests/runShell.js.map +1 -1
- package/dist/core/tests/saveScreenshot.d.ts.map +1 -1
- package/dist/core/tests/saveScreenshot.js +3 -1
- package/dist/core/tests/saveScreenshot.js.map +1 -1
- package/dist/core/tests/startRecording.d.ts.map +1 -1
- package/dist/core/tests/startRecording.js +4 -1
- package/dist/core/tests/startRecording.js.map +1 -1
- package/dist/core/tests/stopRecording.d.ts.map +1 -1
- package/dist/core/tests/stopRecording.js +25 -3
- package/dist/core/tests/stopRecording.js.map +1 -1
- package/dist/core/tests/typeKeys.d.ts.map +1 -1
- package/dist/core/tests/typeKeys.js +9 -5
- package/dist/core/tests/typeKeys.js.map +1 -1
- package/dist/core/tests.d.ts.map +1 -1
- package/dist/core/tests.js +73 -16
- package/dist/core/tests.js.map +1 -1
- package/dist/index.cjs +1703 -974
- 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":"
|
|
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-
|
|
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
|
-
|
|
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
|
-
//
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
//
|
|
203
|
-
function
|
|
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 `
|
|
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
|
|
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
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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
|
|
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
|
|
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(
|
|
370
|
+
const current = await currentHandleSafe(target);
|
|
327
371
|
if (current !== resolved.handle) {
|
|
328
|
-
await
|
|
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
|
|
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)
|
|
376
|
-
// resolves to an empty list — closing an
|
|
377
|
-
// no-op, consistent with the process kind.
|
|
378
|
-
// selectors means "close the whole browser",
|
|
379
|
-
//
|
|
380
|
-
//
|
|
381
|
-
// the
|
|
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
|
-
|
|
390
|
-
|
|
391
|
-
|
|
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: "
|
|
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":"
|
|
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"}
|