@monoes/monobrowse 1.0.17 → 1.0.21
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/src/__tests__/browse-concurrency.test.d.ts +15 -0
- package/dist/src/__tests__/browse-concurrency.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-concurrency.test.js +198 -0
- package/dist/src/__tests__/browse-concurrency.test.js.map +1 -0
- package/dist/src/__tests__/browser-launch.test.js +132 -1
- package/dist/src/__tests__/browser-launch.test.js.map +1 -1
- package/dist/src/__tests__/close-browser.test.js +2 -2
- package/dist/src/__tests__/close-browser.test.js.map +1 -1
- package/dist/src/__tests__/frame-command.test.js +12 -2
- package/dist/src/__tests__/frame-command.test.js.map +1 -1
- package/dist/src/__tests__/reap-idle-browser.test.js +13 -13
- package/dist/src/__tests__/reap-idle-browser.test.js.map +1 -1
- package/dist/src/__tests__/ref-cache.test.js +96 -58
- package/dist/src/__tests__/ref-cache.test.js.map +1 -1
- package/dist/src/__tests__/report-exit-code.test.js +1 -1
- package/dist/src/__tests__/session-discovery.test.d.ts +13 -0
- package/dist/src/__tests__/session-discovery.test.d.ts.map +1 -0
- package/dist/src/__tests__/session-discovery.test.js +218 -0
- package/dist/src/__tests__/session-discovery.test.js.map +1 -0
- package/dist/src/browser/browser.d.ts +2 -1
- package/dist/src/browser/browser.d.ts.map +1 -1
- package/dist/src/browser/browser.js +145 -42
- package/dist/src/browser/browser.js.map +1 -1
- package/dist/src/browser/ref-cache.d.ts +50 -22
- package/dist/src/browser/ref-cache.d.ts.map +1 -1
- package/dist/src/browser/ref-cache.js +122 -57
- package/dist/src/browser/ref-cache.js.map +1 -1
- package/dist/src/browser/types.d.ts +2 -0
- package/dist/src/browser/types.d.ts.map +1 -1
- package/dist/src/browser/types.js.map +1 -1
- package/dist/src/cli/commands-context.js +1 -1
- package/dist/src/cli/commands-context.js.map +1 -1
- package/dist/src/cli/commands-navigate.js +2 -2
- package/dist/src/cli/commands-navigate.js.map +1 -1
- package/dist/src/cli/commands-page.js +2 -2
- package/dist/src/cli/commands-page.js.map +1 -1
- package/dist/src/cli/commands-report.js +2 -2
- package/dist/src/cli/commands-report.js.map +1 -1
- package/dist/src/cli/commands-session.d.ts.map +1 -1
- package/dist/src/cli/commands-session.js +70 -56
- package/dist/src/cli/commands-session.js.map +1 -1
- package/dist/src/cli/commands.d.ts.map +1 -1
- package/dist/src/cli/commands.js +102 -66
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/session.d.ts +66 -2
- package/dist/src/cli/session.d.ts.map +1 -1
- package/dist/src/cli/session.js +190 -33
- package/dist/src/cli/session.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/__tests__/browse-concurrency.test.ts +233 -0
- package/src/__tests__/browser-launch.test.ts +142 -1
- package/src/__tests__/close-browser.test.ts +2 -2
- package/src/__tests__/frame-command.test.ts +12 -2
- package/src/__tests__/reap-idle-browser.test.ts +15 -14
- package/src/__tests__/ref-cache.test.ts +112 -59
- package/src/__tests__/report-exit-code.test.ts +1 -1
- package/src/__tests__/session-discovery.test.ts +259 -0
- package/src/browser/browser.ts +149 -39
- package/src/browser/ref-cache.ts +144 -72
- package/src/browser/types.ts +2 -0
- package/src/cli/commands-context.ts +1 -1
- package/src/cli/commands-navigate.ts +2 -2
- package/src/cli/commands-page.ts +2 -2
- package/src/cli/commands-report.ts +2 -2
- package/src/cli/commands-session.ts +74 -55
- package/src/cli/commands.ts +106 -66
- package/src/cli/session.ts +208 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reap-idle-browser.test.js","sourceRoot":"","sources":["../../../src/__tests__/reap-idle-browser.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reap-idle-browser.test.js","sourceRoot":"","sources":["../../../src/__tests__/reap-idle-browser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,8 +32,8 @@ describe('ref-cache', () => {
|
|
|
32
32
|
it('round-trip: save then load returns equivalent data', async () => {
|
|
33
33
|
const mod = await importRefCache();
|
|
34
34
|
const refs = makeRefs(2);
|
|
35
|
-
await mod.saveRefCache('target-1', 'https://example.com', refs);
|
|
36
|
-
const loaded = await mod.loadRefCache('target-1');
|
|
35
|
+
await mod.saveRefCache(9222, 'target-1', 'https://example.com', refs);
|
|
36
|
+
const loaded = await mod.loadRefCache(9222, 'target-1');
|
|
37
37
|
expect(loaded).not.toBeNull();
|
|
38
38
|
expect(loaded.url).toBe('https://example.com');
|
|
39
39
|
expect(loaded.refs.size).toBe(2);
|
|
@@ -45,150 +45,188 @@ describe('ref-cache', () => {
|
|
|
45
45
|
it('targetId mismatch returns null', async () => {
|
|
46
46
|
const mod = await importRefCache();
|
|
47
47
|
const refs = makeRefs(1);
|
|
48
|
-
await mod.saveRefCache('target-A', 'https://a.com', refs);
|
|
49
|
-
const loaded = await mod.loadRefCache('target-B');
|
|
48
|
+
await mod.saveRefCache(9222, 'target-A', 'https://a.com', refs);
|
|
49
|
+
const loaded = await mod.loadRefCache(9222, 'target-B');
|
|
50
50
|
expect(loaded).toBeNull();
|
|
51
51
|
});
|
|
52
52
|
it('corrupt JSON file returns null', async () => {
|
|
53
53
|
const mod = await importRefCache();
|
|
54
54
|
// First save a valid cache to create the directory structure
|
|
55
|
-
await mod.saveRefCache('t', 'https://x.com', makeRefs(1));
|
|
55
|
+
await mod.saveRefCache(9222, 't', 'https://x.com', makeRefs(1));
|
|
56
56
|
// Now overwrite the file with invalid JSON
|
|
57
|
-
const cacheFile = join(tempDir, '.monomind', 'monobrowse', 'ax-snapshot.json');
|
|
57
|
+
const cacheFile = join(tempDir, '.monomind', 'monobrowse', 'ax-snapshot-9222.json');
|
|
58
58
|
const { writeFile: wf } = await import('node:fs/promises');
|
|
59
59
|
await wf(cacheFile, '{{{not valid json!!!');
|
|
60
|
-
const loaded = await mod.loadRefCache('t');
|
|
60
|
+
const loaded = await mod.loadRefCache(9222, 't');
|
|
61
61
|
expect(loaded).toBeNull();
|
|
62
62
|
});
|
|
63
63
|
it('clearRefCache removes the cache file', async () => {
|
|
64
64
|
const mod = await importRefCache();
|
|
65
|
-
await mod.saveRefCache('t1', 'https://x.com', makeRefs(1));
|
|
66
|
-
const cacheFile = join(tempDir, '.monomind', 'monobrowse', 'ax-snapshot.json');
|
|
65
|
+
await mod.saveRefCache(9222, 't1', 'https://x.com', makeRefs(1));
|
|
66
|
+
const cacheFile = join(tempDir, '.monomind', 'monobrowse', 'ax-snapshot-9222.json');
|
|
67
67
|
// Verify file exists
|
|
68
68
|
const before = await stat(cacheFile).catch(() => null);
|
|
69
69
|
expect(before).not.toBeNull();
|
|
70
|
-
await mod.clearRefCache();
|
|
70
|
+
await mod.clearRefCache(9222);
|
|
71
71
|
const after = await stat(cacheFile).catch(() => null);
|
|
72
72
|
expect(after).toBeNull();
|
|
73
73
|
});
|
|
74
74
|
it('load after clear returns null', async () => {
|
|
75
75
|
const mod = await importRefCache();
|
|
76
|
-
await mod.saveRefCache('t1', 'https://x.com', makeRefs(1));
|
|
77
|
-
await mod.clearRefCache();
|
|
78
|
-
const loaded = await mod.loadRefCache('t1');
|
|
76
|
+
await mod.saveRefCache(9222, 't1', 'https://x.com', makeRefs(1));
|
|
77
|
+
await mod.clearRefCache(9222);
|
|
78
|
+
const loaded = await mod.loadRefCache(9222, 't1');
|
|
79
79
|
expect(loaded).toBeNull();
|
|
80
80
|
});
|
|
81
81
|
it('freshly saved cache is not stale', async () => {
|
|
82
82
|
const mod = await importRefCache();
|
|
83
|
-
await mod.saveRefCache('t1', 'https://x.com', makeRefs(1));
|
|
84
|
-
const loaded = await mod.loadRefCache('t1');
|
|
83
|
+
await mod.saveRefCache(9222, 't1', 'https://x.com', makeRefs(1));
|
|
84
|
+
const loaded = await mod.loadRefCache(9222, 't1');
|
|
85
85
|
expect(loaded).not.toBeNull();
|
|
86
86
|
expect(loaded.stale).toBe(false);
|
|
87
87
|
expect(loaded.ageMs).toBeLessThan(mod.REF_CACHE_STALE_MS);
|
|
88
88
|
});
|
|
89
89
|
it('cache older than REF_CACHE_STALE_MS is flagged stale', async () => {
|
|
90
90
|
const mod = await importRefCache();
|
|
91
|
-
await mod.saveRefCache('t1', 'https://x.com', makeRefs(1));
|
|
91
|
+
await mod.saveRefCache(9222, 't1', 'https://x.com', makeRefs(1));
|
|
92
92
|
// Manually backdate the savedAt timestamp
|
|
93
|
-
const cacheFile = join(tempDir, '.monomind', 'monobrowse', 'ax-snapshot.json');
|
|
93
|
+
const cacheFile = join(tempDir, '.monomind', 'monobrowse', 'ax-snapshot-9222.json');
|
|
94
94
|
const raw = JSON.parse(await readFile(cacheFile, 'utf8'));
|
|
95
95
|
raw.savedAt = Date.now() - mod.REF_CACHE_STALE_MS - 5000;
|
|
96
96
|
const { writeFile: wf } = await import('node:fs/promises');
|
|
97
97
|
await wf(cacheFile, JSON.stringify(raw));
|
|
98
|
-
const loaded = await mod.loadRefCache('t1');
|
|
98
|
+
const loaded = await mod.loadRefCache(9222, 't1');
|
|
99
99
|
expect(loaded).not.toBeNull();
|
|
100
100
|
expect(loaded.stale).toBe(true);
|
|
101
101
|
expect(loaded.ageMs).toBeGreaterThan(mod.REF_CACHE_STALE_MS);
|
|
102
102
|
});
|
|
103
103
|
it('loading with no cache file returns null (no crash)', async () => {
|
|
104
104
|
const mod = await importRefCache();
|
|
105
|
-
const loaded = await mod.loadRefCache('nonexistent');
|
|
105
|
+
const loaded = await mod.loadRefCache(9222, 'nonexistent');
|
|
106
106
|
expect(loaded).toBeNull();
|
|
107
107
|
});
|
|
108
|
+
it('#318: each session keeps its own ref cache', async () => {
|
|
109
|
+
const mod = await importRefCache();
|
|
110
|
+
await mod.saveRefCache(41111, 'target-A', 'https://a.com', makeRefs(1));
|
|
111
|
+
await mod.saveRefCache(42222, 'target-B', 'https://b.com', makeRefs(2));
|
|
112
|
+
expect((await mod.loadRefCache(41111, 'target-A')).url).toBe('https://a.com');
|
|
113
|
+
expect((await mod.loadRefCache(42222, 'target-B')).refs.size).toBe(2);
|
|
114
|
+
await mod.clearRefCache(41111);
|
|
115
|
+
expect(await mod.loadRefCache(41111, 'target-A')).toBeNull();
|
|
116
|
+
expect(await mod.loadRefCache(42222, 'target-B')).not.toBeNull();
|
|
117
|
+
});
|
|
108
118
|
});
|
|
109
|
-
describe('
|
|
110
|
-
it('round-trip: save then load returns the
|
|
119
|
+
describe('#318 session store (one record per port)', () => {
|
|
120
|
+
it('round-trip: save then load returns the session; launched defaults true', async () => {
|
|
111
121
|
const mod = await importRefCache();
|
|
112
|
-
await mod.
|
|
113
|
-
expect(await mod.
|
|
114
|
-
expect(await mod.loadActivePortInfo()).toEqual({
|
|
122
|
+
await mod.saveSessionRecord(9333);
|
|
123
|
+
expect(await mod.loadSessionRecord(9333)).toEqual({
|
|
115
124
|
port: 9333,
|
|
116
125
|
launched: true,
|
|
117
126
|
savedAt: expect.any(Number),
|
|
118
127
|
});
|
|
119
128
|
});
|
|
129
|
+
it('two concurrent sessions coexist — neither overwrites the other', async () => {
|
|
130
|
+
const mod = await importRefCache();
|
|
131
|
+
await mod.saveSessionRecord(41111, { pid: 11 });
|
|
132
|
+
await mod.saveSessionRecord(42222, { pid: 22 });
|
|
133
|
+
expect((await mod.listSessionRecords()).map((r) => r.port).sort()).toEqual([41111, 42222]);
|
|
134
|
+
expect((await mod.loadSessionRecord(41111)).pid).toBe(11);
|
|
135
|
+
expect((await mod.loadSessionRecord(42222)).pid).toBe(22);
|
|
136
|
+
});
|
|
137
|
+
it('lists newest first — the discovery order for a command with no --port', async () => {
|
|
138
|
+
const mod = await importRefCache();
|
|
139
|
+
const now = Date.now();
|
|
140
|
+
const clock = vi.spyOn(Date, 'now').mockReturnValue(now - 5_000);
|
|
141
|
+
await mod.saveSessionRecord(41111);
|
|
142
|
+
clock.mockReturnValue(now);
|
|
143
|
+
await mod.saveSessionRecord(42222);
|
|
144
|
+
clock.mockRestore();
|
|
145
|
+
expect((await mod.listSessionRecords()).map((r) => r.port)).toEqual([42222, 41111]);
|
|
146
|
+
});
|
|
147
|
+
it('removing one session leaves the others alone', async () => {
|
|
148
|
+
const mod = await importRefCache();
|
|
149
|
+
await mod.saveSessionRecord(41111);
|
|
150
|
+
await mod.saveSessionRecord(42222);
|
|
151
|
+
await mod.removeSessionRecord(41111);
|
|
152
|
+
expect(await mod.loadSessionRecord(41111)).toBeNull();
|
|
153
|
+
expect((await mod.listSessionRecords()).map((r) => r.port)).toEqual([42222]);
|
|
154
|
+
});
|
|
155
|
+
it('removing a session that was never recorded resolves without throwing', async () => {
|
|
156
|
+
const mod = await importRefCache();
|
|
157
|
+
await expect(mod.removeSessionRecord(41111)).resolves.toBeUndefined();
|
|
158
|
+
});
|
|
159
|
+
it('listing with no sessions directory returns an empty list (no crash)', async () => {
|
|
160
|
+
const mod = await importRefCache();
|
|
161
|
+
expect(await mod.listSessionRecords()).toEqual([]);
|
|
162
|
+
});
|
|
120
163
|
it('connect provenance: launched:false survives the round-trip', async () => {
|
|
121
164
|
const mod = await importRefCache();
|
|
122
|
-
await mod.
|
|
123
|
-
expect(await mod.
|
|
165
|
+
await mod.saveSessionRecord(9229, { launched: false });
|
|
166
|
+
expect(await mod.loadSessionRecord(9229)).toEqual({
|
|
124
167
|
port: 9229,
|
|
125
168
|
launched: false,
|
|
126
169
|
savedAt: expect.any(Number),
|
|
127
170
|
});
|
|
128
171
|
});
|
|
129
|
-
it('
|
|
130
|
-
const mod = await importRefCache();
|
|
131
|
-
await mod.saveActivePort(9333);
|
|
132
|
-
await mod.clearActivePort();
|
|
133
|
-
expect(await mod.loadActivePort()).toBeNull();
|
|
134
|
-
expect(await mod.loadActivePortInfo()).toBeNull();
|
|
135
|
-
});
|
|
136
|
-
it('clear with no file resolves without throwing', async () => {
|
|
172
|
+
it('#115: pid and userDataDir persist so a later process can kill an orphaned launch', async () => {
|
|
137
173
|
const mod = await importRefCache();
|
|
138
|
-
await mod.
|
|
139
|
-
await
|
|
140
|
-
});
|
|
141
|
-
it('#115: pid and userDataDir persist and round-trip so a later process can kill an orphaned launch', async () => {
|
|
142
|
-
const mod = await importRefCache();
|
|
143
|
-
await mod.saveActivePort(9333, { pid: 54321, userDataDir: '/tmp/monomind-browser-9333' });
|
|
144
|
-
expect(await mod.loadActivePortInfo()).toEqual({
|
|
174
|
+
await mod.saveSessionRecord(9333, { pid: 54321, userDataDir: '/tmp/monomind-browse-9333' });
|
|
175
|
+
expect(await mod.loadSessionRecord(9333)).toEqual({
|
|
145
176
|
port: 9333,
|
|
146
177
|
launched: true,
|
|
147
178
|
pid: 54321,
|
|
148
|
-
userDataDir: '/tmp/monomind-
|
|
179
|
+
userDataDir: '/tmp/monomind-browse-9333',
|
|
149
180
|
savedAt: expect.any(Number),
|
|
150
181
|
});
|
|
151
182
|
});
|
|
152
183
|
it('#115: an attached (launched:false) session with no pid argument persists none', async () => {
|
|
153
184
|
const mod = await importRefCache();
|
|
154
|
-
await mod.
|
|
155
|
-
const info = await mod.
|
|
185
|
+
await mod.saveSessionRecord(9229, { launched: false });
|
|
186
|
+
const info = await mod.loadSessionRecord(9229);
|
|
156
187
|
expect(info.launched).toBe(false);
|
|
157
188
|
expect(info.pid).toBeUndefined();
|
|
158
189
|
});
|
|
159
|
-
it('#124-review:
|
|
190
|
+
it('#124-review: saveSessionRecord does NOT strip pid when launched:false — callers must not pass one for an attach', async () => {
|
|
160
191
|
// The property above (attach sessions have no pid) is caller discipline,
|
|
161
192
|
// not something this function enforces — the one production caller
|
|
162
|
-
// (
|
|
163
|
-
//
|
|
164
|
-
//
|
|
193
|
+
// (`connect`) simply never passes a pid alongside launched:false. This
|
|
194
|
+
// test documents that explicitly so it can't be mistaken for an
|
|
195
|
+
// invariant the code itself guarantees.
|
|
165
196
|
const mod = await importRefCache();
|
|
166
|
-
await mod.
|
|
167
|
-
const info = await mod.
|
|
197
|
+
await mod.saveSessionRecord(9229, { launched: false, pid: 4242 });
|
|
198
|
+
const info = await mod.loadSessionRecord(9229);
|
|
168
199
|
expect(info.launched).toBe(false);
|
|
169
200
|
expect(info.pid).toBe(4242);
|
|
170
201
|
});
|
|
171
202
|
it('#115: a non-numeric or non-positive persisted pid is dropped, not trusted', async () => {
|
|
172
203
|
const mod = await importRefCache();
|
|
173
204
|
const { writeFile, mkdir } = await import('node:fs/promises');
|
|
174
|
-
const dir = join(process.cwd(), '.monomind', 'monobrowse');
|
|
205
|
+
const dir = join(process.cwd(), '.monomind', 'monobrowse', 'sessions');
|
|
175
206
|
await mkdir(dir, { recursive: true });
|
|
176
207
|
for (const badPid of ['54321', -1, 0, 1.5, null]) {
|
|
177
|
-
await writeFile(join(dir, '
|
|
178
|
-
const info = await mod.
|
|
208
|
+
await writeFile(join(dir, '9333.json'), JSON.stringify({ port: 9333, launched: true, pid: badPid }));
|
|
209
|
+
const info = await mod.loadSessionRecord(9333);
|
|
179
210
|
expect(info.pid).toBeUndefined();
|
|
180
211
|
}
|
|
181
212
|
});
|
|
182
|
-
it('rejects out-of-range or non-integer persisted ports', async () => {
|
|
213
|
+
it('rejects out-of-range or non-integer persisted ports, and skips them when listing', async () => {
|
|
183
214
|
const mod = await importRefCache();
|
|
184
215
|
const { writeFile, mkdir } = await import('node:fs/promises');
|
|
185
|
-
const dir = join(process.cwd(), '.monomind', 'monobrowse');
|
|
216
|
+
const dir = join(process.cwd(), '.monomind', 'monobrowse', 'sessions');
|
|
186
217
|
await mkdir(dir, { recursive: true });
|
|
187
218
|
for (const bad of [80, 70000, 1.5, '9222', null]) {
|
|
188
|
-
await writeFile(join(dir, '
|
|
189
|
-
expect(await mod.
|
|
190
|
-
expect(await mod.
|
|
219
|
+
await writeFile(join(dir, '9333.json'), JSON.stringify({ port: bad }));
|
|
220
|
+
expect(await mod.loadSessionRecord(9333)).toBeNull();
|
|
221
|
+
expect(await mod.listSessionRecords()).toEqual([]);
|
|
191
222
|
}
|
|
192
223
|
});
|
|
224
|
+
it('a corrupt record is skipped, not fatal for the rest of the listing', async () => {
|
|
225
|
+
const mod = await importRefCache();
|
|
226
|
+
await mod.saveSessionRecord(42222);
|
|
227
|
+
const { writeFile } = await import('node:fs/promises');
|
|
228
|
+
await writeFile(join(process.cwd(), '.monomind', 'monobrowse', 'sessions', '41111.json'), '{{{not valid json!!!');
|
|
229
|
+
expect((await mod.listSessionRecords()).map((r) => r.port)).toEqual([42222]);
|
|
230
|
+
});
|
|
193
231
|
});
|
|
194
232
|
//# sourceMappingURL=ref-cache.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-cache.test.js","sourceRoot":"","sources":["../../../src/__tests__/ref-cache.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,wEAAwE;AACxE,kCAAkC;AAClC,IAAI,OAAe,CAAC;AAEpB,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC5D,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,EAAE,CAAC,eAAe,EAAE,CAAC;IACrB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,uDAAuD;AACvD,+CAA+C;AAC/C,KAAK,UAAU,cAAc;IAC3B,+DAA+D;IAC/D,oEAAoE;IACpE,EAAE,CAAC,YAAY,EAAE,CAAC;IAClB,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,QAAQ,CACf,KAAK,GAAG,CAAC;IAET,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEzB,MAAM,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,qBAAqB,EAAE,IAAW,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,MAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,MAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,MAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,MAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEzB,MAAM,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,eAAe,EAAE,IAAW,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,6DAA6D;QAC7D,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAQ,CAAC,CAAC;QAEjE,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC/E,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAQ,CAAC,CAAC;QAElE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC/E,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE9B,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;QAE1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAQ,CAAC,CAAC;QAClE,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;QAE1B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAQ,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAQ,CAAC,CAAC;QAElE,0CAA0C;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1D,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACzD,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC;YAC7C,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC;YAC7C,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iGAAiG,EAAE,KAAK,IAAI,EAAE;QAC/G,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,CAAC;QAC1F,MAAM,CAAC,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC;YAC7C,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,IAAI;YACd,GAAG,EAAE,KAAK;YACV,WAAW,EAAE,4BAA4B;YACzC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8GAA8G,EAAE,KAAK,IAAI,EAAE;QAC5H,yEAAyE;QACzE,mEAAmE;QACnE,uEAAuE;QACvE,qEAAqE;QACrE,wDAAwD;QACxD,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,SAAS,CACb,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAC5D,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;QACnC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC9E,MAAM,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ref-cache.test.js","sourceRoot":"","sources":["../../../src/__tests__/ref-cache.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #318: how a CLI command with no `--port` finds "its" session, and what it
|
|
3
|
+
* does when it finds none — the discovery half of the per-session-browser
|
|
4
|
+
* fix. The allocation half (Chrome binding a free port in a profile of its
|
|
5
|
+
* own) is covered by browser-launch.test.ts and, end to end, by
|
|
6
|
+
* browse-concurrency.test.ts.
|
|
7
|
+
*
|
|
8
|
+
* resolveLiveSession() takes the browser namespace as a parameter, so the
|
|
9
|
+
* real session store (with process.cwd() pointed at a temp dir) can be used
|
|
10
|
+
* while only the CDP liveness probe is faked.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=session-discovery.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-discovery.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/session-discovery.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #318: how a CLI command with no `--port` finds "its" session, and what it
|
|
3
|
+
* does when it finds none — the discovery half of the per-session-browser
|
|
4
|
+
* fix. The allocation half (Chrome binding a free port in a profile of its
|
|
5
|
+
* own) is covered by browser-launch.test.ts and, end to end, by
|
|
6
|
+
* browse-concurrency.test.ts.
|
|
7
|
+
*
|
|
8
|
+
* resolveLiveSession() takes the browser namespace as a parameter, so the
|
|
9
|
+
* real session store (with process.cwd() pointed at a temp dir) can be used
|
|
10
|
+
* while only the CDP liveness probe is faked.
|
|
11
|
+
*/
|
|
12
|
+
import { mkdtemp, rm } from 'node:fs/promises';
|
|
13
|
+
import { tmpdir } from 'node:os';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
16
|
+
let tempDir;
|
|
17
|
+
beforeEach(async () => {
|
|
18
|
+
tempDir = await mkdtemp(join(tmpdir(), 'monobrowse-session-'));
|
|
19
|
+
vi.spyOn(process, 'cwd').mockReturnValue(tempDir);
|
|
20
|
+
});
|
|
21
|
+
afterEach(async () => {
|
|
22
|
+
vi.restoreAllMocks();
|
|
23
|
+
await rm(tempDir, { recursive: true, force: true });
|
|
24
|
+
});
|
|
25
|
+
async function load() {
|
|
26
|
+
vi.resetModules();
|
|
27
|
+
const store = await import('../browser/ref-cache.js');
|
|
28
|
+
const { resolveLiveSession, adoptLegacySession, pinnedPort, applySessionPortFlag, session } = await import('../cli/session.js');
|
|
29
|
+
// The slice of the browser namespace resolveLiveSession uses.
|
|
30
|
+
const browser = {
|
|
31
|
+
listSessionRecords: store.listSessionRecords,
|
|
32
|
+
removeSessionRecord: store.removeSessionRecord,
|
|
33
|
+
clearRefCache: store.clearRefCache,
|
|
34
|
+
loadSessionRecord: store.loadSessionRecord,
|
|
35
|
+
saveSessionRecord: store.saveSessionRecord,
|
|
36
|
+
loadLegacySessionRecord: store.loadLegacySessionRecord,
|
|
37
|
+
removeLegacySessionRecord: store.removeLegacySessionRecord,
|
|
38
|
+
};
|
|
39
|
+
return {
|
|
40
|
+
store,
|
|
41
|
+
browser,
|
|
42
|
+
resolveLiveSession,
|
|
43
|
+
adoptLegacySession,
|
|
44
|
+
pinnedPort,
|
|
45
|
+
applySessionPortFlag,
|
|
46
|
+
session,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Write the session file a pre-#318 CLI left behind in this directory. */
|
|
50
|
+
async function writeLegacyRecord(record) {
|
|
51
|
+
const { mkdir, writeFile } = await import('node:fs/promises');
|
|
52
|
+
const dir = join(process.cwd(), '.monomind', 'monobrowse');
|
|
53
|
+
await mkdir(dir, { recursive: true });
|
|
54
|
+
await writeFile(join(dir, 'active-port.json'), JSON.stringify(record));
|
|
55
|
+
}
|
|
56
|
+
async function legacyFileExists() {
|
|
57
|
+
const { readFile } = await import('node:fs/promises');
|
|
58
|
+
return readFile(join(process.cwd(), '.monomind', 'monobrowse', 'active-port.json')).then(() => true, () => false);
|
|
59
|
+
}
|
|
60
|
+
/** Fake the CDP `/json/version` probe: only `live` ports answer. */
|
|
61
|
+
function onlyLive(...live) {
|
|
62
|
+
vi.stubGlobal('fetch', async (input) => {
|
|
63
|
+
const port = Number(new URL(String(input)).port);
|
|
64
|
+
if (live.includes(port))
|
|
65
|
+
return new Response('{}', { status: 200 });
|
|
66
|
+
throw new Error('connection refused');
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
describe('#318 session discovery', () => {
|
|
70
|
+
it('with no sessions recorded, resolves to none — the caller starts its own', async () => {
|
|
71
|
+
const { browser, resolveLiveSession } = await load();
|
|
72
|
+
onlyLive();
|
|
73
|
+
expect(await resolveLiveSession(browser)).toBeNull();
|
|
74
|
+
});
|
|
75
|
+
it('resolves the newest live session', async () => {
|
|
76
|
+
const { store, browser, resolveLiveSession } = await load();
|
|
77
|
+
const now = Date.now();
|
|
78
|
+
const clock = vi.spyOn(Date, 'now').mockReturnValue(now - 5_000);
|
|
79
|
+
await store.saveSessionRecord(41111, { pid: 11 });
|
|
80
|
+
clock.mockReturnValue(now);
|
|
81
|
+
await store.saveSessionRecord(42222, { pid: 22 });
|
|
82
|
+
clock.mockRestore();
|
|
83
|
+
onlyLive(41111, 42222);
|
|
84
|
+
expect((await resolveLiveSession(browser))?.port).toBe(42222);
|
|
85
|
+
});
|
|
86
|
+
it('skips a session whose browser died and resolves the older live one', async () => {
|
|
87
|
+
const { store, browser, resolveLiveSession } = await load();
|
|
88
|
+
const now = Date.now();
|
|
89
|
+
const clock = vi.spyOn(Date, 'now').mockReturnValue(now - 5_000);
|
|
90
|
+
await store.saveSessionRecord(41111);
|
|
91
|
+
clock.mockReturnValue(now);
|
|
92
|
+
await store.saveSessionRecord(42222);
|
|
93
|
+
clock.mockRestore();
|
|
94
|
+
onlyLive(41111);
|
|
95
|
+
expect((await resolveLiveSession(browser))?.port).toBe(41111);
|
|
96
|
+
});
|
|
97
|
+
it('self-heals: a dead session is dropped from the store, not left to wedge later commands', async () => {
|
|
98
|
+
const { store, browser, resolveLiveSession } = await load();
|
|
99
|
+
await store.saveSessionRecord(42222);
|
|
100
|
+
onlyLive();
|
|
101
|
+
expect(await resolveLiveSession(browser)).toBeNull();
|
|
102
|
+
expect(await store.loadSessionRecord(42222)).toBeNull();
|
|
103
|
+
});
|
|
104
|
+
it('a dead connect-origin session fails loudly instead of being relaunched under the user', async () => {
|
|
105
|
+
const { store, browser, resolveLiveSession } = await load();
|
|
106
|
+
await store.saveSessionRecord(9229, { launched: false });
|
|
107
|
+
onlyLive();
|
|
108
|
+
await expect(resolveLiveSession(browser)).rejects.toThrow(/Connected browser on port 9229/);
|
|
109
|
+
expect(await store.loadSessionRecord(9229)).toBeNull();
|
|
110
|
+
});
|
|
111
|
+
it('close (strict:false) cleans a dead connect-origin session up instead of throwing', async () => {
|
|
112
|
+
const { store, browser, resolveLiveSession } = await load();
|
|
113
|
+
await store.saveSessionRecord(9229, { launched: false });
|
|
114
|
+
onlyLive();
|
|
115
|
+
expect(await resolveLiveSession(browser, { strict: false })).toBeNull();
|
|
116
|
+
expect(await store.loadSessionRecord(9229)).toBeNull();
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('#318 adoption of a pre-#318 session record', () => {
|
|
120
|
+
it('adopts a live legacy session: the record is rewritten per port and the old file is gone', async () => {
|
|
121
|
+
const { store, browser, resolveLiveSession } = await load();
|
|
122
|
+
const savedAt = Date.now() - 60_000;
|
|
123
|
+
await writeLegacyRecord({ port: 41111, launched: true, pid: 4242, savedAt });
|
|
124
|
+
onlyLive(41111);
|
|
125
|
+
expect((await resolveLiveSession(browser))?.port).toBe(41111);
|
|
126
|
+
expect(await store.loadSessionRecord(41111)).toEqual({
|
|
127
|
+
port: 41111,
|
|
128
|
+
launched: true,
|
|
129
|
+
pid: 4242,
|
|
130
|
+
// Preserved, not reset — the session's real age is what the idle
|
|
131
|
+
// reaper and the newest-first ordering read.
|
|
132
|
+
savedAt,
|
|
133
|
+
});
|
|
134
|
+
expect(await legacyFileExists()).toBe(false);
|
|
135
|
+
});
|
|
136
|
+
it('adoption keeps connect provenance, so close still never kills the user’s browser', async () => {
|
|
137
|
+
const { store, browser, resolveLiveSession } = await load();
|
|
138
|
+
await writeLegacyRecord({ port: 9229, launched: false });
|
|
139
|
+
onlyLive(9229);
|
|
140
|
+
expect((await resolveLiveSession(browser))?.launched).toBe(false);
|
|
141
|
+
expect((await store.loadSessionRecord(9229)).launched).toBe(false);
|
|
142
|
+
});
|
|
143
|
+
it('a legacy session whose browser is gone is removed, without throwing', async () => {
|
|
144
|
+
const { store, browser, resolveLiveSession } = await load();
|
|
145
|
+
await writeLegacyRecord({ port: 41111, launched: true, pid: 4242 });
|
|
146
|
+
onlyLive();
|
|
147
|
+
expect(await resolveLiveSession(browser)).toBeNull();
|
|
148
|
+
expect(await legacyFileExists()).toBe(false);
|
|
149
|
+
expect(await store.loadSessionRecord(41111)).toBeNull();
|
|
150
|
+
});
|
|
151
|
+
it('a dead legacy connect-origin session is cleaned up too, not raised as an error', async () => {
|
|
152
|
+
const { browser, resolveLiveSession } = await load();
|
|
153
|
+
await writeLegacyRecord({ port: 9229, launched: false });
|
|
154
|
+
onlyLive();
|
|
155
|
+
expect(await resolveLiveSession(browser)).toBeNull();
|
|
156
|
+
expect(await legacyFileExists()).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
it('a live native session wins; the superseded legacy file is dropped', async () => {
|
|
159
|
+
const { store, browser, resolveLiveSession } = await load();
|
|
160
|
+
await store.saveSessionRecord(42222, { pid: 22 });
|
|
161
|
+
await writeLegacyRecord({ port: 41111, launched: true });
|
|
162
|
+
onlyLive(41111, 42222);
|
|
163
|
+
expect((await resolveLiveSession(browser))?.port).toBe(42222);
|
|
164
|
+
// Not adopted while a native session is live — it is the older candidate.
|
|
165
|
+
expect(await legacyFileExists()).toBe(true);
|
|
166
|
+
});
|
|
167
|
+
it('a legacy record for a port that already has a native record is dropped, not adopted twice', async () => {
|
|
168
|
+
const { store, browser, adoptLegacySession } = await load();
|
|
169
|
+
await store.saveSessionRecord(41111, { launched: false });
|
|
170
|
+
await writeLegacyRecord({ port: 41111, launched: true, pid: 4242 });
|
|
171
|
+
onlyLive(41111);
|
|
172
|
+
expect(await adoptLegacySession(browser)).toBeNull();
|
|
173
|
+
expect(await legacyFileExists()).toBe(false);
|
|
174
|
+
expect((await store.loadSessionRecord(41111)).launched).toBe(false);
|
|
175
|
+
});
|
|
176
|
+
it('adoption restricted to a named port leaves another port’s legacy record alone', async () => {
|
|
177
|
+
const { browser, adoptLegacySession } = await load();
|
|
178
|
+
await writeLegacyRecord({ port: 41111, launched: true });
|
|
179
|
+
onlyLive(41111);
|
|
180
|
+
expect(await adoptLegacySession(browser, { port: 42222 })).toBeNull();
|
|
181
|
+
expect(await legacyFileExists()).toBe(true);
|
|
182
|
+
expect((await adoptLegacySession(browser, { port: 41111 }))?.port).toBe(41111);
|
|
183
|
+
expect(await legacyFileExists()).toBe(false);
|
|
184
|
+
});
|
|
185
|
+
it('with no legacy file at all, adoption is a no-op', async () => {
|
|
186
|
+
const { browser, adoptLegacySession } = await load();
|
|
187
|
+
onlyLive();
|
|
188
|
+
expect(await adoptLegacySession(browser)).toBeNull();
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
describe('#318 --port session selector', () => {
|
|
192
|
+
it('reads a usable port from the flags, in either the number or string form', async () => {
|
|
193
|
+
const { pinnedPort } = await load();
|
|
194
|
+
expect(pinnedPort({ _: [], port: 9333 })).toBe(9333);
|
|
195
|
+
expect(pinnedPort({ _: [], port: '9333' })).toBe(9333);
|
|
196
|
+
});
|
|
197
|
+
it('treats absent, out-of-range and unparseable ports as "no selector"', async () => {
|
|
198
|
+
const { pinnedPort } = await load();
|
|
199
|
+
expect(pinnedPort({ _: [] })).toBeUndefined();
|
|
200
|
+
expect(pinnedPort({ _: [], port: 80 })).toBeUndefined();
|
|
201
|
+
expect(pinnedPort({ _: [], port: 70000 })).toBeUndefined();
|
|
202
|
+
expect(pinnedPort({ _: [], port: 1.5 })).toBeUndefined();
|
|
203
|
+
expect(pinnedPort({ _: [], port: 'nope' })).toBeUndefined();
|
|
204
|
+
expect(pinnedPort({ _: [], port: true })).toBeUndefined();
|
|
205
|
+
});
|
|
206
|
+
it('pins the process to the named session', async () => {
|
|
207
|
+
const { applySessionPortFlag, session } = await load();
|
|
208
|
+
applySessionPortFlag({ _: [], port: 9333 });
|
|
209
|
+
expect(session.port).toBe(9333);
|
|
210
|
+
});
|
|
211
|
+
it('a command with no --port leaves an established session alone (batch open → snapshot)', async () => {
|
|
212
|
+
const { applySessionPortFlag, session } = await load();
|
|
213
|
+
session.port = 41111; // as `open` set it earlier in this process
|
|
214
|
+
applySessionPortFlag({ _: [] });
|
|
215
|
+
expect(session.port).toBe(41111);
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
//# sourceMappingURL=session-discovery.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-discovery.test.js","sourceRoot":"","sources":["../../../src/__tests__/session-discovery.test.ts"],"names":[],"mappings":"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"}
|