mcp-accessibility-scanner 3.3.2 → 3.4.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/README.md +74 -5
- package/config.d.ts +30 -0
- package/lib/browserServerBackend.js +6 -0
- package/lib/browserServerBackend.js.map +1 -1
- package/lib/browserSessions.js +3 -0
- package/lib/browserSessions.js.map +1 -1
- package/lib/config.js +56 -10
- package/lib/config.js.map +1 -1
- package/lib/context.js +382 -56
- package/lib/context.js.map +1 -1
- package/lib/extension/cdpRelay.js +28 -6
- package/lib/extension/cdpRelay.js.map +1 -1
- package/lib/extension/extensionContextFactory.js +11 -6
- package/lib/extension/extensionContextFactory.js.map +1 -1
- package/lib/mcp/http.js +115 -41
- package/lib/mcp/http.js.map +1 -1
- package/lib/mcp/server.js +16 -8
- package/lib/mcp/server.js.map +1 -1
- package/lib/mcp/tool.js +11 -9
- package/lib/mcp/tool.js.map +1 -1
- package/lib/program.js +6 -3
- package/lib/program.js.map +1 -1
- package/lib/response.js +14 -2
- package/lib/response.js.map +1 -1
- package/lib/sessionLog.js +66 -20
- package/lib/sessionLog.js.map +1 -1
- package/lib/tab.js +13 -7
- package/lib/tab.js.map +1 -1
- package/lib/tools/auditKeyboard.js +27 -25
- package/lib/tools/auditKeyboard.js.map +1 -1
- package/lib/tools/auditScreenReader.js +27 -18
- package/lib/tools/auditScreenReader.js.map +1 -1
- package/lib/tools/auditSite.js +88 -56
- package/lib/tools/auditSite.js.map +1 -1
- package/lib/tools/axe.js +32 -7
- package/lib/tools/axe.js.map +1 -1
- package/lib/tools/common.js +39 -1
- package/lib/tools/common.js.map +1 -1
- package/lib/tools/files.js +55 -1
- package/lib/tools/files.js.map +1 -1
- package/lib/tools/pdf.js +4 -2
- package/lib/tools/pdf.js.map +1 -1
- package/lib/tools/recorder.js +52 -0
- package/lib/tools/recorder.js.map +1 -0
- package/lib/tools/report.js +13 -0
- package/lib/tools/report.js.map +1 -0
- package/lib/tools/scanPageMatrix.js +20 -33
- package/lib/tools/scanPageMatrix.js.map +1 -1
- package/lib/tools/screenshot.js +6 -3
- package/lib/tools/screenshot.js.map +1 -1
- package/lib/tools/snapshot.js +5 -2
- package/lib/tools/snapshot.js.map +1 -1
- package/lib/tools.js +2 -0
- package/lib/tools.js.map +1 -1
- package/lib/vscode/browserContextFactory.js +11 -4
- package/lib/vscode/browserContextFactory.js.map +1 -1
- package/lib/vscode/host.js +25 -2
- package/lib/vscode/host.js.map +1 -1
- package/lib/vscode/main.js +15 -0
- package/lib/vscode/main.js.map +1 -1
- package/lib/vscode/validation.js +78 -0
- package/lib/vscode/validation.js.map +1 -0
- package/package.json +6 -5
package/lib/context.js
CHANGED
|
@@ -20,6 +20,57 @@ import { Tab } from './tab.js';
|
|
|
20
20
|
import { outputFile } from './config.js';
|
|
21
21
|
import { ensureNetworkPolicyRoutes } from './networkPolicy.js';
|
|
22
22
|
const testDebug = debug('pw:mcp:test');
|
|
23
|
+
const recorderBufferMs = 500;
|
|
24
|
+
const recorderControlTools = new Set(['browser_start_recording', 'browser_stop_recording']);
|
|
25
|
+
const expectPrelude = "const { expect } = require('playwright/test');";
|
|
26
|
+
const pendingPageCloses = new WeakMap();
|
|
27
|
+
function pendingPageClose(page) {
|
|
28
|
+
const pending = pendingPageCloses.get(page);
|
|
29
|
+
if (pending)
|
|
30
|
+
return pending;
|
|
31
|
+
const close = page.close();
|
|
32
|
+
pendingPageCloses.set(page, close);
|
|
33
|
+
const clear = () => {
|
|
34
|
+
if (pendingPageCloses.get(page) === close)
|
|
35
|
+
pendingPageCloses.delete(page);
|
|
36
|
+
};
|
|
37
|
+
void close.then(clear, clear);
|
|
38
|
+
return close;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Chromium can acknowledge Target.closeTarget while a racing navigation keeps
|
|
42
|
+
* the target alive. Retry the public close call instead of letting one tool or
|
|
43
|
+
* an entire crawl wait forever.
|
|
44
|
+
*/
|
|
45
|
+
async function closePage(page, timeoutMs) {
|
|
46
|
+
const deadline = Date.now() + timeoutMs;
|
|
47
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
48
|
+
const remaining = deadline - Date.now();
|
|
49
|
+
if (remaining <= 0)
|
|
50
|
+
break;
|
|
51
|
+
let timer;
|
|
52
|
+
try {
|
|
53
|
+
await Promise.race([
|
|
54
|
+
pendingPageClose(page),
|
|
55
|
+
new Promise((_, reject) => {
|
|
56
|
+
timer = setTimeout(() => reject(new Error(`Timed out after ${timeoutMs}ms while closing the page.`)), remaining);
|
|
57
|
+
timer.unref?.();
|
|
58
|
+
}),
|
|
59
|
+
]);
|
|
60
|
+
if (page.isClosed())
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (page.isClosed())
|
|
65
|
+
return;
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
clearTimeout(timer);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
throw new Error(`Failed to close the page after 3 attempts within ${timeoutMs}ms.`);
|
|
73
|
+
}
|
|
23
74
|
class ContextRegistry {
|
|
24
75
|
_contexts = new Set();
|
|
25
76
|
register(context) {
|
|
@@ -74,7 +125,26 @@ async function releaseTrace(browserContext) {
|
|
|
74
125
|
if (!hub || --hub.users)
|
|
75
126
|
return;
|
|
76
127
|
traceHubs.delete(browserContext);
|
|
77
|
-
|
|
128
|
+
try {
|
|
129
|
+
await browserContext.tracing.stop();
|
|
130
|
+
}
|
|
131
|
+
catch (originalError) {
|
|
132
|
+
// Playwright's stop sends the server-side tracingStop only after the
|
|
133
|
+
// chunk export succeeds, so a stop that fails midway (an unwritable
|
|
134
|
+
// export target, a channel hiccup) leaves tracing started while the
|
|
135
|
+
// hub above is already gone — every later session on this browser
|
|
136
|
+
// context would fail its start with "Tracing has been already started".
|
|
137
|
+
// One bare retry ends the recording; when it succeeds the session
|
|
138
|
+
// recovered (the original failure is not worth surfacing), and when it
|
|
139
|
+
// also fails the original error is the real one to report. try/catch,
|
|
140
|
+
// not a .catch() chain, so a synchronously throwing stop is retried too.
|
|
141
|
+
try {
|
|
142
|
+
await browserContext.tracing.stop();
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
throw originalError;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
78
148
|
}
|
|
79
149
|
export class Context {
|
|
80
150
|
tools;
|
|
@@ -91,6 +161,7 @@ export class Context {
|
|
|
91
161
|
// second still ran — letting the session TTL reaper (or a session close)
|
|
92
162
|
// dispose the browser mid-operation.
|
|
93
163
|
_runningTools = [];
|
|
164
|
+
_lastToolCallEndedAt = -Infinity;
|
|
94
165
|
// In-flight download saves (Tab hands them over as they start). A download
|
|
95
166
|
// outlives the tool call that triggered it — the response reports it as
|
|
96
167
|
// "still downloading" — so disposal must wait for these before closing the
|
|
@@ -101,6 +172,11 @@ export class Context {
|
|
|
101
172
|
_abortController = new AbortController();
|
|
102
173
|
_removePageObserver;
|
|
103
174
|
_inputRecorder;
|
|
175
|
+
_removeRecorderContext;
|
|
176
|
+
_recordingStartFinished;
|
|
177
|
+
_recording;
|
|
178
|
+
_recordingStops = new Set();
|
|
179
|
+
_closeAfterRecording = false;
|
|
104
180
|
// Resolved from options.sessionLog at the first browser context launch.
|
|
105
181
|
_sessionLog;
|
|
106
182
|
constructor(options) {
|
|
@@ -170,16 +246,94 @@ export class Context {
|
|
|
170
246
|
await browserContext.newPage();
|
|
171
247
|
return this._currentTab;
|
|
172
248
|
}
|
|
249
|
+
async startRecording() {
|
|
250
|
+
this.assertRecordingCanStart();
|
|
251
|
+
await this._startRecording();
|
|
252
|
+
}
|
|
253
|
+
async startRecordingOnCurrentTab() {
|
|
254
|
+
this.assertRecordingCanStart();
|
|
255
|
+
let finishStart;
|
|
256
|
+
const startFinished = new Promise(resolve => finishStart = resolve);
|
|
257
|
+
this._recordingStartFinished = startFinished;
|
|
258
|
+
try {
|
|
259
|
+
const tab = await this.ensureTab();
|
|
260
|
+
await tab.page.bringToFront();
|
|
261
|
+
await this._startRecording();
|
|
262
|
+
}
|
|
263
|
+
finally {
|
|
264
|
+
if (this._recordingStartFinished === startFinished)
|
|
265
|
+
this._recordingStartFinished = undefined;
|
|
266
|
+
finishStart();
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
async _startRecording() {
|
|
270
|
+
const actions = [];
|
|
271
|
+
const target = { actions, pageIndexes: new Map(), state: { stopping: false } };
|
|
272
|
+
const ready = this._ensureBrowserContext().then(async ({ browserContext }) => {
|
|
273
|
+
await InputRecorder.startRecording(this, browserContext, target);
|
|
274
|
+
return browserContext;
|
|
275
|
+
});
|
|
276
|
+
const recording = { target, ready, lastActivityAt: Date.now() };
|
|
277
|
+
this._recording = recording;
|
|
278
|
+
try {
|
|
279
|
+
await ready;
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
if (this._recording === recording)
|
|
283
|
+
this._recording = undefined;
|
|
284
|
+
this._closeBrowserContextAfterRecording();
|
|
285
|
+
throw error;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
async stopRecording() {
|
|
289
|
+
this.assertRecordingCanPersist();
|
|
290
|
+
if (this._recordingStartFinished)
|
|
291
|
+
await this._recordingStartFinished;
|
|
292
|
+
const recording = this._recording;
|
|
293
|
+
if (!recording)
|
|
294
|
+
return undefined;
|
|
295
|
+
this._recording = undefined;
|
|
296
|
+
recording.target.state.stopping = true;
|
|
297
|
+
let finishStop;
|
|
298
|
+
const stopFinished = new Promise(resolve => finishStop = resolve);
|
|
299
|
+
this._recordingStops.add(stopFinished);
|
|
300
|
+
try {
|
|
301
|
+
const browserContext = await recording.ready;
|
|
302
|
+
await InputRecorder.stopRecording(this, browserContext, recording.target);
|
|
303
|
+
return recording.target.actions.map(action => action.code.trim()).filter(Boolean);
|
|
304
|
+
}
|
|
305
|
+
finally {
|
|
306
|
+
this._recordingStops.delete(stopFinished);
|
|
307
|
+
finishStop();
|
|
308
|
+
this._closeBrowserContextAfterRecording();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
recordingActivityAt() {
|
|
312
|
+
return this._recording?.lastActivityAt;
|
|
313
|
+
}
|
|
314
|
+
markRecordingActivity() {
|
|
315
|
+
if (this._recording)
|
|
316
|
+
this._recording.lastActivityAt = Date.now();
|
|
317
|
+
}
|
|
318
|
+
assertRecordingCanPersist() {
|
|
319
|
+
if (this.options.browserSession && !this.options.browserSessionId)
|
|
320
|
+
throw new Error('Recording over stateless HTTP requires a browserSessionId. Call browser_session_open, then pass its browserSessionId to browser_start_recording and browser_stop_recording. Shared-context modes that cannot open browser sessions require a stateful MCP connection.');
|
|
321
|
+
}
|
|
322
|
+
assertRecordingCanStart() {
|
|
323
|
+
this.assertRecordingCanPersist();
|
|
324
|
+
if (this._recording || this._recordingStartFinished)
|
|
325
|
+
throw new Error('Recording is already in progress.');
|
|
326
|
+
}
|
|
173
327
|
async closeTab(index) {
|
|
174
328
|
const tab = index === undefined ? this._currentTab : this._tabs[index];
|
|
175
329
|
if (!tab)
|
|
176
330
|
throw new Error(`Tab ${index} not found`);
|
|
177
331
|
const url = tab.page.url();
|
|
178
|
-
await tab.page.
|
|
332
|
+
await closePage(tab.page, tab.operationTimeout());
|
|
179
333
|
return url;
|
|
180
334
|
}
|
|
181
|
-
async outputFile(name) {
|
|
182
|
-
return outputFile(this.config, name);
|
|
335
|
+
async outputFile(name, exclusive = false) {
|
|
336
|
+
return outputFile(this.config, name, exclusive);
|
|
183
337
|
}
|
|
184
338
|
/**
|
|
185
339
|
* The registry behind `browser_session_open` / `browser_session_close`.
|
|
@@ -192,6 +346,7 @@ export class Context {
|
|
|
192
346
|
return this.options.browserSessions;
|
|
193
347
|
}
|
|
194
348
|
_onPageCreated(page) {
|
|
349
|
+
this._closeAfterRecording = false;
|
|
195
350
|
const tab = new Tab(this, page, tab => this._onPageClosed(tab));
|
|
196
351
|
this._tabs.push(tab);
|
|
197
352
|
if (!this._currentTab)
|
|
@@ -204,8 +359,12 @@ export class Context {
|
|
|
204
359
|
this._tabs.splice(index, 1);
|
|
205
360
|
if (this._currentTab === tab)
|
|
206
361
|
this._currentTab = this._tabs[Math.min(index, this._tabs.length - 1)];
|
|
207
|
-
if (!this._tabs.length)
|
|
208
|
-
|
|
362
|
+
if (!this._tabs.length) {
|
|
363
|
+
if (this._recording || this._recordingStops.size)
|
|
364
|
+
this._closeAfterRecording = true;
|
|
365
|
+
else
|
|
366
|
+
void this.closeBrowserContext();
|
|
367
|
+
}
|
|
209
368
|
}
|
|
210
369
|
async closeBrowserContext() {
|
|
211
370
|
if (!this._closeBrowserContextPromise)
|
|
@@ -213,10 +372,19 @@ export class Context {
|
|
|
213
372
|
await this._closeBrowserContextPromise;
|
|
214
373
|
this._closeBrowserContextPromise = undefined;
|
|
215
374
|
}
|
|
375
|
+
_closeBrowserContextAfterRecording() {
|
|
376
|
+
if (!this._closeAfterRecording || this._recording || this._recordingStops.size || this._closeBrowserContextPromise)
|
|
377
|
+
return;
|
|
378
|
+
this._closeAfterRecording = false;
|
|
379
|
+
void this.closeBrowserContext();
|
|
380
|
+
}
|
|
216
381
|
/** True while ANY tool call is running in this Context, overlap included. */
|
|
217
382
|
isRunningTool() {
|
|
218
383
|
return this._runningTools.length > 0;
|
|
219
384
|
}
|
|
385
|
+
isRunningToolForRecording(buffered) {
|
|
386
|
+
return this._runningTools.some(name => !recorderControlTools.has(name)) || buffered && Date.now() - this._lastToolCallEndedAt <= recorderBufferMs;
|
|
387
|
+
}
|
|
220
388
|
/**
|
|
221
389
|
* Registers an in-flight download save. Disposal waits (bounded) for the
|
|
222
390
|
* registered saves before closing the browser context, and the session TTL
|
|
@@ -280,6 +448,8 @@ export class Context {
|
|
|
280
448
|
const index = this._runningTools.lastIndexOf(name);
|
|
281
449
|
if (index !== -1)
|
|
282
450
|
this._runningTools.splice(index, 1);
|
|
451
|
+
if (!recorderControlTools.has(name))
|
|
452
|
+
this._lastToolCallEndedAt = Date.now();
|
|
283
453
|
};
|
|
284
454
|
}
|
|
285
455
|
async _closeBrowserContextImpl() {
|
|
@@ -309,6 +479,9 @@ export class Context {
|
|
|
309
479
|
// window to finish, so the files tool responses reported as "still
|
|
310
480
|
// downloading" actually materialize.
|
|
311
481
|
await this._waitForPendingDownloads();
|
|
482
|
+
if (this._recording)
|
|
483
|
+
await this.stopRecording().catch(logUnhandledError);
|
|
484
|
+
await Promise.all(this._recordingStops);
|
|
312
485
|
this._detachFromBrowserContext();
|
|
313
486
|
// close() is the factory's only cleanup hook — for storage-state
|
|
314
487
|
// sessions it also removes the disposable profile — and this close
|
|
@@ -346,8 +519,11 @@ export class Context {
|
|
|
346
519
|
_detachFromBrowserContext() {
|
|
347
520
|
this._removePageObserver?.();
|
|
348
521
|
this._removePageObserver = undefined;
|
|
522
|
+
this._removeRecorderContext?.();
|
|
523
|
+
this._removeRecorderContext = undefined;
|
|
349
524
|
this._inputRecorder?.dispose();
|
|
350
525
|
this._inputRecorder = undefined;
|
|
526
|
+
this._closeAfterRecording = false;
|
|
351
527
|
for (const tab of this._tabs)
|
|
352
528
|
tab.dispose();
|
|
353
529
|
this._tabs = [];
|
|
@@ -376,6 +552,7 @@ export class Context {
|
|
|
376
552
|
try {
|
|
377
553
|
const { browserContext } = result;
|
|
378
554
|
await this._setupRequestInterception(browserContext);
|
|
555
|
+
this._removeRecorderContext = InputRecorder.attachContext(this, browserContext);
|
|
379
556
|
// First real use of this context: resolve — and, once per backend,
|
|
380
557
|
// create — the session log before deciding whether to record input.
|
|
381
558
|
await this.resolveSessionLog();
|
|
@@ -399,60 +576,45 @@ export class Context {
|
|
|
399
576
|
return result;
|
|
400
577
|
}
|
|
401
578
|
}
|
|
579
|
+
const actionIsBuffered = (action) => action.name === 'click' && action.button === 'left' || action.name === 'navigate';
|
|
580
|
+
const pageAliasFromCode = (code) => code.match(/^\s*await\s+(page\d*)\./m)?.[1]
|
|
581
|
+
?? code.match(/^\s*await\s+expect\((page\d*)(?:\.|\))/m)?.[1];
|
|
582
|
+
const addMissingPageAlias = (recorded, page, code, pageIndexes, browserContext) => {
|
|
583
|
+
const alias = pageAliasFromCode(code);
|
|
584
|
+
if (!alias || alias === 'page')
|
|
585
|
+
return;
|
|
586
|
+
const declaration = new RegExp(`^\\s*const\\s+${alias}\\s*=`, 'm');
|
|
587
|
+
if (declaration.test(code) || recorded.some(action => declaration.test(action.code)))
|
|
588
|
+
return;
|
|
589
|
+
const initialPageIndex = pageIndexes.get(page);
|
|
590
|
+
const pageIndex = initialPageIndex ?? browserContext.pages().indexOf(page);
|
|
591
|
+
if (pageIndex === -1)
|
|
592
|
+
return;
|
|
593
|
+
const declarationAction = { page, code: `const ${alias} = context.pages()[${pageIndex}];` };
|
|
594
|
+
if (initialPageIndex === undefined)
|
|
595
|
+
recorded.push(declarationAction);
|
|
596
|
+
else
|
|
597
|
+
recorded.unshift(declarationAction);
|
|
598
|
+
};
|
|
402
599
|
const recorderHubs = new WeakMap();
|
|
600
|
+
const recorderContexts = new WeakMap();
|
|
403
601
|
export class InputRecorder {
|
|
404
602
|
_context;
|
|
405
603
|
_browserContext;
|
|
604
|
+
_lastActions = new WeakMap();
|
|
406
605
|
constructor(context, browserContext) {
|
|
407
606
|
this._context = context;
|
|
408
607
|
this._browserContext = browserContext;
|
|
409
608
|
}
|
|
410
609
|
static async create(context, browserContext) {
|
|
411
610
|
const recorder = new InputRecorder(context, browserContext);
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
const recorders = new Set();
|
|
415
|
-
const dispatch = (handle) => {
|
|
416
|
-
// A tool call drives the page through Playwright, and the recorder
|
|
417
|
-
// cannot attribute a DOM event to the session that caused it — so
|
|
418
|
-
// while any session sharing this context runs a tool, the events are
|
|
419
|
-
// automation for every session's log, not user actions. (A real user
|
|
420
|
-
// action racing a sibling's tool call is suppressed with them — the
|
|
421
|
-
// same trade-off a single session already accepts for its own runs.)
|
|
422
|
-
for (const registered of recorders) {
|
|
423
|
-
if (registered._context.isRunningTool())
|
|
424
|
-
return;
|
|
425
|
-
}
|
|
426
|
-
for (const registered of recorders)
|
|
427
|
-
handle(registered);
|
|
428
|
-
};
|
|
429
|
-
const created = {
|
|
430
|
-
recorders,
|
|
431
|
-
ready: browserContext._enableRecorder({
|
|
432
|
-
mode: 'recording',
|
|
433
|
-
recorderMode: 'api',
|
|
434
|
-
}, {
|
|
435
|
-
actionAdded: (page, data, code) => {
|
|
436
|
-
dispatch(registered => registered._actionAdded(page, data, code));
|
|
437
|
-
},
|
|
438
|
-
actionUpdated: (page, data, code) => {
|
|
439
|
-
dispatch(registered => registered._actionUpdated(page, data, code));
|
|
440
|
-
},
|
|
441
|
-
signalAdded: (page, data) => {
|
|
442
|
-
dispatch(registered => registered._signalAdded(page, data));
|
|
443
|
-
},
|
|
444
|
-
}),
|
|
445
|
-
};
|
|
446
|
-
created.ready.catch(() => {
|
|
447
|
-
if (recorderHubs.get(browserContext) === created)
|
|
448
|
-
recorderHubs.delete(browserContext);
|
|
449
|
-
});
|
|
450
|
-
recorderHubs.set(browserContext, created);
|
|
451
|
-
hub = created;
|
|
452
|
-
}
|
|
611
|
+
const existingHub = recorderHubs.get(browserContext);
|
|
612
|
+
const hub = InputRecorder._ensureHub(browserContext);
|
|
453
613
|
hub.recorders.add(recorder);
|
|
454
614
|
try {
|
|
455
615
|
await hub.ready;
|
|
616
|
+
if (existingHub)
|
|
617
|
+
await hub.ensureArmed();
|
|
456
618
|
}
|
|
457
619
|
catch (error) {
|
|
458
620
|
hub.recorders.delete(recorder);
|
|
@@ -460,30 +622,194 @@ export class InputRecorder {
|
|
|
460
622
|
}
|
|
461
623
|
return recorder;
|
|
462
624
|
}
|
|
625
|
+
static attachContext(context, browserContext) {
|
|
626
|
+
let contexts = recorderContexts.get(browserContext);
|
|
627
|
+
if (!contexts) {
|
|
628
|
+
contexts = new Set();
|
|
629
|
+
recorderContexts.set(browserContext, contexts);
|
|
630
|
+
}
|
|
631
|
+
contexts.add(context);
|
|
632
|
+
return () => contexts.delete(context);
|
|
633
|
+
}
|
|
634
|
+
static async startRecording(context, browserContext, target) {
|
|
635
|
+
const existingHub = recorderHubs.get(browserContext);
|
|
636
|
+
const hub = InputRecorder._ensureHub(browserContext);
|
|
637
|
+
++hub.starting;
|
|
638
|
+
try {
|
|
639
|
+
await hub.ready;
|
|
640
|
+
if (existingHub) {
|
|
641
|
+
await new Promise(resolve => setTimeout(resolve, recorderBufferMs));
|
|
642
|
+
await hub.arm();
|
|
643
|
+
}
|
|
644
|
+
for (const [index, page] of browserContext.pages().entries())
|
|
645
|
+
target.pageIndexes.set(page, index);
|
|
646
|
+
hub.recordings.set(context, target);
|
|
647
|
+
}
|
|
648
|
+
catch (error) {
|
|
649
|
+
if (hub.recordings.get(context) === target)
|
|
650
|
+
hub.recordings.delete(context);
|
|
651
|
+
throw error;
|
|
652
|
+
}
|
|
653
|
+
finally {
|
|
654
|
+
--hub.starting;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
static async stopRecording(context, browserContext, target) {
|
|
658
|
+
// Playwright buffers clicks and navigations for 500ms so a later
|
|
659
|
+
// event can refine them. Keep this recording registered until that last
|
|
660
|
+
// event arrives; config.timeouts.settle may be shorter or disabled.
|
|
661
|
+
const recordings = recorderHubs.get(browserContext)?.recordings;
|
|
662
|
+
await new Promise(resolve => setTimeout(resolve, recorderBufferMs));
|
|
663
|
+
if (target && recordings?.get(context) === target) {
|
|
664
|
+
recordings.delete(context);
|
|
665
|
+
const hub = recorderHubs.get(browserContext);
|
|
666
|
+
await hub?.standbyIfIdle().catch(logUnhandledError);
|
|
667
|
+
}
|
|
668
|
+
}
|
|
463
669
|
dispose() {
|
|
464
|
-
recorderHubs.get(this._browserContext)
|
|
670
|
+
const hub = recorderHubs.get(this._browserContext);
|
|
671
|
+
hub?.recorders.delete(this);
|
|
672
|
+
void hub?.standbyIfIdle().catch(logUnhandledError);
|
|
673
|
+
}
|
|
674
|
+
static _ensureHub(browserContext) {
|
|
675
|
+
const hub = recorderHubs.get(browserContext);
|
|
676
|
+
if (hub)
|
|
677
|
+
return hub;
|
|
678
|
+
const recorders = new Set();
|
|
679
|
+
const recordings = new Map();
|
|
680
|
+
let actionSequence = 0;
|
|
681
|
+
const lastActionSequence = new WeakMap();
|
|
682
|
+
let armed = false;
|
|
683
|
+
let transition = Promise.resolve();
|
|
684
|
+
const enqueue = (callback) => {
|
|
685
|
+
const result = transition.then(callback, callback);
|
|
686
|
+
transition = result.catch(() => { });
|
|
687
|
+
return result;
|
|
688
|
+
};
|
|
689
|
+
const dispatch = (buffered, flushable, log, record) => {
|
|
690
|
+
const contexts = new Set(recorderContexts.get(browserContext));
|
|
691
|
+
for (const context of recordings.keys())
|
|
692
|
+
contexts.add(context);
|
|
693
|
+
const running = [...contexts].filter(context => context.isRunningToolForRecording(buffered));
|
|
694
|
+
if (!running.length) {
|
|
695
|
+
for (const recorder of recorders)
|
|
696
|
+
log(recorder);
|
|
697
|
+
}
|
|
698
|
+
for (const [context, target] of recordings) {
|
|
699
|
+
if ((!target.state.stopping || flushable) && !running.some(runningContext => runningContext !== context)) {
|
|
700
|
+
record(target);
|
|
701
|
+
context.markRecordingActivity();
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
};
|
|
705
|
+
const params = {
|
|
706
|
+
mode: 'recording',
|
|
707
|
+
recorderMode: 'api',
|
|
708
|
+
omitCallTracking: true,
|
|
709
|
+
language: 'javascript',
|
|
710
|
+
};
|
|
711
|
+
const sink = {
|
|
712
|
+
actionAdded: (page, data, code) => {
|
|
713
|
+
const sequence = ++actionSequence;
|
|
714
|
+
lastActionSequence.set(page, sequence);
|
|
715
|
+
const action = 'action' in data ? data.action : data;
|
|
716
|
+
const isAssertion = action.name.startsWith('assert');
|
|
717
|
+
if (isAssertion)
|
|
718
|
+
code = code.replace(/^(\s*)\/\/ ?/gm, '$1');
|
|
719
|
+
const buffered = actionIsBuffered(action);
|
|
720
|
+
dispatch(buffered, buffered || action.name === 'closePage', recorder => recorder._actionAdded(page, action, isAssertion ? `${expectPrelude}\n${code}` : code, sequence), target => {
|
|
721
|
+
if (isAssertion && !target.actions.some(action => action.code === expectPrelude))
|
|
722
|
+
target.actions.push({ page, code: expectPrelude });
|
|
723
|
+
addMissingPageAlias(target.actions, page, code, target.pageIndexes, browserContext);
|
|
724
|
+
target.actions.push({ page, code, sequence });
|
|
725
|
+
});
|
|
726
|
+
},
|
|
727
|
+
actionUpdated: (page, data, code) => {
|
|
728
|
+
const sequence = lastActionSequence.get(page);
|
|
729
|
+
if (sequence === undefined)
|
|
730
|
+
return;
|
|
731
|
+
const action = 'action' in data ? data.action : data;
|
|
732
|
+
dispatch(true, true, recorder => recorder._actionUpdated(page, action, code, sequence), target => {
|
|
733
|
+
const recorded = target.actions.findLast(action => action.sequence === sequence);
|
|
734
|
+
if (recorded)
|
|
735
|
+
recorded.code = code;
|
|
736
|
+
});
|
|
737
|
+
},
|
|
738
|
+
signalAdded: (page, data, code) => {
|
|
739
|
+
const sequence = lastActionSequence.get(page);
|
|
740
|
+
const signal = 'signal' in data ? data.signal : data;
|
|
741
|
+
dispatch(true, true, recorder => recorder._signalAdded(page, signal, code, sequence), target => {
|
|
742
|
+
if (sequence === undefined)
|
|
743
|
+
return;
|
|
744
|
+
const action = target.actions.findLast(action => action.sequence === sequence);
|
|
745
|
+
if (action && code)
|
|
746
|
+
action.code = code;
|
|
747
|
+
});
|
|
748
|
+
},
|
|
749
|
+
};
|
|
750
|
+
const arm = async () => {
|
|
751
|
+
await browserContext._enableRecorder(params, sink);
|
|
752
|
+
armed = true;
|
|
753
|
+
};
|
|
754
|
+
const created = {
|
|
755
|
+
recorders,
|
|
756
|
+
recordings,
|
|
757
|
+
starting: 0,
|
|
758
|
+
ready: enqueue(arm),
|
|
759
|
+
arm: () => enqueue(arm),
|
|
760
|
+
ensureArmed: () => enqueue(async () => {
|
|
761
|
+
if (armed)
|
|
762
|
+
return;
|
|
763
|
+
await arm();
|
|
764
|
+
}),
|
|
765
|
+
standbyIfIdle: () => enqueue(async () => {
|
|
766
|
+
if (created.starting || recorders.size || recordings.size)
|
|
767
|
+
return;
|
|
768
|
+
try {
|
|
769
|
+
await browserContext._disableRecorder();
|
|
770
|
+
}
|
|
771
|
+
finally {
|
|
772
|
+
armed = false;
|
|
773
|
+
}
|
|
774
|
+
}),
|
|
775
|
+
};
|
|
776
|
+
created.ready.catch(() => {
|
|
777
|
+
if (recorderHubs.get(browserContext) === created)
|
|
778
|
+
recorderHubs.delete(browserContext);
|
|
779
|
+
});
|
|
780
|
+
recorderHubs.set(browserContext, created);
|
|
781
|
+
return created;
|
|
465
782
|
}
|
|
466
|
-
_actionAdded(page,
|
|
783
|
+
_actionAdded(page, action, code, sequence) {
|
|
784
|
+
this._lastActions.set(page, { action, sequence });
|
|
467
785
|
const tab = this._context.tabForPage(page);
|
|
468
786
|
if (tab)
|
|
469
|
-
this._context.sessionLog.logUserAction(
|
|
787
|
+
this._context.sessionLog.logUserAction(action, tab, code, false);
|
|
470
788
|
}
|
|
471
|
-
_actionUpdated(page,
|
|
789
|
+
_actionUpdated(page, action, code, sequence) {
|
|
790
|
+
if (this._lastActions.get(page)?.sequence !== sequence)
|
|
791
|
+
return;
|
|
792
|
+
this._lastActions.set(page, { action, sequence });
|
|
472
793
|
const tab = this._context.tabForPage(page);
|
|
473
794
|
if (tab)
|
|
474
|
-
this._context.sessionLog.logUserAction(
|
|
795
|
+
this._context.sessionLog.logUserAction(action, tab, code, true);
|
|
475
796
|
}
|
|
476
|
-
_signalAdded(page,
|
|
477
|
-
|
|
797
|
+
_signalAdded(page, signal, code, sequence) {
|
|
798
|
+
const lastAction = this._lastActions.get(page);
|
|
799
|
+
if (sequence !== undefined && lastAction?.sequence !== sequence)
|
|
478
800
|
return;
|
|
479
801
|
const tab = this._context.tabForPage(page);
|
|
802
|
+
if (signal.name !== 'navigation' && tab && code && lastAction)
|
|
803
|
+
this._context.sessionLog.logUserAction(lastAction.action, tab, code, true);
|
|
804
|
+
if (signal.name !== 'navigation')
|
|
805
|
+
return;
|
|
480
806
|
const navigateAction = {
|
|
481
807
|
name: 'navigate',
|
|
482
|
-
url:
|
|
808
|
+
url: signal.url,
|
|
483
809
|
signals: [],
|
|
484
810
|
};
|
|
485
811
|
if (tab)
|
|
486
|
-
this._context.sessionLog.logUserAction(navigateAction, tab, `await page.goto('${
|
|
812
|
+
this._context.sessionLog.logUserAction(navigateAction, tab, `await page.goto('${signal.url}');`, false);
|
|
487
813
|
}
|
|
488
814
|
}
|
|
489
815
|
//# sourceMappingURL=context.js.map
|
package/lib/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|