You are helping a user debug test failures and view logs in this SnapLogic Robot Framework project. Provide guidance based on these conventions.
Quick Debugging Checklist
When a test fails, check in this order:
- Test Results -
test/robot_output/log-*.html - Container Status -
make status - Service Logs -
make <service>-logs - Environment -
make check-env - Network -
make docker-networks
Viewing Test Results
Robot Framework Logs
# Find the latest log file
ls -lt test/robot_output/log-*.html | head -1
# Open in browser (macOS)
open test/robot_output/log-*.html
# Open specific timestamped log
open test/robot_output/log-20240115-143022.html
Log File Types
| File | Content |
|---|---|
log-*.html |
Detailed execution log with all keyword steps |
report-*.html |
Summary report with pass/fail statistics |
output-*.xml |
Raw XML results (for CI/CD integration) |
What to Look For in Logs
- Red highlighted rows - Failed keywords
- Timestamps - Identify slow operations
- Screenshots - If captured on failure
- Variable values - Expand to see actual values used
- Stack traces - Python errors in library calls
Container Logs
View All Container Logs
# All logs (can be overwhelming)
docker compose logs
# Follow logs in real-time
docker compose logs -f
# Last 100 lines
docker compose logs --tail=100
Service-Specific Logs
# Test execution container
docker compose logs tools
docker compose logs -f tools # Follow
# Database logs
make oracle-logs # Oracle
make postgres-logs # PostgreSQL
make mysql-logs # MySQL
make snowflake-logs # Snowflake mock
# Messaging logs
make kafka-logs # Kafka
make activemq-logs # ActiveMQ
# Mock service logs
make minio-logs # MinIO (S3)
make salesforce-logs # Salesforce mock
make maildev-logs # Email mock
# Groundplex logs
docker compose logs groundplex
Filter Logs
# Search for errors
docker compose logs tools 2>&1 | grep -i error
# Search for specific test
docker compose logs tools 2>&1 | grep "Test Pipeline"
# Logs from specific time
docker compose logs --since 10m tools # Last 10 minutes
Common Failure Scenarios
1. Connection Refused
Symptoms:
ConnectionRefusedError: [Errno 111] Connection refused
Failed to connect to database
Debug Steps:
# Check if container is running
make status
# Check specific service
make oracle-status # Replace with your service
# View service logs
make oracle-logs
# Verify ports
docker compose ps
# Check network
make docker-networks
Common Causes:
- Container not started
- Container still initializing (especially Oracle)
- Wrong port configuration
- Network isolation issues
2. Environment Variable Missing
Symptoms:
Missing required environment variables: URL, ORG_ADMIN_USER
KeyError: 'ORACLE_PASSWORD'
Debug Steps:
# Check environment
make check-env
# Verify .env file
cat .env | grep -v "^#" | grep -v "^$"
# Check specific variable
grep "ORACLE_PASSWORD" .env
# Verify it's being loaded
docker compose exec tools env | grep ORACLE
Common Causes:
- Missing
.envfile (copy from.env.example) - Variable not defined
- Typo in variable name
- Environment file not in
env_files/
3. Pipeline Execution Failed
Symptoms:
Pipeline status: Failed
Execution error: Connection timeout
Debug Steps:
# Check Groundplex status
docker compose ps groundplex
# View Groundplex logs
docker compose logs groundplex
# Check SnapLogic connection
# (Look for authentication or network errors)
make status
# Verify credentials
grep -E "^(URL|ORG_)" .env
Common Causes:
- Groundplex not running or not registered
- SnapLogic credentials expired
- Network connectivity to SnapLogic cloud
- Pipeline has errors
4. Timeout Errors
Symptoms:
TimeoutError: Operation timed out
Test case timeout exceeded
Debug Steps:
# Check service responsiveness
make status
# Look for slow operations in logs
docker compose logs tools 2>&1 | grep -i "time\|slow\|wait"
# Check system resources
docker stats
Common Causes:
- Service overloaded
- Insufficient resources
- Long-running database operations
- Network latency
5. Data/Assertion Failures
Symptoms:
AssertionError: Expected 100 rows, got 0
Data mismatch: expected 'SUCCESS', got 'PENDING'
Debug Steps:
# Check test data was loaded
make oracle-status # Check DB
make oracle-load-data # Reload if needed
# Verify pipeline output
# Check the log-*.html for actual values
# Check for race conditions
# (Test ran before data was ready)
Common Causes:
- Test data not loaded
- Previous test didn't clean up
- Race condition in async operations
- Pipeline logic error
Advanced Debugging
Interactive Container Access
# Shell into tools container
docker compose exec tools bash
# Then run commands inside:
cd /app/test
python -c "import os; print(os.environ.get('URL'))"
robot --dryrun suite/
Database Query
# Oracle
docker compose exec oracle-db sqlplus testuser/testpass@//localhost:1521/FREEPDB1
# PostgreSQL
docker compose exec postgres-db psql -U testuser -d testdb
# MySQL
docker compose exec mysql-db mysql -u testuser -ptestpass testdb
Network Debugging
# Check container networks
make docker-networks
# Test connectivity from tools container
docker compose exec tools ping -c 3 oracle-db
docker compose exec tools nc -zv oracle-db 1521
Inspect Container
# Detailed container info
docker inspect <container_name>
# Environment variables
docker inspect <container_name> | jq '.[0].Config.Env'
# Network settings
docker inspect <container_name> | jq '.[0].NetworkSettings'
Logging Best Practices
Add Logging to Tests
*** Test Cases ***
Test With Debug Logging
Log To Console Starting test execution...
Log Variable value: ${MY_VAR} level=DEBUG
${result}= Execute Pipeline
Log Pipeline result: ${result} level=INFO
Capture Page Screenshot # If using Browser library
Enable Debug Mode
# Run with debug logging
docker compose exec -w /app/test tools robot \
--loglevel DEBUG \
--include oracle \
--outputdir robot_output \
suite/
Getting Help
If you're stuck:
- Search logs for the exact error message
- Check if the issue is environment-specific (works locally but not in CI?)
- Try a clean restart: Stop all services, flush data, start fresh
- Isolate the problem: Run the smallest test that reproduces the issue
# Clean restart
make oracle-stop # Replace with your service
docker compose down
make oracle-start
make robot-run-tests TAGS="smoke" # Run minimal test first