@@ -149,10 +149,13 @@ suite("Roo Code Extension Test Suite", () => {
149
149
150
150
test ( "Should handle prompt and response correctly" , async function ( ) {
151
151
// @ts -ignore
152
- this . timeout ( 600000 ) // Increase timeout for API request
152
+ this . timeout ( 900000 ) // Increase timeout for CI environment
153
153
154
- const timeout = 60000
155
- const interval = 1000
154
+ const timeout = 120000 // Increase timeout for CI
155
+ const interval = 2000 // Increase interval to reduce CPU usage
156
+ const authTimeout = 300000 // 5 minutes timeout for auth provider
157
+
158
+ console . log ( "Starting prompt and response test..." )
156
159
157
160
// Get extension instance
158
161
const extension = await vscode . extensions . getExtension ( "RooVeterinaryInc.roo-cline" )
@@ -162,20 +165,23 @@ suite("Roo Code Extension Test Suite", () => {
162
165
}
163
166
164
167
// Activate extension and get API
168
+ console . log ( "Activating extension..." )
165
169
const api = await extension . activate ( )
166
170
if ( ! api ) {
167
171
assert . fail ( "Extension API not found" )
168
172
return
169
173
}
170
174
171
175
// Get provider
176
+ console . log ( "Getting provider..." )
172
177
const provider = await api . sidebarProvider
173
178
if ( ! provider ) {
174
179
assert . fail ( "Provider not found" )
175
180
return
176
181
}
177
182
178
183
// Set up API configuration
184
+ console . log ( "Setting up API configuration..." )
179
185
await provider . updateGlobalState ( "apiProvider" , "openrouter" )
180
186
await provider . updateGlobalState ( "openRouterModelId" , "anthropic/claude-3.5-sonnet" )
181
187
const apiKey = process . env . OPENROUTER_API_KEY
@@ -186,6 +192,7 @@ suite("Roo Code Extension Test Suite", () => {
186
192
await provider . storeSecret ( "openRouterApiKey" , apiKey )
187
193
188
194
// Create webview panel with development options
195
+ console . log ( "Creating webview panel..." )
189
196
const extensionUri = extension . extensionUri
190
197
const panel = vscode . window . createWebviewPanel ( "roo-cline.SidebarProvider" , "Roo Code" , vscode . ViewColumn . One , {
191
198
enableScripts : true ,
@@ -203,57 +210,96 @@ suite("Roo Code Extension Test Suite", () => {
203
210
}
204
211
205
212
// Initialize provider with panel
213
+ console . log ( "Initializing provider with panel..." )
206
214
await provider . resolveWebviewView ( panel )
207
- // Set up message tracking
215
+
216
+ // Set up message tracking with improved error handling
208
217
let webviewReady = false
209
218
let messagesReceived = false
219
+ let authProviderRegistered = false
210
220
const originalPostMessage = await provider . postMessageToWebview . bind ( provider )
221
+
211
222
// @ts -ignore
212
223
provider . postMessageToWebview = async function ( message ) {
213
- console . log ( "Posting message:" , message )
214
- if ( message . type === "state" ) {
215
- webviewReady = true
216
- //console.log("Webview state received:", message)
217
- if ( message . state ?. codeMessages ?. length > 0 ) {
218
- messagesReceived = true
219
- console . log ( "Messages in state:" , message . state . codeMessages )
224
+ try {
225
+ console . log ( "Posting message:" , JSON . stringify ( message ) )
226
+ if ( message . type === "state" ) {
227
+ webviewReady = true
228
+ console . log ( "Webview state received" )
229
+ if ( message . state ?. codeMessages ?. length > 0 ) {
230
+ messagesReceived = true
231
+ console . log ( "Messages in state:" , message . state . codeMessages )
232
+ }
233
+ if ( message . state ?. authProvider ) {
234
+ authProviderRegistered = true
235
+ console . log ( "Auth provider registered" )
236
+ }
220
237
}
238
+ await originalPostMessage ( message )
239
+ } catch ( error ) {
240
+ console . error ( "Error in postMessage:" , error )
241
+ throw error
221
242
}
222
- await originalPostMessage ( message )
223
243
}
224
244
225
- // Wait for webview to launch and receive initial state
245
+ // Wait for auth provider to register
246
+ console . log ( "Waiting for auth provider registration..." )
226
247
let startTime = Date . now ( )
227
- while ( Date . now ( ) - startTime < 180000 ) {
248
+ while ( Date . now ( ) - startTime < authTimeout ) {
249
+ if ( authProviderRegistered ) {
250
+ console . log ( "Auth provider successfully registered" )
251
+ break
252
+ }
253
+ if ( Date . now ( ) - startTime > 60000 && ! authProviderRegistered ) {
254
+ console . log ( "Auth provider status check at 1 minute mark:" , await provider . getState ( ) )
255
+ }
256
+ await new Promise ( ( resolve ) => setTimeout ( resolve , interval ) )
257
+ }
258
+
259
+ if ( ! authProviderRegistered ) {
260
+ throw new Error ( "Timeout waiting for auth provider registration" )
261
+ }
262
+
263
+ // Wait for webview to launch and receive initial state
264
+ console . log ( "Waiting for webview initialization..." )
265
+ startTime = Date . now ( )
266
+ while ( Date . now ( ) - startTime < 300000 ) {
267
+ // 5 minutes timeout for CI
228
268
console . log ( "Webview ready:" , webviewReady )
229
269
if ( webviewReady ) {
230
- // Wait an additional second for webview to fully initialize
231
- await new Promise ( ( resolve ) => setTimeout ( resolve , 1000 ) )
270
+ console . log ( "Webview successfully initialized" )
271
+ // Wait additional time for webview to fully initialize
272
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
232
273
break
233
274
}
275
+ if ( Date . now ( ) - startTime > 60000 && ! webviewReady ) {
276
+ console . log ( "Webview status check at 1 minute mark" )
277
+ }
234
278
await new Promise ( ( resolve ) => setTimeout ( resolve , interval ) )
235
279
}
236
280
237
281
if ( ! webviewReady ) {
238
- console . log ( "Timeout waiting for webview to be ready: could be running in GHA " )
282
+ throw new Error ( "Timeout waiting for webview initialization " )
239
283
}
240
284
241
285
// Send webviewDidLaunch to initialize chat
286
+ console . log ( "Sending webviewDidLaunch..." )
242
287
await provider . postMessageToWebview ( { type : "webviewDidLaunch" } )
243
288
console . log ( "Sent webviewDidLaunch" )
244
289
245
290
// Wait for webview to fully initialize
246
- await new Promise ( ( resolve ) => setTimeout ( resolve , 2000 ) )
291
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
247
292
248
293
// Restore original postMessage
249
294
provider . postMessageToWebview = originalPostMessage
250
295
251
296
// Wait for OpenRouter models to be fully loaded
297
+ console . log ( "Waiting for OpenRouter models..." )
252
298
startTime = Date . now ( )
253
299
while ( Date . now ( ) - startTime < timeout ) {
254
300
const models = await provider . readOpenRouterModels ( )
255
301
if ( models && Object . keys ( models ) . length > 0 ) {
256
- // console.log("OpenRouter models loaded")
302
+ console . log ( "OpenRouter models successfully loaded" )
257
303
break
258
304
}
259
305
await new Promise ( ( resolve ) => setTimeout ( resolve , interval ) )
@@ -263,21 +309,24 @@ suite("Roo Code Extension Test Suite", () => {
263
309
const prompt = "Hello world, what is your name?"
264
310
console . log ( "Sending prompt:" , prompt )
265
311
266
- // Start task
312
+ // Start task with improved error handling
267
313
try {
268
314
await api . startNewTask ( prompt )
269
- console . log ( "Task started" )
315
+ console . log ( "Task successfully started" )
270
316
} catch ( error ) {
271
317
console . error ( "Error starting task:" , error )
318
+ console . log ( "Provider state at error:" , await provider . getState ( ) )
272
319
throw error
273
320
}
274
321
275
322
// Wait for messages to be processed
323
+ console . log ( "Waiting for response..." )
276
324
startTime = Date . now ( )
277
325
let responseReceived = false
278
326
while ( Date . now ( ) - startTime < timeout ) {
279
- console . log ( "State:" , await provider . getState ( ) )
280
- console . log ( "Cline:" , provider . cline ?. clineMessages )
327
+ const state = await provider . getState ( )
328
+ console . log ( "Current state:" , JSON . stringify ( state ) )
329
+
281
330
// Check provider.clineMessages
282
331
const messages = provider . clineMessages
283
332
if ( messages && messages . length > 0 ) {
@@ -293,7 +342,7 @@ suite("Roo Code Extension Test Suite", () => {
293
342
}
294
343
}
295
344
296
- //Check provider.cline.clineMessages
345
+ // Check provider.cline.clineMessages
297
346
const clineMessages = provider . cline ?. clineMessages
298
347
if ( clineMessages && clineMessages . length > 0 ) {
299
348
console . log ( "Cline messages:" , JSON . stringify ( clineMessages , null , 2 ) )
@@ -309,13 +358,17 @@ suite("Roo Code Extension Test Suite", () => {
309
358
}
310
359
311
360
await new Promise ( ( resolve ) => setTimeout ( resolve , interval ) )
312
- console . log ( "Waiting for response..." )
313
361
}
314
362
315
363
if ( ! responseReceived ) {
316
364
console . log ( "Final provider state:" , await provider . getState ( ) )
317
- throw new Error ( "Did not receive any response" )
365
+ throw new Error ( "Did not receive expected response within timeout period " )
318
366
}
367
+
368
+ console . log ( "Test completed successfully" )
369
+ } catch ( error ) {
370
+ console . error ( "Test failed with error:" , error )
371
+ throw error
319
372
} finally {
320
373
panel . dispose ( )
321
374
}
0 commit comments