Go to file
vithobaa e5fbd6bec4 fix: remove conflicting AnalyticsController in analytics package 2026-06-30 10:42:54 +05:30
master fix: remove conflicting AnalyticsController in analytics package 2026-06-30 10:42:54 +05:30
ui feat: complete Gap 4 (CI/CD UI) and Gap 5 (Governance, Analytics, Audit logging) 2026-06-30 10:31:16 +05:30
worker feat: initial AutoPilot monorepo 2026-06-29 18:20:23 +05:30
.env.example chore: change default database name to autopilot_db and user to autopilot 2026-06-30 10:03:41 +05:30
.gitignore feat: initial AutoPilot monorepo 2026-06-29 18:20:23 +05:30
README.md feat: initial AutoPilot monorepo 2026-06-29 18:20:23 +05:30
docker-compose.local.yml feat: initial AutoPilot monorepo 2026-06-29 18:20:23 +05:30
docker-compose.yml chore: change default database name to autopilot_db and user to autopilot 2026-06-30 10:03:41 +05:30

README.md

AutoPilot — Distributed Web Test Automation Platform

AutoPilot is a full-stack, enterprise-grade distributed web browser automation platform. It consists of three components deployed together as a monorepo.

autopilot/
├── master/          # Cloud Coordinator — Spring Boot REST API + Scheduler + DB
├── worker/          # Execution Engine  — Selenium WebDriver agent (polls master)
├── ui/              # Dashboard         — React + Vite frontend (served via Nginx)
├── docker-compose.yml          # Production: full stack with PostgreSQL
├── docker-compose.local.yml    # Local dev: DB only (run services manually)
└── .env.example                # Template for environment variables

🚀 Production Deployment (AWS / Any Linux Server)

Prerequisites

  • Docker & Docker Compose installed
  • At least 2 CPU cores and 2GB RAM

1. Clone the repository

git clone https://repo.qruize.com/VithobaaSrinivasakumar/Autopilot.git
cd Autopilot

2. Configure environment variables

cp .env.example .env
nano .env   # Fill in DB_PASS, JWT_SECRET, AWS keys, etc.

3. Deploy the full stack

docker-compose up -d --build

This starts:

  • PostgreSQL (database, internal only)
  • AutoPilot Master on port 9090
  • AutoPilot UI on port 80 (Nginx)

4. Verify deployment

docker-compose ps
curl http://localhost:9090/api/health

5. Updating to a new version

git pull origin main
docker-compose up -d --build

🏗️ Local Development (No Docker for Services)

1. Start only the database

docker-compose -f docker-compose.local.yml up -d

2. Start the Master (Terminal 1)

cd master
./mvnw spring-boot:run
# Runs on http://localhost:9090

3. Start the UI (Terminal 2)

cd ui
npm install
npm run dev
# Runs on http://localhost:5173

4. Start the Worker (Terminal 3)

cd worker
./mvnw spring-boot:run
# Polls http://localhost:9090 for jobs

🔗 CI/CD Integration

AutoPilot can be triggered directly from your DevOps pipeline using an API key.

Trigger a test suite

curl -X POST \
  -H "Authorization: Bearer ap_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"suiteName": "Smoke Tests", "browser": "chrome"}' \
  https://your-domain.com/api/v1/suites/trigger-by-name

Poll for results

curl -H "Authorization: Bearer ap_live_your_api_key" \
  https://your-domain.com/api/v1/schedulers/{schedulerId}/execution-status
# exitCode: 0 = all passed, 1 = failures, 2 = still running

For full GitHub Actions, GitLab CI, and Jenkins snippets, see the CI/CD Integration page inside the dashboard.


🌐 Environment Variables Reference

Variable Description Required
DB_URL JDBC connection string to PostgreSQL
DB_USER Database username
DB_PASS Database password
JWT_SECRET Minimum 256-bit secret for signing tokens
AWS_REGION AWS region for S3 screenshot storage Optional
AWS_ACCESS_KEY_ID AWS access key Optional
AWS_SECRET_ACCESS_KEY AWS secret key Optional
S3_BUCKET_NAME S3 bucket for storing screenshots Optional
LOCALAGENT_CLOUD_URL URL the Worker uses to reach the Master Worker only

📖 API Reference

Method Endpoint Description
POST /api/v1/suites/{id}/trigger Trigger suite by ID
POST /api/v1/suites/trigger-by-name Trigger suite by name
GET /api/v1/schedulers/{id}/execution-status Poll execution result
GET /api/v1/executions/{id}/status Get execution detail