From bcbc2fecb854223449d8069634653ebfab8cbf45 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Wed, 13 Aug 2025 13:22:14 +0200 Subject: [PATCH] add basic test --- tests/vscode.spec.ts | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 tests/vscode.spec.ts diff --git a/tests/vscode.spec.ts b/tests/vscode.spec.ts new file mode 100644 index 0000000..61e2f05 --- /dev/null +++ b/tests/vscode.spec.ts @@ -0,0 +1,57 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { test, expect } from './fixtures.js'; + +test('browser_connect(vscode) works', async ({ startClient, playwright, browserName }) => { + const { client } = await startClient({ + args: ['--connect-tool'], + }); + + const server = await playwright[browserName].launchServer(); + + expect(await client.callTool({ + name: 'browser_connect', + arguments: { + name: 'vscode', + options: { + connectionString: server.wsEndpoint(), + lib: new URL('./index.js', import.meta.resolve('playwright')).pathname, + } + } + })).toHaveResponse({ + result: 'Successfully changed connection method.' + }); + + expect(await client.callTool({ + name: 'browser_navigate', + arguments: { + url: 'data:text/html,foo' + } + })).toHaveResponse({ + pageState: expect.stringContaining('foo'), + }); + + await server.close(); + + expect(await client.callTool({ + name: 'browser_snapshot', + arguments: {} + }), 'it actually used the server').toHaveResponse({ + isError: true, + result: expect.stringContaining('ECONNREFUSED') + }); +});