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.
Files changed (63) hide show
  1. package/README.md +74 -5
  2. package/config.d.ts +30 -0
  3. package/lib/browserServerBackend.js +6 -0
  4. package/lib/browserServerBackend.js.map +1 -1
  5. package/lib/browserSessions.js +3 -0
  6. package/lib/browserSessions.js.map +1 -1
  7. package/lib/config.js +56 -10
  8. package/lib/config.js.map +1 -1
  9. package/lib/context.js +382 -56
  10. package/lib/context.js.map +1 -1
  11. package/lib/extension/cdpRelay.js +28 -6
  12. package/lib/extension/cdpRelay.js.map +1 -1
  13. package/lib/extension/extensionContextFactory.js +11 -6
  14. package/lib/extension/extensionContextFactory.js.map +1 -1
  15. package/lib/mcp/http.js +115 -41
  16. package/lib/mcp/http.js.map +1 -1
  17. package/lib/mcp/server.js +16 -8
  18. package/lib/mcp/server.js.map +1 -1
  19. package/lib/mcp/tool.js +11 -9
  20. package/lib/mcp/tool.js.map +1 -1
  21. package/lib/program.js +6 -3
  22. package/lib/program.js.map +1 -1
  23. package/lib/response.js +14 -2
  24. package/lib/response.js.map +1 -1
  25. package/lib/sessionLog.js +66 -20
  26. package/lib/sessionLog.js.map +1 -1
  27. package/lib/tab.js +13 -7
  28. package/lib/tab.js.map +1 -1
  29. package/lib/tools/auditKeyboard.js +27 -25
  30. package/lib/tools/auditKeyboard.js.map +1 -1
  31. package/lib/tools/auditScreenReader.js +27 -18
  32. package/lib/tools/auditScreenReader.js.map +1 -1
  33. package/lib/tools/auditSite.js +88 -56
  34. package/lib/tools/auditSite.js.map +1 -1
  35. package/lib/tools/axe.js +32 -7
  36. package/lib/tools/axe.js.map +1 -1
  37. package/lib/tools/common.js +39 -1
  38. package/lib/tools/common.js.map +1 -1
  39. package/lib/tools/files.js +55 -1
  40. package/lib/tools/files.js.map +1 -1
  41. package/lib/tools/pdf.js +4 -2
  42. package/lib/tools/pdf.js.map +1 -1
  43. package/lib/tools/recorder.js +52 -0
  44. package/lib/tools/recorder.js.map +1 -0
  45. package/lib/tools/report.js +13 -0
  46. package/lib/tools/report.js.map +1 -0
  47. package/lib/tools/scanPageMatrix.js +20 -33
  48. package/lib/tools/scanPageMatrix.js.map +1 -1
  49. package/lib/tools/screenshot.js +6 -3
  50. package/lib/tools/screenshot.js.map +1 -1
  51. package/lib/tools/snapshot.js +5 -2
  52. package/lib/tools/snapshot.js.map +1 -1
  53. package/lib/tools.js +2 -0
  54. package/lib/tools.js.map +1 -1
  55. package/lib/vscode/browserContextFactory.js +11 -4
  56. package/lib/vscode/browserContextFactory.js.map +1 -1
  57. package/lib/vscode/host.js +25 -2
  58. package/lib/vscode/host.js.map +1 -1
  59. package/lib/vscode/main.js +15 -0
  60. package/lib/vscode/main.js.map +1 -1
  61. package/lib/vscode/validation.js +78 -0
  62. package/lib/vscode/validation.js.map +1 -0
  63. 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
- await browserContext.tracing.stop();
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.close();
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
- void this.closeBrowserContext();
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
- let hub = recorderHubs.get(browserContext);
413
- if (!hub) {
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)?.recorders.delete(this);
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, data, code) {
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(data.action, tab, code, false);
787
+ this._context.sessionLog.logUserAction(action, tab, code, false);
470
788
  }
471
- _actionUpdated(page, data, code) {
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(data.action, tab, code, true);
795
+ this._context.sessionLog.logUserAction(action, tab, code, true);
475
796
  }
476
- _signalAdded(page, data) {
477
- if (data.signal.name !== 'navigation')
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: data.signal.url,
808
+ url: signal.url,
483
809
  signals: [],
484
810
  };
485
811
  if (tab)
486
- this._context.sessionLog.logUserAction(navigateAction, tab, `await page.goto('${data.signal.url}');`, false);
812
+ this._context.sessionLog.logUserAction(navigateAction, tab, `await page.goto('${signal.url}');`, false);
487
813
  }
488
814
  }
489
815
  //# sourceMappingURL=context.js.map
@@ -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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"}