Skip to content

Commit d33be68

Browse files
committed
Adding integration tests to CI
1 parent 73532e4 commit d33be68

File tree

2 files changed

+47
-30
lines changed

2 files changed

+47
-30
lines changed

.github/workflows/extension-test.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
on:
2+
push:
3+
branches: []
4+
pull_request:
5+
types: [opened, reopened, ready_for_review, synchronize]
6+
branches: [main]
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout code
13+
uses: actions/checkout@v4
14+
15+
- name: Setup Node.js
16+
uses: actions/setup-node@v4
17+
with:
18+
node-version: '18'
19+
cache: 'npm'
20+
21+
- name: Install dependencies
22+
run: npm run install:all
23+
24+
- name: Compile TypeScript
25+
run: npm run compile
26+
27+
- name: Run test
28+
run: xvfb-run -a npm run test:extension

src/test/extension.test.ts

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ const path = require("path")
44
const fs = require("fs")
55
const dotenv = require("dotenv")
66

7-
// Load test environment variables
8-
const testEnvPath = path.join(__dirname, ".test_env")
7+
// Load test environment variables from root directory
8+
const testEnvPath = path.join(__dirname, "..", "..", ".test_env")
99
dotenv.config({ path: testEnvPath })
1010

1111
suite("Roo Code Extension Test Suite", () => {
@@ -114,18 +114,20 @@ suite("Roo Code Extension Test Suite", () => {
114114

115115
test("Commands should be registered", async () => {
116116
const commands = await vscode.commands.getCommands(true)
117+
console.log(
118+
"Available commands:",
119+
commands.filter((cmd: string) => cmd.startsWith("roo-")),
120+
)
117121

118122
// Test core commands are registered
119123
const expectedCommands = [
120124
"roo-cline.plusButtonClicked",
121125
"roo-cline.mcpButtonClicked",
126+
"roo-cline.promptsButtonClicked",
122127
"roo-cline.historyButtonClicked",
123128
"roo-cline.popoutButtonClicked",
124129
"roo-cline.settingsButtonClicked",
125130
"roo-cline.openInNewTab",
126-
"roo-cline.explainCode",
127-
"roo-cline.fixCode",
128-
"roo-cline.improveCode",
129131
]
130132

131133
for (const cmd of expectedCommands) {
@@ -206,14 +208,16 @@ suite("Roo Code Extension Test Suite", () => {
206208
let webviewReady = false
207209
let messagesReceived = false
208210
const originalPostMessage = provider.postMessageToWebview.bind(provider)
209-
// @ts-ignore
210-
provider.postMessageToWebview = async (message) => {
211+
provider.postMessageToWebview = async function (message: {
212+
type: string
213+
state: { codeMessages: string | any[] }
214+
}) {
211215
if (message.type === "state") {
212216
webviewReady = true
213217
console.log("Webview state received:", message)
214-
if (message.state?.clineMessages?.length > 0) {
218+
if (message.state?.codeMessages?.length > 0) {
215219
messagesReceived = true
216-
console.log("Messages in state:", message.state.clineMessages)
220+
console.log("Messages in state:", message.state.codeMessages)
217221
}
218222
}
219223
await originalPostMessage(message)
@@ -268,18 +272,6 @@ suite("Roo Code Extension Test Suite", () => {
268272
throw error
269273
}
270274

271-
// Wait for task to appear in history with tokens
272-
startTime = Date.now()
273-
while (Date.now() - startTime < timeout) {
274-
const state = await provider.getState()
275-
const task = state.taskHistory?.[0]
276-
if (task && task.tokensOut > 0) {
277-
console.log("Task completed with tokens:", task)
278-
break
279-
}
280-
await new Promise((resolve) => setTimeout(resolve, interval))
281-
}
282-
283275
// Wait for messages to be processed
284276
startTime = Date.now()
285277
let responseReceived = false
@@ -288,29 +280,27 @@ suite("Roo Code Extension Test Suite", () => {
288280
const messages = provider.clineMessages
289281
if (messages && messages.length > 0) {
290282
console.log("Provider messages:", JSON.stringify(messages, null, 2))
291-
// @ts-ignore
292283
const hasResponse = messages.some(
293284
(m: { type: string; text: string }) =>
294-
m.type === "say" && m.text && m.text.toLowerCase().includes("cline"),
285+
m.type === "say" && m.text && m.text.toLowerCase().includes("roo"),
295286
)
296287
if (hasResponse) {
297-
console.log('Found response containing "Cline" in provider messages')
288+
console.log('Found response containing "Roo" in provider messages')
298289
responseReceived = true
299290
break
300291
}
301292
}
302293

303-
// Check provider.cline.clineMessages
294+
//Check provider.cline.clineMessages
304295
const clineMessages = provider.cline?.clineMessages
305296
if (clineMessages && clineMessages.length > 0) {
306297
console.log("Cline messages:", JSON.stringify(clineMessages, null, 2))
307-
// @ts-ignore
308298
const hasResponse = clineMessages.some(
309299
(m: { type: string; text: string }) =>
310-
m.type === "say" && m.text && m.text.toLowerCase().includes("cline"),
300+
m.type === "say" && m.text && m.text.toLowerCase().includes("roo"),
311301
)
312302
if (hasResponse) {
313-
console.log('Found response containing "Cline" in cline messages')
303+
console.log('Found response containing "Roo" in cline messages')
314304
responseReceived = true
315305
break
316306
}
@@ -321,8 +311,7 @@ suite("Roo Code Extension Test Suite", () => {
321311

322312
if (!responseReceived) {
323313
console.log("Final provider state:", await provider.getState())
324-
console.log("Final cline messages:", provider.cline?.clineMessages)
325-
throw new Error('Did not receive expected response containing "Cline"')
314+
throw new Error("Did not receive any response")
326315
}
327316
} finally {
328317
panel.dispose()

0 commit comments

Comments
 (0)