From be60712afcb6ee3b78da5a6b644424411a193284 Mon Sep 17 00:00:00 2001 From: pashpashpash Date: Thu, 10 Apr 2025 16:56:45 -0700 Subject: [PATCH] fixed race condition --- src/extension.ts | 2 +- src/services/test/TestServer.ts | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 69b1b82b73..a58f3be859 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -399,7 +399,7 @@ export function activate(context: vscode.ExtensionContext) { // Set up test server if in test mode if (IS_TEST && IS_TEST === "true") { - createTestServer() + createTestServer(sidebarWebview) } return createClineAPI(outputChannel, sidebarWebview.controller) diff --git a/src/services/test/TestServer.ts b/src/services/test/TestServer.ts index 2d623151b0..886c8d0538 100644 --- a/src/services/test/TestServer.ts +++ b/src/services/test/TestServer.ts @@ -8,9 +8,10 @@ let messageCatcherDisposable: vscode.Disposable | undefined /** * Creates and starts an HTTP server for test automation + * @param webviewProvider The webview provider instance to use for message catching * @returns The created HTTP server instance */ -export function createTestServer(): http.Server { +export function createTestServer(webviewProvider?: WebviewProvider): http.Server { const PORT = 9876 testServer = http.createServer((req, res) => { @@ -99,12 +100,16 @@ export function createTestServer(): http.Server { Logger.log(`Test server error: ${error}`) }) - // Set up message catcher for the visible webview instance - const visibleWebview = WebviewProvider.getVisibleInstance() - if (visibleWebview) { - messageCatcherDisposable = createMessageCatcher(visibleWebview) + // Set up message catcher for the provided webview instance or try to get the visible one + if (webviewProvider) { + messageCatcherDisposable = createMessageCatcher(webviewProvider) } else { - Logger.log("No visible webview instance found for message catcher") + const visibleWebview = WebviewProvider.getVisibleInstance() + if (visibleWebview) { + messageCatcherDisposable = createMessageCatcher(visibleWebview) + } else { + Logger.log("No visible webview instance found for message catcher") + } } return testServer