mcp-accessibility-scanner 3.0.1 → 3.2.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 +265 -12
- package/index.d.ts +1 -1
- package/lib/browserContextFactory.js +1161 -94
- package/lib/browserContextFactory.js.map +1 -1
- package/lib/browserServerBackend.js +199 -22
- package/lib/browserServerBackend.js.map +1 -1
- package/lib/browserSessions.js +172 -0
- package/lib/browserSessions.js.map +1 -0
- package/lib/config.js +48 -7
- package/lib/config.js.map +1 -1
- package/lib/context.js +321 -71
- package/lib/context.js.map +1 -1
- package/lib/extension/cdpRelay.js +5 -0
- package/lib/extension/cdpRelay.js.map +1 -1
- package/lib/extension/extensionContextFactory.js +12 -1
- package/lib/extension/extensionContextFactory.js.map +1 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/mcp/http.js +194 -44
- package/lib/mcp/http.js.map +1 -1
- package/lib/mcp/inProcessTransport.js.map +1 -1
- package/lib/mcp/mdb.js +7 -9
- package/lib/mcp/mdb.js.map +1 -1
- package/lib/mcp/proxyBackend.js +76 -18
- package/lib/mcp/proxyBackend.js.map +1 -1
- package/lib/mcp/server.js +70 -41
- package/lib/mcp/server.js.map +1 -1
- package/lib/mcp/sharedClientSlot.js +134 -0
- package/lib/mcp/sharedClientSlot.js.map +1 -0
- package/lib/mcp/tool.js +3 -0
- package/lib/mcp/tool.js.map +1 -1
- package/lib/networkPolicy.js +73 -0
- package/lib/networkPolicy.js.map +1 -0
- package/lib/program.js +91 -12
- package/lib/program.js.map +1 -1
- package/lib/response.js +16 -3
- package/lib/response.js.map +1 -1
- package/lib/sessionLog.js +36 -6
- package/lib/sessionLog.js.map +1 -1
- package/lib/tab.js +149 -18
- package/lib/tab.js.map +1 -1
- package/lib/tools/auditKeyboard.js +204 -4
- package/lib/tools/auditKeyboard.js.map +1 -1
- package/lib/tools/auditScreenReader.js +823 -0
- package/lib/tools/auditScreenReader.js.map +1 -0
- package/lib/tools/auditSite.js +268 -90
- package/lib/tools/auditSite.js.map +1 -1
- package/lib/tools/axe.js +479 -21
- package/lib/tools/axe.js.map +1 -1
- package/lib/tools/dialogs.js +18 -4
- package/lib/tools/dialogs.js.map +1 -1
- package/lib/tools/evaluate.js +34 -5
- package/lib/tools/evaluate.js.map +1 -1
- package/lib/tools/network.js +136 -8
- package/lib/tools/network.js.map +1 -1
- package/lib/tools/pdf.js +5 -2
- package/lib/tools/pdf.js.map +1 -1
- package/lib/tools/scanPageMatrix.js +135 -47
- package/lib/tools/scanPageMatrix.js.map +1 -1
- package/lib/tools/screenshot.js +8 -4
- package/lib/tools/screenshot.js.map +1 -1
- package/lib/tools/session.js +53 -0
- package/lib/tools/session.js.map +1 -0
- package/lib/tools/snapshot.js +266 -8
- package/lib/tools/snapshot.js.map +1 -1
- package/lib/tools/tool.js.map +1 -1
- package/lib/tools/utils.js +62 -6
- package/lib/tools/utils.js.map +1 -1
- package/lib/tools.js +11 -2
- package/lib/tools.js.map +1 -1
- package/lib/utils/dataUrl.js +58 -35
- package/lib/utils/dataUrl.js.map +1 -1
- package/lib/utils/fileUtils.js +35 -0
- package/lib/utils/fileUtils.js.map +1 -1
- package/lib/utils/guid.js +8 -0
- package/lib/utils/guid.js.map +1 -1
- package/lib/utils/jsSource.js +187 -0
- package/lib/utils/jsSource.js.map +1 -0
- package/lib/vscode/browserContextFactory.js +87 -0
- package/lib/vscode/browserContextFactory.js.map +1 -0
- package/lib/vscode/host.js +189 -33
- package/lib/vscode/host.js.map +1 -1
- package/lib/vscode/main.js +3 -35
- package/lib/vscode/main.js.map +1 -1
- package/package.json +13 -9
package/lib/tools/snapshot.js
CHANGED
|
@@ -13,19 +13,39 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import crypto from 'node:crypto';
|
|
16
17
|
import RE2 from 're2';
|
|
17
18
|
import { z } from 'zod';
|
|
18
19
|
import { defineTabTool, defineTool } from './tool.js';
|
|
19
20
|
import * as javascript from '../utils/codegen.js';
|
|
20
21
|
import { generateLocator } from './utils.js';
|
|
21
|
-
import { axeTagValues, dedupeAxeNodes, runAxeScan } from './axe.js';
|
|
22
|
+
import { axeRuleSchemaShape, axeScopeSchemaShape, axeTagValues, dedupeAxeNodes, defaultAxeTags, prepareAxeResults, runAxeScan, unscannedFrameLines } from './axe.js';
|
|
22
23
|
import { truncateDataUrls } from '../utils/dataUrl.js';
|
|
24
|
+
import { safeIsoTimestampForFileName } from '../utils/fileUtils.js';
|
|
25
|
+
const maxAnnotatedElements = 50;
|
|
23
26
|
const scanPageSchema = z.object({
|
|
24
27
|
violationsTag: z
|
|
25
28
|
.array(z.enum(axeTagValues))
|
|
26
29
|
.min(1)
|
|
27
|
-
.default([...
|
|
28
|
-
.describe('
|
|
30
|
+
.default([...defaultAxeTags])
|
|
31
|
+
.describe('Axe tags to scan for. Defaults to the WCAG and Section 508 conformance tags, so a default report means "this fails a conformance criterion". The category tags ("cat.*") and "best-practice" also select rules that are not conformance failures, so they must be requested explicitly.'),
|
|
32
|
+
includeIncomplete: z
|
|
33
|
+
.boolean()
|
|
34
|
+
.default(true)
|
|
35
|
+
.describe('Include Axe "incomplete" results — checks Axe could not decide automatically (e.g. contrast over an image). Inspect the page yourself to resolve them.'),
|
|
36
|
+
maxNodesPerViolation: z
|
|
37
|
+
.number()
|
|
38
|
+
.int()
|
|
39
|
+
.min(1)
|
|
40
|
+
.max(50)
|
|
41
|
+
.default(10)
|
|
42
|
+
.describe('Maximum nodes reported per rule. Raise it when you need every occurrence of a rule rather than a sample.'),
|
|
43
|
+
annotateScreenshot: z
|
|
44
|
+
.boolean()
|
|
45
|
+
.default(false)
|
|
46
|
+
.describe(`Capture a full-page PNG with every violating element outlined and labelled with its rule ids, then remove the markers. Off by default because screenshots are expensive. At most ${maxAnnotatedElements} elements are marked; nodes that are hidden, zero-size, off-canvas, or inside an iframe cannot be marked and are reported as skipped.`),
|
|
47
|
+
...axeScopeSchemaShape,
|
|
48
|
+
...axeRuleSchemaShape,
|
|
29
49
|
});
|
|
30
50
|
const snapshotSchema = z.object({
|
|
31
51
|
compress: z.boolean().optional().describe('Collapse repeated non-interactive ARIA nodes in large snapshots when a repeated structural pattern appears more than 100 times. Keeps the first 10 examples of each collapsed pattern. Use browser_evaluate() to retrieve the full list if needed.'),
|
|
@@ -50,22 +70,225 @@ const scanPage = defineTool({
|
|
|
50
70
|
},
|
|
51
71
|
handle: async (context, params, response) => {
|
|
52
72
|
const tab = context.currentTabOrDie();
|
|
53
|
-
const results = await runAxeScan(tab.page,
|
|
73
|
+
const results = await runAxeScan(tab.page, {
|
|
74
|
+
tags: params.violationsTag,
|
|
75
|
+
rules: params.withRules,
|
|
76
|
+
disableRules: params.disableRules,
|
|
77
|
+
include: params.includeSelectors,
|
|
78
|
+
exclude: params.excludeSelectors,
|
|
79
|
+
});
|
|
80
|
+
const annotationLines = params.annotateScreenshot
|
|
81
|
+
? await annotateAndScreenshot(tab, results.violations, response)
|
|
82
|
+
: [];
|
|
83
|
+
// Omit the incomplete count entirely when it was not requested, matching
|
|
84
|
+
// audit_site: a bare "Incomplete: 3" with no rule blocks below reads as
|
|
85
|
+
// findings that were dropped from the report.
|
|
86
|
+
const incompleteCount = params.includeIncomplete ? `Incomplete: ${results.incomplete.length}, ` : '';
|
|
54
87
|
response.addResult([
|
|
55
88
|
`URL: ${results.url}`,
|
|
56
89
|
'',
|
|
57
|
-
`Violations: ${results.violations.length},
|
|
90
|
+
`Violations: ${results.violations.length}, ${incompleteCount}Passes: ${results.passes.length}, Inapplicable: ${results.inapplicable.length}`,
|
|
91
|
+
...unscannedFrameLines(results.unscannedFrames),
|
|
92
|
+
...annotationLines,
|
|
58
93
|
].join('\n'));
|
|
59
|
-
|
|
60
|
-
|
|
94
|
+
// Trimmed nodes drop axe's any/all/none check arrays, which are the bulk of
|
|
95
|
+
// a raw result — a content-heavy page otherwise serializes to ~1MB here.
|
|
96
|
+
const { deduped, trimmed: violations } = prepareAxeResults(results.violations, params.maxNodesPerViolation);
|
|
97
|
+
violations.forEach((violation, index) => {
|
|
61
98
|
response.addResult([
|
|
62
99
|
'',
|
|
100
|
+
`Violation rule: ${violation.id} (${violation.impact ?? 'unknown'}) — ${violation.help}`,
|
|
101
|
+
`Help: ${violation.helpUrl}`,
|
|
63
102
|
`Tags : ${violation.tags}`,
|
|
64
|
-
`Violations: ${JSON.stringify(
|
|
103
|
+
`Violations${nodeCountSuffix(violation.nodes.length, deduped[index].nodes.length)}: ${JSON.stringify(violation.nodes, null, 2)}`,
|
|
65
104
|
].join('\n'));
|
|
66
105
|
});
|
|
106
|
+
if (params.includeIncomplete && results.incomplete.length) {
|
|
107
|
+
const incomplete = prepareAxeResults(results.incomplete, params.maxNodesPerViolation);
|
|
108
|
+
response.addResult([
|
|
109
|
+
'',
|
|
110
|
+
`Incomplete (needs review — Axe could not decide, verify these on the page): ${incomplete.trimmed.length} rule(s)`,
|
|
111
|
+
].join('\n'));
|
|
112
|
+
incomplete.trimmed.forEach((item, index) => {
|
|
113
|
+
response.addResult([
|
|
114
|
+
'',
|
|
115
|
+
`Incomplete rule: ${item.id} (${item.impact ?? 'unknown'}) — ${item.help}`,
|
|
116
|
+
`Help: ${item.helpUrl}`,
|
|
117
|
+
`Nodes${nodeCountSuffix(item.nodes.length, incomplete.deduped[index].nodes.length)}: ${JSON.stringify(item.nodes, null, 2)}`,
|
|
118
|
+
].join('\n'));
|
|
119
|
+
});
|
|
120
|
+
}
|
|
67
121
|
},
|
|
68
122
|
});
|
|
123
|
+
// Node lists are capped by maxNodesPerViolation; say so rather than letting a
|
|
124
|
+
// rule with 40 occurrences look identical to one with 10.
|
|
125
|
+
function nodeCountSuffix(shown, total) {
|
|
126
|
+
return shown < total ? ` (showing ${shown} of ${total} nodes, raise maxNodesPerViolation for the rest)` : '';
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Draws a labelled outline over every violating element, screenshots the page,
|
|
130
|
+
* then removes the markers. Returns the lines to append to the tool result.
|
|
131
|
+
*/
|
|
132
|
+
async function annotateAndScreenshot(tab, violations, response) {
|
|
133
|
+
const marks = new Map();
|
|
134
|
+
let totalNodes = 0;
|
|
135
|
+
let unreachableNodes = 0;
|
|
136
|
+
let queuedNodes = 0;
|
|
137
|
+
for (const violation of violations) {
|
|
138
|
+
for (const node of dedupeAxeNodes(violation.nodes)) {
|
|
139
|
+
totalNodes++;
|
|
140
|
+
const target = node.target ?? [];
|
|
141
|
+
// A target with more than one step is nested inside an iframe, which
|
|
142
|
+
// page.evaluate cannot reach from the top document. A single step may
|
|
143
|
+
// still be an array — that is a path through open shadow roots, which we
|
|
144
|
+
// can walk, so flatten it rather than rejecting it as cross-frame.
|
|
145
|
+
const path = (target.length === 1 ? [target[0]].flat(Infinity) : []);
|
|
146
|
+
if (!path.length || path.some(step => typeof step !== 'string')) {
|
|
147
|
+
unreachableNodes++;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
const key = JSON.stringify(path);
|
|
151
|
+
const existing = marks.get(key);
|
|
152
|
+
// One element commonly fails several rules. Keep a single box listing
|
|
153
|
+
// every rule id instead of stacking boxes whose labels hide each other.
|
|
154
|
+
if (existing)
|
|
155
|
+
existing.labels.push(violation.id);
|
|
156
|
+
else if (marks.size < maxAnnotatedElements)
|
|
157
|
+
marks.set(key, { path: path, labels: [violation.id] });
|
|
158
|
+
else
|
|
159
|
+
continue;
|
|
160
|
+
queuedNodes++;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
const fileName = await tab.context.outputFile(`scan-page-annotated-${safeIsoTimestampForFileName()}.png`);
|
|
164
|
+
// Unique per scan: cleanup resolves the id document-order first, so a fixed
|
|
165
|
+
// id would delete the audited page's own element if it already used it.
|
|
166
|
+
const layerId = `mcp-a11y-annotation-layer-${crypto.randomUUID()}`;
|
|
167
|
+
let markedNodes = 0;
|
|
168
|
+
try {
|
|
169
|
+
markedNodes = await drawAnnotations(tab.page, layerId, [...marks.values()]);
|
|
170
|
+
await tab.page.screenshot({ path: fileName, fullPage: true });
|
|
171
|
+
}
|
|
172
|
+
finally {
|
|
173
|
+
await tab.page.evaluate(id => {
|
|
174
|
+
const layer = document.getElementById(id);
|
|
175
|
+
// Restart only what drawing paused, so a page that paused its own
|
|
176
|
+
// animations still has them paused afterwards.
|
|
177
|
+
layer?.mcpPausedAnimations?.forEach(animation => animation.play());
|
|
178
|
+
layer?.remove();
|
|
179
|
+
}, layerId);
|
|
180
|
+
}
|
|
181
|
+
response.addFileResourceLink(fileName, {
|
|
182
|
+
name: 'scan-page-annotated-screenshot',
|
|
183
|
+
title: 'Annotated violation screenshot',
|
|
184
|
+
description: 'Full-page screenshot with violating elements outlined and labelled with their rule id.',
|
|
185
|
+
mimeType: 'image/png',
|
|
186
|
+
});
|
|
187
|
+
const truncatedNodes = totalNodes - unreachableNodes - queuedNodes;
|
|
188
|
+
const invisibleNodes = queuedNodes - markedNodes;
|
|
189
|
+
return [
|
|
190
|
+
'',
|
|
191
|
+
`Annotated screenshot: ${fileName}`,
|
|
192
|
+
`Marked ${markedNodes} of ${totalNodes} violating nodes.`,
|
|
193
|
+
...(markedNodes < totalNodes ? [
|
|
194
|
+
`Not marked: ${truncatedNodes} over the ${maxAnnotatedElements}-element annotation limit, ${invisibleNodes} hidden, zero-size or off-canvas, ${unreachableNodes} inside an iframe.`,
|
|
195
|
+
] : []),
|
|
196
|
+
];
|
|
197
|
+
}
|
|
198
|
+
async function drawAnnotations(page, layerId, marks) {
|
|
199
|
+
return await page.evaluate(({ marks, layerId }) => {
|
|
200
|
+
// Playwright leaves animations running, so a target that is moving would
|
|
201
|
+
// drift between the measurement below and the screenshot and leave its
|
|
202
|
+
// marker behind. The cleanup evaluate resumes exactly these.
|
|
203
|
+
const paused = document.getAnimations().filter(animation => animation.playState === 'running');
|
|
204
|
+
for (const animation of paused)
|
|
205
|
+
animation.pause();
|
|
206
|
+
const layer = document.createElement('div');
|
|
207
|
+
layer.id = layerId;
|
|
208
|
+
layer.mcpPausedAnimations = paused;
|
|
209
|
+
// Absolutely positioned and out of flow, so the layer can never reflow the
|
|
210
|
+
// page we are about to photograph. It starts 100px square as a probe: the
|
|
211
|
+
// rendered size of a known length reveals the scale a CSS zoom or an
|
|
212
|
+
// ancestor transform applies to every length we write inside the layer.
|
|
213
|
+
// The overrides after `display` neutralise the UA popover stylesheet.
|
|
214
|
+
// Every declaration is !important: an important inline declaration outranks
|
|
215
|
+
// any author rule, so page CSS such as `div { display: none !important }`
|
|
216
|
+
// or `[popover] { opacity: 0 }` cannot hide the layer we are counting on.
|
|
217
|
+
layer.style.cssText = 'display:block;position:absolute;left:0;top:0;right:auto;bottom:auto;margin:0;border:0;padding:0;background:none;overflow:visible;width:100px;height:100px;z-index:2147483647;pointer-events:none;visibility:visible;opacity:1;transform:none;filter:none;clip-path:none;animation:none;transition:none;'
|
|
218
|
+
.replace(/;/g, '!important;');
|
|
219
|
+
// The markers live in a shadow root so page selectors cannot reach them at
|
|
220
|
+
// all; only inherited properties cross the boundary, and the host resets
|
|
221
|
+
// those it cares about above.
|
|
222
|
+
const root = layer.attachShadow({ mode: 'open' });
|
|
223
|
+
document.body.appendChild(layer);
|
|
224
|
+
// A manual popover joins the top layer, which paints above any open dialog,
|
|
225
|
+
// popover or fullscreen element — those sit above every z-index otherwise.
|
|
226
|
+
try {
|
|
227
|
+
layer.popover = 'manual';
|
|
228
|
+
layer.showPopover();
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
// Engine without popover support: markers stay below top-layer content.
|
|
232
|
+
layer.removeAttribute('popover');
|
|
233
|
+
}
|
|
234
|
+
// The layer's own rect tells us where its (0,0) landed, which is not the
|
|
235
|
+
// document origin when an ancestor is itself positioned.
|
|
236
|
+
const origin = layer.getBoundingClientRect();
|
|
237
|
+
// ponytail: uniform scale only — a rotated or skewed ancestor still
|
|
238
|
+
// misplaces markers. Fixing that needs the full transform matrix.
|
|
239
|
+
const scaleX = origin.width / 100 || 1;
|
|
240
|
+
const scaleY = origin.height / 100 || 1;
|
|
241
|
+
layer.style.setProperty('width', '0px', 'important');
|
|
242
|
+
layer.style.setProperty('height', '0px', 'important');
|
|
243
|
+
// A full-page screenshot is clipped to the document box, so anything drawn
|
|
244
|
+
// outside it is absent from the PNG however large its rectangle is.
|
|
245
|
+
const pageWidth = document.documentElement.scrollWidth * scaleX;
|
|
246
|
+
const pageHeight = document.documentElement.scrollHeight * scaleY;
|
|
247
|
+
let marked = 0;
|
|
248
|
+
for (const mark of marks) {
|
|
249
|
+
let rect;
|
|
250
|
+
try {
|
|
251
|
+
// Each step after the first descends into an open shadow root.
|
|
252
|
+
let root = document;
|
|
253
|
+
let element = null;
|
|
254
|
+
for (const step of mark.path) {
|
|
255
|
+
element = root.querySelector(step);
|
|
256
|
+
if (!element)
|
|
257
|
+
break;
|
|
258
|
+
root = element.shadowRoot ?? element;
|
|
259
|
+
}
|
|
260
|
+
rect = element?.getBoundingClientRect();
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
// Axe can report a selector this browser refuses to parse; skip it.
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
if (!rect || rect.width === 0 || rect.height === 0)
|
|
267
|
+
continue;
|
|
268
|
+
// Off-canvas elements (the `left:-9999px` visually-hidden idiom) have a
|
|
269
|
+
// real rectangle but never reach the PNG, so they are not marked.
|
|
270
|
+
if (rect.right + window.scrollX <= 0 || rect.bottom + window.scrollY <= 0
|
|
271
|
+
|| rect.left + window.scrollX >= pageWidth || rect.top + window.scrollY >= pageHeight)
|
|
272
|
+
continue;
|
|
273
|
+
const left = (rect.left - origin.left) / scaleX;
|
|
274
|
+
const top = (rect.top - origin.top) / scaleY;
|
|
275
|
+
const box = document.createElement('div');
|
|
276
|
+
// The ring is clipped to the element's own box (inset ring, overflow
|
|
277
|
+
// hidden) so it cannot extend the scrollable area or add scrollbars.
|
|
278
|
+
box.style.cssText = `position:absolute;left:${left}px;top:${top}px;width:${rect.width / scaleX}px;height:${rect.height / scaleY}px;overflow:hidden;box-shadow:inset 0 0 0 3px #e11d48;`;
|
|
279
|
+
// The label is a sibling of the ring, not a child: inside it the box's
|
|
280
|
+
// overflow:hidden clipped the rule ids away on any element smaller than
|
|
281
|
+
// its own label, while the node still counted as labelled.
|
|
282
|
+
const label = document.createElement('span');
|
|
283
|
+
label.style.cssText = `position:absolute;left:${left}px;top:${top}px;background:#e11d48;color:#fff;padding:0 4px;font:11px/1.4 sans-serif;white-space:nowrap;`;
|
|
284
|
+
label.textContent = mark.labels.join(', ');
|
|
285
|
+
root.append(box, label);
|
|
286
|
+
// Every rule that named this element is now visible on its one box.
|
|
287
|
+
marked += mark.labels.length;
|
|
288
|
+
}
|
|
289
|
+
return marked;
|
|
290
|
+
}, { marks, layerId });
|
|
291
|
+
}
|
|
69
292
|
const snapshot = defineTool({
|
|
70
293
|
capability: 'core',
|
|
71
294
|
schema: {
|
|
@@ -255,6 +478,40 @@ const drag = defineTabTool({
|
|
|
255
478
|
response.addCode(`await page.${await generateLocator(startLocator)}.dragTo(page.${await generateLocator(endLocator)});`);
|
|
256
479
|
},
|
|
257
480
|
});
|
|
481
|
+
const dropSchema = elementSchema.extend({
|
|
482
|
+
paths: z.array(z.string()).optional().describe('The absolute paths of the files to drop onto the element. Can be a single file or multiple files.'),
|
|
483
|
+
data: z.record(z.string(), z.string()).optional().describe('Clipboard-like payload to drop onto the element, as a map of mime type to value, for example { "text/plain": "hello", "text/uri-list": "https://example.com" }'),
|
|
484
|
+
}).superRefine((params, context) => {
|
|
485
|
+
if (!params.paths?.length && !Object.keys(params.data ?? {}).length)
|
|
486
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: 'Provide "paths", "data" or both to describe what to drop onto the element.' });
|
|
487
|
+
});
|
|
488
|
+
const drop = defineTabTool({
|
|
489
|
+
capability: 'core',
|
|
490
|
+
schema: {
|
|
491
|
+
name: 'browser_drop',
|
|
492
|
+
title: 'Drop onto element',
|
|
493
|
+
description: 'Simulate an external drag and drop of files or clipboard-like data onto an element',
|
|
494
|
+
inputSchema: dropSchema,
|
|
495
|
+
type: 'destructive',
|
|
496
|
+
},
|
|
497
|
+
handle: async (tab, params, response) => {
|
|
498
|
+
response.setIncludeSnapshot();
|
|
499
|
+
// The schema guarantees at least one of them is non-empty.
|
|
500
|
+
const payload = {};
|
|
501
|
+
if (params.paths?.length)
|
|
502
|
+
payload.files = params.paths;
|
|
503
|
+
if (Object.keys(params.data ?? {}).length)
|
|
504
|
+
payload.data = params.data;
|
|
505
|
+
const locator = await tab.refLocator(params);
|
|
506
|
+
response.addCode(`await page.${await generateLocator(locator)}.drop(${JSON.stringify(payload)});`);
|
|
507
|
+
await tab.waitForCompletion(async () => {
|
|
508
|
+
// `drop` rejects when the target's dragover listener never calls
|
|
509
|
+
// preventDefault(), which is Playwright's way of saying the element does
|
|
510
|
+
// not accept the payload.
|
|
511
|
+
await locator.drop(payload);
|
|
512
|
+
});
|
|
513
|
+
},
|
|
514
|
+
});
|
|
258
515
|
const hover = defineTabTool({
|
|
259
516
|
capability: 'core',
|
|
260
517
|
schema: {
|
|
@@ -299,6 +556,7 @@ export default [
|
|
|
299
556
|
find,
|
|
300
557
|
click,
|
|
301
558
|
drag,
|
|
559
|
+
drop,
|
|
302
560
|
hover,
|
|
303
561
|
selectOption,
|
|
304
562
|
scanPage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/tools/snapshot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/tools/snapshot.ts"],"names":[],"mappings":"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"}
|
package/lib/tools/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiCH,MAAM,UAAU,UAAU,CAAyB,IAAiB;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AASD,MAAM,UAAU,aAAa,CAAyB,IAAoB;IACxE,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACvE,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,iEAAiE,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC7J,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAC,MAAM;gBACnD,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,sCAAsC,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;gBAEjI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/lib/tools/utils.js
CHANGED
|
@@ -15,21 +15,43 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import coreBundle from 'playwright-core/lib/coreBundle';
|
|
17
17
|
const { asLocator } = coreBundle.iso;
|
|
18
|
+
// How long an action that finished quietly is watched for work it scheduled
|
|
19
|
+
// rather than started - a click handler whose fetch fires from a timer has
|
|
20
|
+
// issued nothing by the time its own promise resolves. Capped by the settle
|
|
21
|
+
// delay it defers to, so lowering that lowers this with it.
|
|
22
|
+
const quietWindowMs = 100;
|
|
18
23
|
export async function waitForCompletion(tab, callback) {
|
|
19
24
|
const settleMs = tab.context.config.timeouts.settle ?? 500;
|
|
20
25
|
const requests = new Set();
|
|
26
|
+
let requestSeen = false;
|
|
21
27
|
let frameNavigated = false;
|
|
22
28
|
let waitCallback = () => { };
|
|
23
29
|
const waitBarrier = new Promise(f => { waitCallback = f; });
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
// Resolves on the first sign of page work, whenever it arrives.
|
|
31
|
+
let signalCallback = () => { };
|
|
32
|
+
const firstSignal = new Promise(f => { signalCallback = f; });
|
|
33
|
+
const requestListener = (request) => {
|
|
34
|
+
requestSeen = true;
|
|
35
|
+
requests.add(request);
|
|
36
|
+
signalCallback();
|
|
37
|
+
};
|
|
38
|
+
// A request that fails - offline, blocked by CORS, aborted - emits
|
|
39
|
+
// `requestfailed` and never `requestfinished`. Without the same removal path
|
|
40
|
+
// it would sit in the set until the 10s timeout below, turning a click that
|
|
41
|
+
// fired one doomed fetch into a ten-second tool call.
|
|
42
|
+
const requestSettledListener = (request) => {
|
|
26
43
|
requests.delete(request);
|
|
27
44
|
if (!requests.size)
|
|
28
45
|
waitCallback();
|
|
29
46
|
};
|
|
30
47
|
const frameNavigateListener = (frame) => {
|
|
31
|
-
|
|
48
|
+
signalCallback();
|
|
49
|
+
if (frame.parentFrame()) {
|
|
50
|
+
// A child frame swapping documents is page work too, and it can issue no
|
|
51
|
+
// request at all. It must not gate the barrier on a top-level load state
|
|
52
|
+
// that this navigation will never produce.
|
|
32
53
|
return;
|
|
54
|
+
}
|
|
33
55
|
frameNavigated = true;
|
|
34
56
|
dispose();
|
|
35
57
|
clearTimeout(timeout);
|
|
@@ -40,27 +62,61 @@ export async function waitForCompletion(tab, callback) {
|
|
|
40
62
|
waitCallback();
|
|
41
63
|
};
|
|
42
64
|
tab.page.on('request', requestListener);
|
|
43
|
-
tab.page.on('requestfinished',
|
|
65
|
+
tab.page.on('requestfinished', requestSettledListener);
|
|
66
|
+
tab.page.on('requestfailed', requestSettledListener);
|
|
44
67
|
tab.page.on('framenavigated', frameNavigateListener);
|
|
45
68
|
const timeout = setTimeout(onTimeout, 10000);
|
|
46
69
|
const dispose = () => {
|
|
47
70
|
tab.page.off('request', requestListener);
|
|
48
|
-
tab.page.off('requestfinished',
|
|
71
|
+
tab.page.off('requestfinished', requestSettledListener);
|
|
72
|
+
tab.page.off('requestfailed', requestSettledListener);
|
|
49
73
|
tab.page.off('framenavigated', frameNavigateListener);
|
|
50
74
|
clearTimeout(timeout);
|
|
51
75
|
};
|
|
52
76
|
try {
|
|
53
77
|
const result = await callback();
|
|
78
|
+
// Nothing has happened yet, which is not the same as nothing being about to:
|
|
79
|
+
// watch briefly for work the action scheduled instead of started.
|
|
80
|
+
if (!requestSeen && !frameNavigated)
|
|
81
|
+
await raceTimeout(firstSignal, Math.min(quietWindowMs, settleMs));
|
|
54
82
|
if (!requests.size && !frameNavigated)
|
|
55
83
|
waitCallback();
|
|
56
84
|
await waitBarrier;
|
|
57
|
-
|
|
85
|
+
// Timers can schedule DOM-only work without producing any observable page
|
|
86
|
+
// signal. Preserve the configured settle delay so the returned snapshot
|
|
87
|
+
// includes those updates too.
|
|
88
|
+
if (!tab.page.isClosed()) {
|
|
89
|
+
try {
|
|
90
|
+
await tab.waitForTimeout(settleMs);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
const targetClosed = error instanceof Error && /Target (?:page, context or browser has been closed|page closed|closed)/i.test(error.message);
|
|
94
|
+
if (!tab.page.isClosed() || !targetClosed)
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
58
98
|
return result;
|
|
59
99
|
}
|
|
60
100
|
finally {
|
|
61
101
|
dispose();
|
|
62
102
|
}
|
|
63
103
|
}
|
|
104
|
+
// Resolves with `promise` or when the timeout elapses, whichever comes first.
|
|
105
|
+
// Both branches resolve, so the losing one leaves nothing unhandled behind.
|
|
106
|
+
async function raceTimeout(promise, timeoutMs) {
|
|
107
|
+
let timeoutId;
|
|
108
|
+
try {
|
|
109
|
+
await Promise.race([
|
|
110
|
+
promise,
|
|
111
|
+
new Promise(resolve => {
|
|
112
|
+
timeoutId = setTimeout(resolve, timeoutMs);
|
|
113
|
+
}),
|
|
114
|
+
]);
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
clearTimeout(timeoutId);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
64
120
|
export async function generateLocator(locator) {
|
|
65
121
|
// playwright-core 1.61 replaced the private `_resolveSelector` helper with the
|
|
66
122
|
// public `Locator.normalize()` method (microsoft/playwright). `normalize()`
|
package/lib/tools/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tools/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,UAAU,MAAM,gCAAgC,CAAC;AAExD,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC;AAKrC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAI,GAAQ,EAAE,QAA0B;IAC7E,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC/C,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,YAAY,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tools/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/tools.js
CHANGED
|
@@ -25,6 +25,7 @@ import mouse from './tools/mouse.js';
|
|
|
25
25
|
import navigate from './tools/navigate.js';
|
|
26
26
|
import network from './tools/network.js';
|
|
27
27
|
import pdf from './tools/pdf.js';
|
|
28
|
+
import session from './tools/session.js';
|
|
28
29
|
import snapshot from './tools/snapshot.js';
|
|
29
30
|
import tabs from './tools/tabs.js';
|
|
30
31
|
import screenshot from './tools/screenshot.js';
|
|
@@ -33,6 +34,7 @@ import verify from './tools/verify.js';
|
|
|
33
34
|
import auditSite from './tools/auditSite.js';
|
|
34
35
|
import scanPageMatrix from './tools/scanPageMatrix.js';
|
|
35
36
|
import auditKeyboard from './tools/auditKeyboard.js';
|
|
37
|
+
import auditScreenReader from './tools/auditScreenReader.js';
|
|
36
38
|
export const allTools = [
|
|
37
39
|
...common,
|
|
38
40
|
...console,
|
|
@@ -47,6 +49,7 @@ export const allTools = [
|
|
|
47
49
|
...mouse,
|
|
48
50
|
...pdf,
|
|
49
51
|
...screenshot,
|
|
52
|
+
...session,
|
|
50
53
|
...snapshot,
|
|
51
54
|
...tabs,
|
|
52
55
|
...wait,
|
|
@@ -54,6 +57,7 @@ export const allTools = [
|
|
|
54
57
|
...auditSite,
|
|
55
58
|
...scanPageMatrix,
|
|
56
59
|
...auditKeyboard,
|
|
60
|
+
...auditScreenReader,
|
|
57
61
|
];
|
|
58
62
|
export function filteredTools(config) {
|
|
59
63
|
return allTools.filter(tool => tool.capability.startsWith('core') || config.capabilities?.includes(tool.capability));
|
|
@@ -61,9 +65,14 @@ export function filteredTools(config) {
|
|
|
61
65
|
export const serverInstructions = [
|
|
62
66
|
'This server runs automated web accessibility audits (axe-core / WCAG) and drives a real browser via Playwright.',
|
|
63
67
|
'Use `browser_navigate` to load a page first. Then use `audit_site` to crawl and scan multiple pages of a site,',
|
|
64
|
-
'`scan_page_matrix` to scan the current page across viewports and WCAG tag sets,
|
|
65
|
-
'keyboard navigation, focus visibility and skip links
|
|
68
|
+
'`scan_page_matrix` to scan the current page across viewports and WCAG tag sets, `audit_keyboard` to check',
|
|
69
|
+
'keyboard navigation, focus visibility and skip links, and `audit_screen_reader` to check accessible name quality',
|
|
70
|
+
'and reading order. Results are returned as markdown with axe-core rule ids,',
|
|
66
71
|
'impact levels, failure summaries and remediation links. Regular browser interaction tools (click, type, snapshot,',
|
|
67
72
|
'screenshot, tabs) are also available for navigating to the state you want to audit.',
|
|
73
|
+
'To work with several separate browsers at once, `browser_session_open` returns a browserSessionId that the',
|
|
74
|
+
'non-session browser tools accept as an optional argument; omit it to use the default session, and close extra',
|
|
75
|
+
'sessions with `browser_session_close` when done. Modes that share one live browser context (non-isolated CDP',
|
|
76
|
+
'attach, extension) reject browser_session_open instead of handing out a session that is not separate.',
|
|
68
77
|
].join(' ');
|
|
69
78
|
//# sourceMappingURL=tools.js.map
|
package/lib/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,MAAM,kBAAkB,CAAC;AACrC,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,MAAM,kBAAkB,CAAC;AACrC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,GAAG,MAAM,gBAAgB,CAAC;AACjC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,aAAa,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,MAAM,kBAAkB,CAAC;AACrC,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,MAAM,kBAAkB,CAAC;AACrC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,GAAG,MAAM,gBAAgB,CAAC;AACjC,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,aAAa,MAAM,0BAA0B,CAAC;AACrD,OAAO,iBAAiB,MAAM,8BAA8B,CAAC;AAK7D,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,GAAG,MAAM;IACT,GAAG,OAAO;IACV,GAAG,OAAO;IACV,GAAG,QAAQ;IACX,GAAG,KAAK;IACR,GAAG,IAAI;IACP,GAAG,OAAO;IACV,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,OAAO;IACV,GAAG,KAAK;IACR,GAAG,GAAG;IACN,GAAG,UAAU;IACb,GAAG,OAAO;IACV,GAAG,QAAQ;IACX,GAAG,IAAI;IACP,GAAG,IAAI;IACP,GAAG,MAAM;IACT,GAAG,SAAS;IACZ,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,iBAAiB;CACrB,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,MAAkB;IAC9C,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvH,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,iHAAiH;IACjH,gHAAgH;IAChH,2GAA2G;IAC3G,kHAAkH;IAClH,6EAA6E;IAC7E,mHAAmH;IACnH,qFAAqF;IACrF,4GAA4G;IAC5G,+GAA+G;IAC/G,8GAA8G;IAC9G,uGAAuG;CACxG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
|