mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-07 08:26:51 +00:00
77 lines
2.3 KiB
TypeScript
77 lines
2.3 KiB
TypeScript
import * as assert from "assert"
|
|
import * as vscode from "vscode"
|
|
|
|
import { ClineAPI } from "../exports/cline"
|
|
import { ClineProvider } from "../core/webview/ClineProvider"
|
|
|
|
suite("Roo Code Task", () => {
|
|
test("Should handle prompt and response correctly", async function () {
|
|
const timeout = 30000
|
|
const interval = 1000
|
|
|
|
const extension = vscode.extensions.getExtension("RooVeterinaryInc.roo-cline")
|
|
|
|
if (!extension) {
|
|
assert.fail("Extension not found")
|
|
}
|
|
|
|
const api: ClineAPI = await extension.activate()
|
|
const provider = api.sidebarProvider as ClineProvider
|
|
await provider.updateGlobalState("apiProvider", "openrouter")
|
|
await provider.updateGlobalState("openRouterModelId", "anthropic/claude-3.5-sonnet")
|
|
await provider.storeSecret("openRouterApiKey", process.env.OPENROUTER_API_KEY || "sk-or-v1-fake-api-key")
|
|
|
|
// Create webview panel with development options.
|
|
const panel = vscode.window.createWebviewPanel("roo-cline.SidebarProvider", "Roo Code", vscode.ViewColumn.One, {
|
|
enableScripts: true,
|
|
enableCommandUris: true,
|
|
retainContextWhenHidden: true,
|
|
localResourceRoots: [extension.extensionUri],
|
|
})
|
|
|
|
try {
|
|
// Initialize provider with panel.
|
|
await provider.resolveWebviewView(panel)
|
|
|
|
// Wait for webview to launch.
|
|
let startTime = Date.now()
|
|
|
|
while (Date.now() - startTime < timeout) {
|
|
if (provider.viewLaunched) {
|
|
break
|
|
}
|
|
|
|
await new Promise((resolve) => setTimeout(resolve, interval))
|
|
}
|
|
|
|
await api.startNewTask("Hello world, what is your name? Respond with 'My name is ...'")
|
|
|
|
// Wait for task to appear in history with tokens.
|
|
startTime = Date.now()
|
|
|
|
while (Date.now() - startTime < timeout) {
|
|
const state = await provider.getState()
|
|
const task = state.taskHistory?.[0]
|
|
|
|
if (task && task.tokensOut > 0) {
|
|
break
|
|
}
|
|
|
|
await new Promise((resolve) => setTimeout(resolve, interval))
|
|
}
|
|
|
|
if (provider.messages.length === 0) {
|
|
assert.fail("No messages received")
|
|
}
|
|
|
|
// console.log("Provider messages:", JSON.stringify(provider.messages, null, 2))
|
|
|
|
assert.ok(
|
|
provider.messages.some(({ type, text }) => type === "say" && text?.includes("My name is Roo")),
|
|
"Did not receive expected response containing 'My name is Roo'",
|
|
)
|
|
} finally {
|
|
panel.dispose()
|
|
}
|
|
})
|
|
})
|