@@ -202,14 +202,22 @@ check_dependencies() {
202202 exit 1
203203 fi
204204
205- # Check for fcctl-web binary if we need to start server
206- if [ " $START_SERVER " = true ]; then
207- if [ ! -f " scratchpad/firecracker-rust/fcctl-web/target/debug/fcctl-web" ] &&
208- [ ! -f " scratchpad/firecracker-rust/fcctl-web/target/release/fcctl-web" ]; then
209- log_info " Building fcctl-web server..."
210- cd scratchpad/firecracker-rust/fcctl-web
211- cargo build --release
212- cd - > /dev/null
205+ # Check if fcctl-web directory exists
206+ if [ ! -d " scratchpad/firecracker-rust/fcctl-web" ]; then
207+ log_warning " fcctl-web directory not found (scratchpad/firecracker-rust/fcctl-web)"
208+ log_warning " This is expected for CI environments - experimental code is gitignored"
209+ export NO_FCCTL_WEB=true
210+ else
211+ export NO_FCCTL_WEB=false
212+ # Check for fcctl-web binary if we need to start server
213+ if [ " $START_SERVER " = true ]; then
214+ if [ ! -f " scratchpad/firecracker-rust/fcctl-web/target/debug/fcctl-web" ] &&
215+ [ ! -f " scratchpad/firecracker-rust/fcctl-web/target/release/fcctl-web" ]; then
216+ log_info " Building fcctl-web server..."
217+ cd scratchpad/firecracker-rust/fcctl-web
218+ cargo build --release
219+ cd - > /dev/null
220+ fi
213221 fi
214222 fi
215223
@@ -222,6 +230,11 @@ start_server() {
222230 return
223231 fi
224232
233+ if [ " ${NO_FCCTL_WEB:- false} " = true ]; then
234+ log_warning " Skipping fcctl-web server start - directory not present (expected for CI)"
235+ return
236+ fi
237+
225238 log_info " Starting fcctl-web server..."
226239
227240 cd scratchpad/firecracker-rust/fcctl-web
@@ -257,6 +270,11 @@ start_server() {
257270check_server () {
258271 log_info " Checking fcctl-web server availability..."
259272
273+ if [ " ${NO_FCCTL_WEB:- false} " = true ]; then
274+ log_warning " Skipping server check - fcctl-web not present (expected for CI)"
275+ return
276+ fi
277+
260278 if curl -s " $FCCTL_WEB_URL /health" > /dev/null 2>&1 ; then
261279 log_success " fcctl-web server is available at $FCCTL_WEB_URL "
262280 else
@@ -290,6 +308,11 @@ run_unit_tests() {
290308run_integration_tests () {
291309 log_info " Running integration tests..."
292310
311+ if [ " ${NO_FCCTL_WEB:- false} " = true ]; then
312+ log_warning " Skipping integration tests - fcctl-web not present (expected for CI)"
313+ return 0
314+ fi
315+
293316 cd scratchpad/firecracker-rust/fcctl-web
294317
295318 local test_args=()
@@ -313,6 +336,11 @@ run_integration_tests() {
313336run_websocket_tests () {
314337 log_info " Running WebSocket tests..."
315338
339+ if [ " ${NO_FCCTL_WEB:- false} " = true ]; then
340+ log_warning " Skipping WebSocket tests - fcctl-web not present (expected for CI)"
341+ return 0
342+ fi
343+
316344 cd scratchpad/firecracker-rust/fcctl-web
317345
318346 local test_args=(" --ignored" )
@@ -336,6 +364,11 @@ run_websocket_tests() {
336364run_e2e_tests () {
337365 log_info " Running end-to-end tests..."
338366
367+ if [ " ${NO_FCCTL_WEB:- false} " = true ]; then
368+ log_warning " Skipping end-to-end tests - fcctl-web not present (expected for CI)"
369+ return 0
370+ fi
371+
339372 local test_args=(" --ignored" )
340373 if [ " $VERBOSE " = true ]; then
341374 test_args+=(" --" " --nocapture" )
@@ -363,12 +396,16 @@ run_security_tests() {
363396 fi
364397
365398 # Integration security tests
366- cd scratchpad/firecracker-rust/fcctl-web
367- if ! cargo test security_tests 2>&1 | tee -a " ../../../$LOG_FILE " ; then
368- log_error " Integration security tests failed"
369- result=1
399+ if [ " ${NO_FCCTL_WEB:- false} " = false ]; then
400+ cd scratchpad/firecracker-rust/fcctl-web
401+ if ! cargo test security_tests 2>&1 | tee -a " ../../../$LOG_FILE " ; then
402+ log_error " Integration security tests failed"
403+ result=1
404+ fi
405+ cd - > /dev/null
406+ else
407+ log_warning " Skipping integration security tests - fcctl-web not present (expected for CI)"
370408 fi
371- cd - > /dev/null
372409
373410 if [ $result -eq 0 ]; then
374411 log_success " Security tests passed"
@@ -390,12 +427,16 @@ run_performance_tests() {
390427 fi
391428
392429 # Integration performance tests
393- cd scratchpad/firecracker-rust/fcctl-web
394- if ! cargo test websocket_performance_tests --ignored --release 2>&1 | tee -a " ../../../$LOG_FILE " ; then
395- log_error " WebSocket performance tests failed"
396- result=1
430+ if [ " ${NO_FCCTL_WEB:- false} " = false ]; then
431+ cd scratchpad/firecracker-rust/fcctl-web
432+ if ! cargo test websocket_performance_tests --ignored --release 2>&1 | tee -a " ../../../$LOG_FILE " ; then
433+ log_error " WebSocket performance tests failed"
434+ result=1
435+ fi
436+ cd - > /dev/null
437+ else
438+ log_warning " Skipping integration performance tests - fcctl-web not present (expected for CI)"
397439 fi
398- cd - > /dev/null
399440
400441 # Agent performance tests
401442 if ! cargo test agent_performance_tests --ignored --release 2>&1 | tee -a " $LOG_FILE " ; then
0 commit comments