Roo-Code/apps/vscode-e2e/src/suite/index.ts
2025-06-21 00:57:13 -07:00

65 lines
1.8 KiB
TypeScript

import * as path from "path"
import Mocha from "mocha"
import { glob } from "glob"
import * as vscode from "vscode"
import type { RooCodeAPI } from "@roo-code/types"
import { waitFor } from "./utils"
export async function run() {
const extension = vscode.extensions.getExtension<RooCodeAPI>("RooVeterinaryInc.roo-cline")
if (!extension) {
throw new Error("Extension not found")
}
const api = extension.isActive ? extension.exports : await extension.activate()
await api.setConfiguration({
apiProvider: "openrouter" as const,
openRouterApiKey: process.env.OPENROUTER_API_KEY!,
openRouterModelId: "openai/gpt-4.1",
})
await vscode.commands.executeCommand("roo-cline.SidebarProvider.focus")
await waitFor(() => api.isReady())
globalThis.api = api
const mochaOptions: Mocha.MochaOptions = {
ui: "tdd",
timeout: 20 * 60 * 1_000, // 20m
}
if (process.env.TEST_GREP) {
mochaOptions.grep = process.env.TEST_GREP
console.log(`Running tests matching pattern: ${process.env.TEST_GREP}`)
}
const mocha = new Mocha(mochaOptions)
const cwd = path.resolve(__dirname, "..")
let testFiles: string[]
if (process.env.TEST_FILE) {
const specificFile = process.env.TEST_FILE.endsWith(".js")
? process.env.TEST_FILE
: `${process.env.TEST_FILE}.js`
testFiles = await glob(`**/${specificFile}`, { cwd })
console.log(`Running specific test file: ${specificFile}`)
} else {
testFiles = await glob("**/**.test.js", { cwd })
}
if (testFiles.length === 0) {
throw new Error(`No test files found matching criteria: ${process.env.TEST_FILE || "all tests"}`)
}
testFiles.forEach((testFile) => mocha.addFile(path.resolve(cwd, testFile)))
return new Promise<void>((resolve, reject) =>
mocha.run((failures) => (failures === 0 ? resolve() : reject(new Error(`${failures} tests failed.`)))),
)
}