mirror of
https://github.com/microsoft/playwright-mcp.git
synced 2026-02-04 09:13:10 +00:00
chore: roll 1.58.0-alpha-1766189059000 (#1276)
This commit is contained in:
@@ -88,28 +88,6 @@ const test = base.extend<TestFixtures>({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
async function startAndCallConnectTool(browserWithExtension: BrowserWithExtension, startClient: StartClient): Promise<Client> {
|
|
||||||
const { client } = await startClient({
|
|
||||||
args: [`--connect-tool`],
|
|
||||||
config: {
|
|
||||||
browser: {
|
|
||||||
userDataDir: browserWithExtension.userDataDir,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(await client.callTool({
|
|
||||||
name: 'browser_connect',
|
|
||||||
arguments: {
|
|
||||||
name: 'extension'
|
|
||||||
}
|
|
||||||
})).toHaveResponse({
|
|
||||||
result: 'Successfully changed connection method.',
|
|
||||||
});
|
|
||||||
|
|
||||||
return client;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function startWithExtensionFlag(browserWithExtension: BrowserWithExtension, startClient: StartClient): Promise<Client> {
|
async function startWithExtensionFlag(browserWithExtension: BrowserWithExtension, startClient: StartClient): Promise<Client> {
|
||||||
const { client } = await startClient({
|
const { client } = await startClient({
|
||||||
args: [`--extension`],
|
args: [`--extension`],
|
||||||
@@ -137,15 +115,10 @@ const testWithOldExtensionVersion = test.extend({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
for (const [mode, startClientMethod] of [
|
test(`navigate with extension`, async ({ browserWithExtension, startClient, server }) => {
|
||||||
['connect-tool', startAndCallConnectTool],
|
|
||||||
['extension-flag', startWithExtensionFlag],
|
|
||||||
] as const) {
|
|
||||||
|
|
||||||
test(`navigate with extension (${mode})`, async ({ browserWithExtension, startClient, server }) => {
|
|
||||||
const browserContext = await browserWithExtension.launch();
|
const browserContext = await browserWithExtension.launch();
|
||||||
|
|
||||||
const client = await startClientMethod(browserWithExtension, startClient);
|
const client = await startWithExtensionFlag(browserWithExtension, startClient);
|
||||||
|
|
||||||
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
||||||
return page.url().startsWith('chrome-extension://jakfalbnbhgkpmoaakfflhflbfpkailf/connect.html');
|
return page.url().startsWith('chrome-extension://jakfalbnbhgkpmoaakfflhflbfpkailf/connect.html');
|
||||||
@@ -163,9 +136,9 @@ for (const [mode, startClientMethod] of [
|
|||||||
expect(await navigateResponse).toHaveResponse({
|
expect(await navigateResponse).toHaveResponse({
|
||||||
pageState: expect.stringContaining(`- generic [active] [ref=e1]: Hello, world!`),
|
pageState: expect.stringContaining(`- generic [active] [ref=e1]: Hello, world!`),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test(`snapshot of an existing page (${mode})`, async ({ browserWithExtension, startClient, server }) => {
|
test(`snapshot of an existing page`, async ({ browserWithExtension, startClient, server }) => {
|
||||||
const browserContext = await browserWithExtension.launch();
|
const browserContext = await browserWithExtension.launch();
|
||||||
|
|
||||||
const page = await browserContext.newPage();
|
const page = await browserContext.newPage();
|
||||||
@@ -175,7 +148,7 @@ for (const [mode, startClientMethod] of [
|
|||||||
await browserContext.newPage();
|
await browserContext.newPage();
|
||||||
expect(browserContext.pages()).toHaveLength(3);
|
expect(browserContext.pages()).toHaveLength(3);
|
||||||
|
|
||||||
const client = await startClientMethod(browserWithExtension, startClient);
|
const client = await startWithExtensionFlag(browserWithExtension, startClient);
|
||||||
expect(browserContext.pages()).toHaveLength(3);
|
expect(browserContext.pages()).toHaveLength(3);
|
||||||
|
|
||||||
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
||||||
@@ -197,14 +170,14 @@ for (const [mode, startClientMethod] of [
|
|||||||
});
|
});
|
||||||
|
|
||||||
expect(browserContext.pages()).toHaveLength(4);
|
expect(browserContext.pages()).toHaveLength(4);
|
||||||
});
|
});
|
||||||
|
|
||||||
test(`extension not installed timeout (${mode})`, async ({ browserWithExtension, startClient, server, useShortConnectionTimeout }) => {
|
test(`extension not installed timeout`, async ({ browserWithExtension, startClient, server, useShortConnectionTimeout }) => {
|
||||||
useShortConnectionTimeout(100);
|
useShortConnectionTimeout(100);
|
||||||
|
|
||||||
const browserContext = await browserWithExtension.launch();
|
const browserContext = await browserWithExtension.launch();
|
||||||
|
|
||||||
const client = await startClientMethod(browserWithExtension, startClient);
|
const client = await startWithExtensionFlag(browserWithExtension, startClient);
|
||||||
|
|
||||||
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
||||||
return page.url().startsWith('chrome-extension://jakfalbnbhgkpmoaakfflhflbfpkailf/connect.html');
|
return page.url().startsWith('chrome-extension://jakfalbnbhgkpmoaakfflhflbfpkailf/connect.html');
|
||||||
@@ -219,15 +192,15 @@ for (const [mode, startClientMethod] of [
|
|||||||
});
|
});
|
||||||
|
|
||||||
await confirmationPagePromise;
|
await confirmationPagePromise;
|
||||||
});
|
});
|
||||||
|
|
||||||
testWithOldExtensionVersion(`works with old extension version (${mode})`, async ({ browserWithExtension, startClient, server, useShortConnectionTimeout }) => {
|
testWithOldExtensionVersion(`works with old extension version`, async ({ browserWithExtension, startClient, server, useShortConnectionTimeout }) => {
|
||||||
useShortConnectionTimeout(500);
|
useShortConnectionTimeout(500);
|
||||||
|
|
||||||
// Prelaunch the browser, so that it is properly closed after the test.
|
// Prelaunch the browser, so that it is properly closed after the test.
|
||||||
const browserContext = await browserWithExtension.launch();
|
const browserContext = await browserWithExtension.launch();
|
||||||
|
|
||||||
const client = await startClientMethod(browserWithExtension, startClient);
|
const client = await startWithExtensionFlag(browserWithExtension, startClient);
|
||||||
|
|
||||||
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
||||||
return page.url().startsWith('chrome-extension://jakfalbnbhgkpmoaakfflhflbfpkailf/connect.html');
|
return page.url().startsWith('chrome-extension://jakfalbnbhgkpmoaakfflhflbfpkailf/connect.html');
|
||||||
@@ -245,16 +218,16 @@ for (const [mode, startClientMethod] of [
|
|||||||
expect(await navigateResponse).toHaveResponse({
|
expect(await navigateResponse).toHaveResponse({
|
||||||
pageState: expect.stringContaining(`- generic [active] [ref=e1]: Hello, world!`),
|
pageState: expect.stringContaining(`- generic [active] [ref=e1]: Hello, world!`),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test(`extension needs update (${mode})`, async ({ browserWithExtension, startClient, server, useShortConnectionTimeout, overrideProtocolVersion }) => {
|
test(`extension needs update`, async ({ browserWithExtension, startClient, server, useShortConnectionTimeout, overrideProtocolVersion }) => {
|
||||||
useShortConnectionTimeout(500);
|
useShortConnectionTimeout(500);
|
||||||
overrideProtocolVersion(1000);
|
overrideProtocolVersion(1000);
|
||||||
|
|
||||||
// Prelaunch the browser, so that it is properly closed after the test.
|
// Prelaunch the browser, so that it is properly closed after the test.
|
||||||
const browserContext = await browserWithExtension.launch();
|
const browserContext = await browserWithExtension.launch();
|
||||||
|
|
||||||
const client = await startClientMethod(browserWithExtension, startClient);
|
const client = await startWithExtensionFlag(browserWithExtension, startClient);
|
||||||
|
|
||||||
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
const confirmationPagePromise = browserContext.waitForEvent('page', page => {
|
||||||
return page.url().startsWith('chrome-extension://jakfalbnbhgkpmoaakfflhflbfpkailf/connect.html');
|
return page.url().startsWith('chrome-extension://jakfalbnbhgkpmoaakfflhflbfpkailf/connect.html');
|
||||||
@@ -272,9 +245,7 @@ for (const [mode, startClientMethod] of [
|
|||||||
result: expect.stringContaining('Extension connection timeout.'),
|
result: expect.stringContaining('Extension connection timeout.'),
|
||||||
isError: true,
|
isError: true,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
test(`custom executablePath`, async ({ startClient, server, useShortConnectionTimeout }) => {
|
test(`custom executablePath`, async ({ startClient, server, useShortConnectionTimeout }) => {
|
||||||
useShortConnectionTimeout(1000);
|
useShortConnectionTimeout(1000);
|
||||||
@@ -331,6 +302,4 @@ test(`bypass connection dialog with token`, async ({ browserWithExtension, start
|
|||||||
expect(await navigateResponse).toHaveResponse({
|
expect(await navigateResponse).toHaveResponse({
|
||||||
pageState: expect.stringContaining(`- generic [active] [ref=e1]: Hello, world!`),
|
pageState: expect.stringContaining(`- generic [active] [ref=e1]: Hello, world!`),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
28
package-lock.json
generated
28
package-lock.json
generated
@@ -9,15 +9,15 @@
|
|||||||
"version": "0.0.52",
|
"version": "0.0.52",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"playwright": "1.58.0-alpha-2025-12-11",
|
"playwright": "1.58.0-alpha-1766189059000",
|
||||||
"playwright-core": "1.58.0-alpha-2025-12-11"
|
"playwright-core": "1.58.0-alpha-1766189059000"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"mcp-server-playwright": "cli.js"
|
"mcp-server-playwright": "cli.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@modelcontextprotocol/sdk": "^1.24.0",
|
"@modelcontextprotocol/sdk": "^1.24.0",
|
||||||
"@playwright/test": "1.58.0-alpha-2025-12-11",
|
"@playwright/test": "1.58.0-alpha-1766189059000",
|
||||||
"@types/node": "^24.3.0"
|
"@types/node": "^24.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -63,13 +63,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@playwright/test": {
|
"node_modules/@playwright/test": {
|
||||||
"version": "1.58.0-alpha-2025-12-11",
|
"version": "1.58.0-alpha-1766189059000",
|
||||||
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.0-alpha-2025-12-11.tgz",
|
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.0-alpha-1766189059000.tgz",
|
||||||
"integrity": "sha512-Lo3wdh1iFDzq6s5sW5Lqj9CI9612yUjVIW0s+DQ+lA6Nqz7C9ittrSkMYBcrLNat/IVp1HnUBG1ZmGJIG0dHbA==",
|
"integrity": "sha512-op1/OXuSTm7H0v0vpGtWjLylW3fchuX9TZAPvR+m2QrVKMrqfu17Bzu/l5eMCvIGyJfNqe7JTZuB2Jou9v1EDg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"playwright": "1.58.0-alpha-2025-12-11"
|
"playwright": "1.58.0-alpha-1766189059000"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"playwright": "cli.js"
|
"playwright": "cli.js"
|
||||||
@@ -884,12 +884,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/playwright": {
|
"node_modules/playwright": {
|
||||||
"version": "1.58.0-alpha-2025-12-11",
|
"version": "1.58.0-alpha-1766189059000",
|
||||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.0-alpha-2025-12-11.tgz",
|
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.0-alpha-1766189059000.tgz",
|
||||||
"integrity": "sha512-wNAnyMpt4VZCy9wryVXphHfHgpoD2LRO/h4Bl8GDuvzIpvx6uU/TkRmC5/91feROZ1ng1tTjY6oTVdqIKt7uGQ==",
|
"integrity": "sha512-h6yaIbcmyla/fh9jvvRBgVRMgwSmloKnCR4NDnVV18vqi1i5F4xqe3tGtgwHmkah9CJdQhhbZlTBIkY73q6+Xw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"playwright-core": "1.58.0-alpha-2025-12-11"
|
"playwright-core": "1.58.0-alpha-1766189059000"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"playwright": "cli.js"
|
"playwright": "cli.js"
|
||||||
@@ -902,9 +902,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/playwright-core": {
|
"node_modules/playwright-core": {
|
||||||
"version": "1.58.0-alpha-2025-12-11",
|
"version": "1.58.0-alpha-1766189059000",
|
||||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.0-alpha-2025-12-11.tgz",
|
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.0-alpha-1766189059000.tgz",
|
||||||
"integrity": "sha512-8c8vO4BMIGmEac13g4hxzWNCP/pGdRLhysUvcANU0uxH5UcN/DeFQ5RP+6NIK732u/KpLjCqI27TWdr1xgKb3A==",
|
"integrity": "sha512-TzOav4UONfbqB0U1I75RrcvOGdJ1icVam2/lje1Lok/D9lX9iJjBLGB4FqNgFqaIgeOqI1hpHY8nMfA82JqJtg==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"bin": {
|
"bin": {
|
||||||
"playwright-core": "cli.js"
|
"playwright-core": "cli.js"
|
||||||
|
|||||||
@@ -38,15 +38,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"playwright": "1.58.0-alpha-2025-12-11",
|
"playwright": "1.58.0-alpha-1766189059000",
|
||||||
"playwright-core": "1.58.0-alpha-2025-12-11"
|
"playwright-core": "1.58.0-alpha-1766189059000"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"mcp-server-playwright": "cli.js"
|
"mcp-server-playwright": "cli.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@modelcontextprotocol/sdk": "^1.24.0",
|
"@modelcontextprotocol/sdk": "^1.24.0",
|
||||||
"@playwright/test": "1.58.0-alpha-2025-12-11",
|
"@playwright/test": "1.58.0-alpha-1766189059000",
|
||||||
"@types/node": "^24.3.0"
|
"@types/node": "^24.3.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,38 +44,6 @@ test('test snapshot tool list', async ({ client }) => {
|
|||||||
]));
|
]));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('test tool list proxy mode', async ({ startClient }) => {
|
|
||||||
const { client } = await startClient({
|
|
||||||
args: ['--connect-tool'],
|
|
||||||
});
|
|
||||||
const { tools } = await client.listTools();
|
|
||||||
expect(new Set(tools.map(t => t.name))).toEqual(new Set([
|
|
||||||
'browser_click',
|
|
||||||
'browser_connect', // the extra tool
|
|
||||||
'browser_console_messages',
|
|
||||||
'browser_drag',
|
|
||||||
'browser_evaluate',
|
|
||||||
'browser_file_upload',
|
|
||||||
'browser_fill_form',
|
|
||||||
'browser_handle_dialog',
|
|
||||||
'browser_hover',
|
|
||||||
'browser_select_option',
|
|
||||||
'browser_type',
|
|
||||||
'browser_close',
|
|
||||||
'browser_install',
|
|
||||||
'browser_navigate_back',
|
|
||||||
'browser_navigate',
|
|
||||||
'browser_network_requests',
|
|
||||||
'browser_press_key',
|
|
||||||
'browser_resize',
|
|
||||||
'browser_run_code',
|
|
||||||
'browser_snapshot',
|
|
||||||
'browser_tabs',
|
|
||||||
'browser_take_screenshot',
|
|
||||||
'browser_wait_for',
|
|
||||||
]));
|
|
||||||
});
|
|
||||||
|
|
||||||
test('test capabilities (pdf)', async ({ startClient }) => {
|
test('test capabilities (pdf)', async ({ startClient }) => {
|
||||||
const { client } = await startClient({
|
const { client } = await startClient({
|
||||||
args: ['--caps=pdf'],
|
args: ['--caps=pdf'],
|
||||||
|
|||||||
Reference in New Issue
Block a user