mcp-accessibility-scanner 3.3.1 → 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 +30 -53
  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 +38 -17
  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
@@ -1,6 +1,6 @@
1
- import fs from 'node:fs';
2
1
  import { z } from 'zod';
3
2
  import { defineTabTool } from './tool.js';
3
+ import { writeJsonReport } from './report.js';
4
4
  import { safeIsoTimestampForFileName, sanitizeForFilePath } from '../utils/fileUtils.js';
5
5
  function buildFingerprint(point) {
6
6
  return [
@@ -31,6 +31,10 @@ function isLikelySkipLink(point) {
31
31
  }
32
32
  // WCAG 2.2 SC 2.5.8 Target Size (Minimum), in CSS pixels.
33
33
  const MIN_TARGET_SIZE_PX = 24;
34
+ // Payload caps for the in-page focus probe; passed as evaluate args because
35
+ // the serialized function cannot close over module scope.
36
+ const maxNeighborTargets = 32;
37
+ const maxFocusTextLength = 200;
34
38
  function rectCenter(rect) {
35
39
  return { x: rect.x + rect.width / 2, y: rect.y + rect.height / 2 };
36
40
  }
@@ -166,7 +170,7 @@ export async function runKeyboardFocusAudit(options, callbacks) {
166
170
  skipLinkActivation = {
167
171
  attempted: true,
168
172
  hashChanged,
169
- focusChanged: buildFingerprint(beforeActivation) !== buildFingerprint(afterActivation),
173
+ focusChanged: beforeActivation.fingerprint !== buildFingerprint(afterActivation),
170
174
  scrollChanged: beforeActivation.scrollY !== afterActivation.scrollY || beforeActivation.scrollX !== afterActivation.scrollX,
171
175
  navigationOccurred,
172
176
  urlBefore,
@@ -250,8 +254,13 @@ const auditKeyboard = defineTabTool({
250
254
  type: 'destructive',
251
255
  },
252
256
  handle: async (tab, params, response) => {
257
+ const { reportFile, ...auditOptions } = params;
258
+ const reportFileName = reportFile ?? `audit-keyboard-${safeIsoTimestampForFileName()}.json`;
259
+ const reportPath = await tab.context.outputFile(reportFileName, reportFile !== undefined);
260
+ if (reportFile !== undefined)
261
+ response.deleteFileOnError(reportPath);
253
262
  const getActiveElementInfo = async () => {
254
- return await tab.page.evaluate(() => {
263
+ return await tab.page.evaluate(({ checkTargetSize, checkFocusObscured, minTargetSize, maxNeighborTargets, maxTextLength }) => {
255
264
  const current = document.activeElement;
256
265
  const scrollX = window.scrollX;
257
266
  const scrollY = window.scrollY;
@@ -276,7 +285,7 @@ const auditKeyboard = defineTabTool({
276
285
  }
277
286
  const role = current.getAttribute('role') || current.tagName.toLowerCase();
278
287
  const labelledBy = current.getAttribute('aria-labelledby');
279
- const text = current.textContent?.trim().slice(0, 200) || null;
288
+ const text = current.textContent?.trim().slice(0, maxTextLength) || null;
280
289
  const name = current.getAttribute('aria-label')
281
290
  || labelledBy && document.getElementById(labelledBy)?.textContent?.trim()
282
291
  || current.getAttribute('title')
@@ -293,8 +302,6 @@ const auditKeyboard = defineTabTool({
293
302
  && rect.right >= 0
294
303
  && rect.top <= window.innerHeight
295
304
  && rect.left <= window.innerWidth;
296
- // Kept in sync with MIN_TARGET_SIZE_PX; page.evaluate cannot close over it.
297
- const minTargetSize = 24;
298
305
  // ponytail: target size comes from the layout box, so a target whose visible
299
306
  // area is cut down by an overflow or clip-path ancestor is under-reported.
300
307
  // Intersecting with clipping ancestors was measured against ordinary markup and
@@ -328,7 +335,7 @@ const auditKeyboard = defineTabTool({
328
335
  // sentence; SC 2.5.8's exception is about the sentence, not the display keyword.
329
336
  const inlineTarget = isPointerTarget && style.display.startsWith('inline') && hasSentenceText;
330
337
  const neighborTargets = [];
331
- if (isPointerTarget && (rect.width < minTargetSize || rect.height < minTargetSize)) {
338
+ if (checkTargetSize && isPointerTarget && (rect.width < minTargetSize || rect.height < minTargetSize)) {
332
339
  for (const candidate of document.querySelectorAll(targetSelector)) {
333
340
  if (candidate === current)
334
341
  continue;
@@ -346,7 +353,7 @@ const auditKeyboard = defineTabTool({
346
353
  neighborTargets.push({ x: other.x, y: other.y, width: other.width, height: other.height });
347
354
  // ponytail: payload cap. A cluster denser than 32 neighbors within 48px
348
355
  // would under-report rather than over-report; raise the cap if that appears.
349
- if (neighborTargets.length >= 32)
356
+ if (neighborTargets.length >= maxNeighborTargets)
350
357
  break;
351
358
  }
352
359
  }
@@ -358,7 +365,7 @@ const auditKeyboard = defineTabTool({
358
365
  // SC 2.4.11 applies to anything that receives focus, so this is deliberately not
359
366
  // gated on isPointerTarget: contenteditable, iframes and tabindex-only widgets
360
367
  // are sampled too.
361
- if (rect.width > 0 && rect.height > 0 && clipRight >= clipLeft && clipBottom >= clipTop) {
368
+ if (checkFocusObscured && rect.width > 0 && rect.height > 0 && clipRight >= clipLeft && clipBottom >= clipTop) {
362
369
  const inset = (low, high, value) => Math.min(Math.max(value, low), high);
363
370
  const samples = [
364
371
  [inset(clipLeft, clipRight, clipLeft + 1), inset(clipTop, clipBottom, clipTop + 1)],
@@ -414,7 +421,7 @@ const auditKeyboard = defineTabTool({
414
421
  }
415
422
  return {
416
423
  role,
417
- name: name ? name.slice(0, 200) : null,
424
+ name: name ? name.slice(0, maxTextLength) : null,
418
425
  tagName: current.tagName,
419
426
  id: current.id || null,
420
427
  href: current instanceof HTMLAnchorElement ? current.href : null,
@@ -434,6 +441,12 @@ const auditKeyboard = defineTabTool({
434
441
  scrollX,
435
442
  scrollY,
436
443
  };
444
+ }, {
445
+ checkTargetSize: auditOptions.checkTargetSize,
446
+ checkFocusObscured: auditOptions.checkFocusObscured,
447
+ minTargetSize: MIN_TARGET_SIZE_PX,
448
+ maxNeighborTargets,
449
+ maxTextLength: maxFocusTextLength,
437
450
  });
438
451
  };
439
452
  const captureScreenshot = async (label) => {
@@ -441,7 +454,6 @@ const auditKeyboard = defineTabTool({
441
454
  await tab.page.screenshot({ path: fileName, fullPage: true });
442
455
  return fileName;
443
456
  };
444
- const { reportFile, ...auditOptions } = params;
445
457
  const result = await runKeyboardFocusAudit(auditOptions, {
446
458
  pressKey: async (key) => {
447
459
  await tab.waitForCompletion(async () => {
@@ -471,14 +483,10 @@ const auditKeyboard = defineTabTool({
471
483
  },
472
484
  ...result,
473
485
  };
474
- const reportFileName = sanitizeForFilePath(reportFile ?? `audit-keyboard-${safeIsoTimestampForFileName()}.json`);
475
- const reportPath = await tab.context.outputFile(reportFileName);
476
- await fs.promises.writeFile(reportPath, JSON.stringify(report, null, 2), 'utf-8');
477
- const reportResourceLink = response.addFileResourceLink(reportPath, {
486
+ const reportResource = await writeJsonReport(response, reportPath, report, {
478
487
  name: 'audit-keyboard-report',
479
488
  title: 'Audit keyboard JSON report',
480
489
  description: 'JSON report for keyboard navigation, focus, and skip-link findings.',
481
- mimeType: 'application/json',
482
490
  });
483
491
  const screenshotResources = result.screenshots.map((screenshotPath, index) => {
484
492
  const link = response.addFileResourceLink(screenshotPath, {
@@ -497,13 +505,7 @@ const auditKeyboard = defineTabTool({
497
505
  });
498
506
  response.setStructuredContent({
499
507
  kind: 'audit_keyboard',
500
- report: {
501
- path: reportPath,
502
- uri: reportResourceLink.uri,
503
- name: reportResourceLink.name,
504
- title: reportResourceLink.title ?? null,
505
- mimeType: reportResourceLink.mimeType ?? null,
506
- },
508
+ report: reportResource,
507
509
  page: {
508
510
  url: tab.page.url(),
509
511
  },
@@ -521,7 +523,7 @@ const auditKeyboard = defineTabTool({
521
523
  screenshotCount: result.screenshots.length,
522
524
  },
523
525
  screenshots: screenshotResources,
524
- reportUri: reportResourceLink.uri,
526
+ reportUri: reportResource.uri,
525
527
  });
526
528
  const focusVisibilityPreview = result.focusVisibilityIssues.slice(0, 10).map(stop => (`- Step ${stop.step} (${stop.key}): ${stop.role ?? 'unknown-role'} ${stop.name ?? ''}`.trim()));
527
529
  const focusJumpPreview = result.focusJumpIssues.slice(0, 10).map(stop => (`- Step ${stop.step}: deltaY=${stop.scrollDeltaY}, inViewport=${stop.inViewport}`));
@@ -548,7 +550,7 @@ const auditKeyboard = defineTabTool({
548
550
  ...(focusObscuredPreview.length ? focusObscuredPreview : ['- None']),
549
551
  ...(result.screenshots.length ? ['', 'Issue screenshots:', ...result.screenshots.map(path => `- ${path}`)] : []),
550
552
  '',
551
- `JSON report: ${reportPath}`,
553
+ `JSON report: ${reportResource.path}`,
552
554
  ].join('\n'));
553
555
  },
554
556
  });
@@ -1 +1 @@
1
- {"version":3,"file":"auditKeyboard.js","sourceRoot":"","sources":["../../src/tools/auditKeyboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auditKeyboard.js","sourceRoot":"","sources":["../../src/tools/auditKeyboard.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import fs from 'node:fs';
2
1
  import { z } from 'zod';
3
2
  import { defineTabTool } from './tool.js';
4
3
  import { frameConcurrency, frameReadTimeoutMs, injectAxeForNames, withConcurrency, withFrameTimeout } from './axe.js';
5
- import { safeIsoTimestampForFileName, sanitizeForFilePath } from '../utils/fileUtils.js';
4
+ import { writeJsonReport } from './report.js';
5
+ import { safeIsoTimestampForFileName } from '../utils/fileUtils.js';
6
6
  // Roles that a screen-reader user reaches out of context, so an empty or
7
7
  // meaningless accessible name leaves them with nothing to act on.
8
8
  const namedRoles = new Set([
@@ -26,6 +26,9 @@ const filenameNamePattern = /\.(jpe?g|png|gif|webp|svg|avif|bmp|tiff?|ico)$/i;
26
26
  const cameraFileNamePattern = /^(img|dsc|dscn|pxl|screenshot|image|photo)[-_ ]?\d{3,}$/i;
27
27
  // Refs are resolved and measured in chunks of this size.
28
28
  const measureChunkSize = 50;
29
+ // Budget for resolving one ref to an element handle: a ref gone stale must
30
+ // not cost a full frame read per element, so it is bounded separately.
31
+ const refResolutionTimeoutMs = 1000;
29
32
  // Bands narrower than this are noise (sr-only clip boxes, 1px spacers).
30
33
  const minLayoutSizePx = 2;
31
34
  const layoutTolerancePx = 1;
@@ -80,7 +83,19 @@ function overlapRatio(a, b, axis) {
80
83
  }
81
84
  function countBands(rects, axis) {
82
85
  const band = rects.map((_, index) => index);
83
- const rootOf = (index) => band[index] === index ? index : rootOf(band[index]);
86
+ // Iterative find with write-back path compression, so a long union chain
87
+ // costs O(1) per lookup instead of a walk each time.
88
+ const rootOf = (index) => {
89
+ let root = index;
90
+ while (band[root] !== root)
91
+ root = band[root];
92
+ while (band[index] !== root) {
93
+ const next = band[index];
94
+ band[index] = root;
95
+ index = next;
96
+ }
97
+ return root;
98
+ };
84
99
  for (let i = 0; i < rects.length; i++) {
85
100
  for (let j = i + 1; j < rects.length; j++) {
86
101
  if (overlapRatio(rects[i], rects[j], axis) >= bandOverlapRatio)
@@ -738,6 +753,10 @@ const auditScreenReader = defineTabTool({
738
753
  type: 'readOnly',
739
754
  },
740
755
  handle: async (tab, params, response) => {
756
+ const reportFileName = params.reportFile ?? `audit-screen-reader-${safeIsoTimestampForFileName()}.json`;
757
+ const reportPath = await tab.context.outputFile(reportFileName, params.reportFile !== undefined);
758
+ if (params.reportFile !== undefined)
759
+ response.deleteFileOnError(reportPath);
741
760
  const ariaNodes = parseAriaSnapshot(await tab.page.ariaSnapshot({ mode: 'ai' }));
742
761
  const refIndexes = ariaNodes.map((node, index) => node.ref ? index : -1).filter(index => index >= 0);
743
762
  const childCounts = new Map();
@@ -769,7 +788,7 @@ const auditScreenReader = defineTabTool({
769
788
  }
770
789
  let settled = false;
771
790
  let timedOut = false;
772
- const work = Promise.resolve().then(start).then(value => {
791
+ const work = Promise.resolve().then(start).catch(() => fallback).then(value => {
773
792
  settled = true;
774
793
  frameWork.inFlight--;
775
794
  if (timedOut)
@@ -777,14 +796,6 @@ const auditScreenReader = defineTabTool({
777
796
  wakeFrameWork(frameWork);
778
797
  onSettled?.(value, timedOut);
779
798
  return value;
780
- }, () => {
781
- settled = true;
782
- frameWork.inFlight--;
783
- if (timedOut)
784
- frameWork.timedOut--;
785
- wakeFrameWork(frameWork);
786
- onSettled?.(fallback, timedOut);
787
- return fallback;
788
799
  });
789
800
  const value = await withFrameTimeout(work, fallback, frameReadTimeoutMs(frame));
790
801
  if (!settled) {
@@ -797,28 +808,6 @@ const auditScreenReader = defineTabTool({
797
808
  const disposeHandles = (handles) => {
798
809
  void Promise.all(handles.map(handle => handle.dispose().catch(() => undefined)));
799
810
  };
800
- const injectFrameAxe = async (frame, onSettled) => {
801
- if (!await reserveFrameWork(frameWork)) {
802
- frameWorkSaturated = true;
803
- return { value: false, timedOut: false, started: false };
804
- }
805
- let settled = false;
806
- let timedOut = false;
807
- const value = await injectAxeForNames(frame, installed => {
808
- settled = true;
809
- frameWork.inFlight--;
810
- if (timedOut)
811
- frameWork.timedOut--;
812
- wakeFrameWork(frameWork);
813
- onSettled?.(installed, timedOut);
814
- });
815
- if (!settled) {
816
- timedOut = true;
817
- frameWork.timedOut++;
818
- wakeFrameWork(frameWork);
819
- }
820
- return { value, timedOut: !settled, started: true };
821
- };
822
811
  // maxElements budgets the elements a screen reader can actually reach: the
823
812
  // AI snapshot also refs aria-hidden subtrees, and slicing the raw ref list
824
813
  // let those spend the whole budget and leave every visible control below
@@ -833,7 +822,7 @@ const auditScreenReader = defineTabTool({
833
822
  const size = Math.min(measureChunkSize, params.maxElements - reachable, measureCeiling - start);
834
823
  const chunk = refIndexes.slice(start, start + size);
835
824
  start += size;
836
- const handles = await Promise.all(chunk.map(index => tab.page.locator(`aria-ref=${ariaNodes[index].ref}`).elementHandle({ timeout: 1000 }).catch(() => null)));
825
+ const handles = await Promise.all(chunk.map(index => tab.page.locator(`aria-ref=${ariaNodes[index].ref}`).elementHandle({ timeout: refResolutionTimeoutMs }).catch(() => null)));
837
826
  // The owner lookup is a renderer round-trip too, so a frame that stopped
838
827
  // answering since the resolution above would hold the audit here. It is
839
828
  // bounded, and since the owner is what the lookup finds, given the larger
@@ -855,9 +844,7 @@ const auditScreenReader = defineTabTool({
855
844
  const byFrame = new Map();
856
845
  for (const [position, handle] of handles.entries()) {
857
846
  const frame = owners[position];
858
- if (!handle)
859
- continue;
860
- if (!frame)
847
+ if (!handle || !frame)
861
848
  continue;
862
849
  const batch = byFrame.get(frame);
863
850
  if (batch)
@@ -874,7 +861,7 @@ const auditScreenReader = defineTabTool({
874
861
  if (measureNames) {
875
862
  let installed = axeByFrame.get(frame);
876
863
  if (installed === undefined) {
877
- const installation = await injectFrameAxe(frame, (installed, timedOut) => {
864
+ const installation = await runFrameWork(() => injectAxeForNames(frame), false, frame, (installed, timedOut) => {
878
865
  if (timedOut) {
879
866
  axeByFrame.set(frame, installed);
880
867
  unavailableFrames.delete(frame);
@@ -986,24 +973,14 @@ const auditScreenReader = defineTabTool({
986
973
  truncatedChecks: result.truncatedChecks,
987
974
  findings: result.findings,
988
975
  };
989
- const reportFileName = sanitizeForFilePath(params.reportFile ?? `audit-screen-reader-${safeIsoTimestampForFileName()}.json`);
990
- const reportPath = await tab.context.outputFile(reportFileName);
991
- await fs.promises.writeFile(reportPath, JSON.stringify(report, null, 2), 'utf-8');
992
- const reportResourceLink = response.addFileResourceLink(reportPath, {
976
+ const reportResource = await writeJsonReport(response, reportPath, report, {
993
977
  name: 'audit-screen-reader-report',
994
978
  title: 'Audit screen reader JSON report',
995
979
  description: 'JSON report for accessible name quality and reading order findings.',
996
- mimeType: 'application/json',
997
980
  });
998
981
  response.setStructuredContent({
999
982
  kind: 'audit_screen_reader',
1000
- report: {
1001
- path: reportPath,
1002
- uri: reportResourceLink.uri,
1003
- name: reportResourceLink.name,
1004
- title: reportResourceLink.title ?? null,
1005
- mimeType: reportResourceLink.mimeType ?? null,
1006
- },
983
+ report: reportResource,
1007
984
  page: {
1008
985
  url: tab.page.url(),
1009
986
  },
@@ -1018,7 +995,7 @@ const auditScreenReader = defineTabTool({
1018
995
  truncatedChecks: result.truncatedChecks,
1019
996
  },
1020
997
  findings: result.findings,
1021
- reportUri: reportResourceLink.uri,
998
+ reportUri: reportResource.uri,
1022
999
  });
1023
1000
  const findingLines = result.findings.map(finding => (`- [${finding.check}] WCAG ${finding.wcag} — ${finding.problem}\n Fix: ${finding.fix}${finding.ref ? `\n Ref: ${finding.ref}` : ''}`));
1024
1001
  response.addCode('// Read the accessibility tree with page.ariaSnapshot() and compared names and geometry against reading order.');
@@ -1044,7 +1021,7 @@ const auditScreenReader = defineTabTool({
1044
1021
  '',
1045
1022
  ...(findingLines.length ? findingLines : ['- No screen-reader-level issues detected.']),
1046
1023
  '',
1047
- `JSON report: ${reportPath}`,
1024
+ `JSON report: ${reportResource.path}`,
1048
1025
  ].join('\n'));
1049
1026
  },
1050
1027
  });