From 7e768b629093da40c83e9162ca6f8e0cee06a743 Mon Sep 17 00:00:00 2001 From: DhanushSantosh Date: Fri, 9 Jan 2026 22:44:57 +0530 Subject: [PATCH] fix: restore complete E2E workflow structure - Restore missing workflow metadata (name, on, jobs) - Fix YAML structure that got corrupted during edits - Ensure E2E tests will run on PRs and pushes to main/master --- .github/workflows/e2e-tests.yml | 135 +++++++++++++++++++++++--------- 1 file changed, 97 insertions(+), 38 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 057457a2..abc5a867 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -1,41 +1,100 @@ -- name: Build server - run: npm run build --workspace=apps/server +name: E2E Tests -- name: Set up Git user - run: | - git config --global user.name "GitHub CI" - git config --global user.email "ci@example.com" +on: + pull_request: + branches: + - '*' + push: + branches: + - main + - master -- name: Start backend server - run: npm run start --workspace=apps/server & - env: - PORT: 3008 - NODE_ENV: test - # Use a deterministic API key so Playwright can log in reliably - AUTOMAKER_API_KEY: test-api-key-for-e2e-tests - # Reduce log noise in CI - AUTOMAKER_HIDE_API_KEY: 'true' - # Avoid real API calls during CI - AUTOMAKER_MOCK_AGENT: 'true' - # Simulate containerized environment to skip sandbox confirmation dialogs - IS_CONTAINERIZED: 'true' +jobs: + e2e: + runs-on: ubuntu-latest + timeout-minutes: 15 -- name: Wait for backend server - run: | - echo "Waiting for backend server to be ready..." - for i in {1..60}; do - if curl -s -f http://localhost:3008/api/health > /dev/null 2>&1; then - echo "Backend server is ready!" - curl -s http://localhost:3008/api/health | jq . 2>/dev/null || echo "Health check response: $(curl -s http://localhost:3008/api/health 2>/dev/null || echo 'No response')" - exit 0 - fi - echo "Waiting... ($i/60)" - sleep 1 - done - echo "Backend server failed to start!" - echo "Checking server status..." - ps aux | grep -E "(node|tsx)" | grep -v grep || echo "No node processes found" - netstat -tlnp 2>/dev/null | grep :3008 || echo "Port 3008 not listening" - echo "Testing health endpoint..." - curl -v http://localhost:3008/api/health 2>&1 || echo "Health endpoint failed" - exit 1 + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup project + uses: ./.github/actions/setup-project + with: + check-lockfile: 'true' + rebuild-node-pty-path: 'apps/server' + + - name: Install Playwright browsers + run: npx playwright install --with-deps chromium + working-directory: apps/ui + + - name: Build server + run: npm run build --workspace=apps/server + + - name: Set up Git user + run: | + git config --global user.name "GitHub CI" + git config --global user.email "ci@example.com" + + - name: Start backend server + run: npm run start --workspace=apps/server & + env: + PORT: 3008 + NODE_ENV: test + # Use a deterministic API key so Playwright can log in reliably + AUTOMAKER_API_KEY: test-api-key-for-e2e-tests + # Reduce log noise in CI + AUTOMAKER_HIDE_API_KEY: 'true' + # Avoid real API calls during CI + AUTOMAKER_MOCK_AGENT: 'true' + # Simulate containerized environment to skip sandbox confirmation dialogs + IS_CONTAINERIZED: 'true' + + - name: Wait for backend server + run: | + echo "Waiting for backend server to be ready..." + for i in {1..60}; do + if curl -s -f http://localhost:3008/api/health > /dev/null 2>&1; then + echo "Backend server is ready!" + curl -s http://localhost:3008/api/health | jq . 2>/dev/null || echo "Health check response: $(curl -s http://localhost:3008/api/health 2>/dev/null || echo 'No response')" + exit 0 + fi + echo "Waiting... ($i/60)" + sleep 1 + done + echo "Backend server failed to start!" + echo "Checking server status..." + ps aux | grep -E "(node|tsx)" | grep -v grep || echo "No node processes found" + netstat -tlnp 2>/dev/null | grep :3008 || echo "Port 3008 not listening" + echo "Testing health endpoint..." + curl -v http://localhost:3008/api/health 2>&1 || echo "Health endpoint failed" + exit 1 + + - name: Run E2E tests + # Playwright automatically starts the Vite frontend via webServer config + # (see apps/ui/playwright.config.ts) - no need to start it manually + run: npm run test --workspace=apps/ui + env: + CI: true + VITE_SERVER_URL: http://localhost:3008 + VITE_SKIP_SETUP: 'true' + # Keep UI-side login/defaults consistent + AUTOMAKER_API_KEY: test-api-key-for-e2e-tests + + - name: Upload Playwright report + uses: actions/upload-artifact@v4 + if: always() + with: + name: playwright-report + path: apps/ui/playwright-report/ + retention-days: 7 + + - name: Upload test results (screenshots, traces, videos) + uses: actions/upload-artifact@v4 + if: always() + with: + name: test-results + path: | + apps/ui/test-results/ + retention-days: 7 + if-no-files-found: ignore