playwriter 0.0.7 → 0.0.8
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/dist/extension/cdp-relay.js +18 -18
- package/dist/extension/cdp-relay.js.map +1 -1
- package/dist/mcp.js +82 -6
- package/dist/mcp.js.map +1 -1
- package/dist/prompt.md +76 -2
- package/package.json +2 -1
- package/src/extension/cdp-relay.ts +21 -21
- package/src/mcp.ts +111 -9
- package/src/prompt.md +76 -2
|
@@ -254,24 +254,24 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127.
|
|
|
254
254
|
ws.close(1000, 'Another extension connection already established');
|
|
255
255
|
return;
|
|
256
256
|
}
|
|
257
|
-
logger.log('Extension connecting, resetting server state')
|
|
258
|
-
// Clear stale targets from previous connections
|
|
259
|
-
const staleTargetCount = connectedTargets.size
|
|
260
|
-
if (staleTargetCount > 0) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
}
|
|
264
|
-
// Reject any pending requests from previous connection
|
|
265
|
-
const pendingRequestCount = extensionPendingRequests.size
|
|
266
|
-
if (pendingRequestCount > 0) {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}
|
|
273
|
-
// Reset message ID counter
|
|
274
|
-
extensionMessageId = 0
|
|
257
|
+
// logger.log('Extension connecting, resetting server state')
|
|
258
|
+
// // Clear stale targets from previous connections
|
|
259
|
+
// const staleTargetCount = connectedTargets.size
|
|
260
|
+
// if (staleTargetCount > 0) {
|
|
261
|
+
// logger.log(`Clearing ${staleTargetCount} stale targets from previous connection`)
|
|
262
|
+
// connectedTargets.clear()
|
|
263
|
+
// }
|
|
264
|
+
// // Reject any pending requests from previous connection
|
|
265
|
+
// const pendingRequestCount = extensionPendingRequests.size
|
|
266
|
+
// if (pendingRequestCount > 0) {
|
|
267
|
+
// logger.log(`Rejecting ${pendingRequestCount} pending requests from previous connection`)
|
|
268
|
+
// for (const pending of extensionPendingRequests.values()) {
|
|
269
|
+
// pending.reject(new Error('Extension reconnected, request cancelled'))
|
|
270
|
+
// }
|
|
271
|
+
// extensionPendingRequests.clear()
|
|
272
|
+
// }
|
|
273
|
+
// // Reset message ID counter
|
|
274
|
+
// extensionMessageId = 0
|
|
275
275
|
extensionWs = ws;
|
|
276
276
|
logger.log('Extension connected with clean state');
|
|
277
277
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp-relay.js","sourceRoot":"","sources":["../../src/extension/cdp-relay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cdp-relay.js","sourceRoot":"","sources":["../../src/extension/cdp-relay.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.js
CHANGED
|
@@ -9,6 +9,22 @@ import { createRequire } from 'node:module';
|
|
|
9
9
|
import vm from 'node:vm';
|
|
10
10
|
import { getCdpUrl } from './utils.js';
|
|
11
11
|
const require = createRequire(import.meta.url);
|
|
12
|
+
const usefulGlobals = {
|
|
13
|
+
setTimeout,
|
|
14
|
+
setInterval,
|
|
15
|
+
clearTimeout,
|
|
16
|
+
clearInterval,
|
|
17
|
+
URL,
|
|
18
|
+
URLSearchParams,
|
|
19
|
+
fetch,
|
|
20
|
+
Buffer,
|
|
21
|
+
TextEncoder,
|
|
22
|
+
TextDecoder,
|
|
23
|
+
crypto,
|
|
24
|
+
AbortController,
|
|
25
|
+
AbortSignal,
|
|
26
|
+
structuredClone,
|
|
27
|
+
};
|
|
12
28
|
const state = {
|
|
13
29
|
isConnected: false,
|
|
14
30
|
page: null,
|
|
@@ -59,7 +75,7 @@ async function ensureConnection() {
|
|
|
59
75
|
state.isConnected = true;
|
|
60
76
|
return { browser, page };
|
|
61
77
|
}
|
|
62
|
-
async function getCurrentPage() {
|
|
78
|
+
async function getCurrentPage(timeout = 5000) {
|
|
63
79
|
if (state.page) {
|
|
64
80
|
return state.page;
|
|
65
81
|
}
|
|
@@ -69,6 +85,7 @@ async function getCurrentPage() {
|
|
|
69
85
|
const pages = contexts[0].pages();
|
|
70
86
|
if (pages.length > 0) {
|
|
71
87
|
const page = pages[0];
|
|
88
|
+
page.waitForEvent('load', { timeout });
|
|
72
89
|
await page.emulateMedia({ colorScheme: null });
|
|
73
90
|
return page;
|
|
74
91
|
}
|
|
@@ -115,7 +132,7 @@ server.tool('execute', promptContent, {
|
|
|
115
132
|
timeout: z.number().default(5000).describe('Timeout in milliseconds for code execution (default: 5000ms)'),
|
|
116
133
|
}, async ({ code, timeout }) => {
|
|
117
134
|
await ensureConnection();
|
|
118
|
-
const page = await getCurrentPage();
|
|
135
|
+
const page = await getCurrentPage(timeout);
|
|
119
136
|
const context = state.context || page.context();
|
|
120
137
|
console.error('Executing code:', code);
|
|
121
138
|
try {
|
|
@@ -137,22 +154,74 @@ server.tool('execute', promptContent, {
|
|
|
137
154
|
consoleLogs.push({ method: 'debug', args });
|
|
138
155
|
},
|
|
139
156
|
};
|
|
140
|
-
const accessibilitySnapshot = async (
|
|
157
|
+
const accessibilitySnapshot = async (options) => {
|
|
158
|
+
const { page: targetPage, searchString, contextLines = 10 } = options;
|
|
141
159
|
if (targetPage._snapshotForAI) {
|
|
142
160
|
const snapshot = await targetPage._snapshotForAI();
|
|
143
161
|
const snapshotStr = typeof snapshot === 'string'
|
|
144
162
|
? snapshot
|
|
145
163
|
: JSON.stringify(snapshot, null, 2);
|
|
146
|
-
|
|
164
|
+
if (!searchString) {
|
|
165
|
+
return snapshotStr;
|
|
166
|
+
}
|
|
167
|
+
const lines = snapshotStr.split('\n');
|
|
168
|
+
const matches = [];
|
|
169
|
+
for (let i = 0; i < lines.length; i++) {
|
|
170
|
+
const line = lines[i];
|
|
171
|
+
let isMatch = false;
|
|
172
|
+
if (searchString instanceof RegExp) {
|
|
173
|
+
isMatch = searchString.test(line);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
isMatch = line.includes(searchString);
|
|
177
|
+
}
|
|
178
|
+
if (isMatch) {
|
|
179
|
+
matches.push({ line, index: i });
|
|
180
|
+
if (matches.length >= 10)
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (matches.length === 0) {
|
|
185
|
+
return 'No matches found';
|
|
186
|
+
}
|
|
187
|
+
return matches
|
|
188
|
+
.map((m) => {
|
|
189
|
+
const start = Math.max(0, m.index - contextLines);
|
|
190
|
+
const end = Math.min(lines.length, m.index + contextLines + 1);
|
|
191
|
+
return lines.slice(start, end).join('\n');
|
|
192
|
+
})
|
|
193
|
+
.join('\n\n---\n\n');
|
|
147
194
|
}
|
|
148
195
|
throw new Error('accessibilitySnapshot is not available on this page');
|
|
149
196
|
};
|
|
197
|
+
const getLocatorStringForElement = async (element) => {
|
|
198
|
+
if (!element || typeof element.evaluate !== 'function') {
|
|
199
|
+
throw new Error('getLocatorStringForElement: argument must be a Playwright Locator or ElementHandle');
|
|
200
|
+
}
|
|
201
|
+
return await element.evaluate(async (el) => {
|
|
202
|
+
const WIN = globalThis;
|
|
203
|
+
if (!WIN.__selectorGenerator) {
|
|
204
|
+
const module = await import(
|
|
205
|
+
// @ts-ignore
|
|
206
|
+
'https://unpkg.com/@mizchi/selector-generator@1.50.0-next/dist/index.js');
|
|
207
|
+
WIN.__selectorGenerator = {
|
|
208
|
+
createSelectorGenerator: module.createSelectorGenerator,
|
|
209
|
+
toLocator: module.toLocator,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
const { createSelectorGenerator, toLocator } = WIN.__selectorGenerator;
|
|
213
|
+
const generator = createSelectorGenerator(WIN);
|
|
214
|
+
const result = generator(el);
|
|
215
|
+
return toLocator(result.selector, 'javascript');
|
|
216
|
+
});
|
|
217
|
+
};
|
|
150
218
|
let vmContextObj = {
|
|
151
219
|
page,
|
|
152
220
|
context,
|
|
153
221
|
state,
|
|
154
222
|
console: customConsole,
|
|
155
223
|
accessibilitySnapshot,
|
|
224
|
+
getLocatorStringForElement,
|
|
156
225
|
resetPlaywright: async () => {
|
|
157
226
|
const { page: newPage, context: newContext } = await resetConnection();
|
|
158
227
|
Object.keys(state).forEach(key => delete state[key]);
|
|
@@ -162,12 +231,19 @@ server.tool('execute', promptContent, {
|
|
|
162
231
|
state,
|
|
163
232
|
console: customConsole,
|
|
164
233
|
accessibilitySnapshot,
|
|
165
|
-
|
|
234
|
+
getLocatorStringForElement,
|
|
235
|
+
resetPlaywright: vmContextObj.resetPlaywright,
|
|
236
|
+
require,
|
|
237
|
+
import: vmContextObj.import,
|
|
238
|
+
...usefulGlobals
|
|
166
239
|
};
|
|
167
240
|
Object.keys(vmContextObj).forEach(key => delete vmContextObj[key]);
|
|
168
241
|
Object.assign(vmContextObj, resetObj);
|
|
169
242
|
return { page: newPage, context: newContext };
|
|
170
|
-
}
|
|
243
|
+
},
|
|
244
|
+
require,
|
|
245
|
+
import: (specifier) => import(specifier),
|
|
246
|
+
...usefulGlobals
|
|
171
247
|
};
|
|
172
248
|
const vmContext = vm.createContext(vmContextObj);
|
|
173
249
|
const wrappedCode = `(async () => { ${code} })()`;
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAiC,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE9C,MAAM,aAAa,GAAG;IACpB,UAAU;IACV,WAAW;IACX,YAAY;IACZ,aAAa;IACb,GAAG;IACH,eAAe;IACf,KAAK;IACL,MAAM;IACN,WAAW;IACX,WAAW;IACX,MAAM;IACN,eAAe;IACf,WAAW;IACX,eAAe;CACP,CAAA;AAmCV,MAAM,KAAK,GAAU;IACnB,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;CACd,CAAA;AAED,MAAM,UAAU,GAAG,KAAK,CAAA;AAExB,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,GAAG,CAAC,CAAA;QACzD,OAAO,QAAQ,CAAC,EAAE,CAAA;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAA;IAE/C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;IAE7C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAA;IAEnE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;QAC1D,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAA;IAEF,aAAa,CAAC,KAAK,EAAE,CAAA;IAErB,gCAAgC;IAChC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IAEzD,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;AAC3C,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IACrD,CAAC;IAED,MAAM,iBAAiB,EAAE,CAAA;IAEzB,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;IAE1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;IAE9E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;IAElE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;IAExB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAO,GAAG,IAAI;IAC1C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAA;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;QACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;YAEjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;gBACrB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,OAAO,EAAC,CAAC,CAAA;gBACpC,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC9C,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;AACtC,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;IACpB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;IACpB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAA;IAEzB,MAAM,iBAAiB,EAAE,CAAA;IAEzB,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;IAE1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;IAE9E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;IAElE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;IAExB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,0FAA0F;IACjG,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAA;AAEvH,MAAM,CAAC,IAAI,CACT,SAAS,EACT,aAAa,EACb;IACE,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,CACP,qNAAqN,CACtN;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC;CAC3G,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;IAC1B,MAAM,gBAAgB,EAAE,CAAA;IAExB,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAA;IAE/C,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC;QACH,MAAM,WAAW,GAA2C,EAAE,CAAA;QAE9D,MAAM,aAAa,GAAG;YACpB,GAAG,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;gBACtB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,CAAC;YACD,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;gBACvB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAC5C,CAAC;YACD,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;gBACvB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAC5C,CAAC;YACD,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;gBACxB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7C,CAAC;YACD,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;gBACxB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7C,CAAC;SACF,CAAA;QAED,MAAM,qBAAqB,GAAG,KAAK,EAAE,OAIpC,EAAE,EAAE;YACH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,OAAO,CAAA;YACrE,IAAK,UAAkB,CAAC,cAAc,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,MAAO,UAAkB,CAAC,cAAc,EAAE,CAAA;gBAC3D,MAAM,WAAW,GACf,OAAO,QAAQ,KAAK,QAAQ;oBAC1B,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAEvC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,WAAW,CAAA;gBACpB,CAAC;gBAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACrC,MAAM,OAAO,GAAsC,EAAE,CAAA;gBAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;oBACrB,IAAI,OAAO,GAAG,KAAK,CAAA;oBACnB,IAAI,YAAY,YAAY,MAAM,EAAE,CAAC;wBACnC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACnC,CAAC;yBAAM,CAAC;wBACN,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;oBACvC,CAAC;oBAED,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;wBAChC,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE;4BAAE,MAAK;oBACjC,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,kBAAkB,CAAA;gBAC3B,CAAC;gBAED,OAAO,OAAO;qBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACT,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,CAAA;oBACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC,CAAA;oBAC9D,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC3C,CAAC,CAAC;qBACD,IAAI,CAAC,aAAa,CAAC,CAAA;YACxB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;QACxE,CAAC,CAAA;QAED,MAAM,0BAA0B,GAAG,KAAK,EAAE,OAAY,EAAE,EAAE;YACxD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAA;YACH,CAAC;YAED,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAO,EAAE,EAAE;gBAC9C,MAAM,GAAG,GAAG,UAAiB,CAAA;gBAC7B,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;oBAC7B,MAAM,MAAM,GAAsB,MAAM,MAAM;oBAC5C,aAAa;oBACb,wEAAwE,CACzE,CAAA;oBACD,GAAG,CAAC,mBAAmB,GAAG;wBACxB,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;wBACvD,SAAS,EAAE,MAAM,CAAC,SAAS;qBAC5B,CAAA;gBACH,CAAC;gBACD,MAAM,EAAE,uBAAuB,EAAE,SAAS,EAAE,GAC1C,GAAG,CAAC,mBAAwC,CAAA;gBAC9C,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAA;gBAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;gBAC5B,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,IAAI,YAAY,GAAyB;YACvC,IAAI;YACJ,OAAO;YACP,KAAK;YACL,OAAO,EAAE,aAAa;YACtB,qBAAqB;YACrB,0BAA0B;YAC1B,eAAe,EAAE,KAAK,IAAI,EAAE;gBAC1B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,eAAe,EAAE,CAAA;gBAEtE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;gBAEpD,MAAM,QAAQ,GAAyB;oBACrC,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,UAAU;oBACnB,KAAK;oBACL,OAAO,EAAE,aAAa;oBACtB,qBAAqB;oBACrB,0BAA0B;oBAC1B,eAAe,EAAE,YAAY,CAAC,eAAe;oBAC7C,OAAO;oBACP,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,GAAG,aAAa;iBACjB,CAAA;gBACD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAQ,YAAoB,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC3E,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;gBACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;YAC/C,CAAC;YACD,OAAO;YACP,MAAM,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;YAChD,GAAG,aAAa;SACjB,CAAA;QAED,MAAM,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;QAEhD,MAAM,WAAW,GAAG,kBAAkB,IAAI,OAAO,CAAA;QAEjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE;gBACtC,OAAO;gBACP,aAAa,EAAE,IAAI;aACpB,CAAC;YACF,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACxB,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,OAAO,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAC5F;SACF,CAAC,CAAA;QAEF,IAAI,YAAY,GAAG,EAAE,CAAA;QAErB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,YAAY,IAAI,mBAAmB,CAAA;YACnC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBACvC,MAAM,aAAa,GAAG,IAAI;qBACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBACX,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;wBAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACrC,CAAC;oBACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;gBACpB,CAAC,CAAC;qBACD,IAAI,CAAC,GAAG,CAAC,CAAA;gBACZ,YAAY,IAAI,IAAI,MAAM,KAAK,aAAa,IAAI,CAAA;YAClD,CAAC,CAAC,CAAA;YACF,YAAY,IAAI,IAAI,CAAA;QACtB,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,YAAY,IAAI,iBAAiB,CAAA;YACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,YAAY,IAAI,MAAM,CAAA;YACxB,CAAC;iBAAM,CAAC;gBACN,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,YAAY,IAAI,wCAAwC,CAAA;QAC1D,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAA;QACvB,IAAI,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;QACnC,IAAI,SAAS,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YAClC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,qBAAqB,UAAU,8EAA8E,CAAA;QAC5J,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS;iBAChB;aACF;SACF,CAAA;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,yBAAyB,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;iBACrE;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAA;IACH,CAAC;AACH,CAAC,CACF,CAAA;AAED,mBAAmB;AACnB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;AACzD,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAE5C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qCAAqC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,6BAA6B;AAC7B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC7B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC9B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,2DAA2D;AAC7D,CAAC,CAAC,CAAA;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA"}
|
package/dist/prompt.md
CHANGED
|
@@ -13,17 +13,44 @@ it will control an existing user Chrome window. The js code will be run in a sa
|
|
|
13
13
|
- state: an object shared between runs that you can mutate to persist functions and objects. for example `state.requests = []` to monitor network requests between runs
|
|
14
14
|
- context: the playwright browser context. you can do things like `await context.pages()` to see user connected pages
|
|
15
15
|
- page, the first page the user opened and made it accessible to this MCP. do things like `page.url()` to see current url. assume the user wants you to use this page for your playwright code
|
|
16
|
+
- require: node's require function to load CommonJS modules
|
|
17
|
+
- import: async import function to dynamically import ES modules. for example `const fs = await import('node:fs')`
|
|
18
|
+
- all standard Node.js globals: setTimeout, setInterval, clearTimeout, clearInterval, URL, URLSearchParams, fetch, Buffer, TextEncoder, TextDecoder, crypto, AbortController, AbortSignal, structuredClone
|
|
16
19
|
|
|
17
20
|
the chrome window can have more than one page. you can see other pages with `context.pages().find((p) => p.url().includes('localhost'))`. you can also open and close pages: `state.newPage = await context.newPage()`. store the page in state so that you can reuse it later
|
|
18
21
|
|
|
19
22
|
you can control the browser in collaboration with the user. the user can help you get unstuck from captchas or difficult to find elements or reproducing a bug
|
|
20
23
|
|
|
24
|
+
## finding the page to execute code in
|
|
25
|
+
|
|
26
|
+
if you plan to control a specific page for an url you can store it in `state` so you can reuse it later on:
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
const pages = context.pages().filter(x => x.url().includes('localhost'));
|
|
30
|
+
if (pages.length === 0) throw new Error('No page with URL matching localhost found');
|
|
31
|
+
if (pages.length > 1) throw new Error('Multiple pages with URL matching localhost found');
|
|
32
|
+
state.localhostPage = pages[0];
|
|
33
|
+
// do things with the page
|
|
34
|
+
await state.localhostPage.bringToFront();
|
|
35
|
+
```
|
|
36
|
+
|
|
21
37
|
## rules
|
|
22
38
|
|
|
23
39
|
- only call `page.close()` if the user asks you so or if you previously created this page yourself with `newPage`. do not close user created pages unless asked
|
|
24
40
|
- try to never sleep or run `page.waitForTimeout` unless you have to. there are better ways to wait for an element
|
|
25
41
|
- never close browser or context. NEVER call `browser.close()`
|
|
26
42
|
|
|
43
|
+
## always check the current page state after an action
|
|
44
|
+
|
|
45
|
+
after you click a button or submit a form you ALWAYS have to then check what is the current state of the page. you cannot assume what happened after doing an action. instead run the following code to know what happened after the action:
|
|
46
|
+
|
|
47
|
+
`console.log('url:', page.url()); console.log(await accessibilitySnapshot({ page }).then(x => x.slice(0, 1000)));`
|
|
48
|
+
|
|
49
|
+
if nothing happened you may need to wait before the action completes, using something like `page.waitForNavigation({timeout: 3000})` or `await page.waitForLoadState('networkidle', {timeout: 3000})`
|
|
50
|
+
|
|
51
|
+
if nothing happens it could also means that you clicked the wrong button or link. try to search for other appropriate elements to click or submit
|
|
52
|
+
|
|
53
|
+
|
|
27
54
|
## event listeners
|
|
28
55
|
|
|
29
56
|
always detach event listener you create at the end of a message using `page.removeAllListeners()` or similar so that you never leak them in future messages
|
|
@@ -32,7 +59,10 @@ always detach event listener you create at the end of a message using `page.remo
|
|
|
32
59
|
|
|
33
60
|
you have access to some functions in addition to playwright methods:
|
|
34
61
|
|
|
35
|
-
- `async accessibilitySnapshot(page)`: gets a human readable snapshot of clickable elements on the page. useful to see the overall structure of the page and what elements you can interact with
|
|
62
|
+
- `async accessibilitySnapshot({ page, searchString, contextLines })`: gets a human readable snapshot of clickable elements on the page. useful to see the overall structure of the page and what elements you can interact with.
|
|
63
|
+
- `page`: the page object to snapshot
|
|
64
|
+
- `searchString`: (optional) a string or regex to filter the snapshot. If provided, returns the first 10 matches with surrounding context
|
|
65
|
+
- `contextLines`: (optional) number of lines of context to show around each match (default: 10)
|
|
36
66
|
- `async resetPlaywright()`: recreates the CDP connection and resets the browser/page/context. Use this when the MCP stops responding, you get connection errors, assertion failures, or timeout issues. After calling this, the page and context variables are automatically updated in the execution environment. IMPORTANT: this completely resets the execution context, removing any custom properties you may have added to the global scope AND clearing all keys from the `state` object. Only `page`, `context`, `state` (empty), `console`, and utility functions will remain
|
|
37
67
|
|
|
38
68
|
To bring a tab to front and focus it, use the standard Playwright method `await page.bringToFront()`
|
|
@@ -57,7 +87,37 @@ example:
|
|
|
57
87
|
|
|
58
88
|
Then you can use `page.locator(`aria-ref=${ref}`)` to get an element with a specific `ref` and interact with it.
|
|
59
89
|
|
|
60
|
-
`const componentsLink = page.locator('aria-ref=e14').click()`
|
|
90
|
+
`const componentsLink = page.locator('aria-ref=e14').click()`
|
|
91
|
+
|
|
92
|
+
IMPORTANT: notice that we do not add any quotes in `aria-ref`! it MUST be called without quotes
|
|
93
|
+
|
|
94
|
+
## getting selector for a locator identified by snapshot aria-ref
|
|
95
|
+
|
|
96
|
+
in some cases you want to get a selector for a locator you just identified using `const element = page.locator('aria-ref=${ref}')`. To do so you can use `await getLocatorStringForElement(element)`. This is useful if you need to find other elements of the same type in a list for example. If you know the selector you can usually change a bit the selector to find the other elements of the same type in the list or table
|
|
97
|
+
|
|
98
|
+
```js
|
|
99
|
+
const loc = page.locator('aria-ref=123');
|
|
100
|
+
console.log(await getLocatorStringForElement(loc));
|
|
101
|
+
// => "getByRole('button', { name: 'Save' })" or similar
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## finding specific elements with snapshot
|
|
105
|
+
|
|
106
|
+
You can use `searchString` to find specific elements in the snapshot without reading the whole page structure. This is useful for finding forms, textareas, or specific text.
|
|
107
|
+
|
|
108
|
+
Example: find a textarea or form using case-insensitive regex:
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
const snapshot = await accessibilitySnapshot({ page, searchString: /textarea|form/i })
|
|
112
|
+
console.log(snapshot)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Example: find elements containing "Login":
|
|
116
|
+
|
|
117
|
+
```js
|
|
118
|
+
const snapshot = await accessibilitySnapshot({ page, searchString: "Login" })
|
|
119
|
+
console.log(snapshot)
|
|
120
|
+
```
|
|
61
121
|
|
|
62
122
|
## getting outputs of code execution
|
|
63
123
|
|
|
@@ -98,3 +158,17 @@ later, you can read logs that you care about. For example, to get the last 100 l
|
|
|
98
158
|
`console.log('errors:'); state.logs.filter(log => log.type === 'error').slice(-100).forEach(x => console.log(x))`
|
|
99
159
|
|
|
100
160
|
then to reset logs: `state.logs = []` and to stop listening: `page.removeAllListeners('console')`
|
|
161
|
+
|
|
162
|
+
## loading file content into inputs
|
|
163
|
+
|
|
164
|
+
you can use the `import` function to read files and fill inputs with their content:
|
|
165
|
+
|
|
166
|
+
```js
|
|
167
|
+
const fs = await import('node:fs'); const content = fs.readFileSync('/path/to/file.txt', 'utf-8'); await page.locator('textarea').fill(content)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
for example, to fill a textarea with the content of a markdown file:
|
|
171
|
+
|
|
172
|
+
```js
|
|
173
|
+
const fs = await import('node:fs'); const readme = fs.readFileSync('./README.md', 'utf-8'); await page.locator('#description').fill(readme); console.log('Filled textarea with README content')
|
|
174
|
+
```
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "playwriter",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.8",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"author": "Tommaso De Rossi, morse <beats.by.morse@gmail.com>",
|
|
27
27
|
"license": "",
|
|
28
28
|
"devDependencies": {
|
|
29
|
+
"@mizchi/selector-generator": "1.50.0-next",
|
|
29
30
|
"@types/node": "^24.10.1",
|
|
30
31
|
"@vitest/ui": "^4.0.8",
|
|
31
32
|
"vite-node": "^5.0.0",
|
|
@@ -340,27 +340,27 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127.
|
|
|
340
340
|
return
|
|
341
341
|
}
|
|
342
342
|
|
|
343
|
-
logger.log('Extension connecting, resetting server state')
|
|
344
|
-
|
|
345
|
-
// Clear stale targets from previous connections
|
|
346
|
-
const staleTargetCount = connectedTargets.size
|
|
347
|
-
if (staleTargetCount > 0) {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
// Reject any pending requests from previous connection
|
|
353
|
-
const pendingRequestCount = extensionPendingRequests.size
|
|
354
|
-
if (pendingRequestCount > 0) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
// Reset message ID counter
|
|
363
|
-
extensionMessageId = 0
|
|
343
|
+
// logger.log('Extension connecting, resetting server state')
|
|
344
|
+
|
|
345
|
+
// // Clear stale targets from previous connections
|
|
346
|
+
// const staleTargetCount = connectedTargets.size
|
|
347
|
+
// if (staleTargetCount > 0) {
|
|
348
|
+
// logger.log(`Clearing ${staleTargetCount} stale targets from previous connection`)
|
|
349
|
+
// connectedTargets.clear()
|
|
350
|
+
// }
|
|
351
|
+
|
|
352
|
+
// // Reject any pending requests from previous connection
|
|
353
|
+
// const pendingRequestCount = extensionPendingRequests.size
|
|
354
|
+
// if (pendingRequestCount > 0) {
|
|
355
|
+
// logger.log(`Rejecting ${pendingRequestCount} pending requests from previous connection`)
|
|
356
|
+
// for (const pending of extensionPendingRequests.values()) {
|
|
357
|
+
// pending.reject(new Error('Extension reconnected, request cancelled'))
|
|
358
|
+
// }
|
|
359
|
+
// extensionPendingRequests.clear()
|
|
360
|
+
// }
|
|
361
|
+
|
|
362
|
+
// // Reset message ID counter
|
|
363
|
+
// extensionMessageId = 0
|
|
364
364
|
|
|
365
365
|
extensionWs = ws
|
|
366
366
|
logger.log('Extension connected with clean state')
|
package/src/mcp.ts
CHANGED
|
@@ -11,6 +11,23 @@ import { getCdpUrl } from './utils.js'
|
|
|
11
11
|
|
|
12
12
|
const require = createRequire(import.meta.url)
|
|
13
13
|
|
|
14
|
+
const usefulGlobals = {
|
|
15
|
+
setTimeout,
|
|
16
|
+
setInterval,
|
|
17
|
+
clearTimeout,
|
|
18
|
+
clearInterval,
|
|
19
|
+
URL,
|
|
20
|
+
URLSearchParams,
|
|
21
|
+
fetch,
|
|
22
|
+
Buffer,
|
|
23
|
+
TextEncoder,
|
|
24
|
+
TextDecoder,
|
|
25
|
+
crypto,
|
|
26
|
+
AbortController,
|
|
27
|
+
AbortSignal,
|
|
28
|
+
structuredClone,
|
|
29
|
+
} as const
|
|
30
|
+
|
|
14
31
|
interface State {
|
|
15
32
|
isConnected: boolean
|
|
16
33
|
page: Page | null
|
|
@@ -29,10 +46,21 @@ interface VMContext {
|
|
|
29
46
|
error: (...args: any[]) => void
|
|
30
47
|
debug: (...args: any[]) => void
|
|
31
48
|
}
|
|
32
|
-
accessibilitySnapshot: (
|
|
49
|
+
accessibilitySnapshot: (options: {
|
|
50
|
+
page: Page
|
|
51
|
+
searchString?: string | RegExp
|
|
52
|
+
contextLines?: number
|
|
53
|
+
}) => Promise<string>
|
|
54
|
+
getLocatorStringForElement: (element: any) => Promise<string>
|
|
33
55
|
resetPlaywright: () => Promise<{ page: Page; context: BrowserContext }>
|
|
56
|
+
require: NodeRequire
|
|
57
|
+
import: (specifier: string) => Promise<any>
|
|
34
58
|
}
|
|
35
59
|
|
|
60
|
+
type VMContextWithGlobals = VMContext & typeof usefulGlobals
|
|
61
|
+
|
|
62
|
+
type SelectorGenerator = typeof import('@mizchi/selector-generator')
|
|
63
|
+
|
|
36
64
|
const state: State = {
|
|
37
65
|
isConnected: false,
|
|
38
66
|
page: null,
|
|
@@ -100,7 +128,7 @@ async function ensureConnection(): Promise<{ browser: Browser; page: Page }> {
|
|
|
100
128
|
return { browser, page }
|
|
101
129
|
}
|
|
102
130
|
|
|
103
|
-
async function getCurrentPage() {
|
|
131
|
+
async function getCurrentPage(timeout = 5000) {
|
|
104
132
|
if (state.page) {
|
|
105
133
|
return state.page
|
|
106
134
|
}
|
|
@@ -112,6 +140,7 @@ async function getCurrentPage() {
|
|
|
112
140
|
|
|
113
141
|
if (pages.length > 0) {
|
|
114
142
|
const page = pages[0]
|
|
143
|
+
page.waitForEvent('load', {timeout})
|
|
115
144
|
await page.emulateMedia({ colorScheme: null })
|
|
116
145
|
return page
|
|
117
146
|
}
|
|
@@ -176,7 +205,7 @@ server.tool(
|
|
|
176
205
|
async ({ code, timeout }) => {
|
|
177
206
|
await ensureConnection()
|
|
178
207
|
|
|
179
|
-
const page = await getCurrentPage()
|
|
208
|
+
const page = await getCurrentPage(timeout)
|
|
180
209
|
const context = state.context || page.context()
|
|
181
210
|
|
|
182
211
|
console.error('Executing code:', code)
|
|
@@ -201,41 +230,114 @@ server.tool(
|
|
|
201
230
|
},
|
|
202
231
|
}
|
|
203
232
|
|
|
204
|
-
const accessibilitySnapshot = async (
|
|
233
|
+
const accessibilitySnapshot = async (options: {
|
|
234
|
+
page: Page
|
|
235
|
+
searchString?: string | RegExp
|
|
236
|
+
contextLines?: number
|
|
237
|
+
}) => {
|
|
238
|
+
const { page: targetPage, searchString, contextLines = 10 } = options
|
|
205
239
|
if ((targetPage as any)._snapshotForAI) {
|
|
206
240
|
const snapshot = await (targetPage as any)._snapshotForAI()
|
|
207
241
|
const snapshotStr =
|
|
208
242
|
typeof snapshot === 'string'
|
|
209
243
|
? snapshot
|
|
210
244
|
: JSON.stringify(snapshot, null, 2)
|
|
211
|
-
|
|
245
|
+
|
|
246
|
+
if (!searchString) {
|
|
247
|
+
return snapshotStr
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
const lines = snapshotStr.split('\n')
|
|
251
|
+
const matches: { line: string; index: number }[] = []
|
|
252
|
+
|
|
253
|
+
for (let i = 0; i < lines.length; i++) {
|
|
254
|
+
const line = lines[i]
|
|
255
|
+
let isMatch = false
|
|
256
|
+
if (searchString instanceof RegExp) {
|
|
257
|
+
isMatch = searchString.test(line)
|
|
258
|
+
} else {
|
|
259
|
+
isMatch = line.includes(searchString)
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
if (isMatch) {
|
|
263
|
+
matches.push({ line, index: i })
|
|
264
|
+
if (matches.length >= 10) break
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
if (matches.length === 0) {
|
|
269
|
+
return 'No matches found'
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return matches
|
|
273
|
+
.map((m) => {
|
|
274
|
+
const start = Math.max(0, m.index - contextLines)
|
|
275
|
+
const end = Math.min(lines.length, m.index + contextLines + 1)
|
|
276
|
+
return lines.slice(start, end).join('\n')
|
|
277
|
+
})
|
|
278
|
+
.join('\n\n---\n\n')
|
|
212
279
|
}
|
|
213
280
|
throw new Error('accessibilitySnapshot is not available on this page')
|
|
214
281
|
}
|
|
215
282
|
|
|
216
|
-
|
|
283
|
+
const getLocatorStringForElement = async (element: any) => {
|
|
284
|
+
if (!element || typeof element.evaluate !== 'function') {
|
|
285
|
+
throw new Error(
|
|
286
|
+
'getLocatorStringForElement: argument must be a Playwright Locator or ElementHandle',
|
|
287
|
+
)
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return await element.evaluate(async (el: any) => {
|
|
291
|
+
const WIN = globalThis as any
|
|
292
|
+
if (!WIN.__selectorGenerator) {
|
|
293
|
+
const module: SelectorGenerator = await import(
|
|
294
|
+
// @ts-ignore
|
|
295
|
+
'https://unpkg.com/@mizchi/selector-generator@1.50.0-next/dist/index.js'
|
|
296
|
+
)
|
|
297
|
+
WIN.__selectorGenerator = {
|
|
298
|
+
createSelectorGenerator: module.createSelectorGenerator,
|
|
299
|
+
toLocator: module.toLocator,
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
const { createSelectorGenerator, toLocator } =
|
|
303
|
+
WIN.__selectorGenerator as SelectorGenerator
|
|
304
|
+
const generator = createSelectorGenerator(WIN)
|
|
305
|
+
const result = generator(el)
|
|
306
|
+
return toLocator(result.selector, 'javascript')
|
|
307
|
+
})
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
let vmContextObj: VMContextWithGlobals = {
|
|
217
311
|
page,
|
|
218
312
|
context,
|
|
219
313
|
state,
|
|
220
314
|
console: customConsole,
|
|
221
315
|
accessibilitySnapshot,
|
|
316
|
+
getLocatorStringForElement,
|
|
222
317
|
resetPlaywright: async () => {
|
|
223
318
|
const { page: newPage, context: newContext } = await resetConnection()
|
|
224
319
|
|
|
225
320
|
Object.keys(state).forEach(key => delete state[key])
|
|
226
321
|
|
|
227
|
-
const resetObj:
|
|
322
|
+
const resetObj: VMContextWithGlobals = {
|
|
228
323
|
page: newPage,
|
|
229
324
|
context: newContext,
|
|
230
325
|
state,
|
|
231
326
|
console: customConsole,
|
|
232
327
|
accessibilitySnapshot,
|
|
233
|
-
|
|
328
|
+
getLocatorStringForElement,
|
|
329
|
+
resetPlaywright: vmContextObj.resetPlaywright,
|
|
330
|
+
require,
|
|
331
|
+
import: vmContextObj.import,
|
|
332
|
+
...usefulGlobals
|
|
234
333
|
}
|
|
235
334
|
Object.keys(vmContextObj).forEach(key => delete (vmContextObj as any)[key])
|
|
236
335
|
Object.assign(vmContextObj, resetObj)
|
|
237
336
|
return { page: newPage, context: newContext }
|
|
238
|
-
}
|
|
337
|
+
},
|
|
338
|
+
require,
|
|
339
|
+
import: (specifier: string) => import(specifier),
|
|
340
|
+
...usefulGlobals
|
|
239
341
|
}
|
|
240
342
|
|
|
241
343
|
const vmContext = vm.createContext(vmContextObj)
|
package/src/prompt.md
CHANGED
|
@@ -13,17 +13,44 @@ it will control an existing user Chrome window. The js code will be run in a sa
|
|
|
13
13
|
- state: an object shared between runs that you can mutate to persist functions and objects. for example `state.requests = []` to monitor network requests between runs
|
|
14
14
|
- context: the playwright browser context. you can do things like `await context.pages()` to see user connected pages
|
|
15
15
|
- page, the first page the user opened and made it accessible to this MCP. do things like `page.url()` to see current url. assume the user wants you to use this page for your playwright code
|
|
16
|
+
- require: node's require function to load CommonJS modules
|
|
17
|
+
- import: async import function to dynamically import ES modules. for example `const fs = await import('node:fs')`
|
|
18
|
+
- all standard Node.js globals: setTimeout, setInterval, clearTimeout, clearInterval, URL, URLSearchParams, fetch, Buffer, TextEncoder, TextDecoder, crypto, AbortController, AbortSignal, structuredClone
|
|
16
19
|
|
|
17
20
|
the chrome window can have more than one page. you can see other pages with `context.pages().find((p) => p.url().includes('localhost'))`. you can also open and close pages: `state.newPage = await context.newPage()`. store the page in state so that you can reuse it later
|
|
18
21
|
|
|
19
22
|
you can control the browser in collaboration with the user. the user can help you get unstuck from captchas or difficult to find elements or reproducing a bug
|
|
20
23
|
|
|
24
|
+
## finding the page to execute code in
|
|
25
|
+
|
|
26
|
+
if you plan to control a specific page for an url you can store it in `state` so you can reuse it later on:
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
const pages = context.pages().filter(x => x.url().includes('localhost'));
|
|
30
|
+
if (pages.length === 0) throw new Error('No page with URL matching localhost found');
|
|
31
|
+
if (pages.length > 1) throw new Error('Multiple pages with URL matching localhost found');
|
|
32
|
+
state.localhostPage = pages[0];
|
|
33
|
+
// do things with the page
|
|
34
|
+
await state.localhostPage.bringToFront();
|
|
35
|
+
```
|
|
36
|
+
|
|
21
37
|
## rules
|
|
22
38
|
|
|
23
39
|
- only call `page.close()` if the user asks you so or if you previously created this page yourself with `newPage`. do not close user created pages unless asked
|
|
24
40
|
- try to never sleep or run `page.waitForTimeout` unless you have to. there are better ways to wait for an element
|
|
25
41
|
- never close browser or context. NEVER call `browser.close()`
|
|
26
42
|
|
|
43
|
+
## always check the current page state after an action
|
|
44
|
+
|
|
45
|
+
after you click a button or submit a form you ALWAYS have to then check what is the current state of the page. you cannot assume what happened after doing an action. instead run the following code to know what happened after the action:
|
|
46
|
+
|
|
47
|
+
`console.log('url:', page.url()); console.log(await accessibilitySnapshot({ page }).then(x => x.slice(0, 1000)));`
|
|
48
|
+
|
|
49
|
+
if nothing happened you may need to wait before the action completes, using something like `page.waitForNavigation({timeout: 3000})` or `await page.waitForLoadState('networkidle', {timeout: 3000})`
|
|
50
|
+
|
|
51
|
+
if nothing happens it could also means that you clicked the wrong button or link. try to search for other appropriate elements to click or submit
|
|
52
|
+
|
|
53
|
+
|
|
27
54
|
## event listeners
|
|
28
55
|
|
|
29
56
|
always detach event listener you create at the end of a message using `page.removeAllListeners()` or similar so that you never leak them in future messages
|
|
@@ -32,7 +59,10 @@ always detach event listener you create at the end of a message using `page.remo
|
|
|
32
59
|
|
|
33
60
|
you have access to some functions in addition to playwright methods:
|
|
34
61
|
|
|
35
|
-
- `async accessibilitySnapshot(page)`: gets a human readable snapshot of clickable elements on the page. useful to see the overall structure of the page and what elements you can interact with
|
|
62
|
+
- `async accessibilitySnapshot({ page, searchString, contextLines })`: gets a human readable snapshot of clickable elements on the page. useful to see the overall structure of the page and what elements you can interact with.
|
|
63
|
+
- `page`: the page object to snapshot
|
|
64
|
+
- `searchString`: (optional) a string or regex to filter the snapshot. If provided, returns the first 10 matches with surrounding context
|
|
65
|
+
- `contextLines`: (optional) number of lines of context to show around each match (default: 10)
|
|
36
66
|
- `async resetPlaywright()`: recreates the CDP connection and resets the browser/page/context. Use this when the MCP stops responding, you get connection errors, assertion failures, or timeout issues. After calling this, the page and context variables are automatically updated in the execution environment. IMPORTANT: this completely resets the execution context, removing any custom properties you may have added to the global scope AND clearing all keys from the `state` object. Only `page`, `context`, `state` (empty), `console`, and utility functions will remain
|
|
37
67
|
|
|
38
68
|
To bring a tab to front and focus it, use the standard Playwright method `await page.bringToFront()`
|
|
@@ -57,7 +87,37 @@ example:
|
|
|
57
87
|
|
|
58
88
|
Then you can use `page.locator(`aria-ref=${ref}`)` to get an element with a specific `ref` and interact with it.
|
|
59
89
|
|
|
60
|
-
`const componentsLink = page.locator('aria-ref=e14').click()`
|
|
90
|
+
`const componentsLink = page.locator('aria-ref=e14').click()`
|
|
91
|
+
|
|
92
|
+
IMPORTANT: notice that we do not add any quotes in `aria-ref`! it MUST be called without quotes
|
|
93
|
+
|
|
94
|
+
## getting selector for a locator identified by snapshot aria-ref
|
|
95
|
+
|
|
96
|
+
in some cases you want to get a selector for a locator you just identified using `const element = page.locator('aria-ref=${ref}')`. To do so you can use `await getLocatorStringForElement(element)`. This is useful if you need to find other elements of the same type in a list for example. If you know the selector you can usually change a bit the selector to find the other elements of the same type in the list or table
|
|
97
|
+
|
|
98
|
+
```js
|
|
99
|
+
const loc = page.locator('aria-ref=123');
|
|
100
|
+
console.log(await getLocatorStringForElement(loc));
|
|
101
|
+
// => "getByRole('button', { name: 'Save' })" or similar
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## finding specific elements with snapshot
|
|
105
|
+
|
|
106
|
+
You can use `searchString` to find specific elements in the snapshot without reading the whole page structure. This is useful for finding forms, textareas, or specific text.
|
|
107
|
+
|
|
108
|
+
Example: find a textarea or form using case-insensitive regex:
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
const snapshot = await accessibilitySnapshot({ page, searchString: /textarea|form/i })
|
|
112
|
+
console.log(snapshot)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Example: find elements containing "Login":
|
|
116
|
+
|
|
117
|
+
```js
|
|
118
|
+
const snapshot = await accessibilitySnapshot({ page, searchString: "Login" })
|
|
119
|
+
console.log(snapshot)
|
|
120
|
+
```
|
|
61
121
|
|
|
62
122
|
## getting outputs of code execution
|
|
63
123
|
|
|
@@ -98,3 +158,17 @@ later, you can read logs that you care about. For example, to get the last 100 l
|
|
|
98
158
|
`console.log('errors:'); state.logs.filter(log => log.type === 'error').slice(-100).forEach(x => console.log(x))`
|
|
99
159
|
|
|
100
160
|
then to reset logs: `state.logs = []` and to stop listening: `page.removeAllListeners('console')`
|
|
161
|
+
|
|
162
|
+
## loading file content into inputs
|
|
163
|
+
|
|
164
|
+
you can use the `import` function to read files and fill inputs with their content:
|
|
165
|
+
|
|
166
|
+
```js
|
|
167
|
+
const fs = await import('node:fs'); const content = fs.readFileSync('/path/to/file.txt', 'utf-8'); await page.locator('textarea').fill(content)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
for example, to fill a textarea with the content of a markdown file:
|
|
171
|
+
|
|
172
|
+
```js
|
|
173
|
+
const fs = await import('node:fs'); const readme = fs.readFileSync('./README.md', 'utf-8'); await page.locator('#description').fill(readme); console.log('Filled textarea with README content')
|
|
174
|
+
```
|