@mechris3/glassbox 0.1.50 → 0.1.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -0
- package/dist/src/adapters/base-adapter.d.ts +3 -1
- package/dist/src/adapters/base-adapter.d.ts.map +1 -1
- package/dist/src/adapters/base-adapter.js.map +1 -1
- package/dist/src/adapters/browser-adapter.interface.d.ts +51 -0
- package/dist/src/adapters/browser-adapter.interface.d.ts.map +1 -1
- package/dist/src/adapters/cdp-adapter.d.ts +25 -1
- package/dist/src/adapters/cdp-adapter.d.ts.map +1 -1
- package/dist/src/adapters/cdp-adapter.js +119 -0
- package/dist/src/adapters/cdp-adapter.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +59 -54
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/page-objects/base.page.d.ts +36 -1
- package/dist/src/page-objects/base.page.d.ts.map +1 -1
- package/dist/src/page-objects/base.page.js +40 -0
- package/dist/src/page-objects/base.page.js.map +1 -1
- package/dist/src/runner/run-all-journeys.d.ts.map +1 -1
- package/dist/src/runner/run-all-journeys.js +5 -33
- package/dist/src/runner/run-all-journeys.js.map +1 -1
- package/dist/src/runner/run-journey.js +12 -48
- package/dist/src/runner/run-journey.js.map +1 -1
- package/dist/src/runner/stderr-parser.d.ts +35 -0
- package/dist/src/runner/stderr-parser.d.ts.map +1 -0
- package/dist/src/runner/stderr-parser.js +73 -0
- package/dist/src/runner/stderr-parser.js.map +1 -0
- package/dist/src/runner/target-manager.d.ts +22 -0
- package/dist/src/runner/target-manager.d.ts.map +1 -0
- package/dist/src/runner/target-manager.js +57 -0
- package/dist/src/runner/target-manager.js.map +1 -0
- package/dist/src/server/diagnostic-service.js +2 -2
- package/dist/src/server/diagnostic-service.js.map +1 -1
- package/dist/src/server/test-executor.d.ts.map +1 -1
- package/dist/src/server/test-executor.js +6 -59
- package/dist/src/server/test-executor.js.map +1 -1
- package/package.json +1 -1
package/dist/src/mcp/server.js
CHANGED
|
@@ -251,6 +251,64 @@ Do NOT call this between runJourney and your diagnostic queries — it would era
|
|
|
251
251
|
inputSchema: { type: 'object', properties: {} },
|
|
252
252
|
},
|
|
253
253
|
];
|
|
254
|
+
/**
|
|
255
|
+
* Handle the runJourney tool call — resolves settings, matches journeys,
|
|
256
|
+
* triggers the run, polls for completion, and returns structured results.
|
|
257
|
+
*/
|
|
258
|
+
async function handleRunJourney(args) {
|
|
259
|
+
const journeyFilter = args.journey;
|
|
260
|
+
// Read user settings as defaults, allow MCP arguments to override
|
|
261
|
+
const settings = JSON.parse(await fetchJson('/api/settings'));
|
|
262
|
+
const targetUrl = args.targetUrl ?? settings.targetUrl ?? 'http://localhost:3000';
|
|
263
|
+
const headless = args.headless ?? settings.headless ?? true;
|
|
264
|
+
// Resolve journey path from name/ID/path
|
|
265
|
+
const allJourneys = JSON.parse(await fetchJson('/api/journeys'));
|
|
266
|
+
let journeyPaths;
|
|
267
|
+
if (!journeyFilter) {
|
|
268
|
+
journeyPaths = allJourneys.map((j) => j.path);
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
const match = allJourneys.find((j) => j.id === journeyFilter ||
|
|
272
|
+
j.name.toLowerCase() === journeyFilter.toLowerCase() ||
|
|
273
|
+
j.path === journeyFilter ||
|
|
274
|
+
j.id.includes(journeyFilter));
|
|
275
|
+
journeyPaths = match ? [match.path] : allJourneys.filter((j) => j.id.includes(journeyFilter)).map((j) => j.path);
|
|
276
|
+
}
|
|
277
|
+
if (journeyPaths.length === 0) {
|
|
278
|
+
return JSON.stringify({ error: `No journey found matching "${journeyFilter}"`, available: allJourneys.map((j) => j.id) });
|
|
279
|
+
}
|
|
280
|
+
// Trigger the run with merged settings (executor.run() resets diagnostics internally)
|
|
281
|
+
await fetch(`${GLASSBOX_URL}/api/tests/run`, {
|
|
282
|
+
method: 'POST',
|
|
283
|
+
headers: { 'Content-Type': 'application/json' },
|
|
284
|
+
body: JSON.stringify({
|
|
285
|
+
journeys: journeyPaths,
|
|
286
|
+
config: {
|
|
287
|
+
targetUrl,
|
|
288
|
+
headless,
|
|
289
|
+
viewportWidth: settings.viewportWidth ?? 1280,
|
|
290
|
+
viewportHeight: settings.viewportHeight ?? 720,
|
|
291
|
+
actionDelay: settings.actionDelay ?? 0,
|
|
292
|
+
},
|
|
293
|
+
}),
|
|
294
|
+
});
|
|
295
|
+
// Wait for completion
|
|
296
|
+
await waitForRunComplete();
|
|
297
|
+
// Return results + diagnostics summary
|
|
298
|
+
const [results, summary] = await Promise.all([
|
|
299
|
+
fetchJson('/api/tests/results'),
|
|
300
|
+
fetchJson('/api/diagnostics/summary'),
|
|
301
|
+
]);
|
|
302
|
+
const parsedResults = JSON.parse(results);
|
|
303
|
+
const parsedSummary = JSON.parse(summary);
|
|
304
|
+
const failed = parsedResults.filter((r) => r.status === 'failed');
|
|
305
|
+
return JSON.stringify({
|
|
306
|
+
outcome: failed.length > 0 ? 'FAILED' : 'PASSED',
|
|
307
|
+
results: parsedResults,
|
|
308
|
+
diagnostics: parsedSummary,
|
|
309
|
+
failedJourneys: failed.map((f) => ({ journey: f.journey, error: f.error })),
|
|
310
|
+
}, null, 2);
|
|
311
|
+
}
|
|
254
312
|
/** Map tool names to their API call implementations. */
|
|
255
313
|
const toolHandlers = new Map([
|
|
256
314
|
['getDiagnosticSummary', async () => fetchJson('/api/diagnostics/summary')],
|
|
@@ -264,60 +322,7 @@ const toolHandlers = new Map([
|
|
|
264
322
|
}],
|
|
265
323
|
['getPerformanceMetrics', async () => fetchJson('/api/diagnostics/performance')],
|
|
266
324
|
['listJourneys', async () => fetchJson('/api/journeys')],
|
|
267
|
-
['runJourney',
|
|
268
|
-
const journeyFilter = args.journey;
|
|
269
|
-
// Read user settings as defaults, allow MCP arguments to override
|
|
270
|
-
const settings = JSON.parse(await fetchJson('/api/settings'));
|
|
271
|
-
const targetUrl = args.targetUrl ?? settings.targetUrl ?? 'http://localhost:3000';
|
|
272
|
-
const headless = args.headless ?? settings.headless ?? true;
|
|
273
|
-
// Resolve journey path from name/ID/path
|
|
274
|
-
const allJourneys = JSON.parse(await fetchJson('/api/journeys'));
|
|
275
|
-
let journeyPaths;
|
|
276
|
-
if (!journeyFilter) {
|
|
277
|
-
journeyPaths = allJourneys.map((j) => j.path);
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
const match = allJourneys.find((j) => j.id === journeyFilter ||
|
|
281
|
-
j.name.toLowerCase() === journeyFilter.toLowerCase() ||
|
|
282
|
-
j.path === journeyFilter ||
|
|
283
|
-
j.id.includes(journeyFilter));
|
|
284
|
-
journeyPaths = match ? [match.path] : allJourneys.filter((j) => j.id.includes(journeyFilter)).map((j) => j.path);
|
|
285
|
-
}
|
|
286
|
-
if (journeyPaths.length === 0) {
|
|
287
|
-
return JSON.stringify({ error: `No journey found matching "${journeyFilter}"`, available: allJourneys.map((j) => j.id) });
|
|
288
|
-
}
|
|
289
|
-
// Trigger the run with merged settings (executor.run() resets diagnostics internally)
|
|
290
|
-
await fetch(`${GLASSBOX_URL}/api/tests/run`, {
|
|
291
|
-
method: 'POST',
|
|
292
|
-
headers: { 'Content-Type': 'application/json' },
|
|
293
|
-
body: JSON.stringify({
|
|
294
|
-
journeys: journeyPaths,
|
|
295
|
-
config: {
|
|
296
|
-
targetUrl,
|
|
297
|
-
headless,
|
|
298
|
-
viewportWidth: settings.viewportWidth ?? 1280,
|
|
299
|
-
viewportHeight: settings.viewportHeight ?? 720,
|
|
300
|
-
actionDelay: settings.actionDelay ?? 0,
|
|
301
|
-
},
|
|
302
|
-
}),
|
|
303
|
-
});
|
|
304
|
-
// Wait for completion
|
|
305
|
-
await waitForRunComplete();
|
|
306
|
-
// Return results + diagnostics summary
|
|
307
|
-
const [results, summary] = await Promise.all([
|
|
308
|
-
fetchJson('/api/tests/results'),
|
|
309
|
-
fetchJson('/api/diagnostics/summary'),
|
|
310
|
-
]);
|
|
311
|
-
const parsedResults = JSON.parse(results);
|
|
312
|
-
const parsedSummary = JSON.parse(summary);
|
|
313
|
-
const failed = parsedResults.filter((r) => r.status === 'failed');
|
|
314
|
-
return JSON.stringify({
|
|
315
|
-
outcome: failed.length > 0 ? 'FAILED' : 'PASSED',
|
|
316
|
-
results: parsedResults,
|
|
317
|
-
diagnostics: parsedSummary,
|
|
318
|
-
failedJourneys: failed.map((f) => ({ journey: f.journey, error: f.error })),
|
|
319
|
-
}, null, 2);
|
|
320
|
-
}],
|
|
325
|
+
['runJourney', handleRunJourney],
|
|
321
326
|
['getDomSnapshot', async (args) => {
|
|
322
327
|
const selector = args.selector ? `?selector=${encodeURIComponent(args.selector)}` : '';
|
|
323
328
|
return fetchJson(`/api/diagnostics/dom${selector}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* BasePage — the page object base class that consumers extend.
|
|
3
3
|
* Provides convenience wrappers around the BrowserAdapter.
|
|
4
4
|
*/
|
|
5
|
-
import type { BrowserAdapter } from '../adapters/browser-adapter.interface.js';
|
|
5
|
+
import type { BrowserAdapter, InterceptedRequest, MockResponse } from '../adapters/browser-adapter.interface.js';
|
|
6
6
|
export declare class BasePage {
|
|
7
7
|
protected adapter: BrowserAdapter;
|
|
8
8
|
constructor(adapter: BrowserAdapter);
|
|
@@ -96,5 +96,40 @@ export declare class BasePage {
|
|
|
96
96
|
* Use this when switching from an authenticated to unauthenticated flow within a journey.
|
|
97
97
|
*/
|
|
98
98
|
protected removeInitScript(identifier: string): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Intercept network requests matching the given URL patterns and route them
|
|
101
|
+
* through a handler that can return mock responses or let them pass through.
|
|
102
|
+
*
|
|
103
|
+
* Uses CDP's Fetch domain at the protocol level — works with fetch(), XMLHttpRequest,
|
|
104
|
+
* and navigation requests. This is the recommended approach for mocking APIs in journeys.
|
|
105
|
+
*
|
|
106
|
+
* Patterns use simple wildcard matching (NOT regex):
|
|
107
|
+
* - `*` matches any sequence of characters
|
|
108
|
+
* - Everything else is a literal match
|
|
109
|
+
* - Example patterns: `http://localhost:80/*` `*://*.example.com/*`
|
|
110
|
+
*
|
|
111
|
+
* The handler receives each matching request and must return either:
|
|
112
|
+
* - A MockResponse ({ status?, headers?, body }) to fulfil with mock data
|
|
113
|
+
* - null to let the request continue to the real server
|
|
114
|
+
*
|
|
115
|
+
* Calling this replaces any previously registered interception.
|
|
116
|
+
* Call stopIntercepting() to disable all interception.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* await this.interceptRequests(['http://localhost:80/api/*'], async (req) => {
|
|
121
|
+
* if (req.url.includes('/users')) {
|
|
122
|
+
* return { status: 200, body: JSON.stringify([{ id: 1, name: 'Test' }]) };
|
|
123
|
+
* }
|
|
124
|
+
* return null; // let other requests through
|
|
125
|
+
* });
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
protected interceptRequests(patterns: string[], handler: (request: InterceptedRequest) => Promise<MockResponse | null>): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Disable all request interception and remove the event listener.
|
|
131
|
+
* After calling this, all requests go directly to the network.
|
|
132
|
+
*/
|
|
133
|
+
protected stopIntercepting(): Promise<void>;
|
|
99
134
|
}
|
|
100
135
|
//# sourceMappingURL=base.page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.page.d.ts","sourceRoot":"","sources":["../../../src/page-objects/base.page.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"base.page.d.ts","sourceRoot":"","sources":["../../../src/page-objects/base.page.ts"],"names":[],"mappings":"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"}
|
|
@@ -160,6 +160,46 @@ class BasePage {
|
|
|
160
160
|
async removeInitScript(identifier) {
|
|
161
161
|
return this.adapter.removeInitScript(identifier);
|
|
162
162
|
}
|
|
163
|
+
// --- Request interception ---
|
|
164
|
+
/**
|
|
165
|
+
* Intercept network requests matching the given URL patterns and route them
|
|
166
|
+
* through a handler that can return mock responses or let them pass through.
|
|
167
|
+
*
|
|
168
|
+
* Uses CDP's Fetch domain at the protocol level — works with fetch(), XMLHttpRequest,
|
|
169
|
+
* and navigation requests. This is the recommended approach for mocking APIs in journeys.
|
|
170
|
+
*
|
|
171
|
+
* Patterns use simple wildcard matching (NOT regex):
|
|
172
|
+
* - `*` matches any sequence of characters
|
|
173
|
+
* - Everything else is a literal match
|
|
174
|
+
* - Example patterns: `http://localhost:80/*` `*://*.example.com/*`
|
|
175
|
+
*
|
|
176
|
+
* The handler receives each matching request and must return either:
|
|
177
|
+
* - A MockResponse ({ status?, headers?, body }) to fulfil with mock data
|
|
178
|
+
* - null to let the request continue to the real server
|
|
179
|
+
*
|
|
180
|
+
* Calling this replaces any previously registered interception.
|
|
181
|
+
* Call stopIntercepting() to disable all interception.
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* await this.interceptRequests(['http://localhost:80/api/*'], async (req) => {
|
|
186
|
+
* if (req.url.includes('/users')) {
|
|
187
|
+
* return { status: 200, body: JSON.stringify([{ id: 1, name: 'Test' }]) };
|
|
188
|
+
* }
|
|
189
|
+
* return null; // let other requests through
|
|
190
|
+
* });
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
async interceptRequests(patterns, handler) {
|
|
194
|
+
return this.adapter.interceptRequests(patterns, handler);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Disable all request interception and remove the event listener.
|
|
198
|
+
* After calling this, all requests go directly to the network.
|
|
199
|
+
*/
|
|
200
|
+
async stopIntercepting() {
|
|
201
|
+
return this.adapter.stopIntercepting();
|
|
202
|
+
}
|
|
163
203
|
}
|
|
164
204
|
exports.BasePage = BasePage;
|
|
165
205
|
//# sourceMappingURL=base.page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.page.js","sourceRoot":"","sources":["../../../src/page-objects/base.page.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base.page.js","sourceRoot":"","sources":["../../../src/page-objects/base.page.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-all-journeys.d.ts","sourceRoot":"","sources":["../../../src/runner/run-all-journeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"run-all-journeys.d.ts","sourceRoot":"","sources":["../../../src/runner/run-all-journeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAqGrD"}
|
|
@@ -14,6 +14,7 @@ const launcher_js_1 = require("../cdp/launcher.js");
|
|
|
14
14
|
const browser_discovery_js_1 = require("../utils/browser-discovery.js");
|
|
15
15
|
const journey_discovery_js_1 = require("../server/journey-discovery.js");
|
|
16
16
|
const spawn_journey_js_1 = require("./spawn-journey.js");
|
|
17
|
+
const stderr_parser_js_1 = require("./stderr-parser.js");
|
|
17
18
|
const lifecycle_hooks_js_1 = require("./lifecycle-hooks.js");
|
|
18
19
|
/**
|
|
19
20
|
* Run journeys in batch mode. Returns results and an exit code.
|
|
@@ -98,7 +99,7 @@ async function runAllJourneys(config, options) {
|
|
|
98
99
|
await (0, lifecycle_hooks_js_1.runGlobalTeardown)(config.hooks, hookContext);
|
|
99
100
|
// 7. Cleanup
|
|
100
101
|
browser.process.kill();
|
|
101
|
-
//
|
|
102
|
+
// 8. Print summary
|
|
102
103
|
printSummary(results);
|
|
103
104
|
return { results, exitCode: failed ? 1 : 0 };
|
|
104
105
|
}
|
|
@@ -116,38 +117,9 @@ async function runSingleJourney(journey, wsEndpoint, config, options) {
|
|
|
116
117
|
actionDelay: 0,
|
|
117
118
|
breakpoints: [],
|
|
118
119
|
});
|
|
119
|
-
|
|
120
|
-
let errorStack = '';
|
|
121
|
-
let stderrBuffer = '';
|
|
122
|
-
// Consume stdout silently (captures diagnostic JSON dump from runner)
|
|
120
|
+
// Consume stdout silently
|
|
123
121
|
spawned.process.stdout?.on('data', () => { });
|
|
124
|
-
spawned.process.stderr
|
|
125
|
-
stderrBuffer += chunk.toString();
|
|
126
|
-
const lines = stderrBuffer.split('\n');
|
|
127
|
-
stderrBuffer = lines.pop() ?? '';
|
|
128
|
-
for (const line of lines) {
|
|
129
|
-
if (line.startsWith('[DIAG]')) {
|
|
130
|
-
// Silently consume diagnostic data
|
|
131
|
-
}
|
|
132
|
-
else if (line.startsWith('[JSON]')) {
|
|
133
|
-
try {
|
|
134
|
-
const json = JSON.parse(line.slice(6));
|
|
135
|
-
if (json.type === 'error' && !firstError) {
|
|
136
|
-
firstError = json.message;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
catch { /* ignore */ }
|
|
140
|
-
}
|
|
141
|
-
else if (line.trim()) {
|
|
142
|
-
// Accumulate non-JSON stderr as the error stack
|
|
143
|
-
const trimmed = line.trim();
|
|
144
|
-
if (!firstError && !trimmed.startsWith('at ')) {
|
|
145
|
-
firstError = trimmed;
|
|
146
|
-
}
|
|
147
|
-
errorStack += line + '\n';
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
});
|
|
122
|
+
const { firstError } = await (0, stderr_parser_js_1.parseStderr)(spawned.process.stderr, {}, spawned.exitCode);
|
|
151
123
|
const code = await spawned.exitCode;
|
|
152
124
|
const duration = `${((Date.now() - start) / 1000).toFixed(2)}s`;
|
|
153
125
|
return {
|
|
@@ -155,7 +127,7 @@ async function runSingleJourney(journey, wsEndpoint, config, options) {
|
|
|
155
127
|
name: journey.name,
|
|
156
128
|
status: code === 0 ? 'passed' : 'failed',
|
|
157
129
|
duration,
|
|
158
|
-
error: code !== 0 ? (firstError ||
|
|
130
|
+
error: code !== 0 ? (firstError || 'Journey failed with no error message') : undefined,
|
|
159
131
|
};
|
|
160
132
|
}
|
|
161
133
|
/** Print a formatted results summary. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-all-journeys.js","sourceRoot":"","sources":["../../../src/runner/run-all-journeys.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;
|
|
1
|
+
{"version":3,"file":"run-all-journeys.js","sourceRoot":"","sources":["../../../src/runner/run-all-journeys.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ const connection_js_1 = require("../cdp/connection.js");
|
|
|
19
19
|
const domains_js_1 = require("../cdp/domains.js");
|
|
20
20
|
const cdp_adapter_js_1 = require("../adapters/cdp-adapter.js");
|
|
21
21
|
const collectors_js_1 = require("../ai/collectors.js");
|
|
22
|
+
const target_manager_js_1 = require("./target-manager.js");
|
|
22
23
|
async function main() {
|
|
23
24
|
const journeyPath = process.env.GLASSBOX_JOURNEY_PATH;
|
|
24
25
|
const wsEndpoint = process.env.GLASSBOX_WS_ENDPOINT;
|
|
@@ -36,50 +37,13 @@ async function main() {
|
|
|
36
37
|
// 1. Connect to browser-level CDP endpoint
|
|
37
38
|
connection = await connection_js_1.CDPConnection.connect(wsEndpoint);
|
|
38
39
|
const targets = new domains_js_1.TargetDomain(connection);
|
|
39
|
-
// 2. Find or create a page target at the correct origin
|
|
40
|
-
// The session from Target.attachToTarget is bound to the renderer process.
|
|
41
|
-
// If we attach while the page is at about:blank and then navigate cross-origin,
|
|
42
|
-
// Chrome swaps the renderer and the session dies (CDP -32001 error).
|
|
43
|
-
// Fix: ensure the target is already at the correct origin before attaching.
|
|
40
|
+
// 2. Find or create a page target at the correct origin
|
|
44
41
|
const targetUrl = process.env.TEST_DOMAIN || 'about:blank';
|
|
45
|
-
const
|
|
46
|
-
const existingTargets = await connection.send('Target.getTargets');
|
|
47
|
-
const existingPages = existingTargets.targetInfos.filter((t) => t.type === 'page');
|
|
48
|
-
let targetId;
|
|
49
|
-
// Find an existing tab already at the target origin (safe to reuse)
|
|
50
|
-
const sameOriginTab = targetOrigin
|
|
51
|
-
? existingPages.find((t) => t.url.startsWith(targetOrigin))
|
|
52
|
-
: undefined;
|
|
53
|
-
if (sameOriginTab) {
|
|
54
|
-
// Reuse the tab that's already at the correct origin — no renderer swap needed
|
|
55
|
-
targetId = sameOriginTab.targetId;
|
|
56
|
-
// Close any extra tabs
|
|
57
|
-
for (const t of existingPages.filter((p) => p.targetId !== targetId)) {
|
|
58
|
-
await targets.closeTarget(t.targetId).catch(() => { });
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
// No tab at the right origin — close existing tabs and create one at the target URL
|
|
63
|
-
for (const t of existingPages) {
|
|
64
|
-
await targets.closeTarget(t.targetId).catch(() => { });
|
|
65
|
-
}
|
|
66
|
-
const targetResult = await targets.createTarget(targetUrl);
|
|
67
|
-
targetId = targetResult.targetId;
|
|
68
|
-
// Wait for the renderer to initialize at the target URL before attaching.
|
|
69
|
-
// Target.createTarget returns immediately but the renderer may still be spinning up.
|
|
70
|
-
const maxWait = 10_000;
|
|
71
|
-
const start = Date.now();
|
|
72
|
-
while (Date.now() - start < maxWait) {
|
|
73
|
-
const info = await connection.send('Target.getTargetInfo', { targetId });
|
|
74
|
-
if (info.targetInfo.url !== 'about:blank' && info.targetInfo.url !== '')
|
|
75
|
-
break;
|
|
76
|
-
await new Promise((r) => setTimeout(r, 100));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
42
|
+
const targetId = await (0, target_manager_js_1.findOrCreateTarget)(connection, targetUrl);
|
|
79
43
|
// 3. Attach to the target with flattened session
|
|
80
44
|
const attachResult = await targets.attachToTarget(targetId, true);
|
|
81
45
|
const sessionId = attachResult.sessionId;
|
|
82
|
-
//
|
|
46
|
+
// 4. Enable CDP domains
|
|
83
47
|
const page = new domains_js_1.PageDomain(connection, sessionId);
|
|
84
48
|
const runtime = new domains_js_1.RuntimeDomain(connection, sessionId);
|
|
85
49
|
const network = new domains_js_1.NetworkDomain(connection, sessionId);
|
|
@@ -90,7 +54,7 @@ async function main() {
|
|
|
90
54
|
await network.enable();
|
|
91
55
|
await dom.enable();
|
|
92
56
|
await performance.enable();
|
|
93
|
-
//
|
|
57
|
+
// 4b. Set viewport dimensions if specified
|
|
94
58
|
const viewportWidth = parseInt(process.env.VIEWPORT_WIDTH ?? '1280', 10);
|
|
95
59
|
const viewportHeight = parseInt(process.env.VIEWPORT_HEIGHT ?? '720', 10);
|
|
96
60
|
await connection.send('Emulation.setDeviceMetricsOverride', {
|
|
@@ -99,17 +63,17 @@ async function main() {
|
|
|
99
63
|
deviceScaleFactor: 1,
|
|
100
64
|
mobile: false,
|
|
101
65
|
}, sessionId);
|
|
102
|
-
//
|
|
66
|
+
// 5. Start diagnostic collector
|
|
103
67
|
diagnostics = new collectors_js_1.DiagnosticCollector(connection, sessionId);
|
|
104
|
-
//
|
|
68
|
+
// 6. Create the adapter
|
|
105
69
|
const adapter = new cdp_adapter_js_1.CDPAdapter(connection, sessionId);
|
|
106
|
-
//
|
|
70
|
+
// 7. Load the journey module
|
|
107
71
|
const journeyModule = await importJourney(journeyPath);
|
|
108
|
-
//
|
|
72
|
+
// 8. Execute the journey
|
|
109
73
|
await executeJourney(journeyModule, adapter);
|
|
110
|
-
//
|
|
74
|
+
// 9. Capture final metrics
|
|
111
75
|
await diagnostics.captureMetricsSnapshot('journey-complete');
|
|
112
|
-
//
|
|
76
|
+
// 10. Output diagnostic data for the server to collect
|
|
113
77
|
const diagnosticData = {
|
|
114
78
|
consoleErrors: diagnostics.getConsoleErrors(),
|
|
115
79
|
exceptions: diagnostics.getExceptions(),
|
|
@@ -119,7 +83,7 @@ async function main() {
|
|
|
119
83
|
timeline: diagnostics.getTimeline(),
|
|
120
84
|
};
|
|
121
85
|
process.stderr.write(`[DIAG]${JSON.stringify(diagnosticData)}\n`);
|
|
122
|
-
//
|
|
86
|
+
// 11. Clean up
|
|
123
87
|
diagnostics.dispose();
|
|
124
88
|
await connection.send('Network.clearBrowserCookies', undefined, sessionId);
|
|
125
89
|
connection.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-journey.js","sourceRoot":"","sources":["../../../src/runner/run-journey.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAEH,wDAAqD;AACrD,kDAAyH;AACzH,+DAAwD;AACxD,uDAA0D;
|
|
1
|
+
{"version":3,"file":"run-journey.js","sourceRoot":"","sources":["../../../src/runner/run-journey.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAEH,wDAAqD;AACrD,kDAAyH;AACzH,+DAAwD;AACxD,uDAA0D;AAC1D,2DAAyD;AAazD,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAEpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,SAAS,CAAC,wDAAwD,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,SAAS,CAAC,uDAAuD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,GAAyB,IAAI,CAAC;IAC5C,IAAI,WAAW,GAA+B,IAAI,CAAC;IAEnD,IAAI,CAAC;QACH,2CAA2C;QAC3C,UAAU,GAAG,MAAM,6BAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,yBAAY,CAAC,UAAU,CAAC,CAAC;QAE7C,wDAAwD;QACxD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,IAAA,sCAAkB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEjE,iDAAiD;QACjD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QAEzC,wBAAwB;QACxB,MAAM,IAAI,GAAG,IAAI,uBAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,0BAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,0BAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,sBAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,8BAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEjE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAE3B,2CAA2C;QAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;QAE1E,MAAM,UAAU,CAAC,IAAI,CAAC,oCAAoC,EAAE;YAC1D,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,cAAc;YACtB,iBAAiB,EAAE,CAAC;YACpB,MAAM,EAAE,KAAK;SACd,EAAE,SAAS,CAAC,CAAC;QAEd,gCAAgC;QAChC,WAAW,GAAG,IAAI,mCAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAE7D,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAI,2BAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEtD,6BAA6B;QAC7B,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;QAEvD,yBAAyB;QACzB,MAAM,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAE7C,2BAA2B;QAC3B,MAAM,WAAW,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;QAE7D,uDAAuD;QACvD,MAAM,cAAc,GAAG;YACrB,aAAa,EAAE,WAAW,CAAC,gBAAgB,EAAE;YAC7C,UAAU,EAAE,WAAW,CAAC,aAAa,EAAE;YACvC,UAAU,EAAE,WAAW,CAAC,aAAa,EAAE;YACvC,eAAe,EAAE,WAAW,CAAC,kBAAkB,EAAE;YACjD,OAAO,EAAE,WAAW,CAAC,gBAAgB,EAAE;YACvC,QAAQ,EAAE,WAAW,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAElE,eAAe;QACf,WAAW,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,UAAU,CAAC,IAAI,CAAC,6BAA6B,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3E,UAAU,CAAC,KAAK,EAAE,CAAC;QAEnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,4EAA4E;QAC5E,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,CAAC;oBACjB,WAAW,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;oBACpD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBACpD,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC,CAAC,8CAA8C,CAAC,CAAC;YAE1D,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG;oBACrB,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,WAAY,CAAC,gBAAgB,EAAE,CAAC;oBAC7D,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,WAAY,CAAC,aAAa,EAAE,CAAC;oBACvD,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,WAAY,CAAC,aAAa,EAAE,CAAC;oBACvD,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,WAAY,CAAC,kBAAkB,EAAE,CAAC;oBACjE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,WAAY,CAAC,gBAAgB,EAAE,CAAC;oBACvD,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,WAAY,CAAC,WAAW,EAAE,CAAC;iBACpD,CAAC;gBACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACpE,CAAC;YAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;YAC7C,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC;QAED,kBAAkB;QAClB,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QAED,0CAA0C;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,WAAmB;IAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAkB,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,cAAc,CAAC,MAAqB,EAAE,OAAmB;IACtE,sEAAsE;IACtE,uDAAuD;IACvD,IAAI,QAAQ,GAAG,MAAM,CAAC;IACtB,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3F,QAAQ,GAAG,MAAM,CAAC,OAAwB,CAAC;IAC7C,CAAC;IAED,oEAAoE;IACpE,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEtE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IAED,0DAA0D;IAC1D,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;QACxC,MAAO,aAAiC,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACxF,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAqB;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAExE,mCAAmC;IACnC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpD,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,wBAAwB;IACxB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC;IACvF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,SAAgD,CAAC;IACrE,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC;AAED,IAAI,EAAE,CAAC;AAEP,+DAA+D;AAC/D,SAAS,OAAO,CAAI,EAAa;IAC/B,IAAI,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StderrParser — shared logic for parsing structured output from journey child processes.
|
|
3
|
+
*
|
|
4
|
+
* The runner child process communicates via stderr using line-based protocols:
|
|
5
|
+
* - `[DIAG]{json}` — diagnostic data (console errors, network log, etc.)
|
|
6
|
+
* - `[JSON]{json}` — structured messages (action events, errors, ui-control)
|
|
7
|
+
* - Plain text — unstructured error output (stack traces, etc.)
|
|
8
|
+
*
|
|
9
|
+
* Both TestExecutor (server) and run-all-journeys (CLI) need to parse this
|
|
10
|
+
* stream. This module provides the shared implementation.
|
|
11
|
+
*/
|
|
12
|
+
import type { Readable } from 'stream';
|
|
13
|
+
/** Callbacks for handling parsed stderr lines. */
|
|
14
|
+
export interface StderrHandlers {
|
|
15
|
+
/** Called when a [DIAG] line is parsed with the diagnostic data object. */
|
|
16
|
+
onDiag?: (data: Record<string, unknown>) => void;
|
|
17
|
+
/** Called when a [JSON] line is parsed with the message object. */
|
|
18
|
+
onJson?: (json: Record<string, unknown>) => void;
|
|
19
|
+
/** Called for plain text lines (errors, stack traces). */
|
|
20
|
+
onText?: (line: string) => void;
|
|
21
|
+
}
|
|
22
|
+
/** Result of parsing a journey's stderr output. */
|
|
23
|
+
export interface StderrResult {
|
|
24
|
+
/** The first error message found (from [JSON] or plain text). */
|
|
25
|
+
firstError: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Attach a line-based parser to a stderr stream. Handles buffering of partial
|
|
29
|
+
* lines across chunks and dispatches complete lines to the appropriate handler.
|
|
30
|
+
*
|
|
31
|
+
* Returns a promise that resolves with the parsed result after the provided
|
|
32
|
+
* exitCode promise resolves (ensuring all buffered data is flushed).
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseStderr(stderr: Readable, handlers: StderrHandlers, exitCode: Promise<number>): Promise<StderrResult>;
|
|
35
|
+
//# sourceMappingURL=stderr-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stderr-parser.d.ts","sourceRoot":"","sources":["../../../src/runner/stderr-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjD,mEAAmE;IACnE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjD,0DAA0D;IAC1D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GACxB,OAAO,CAAC,YAAY,CAAC,CAwBvB"}
|