Part 6 pw #6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: E2E Tests with Local Supabase | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| pull_request: | |
| branches: [ main ] | |
| jobs: | |
| e2e-tests: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Clean and install dependencies | |
| run: | | |
| npm cache clean --force | |
| rm -f package-lock.json | |
| rm -rf node_modules | |
| npm install | |
| npm ls @rollup/rollup-linux-x64-gnu || echo "Rollup native dependency not found, continuing..." | |
| - name: Install Supabase CLI | |
| run: | | |
| mkdir -p /tmp/supabase-cli | |
| cd /tmp/supabase-cli | |
| curl -fsSL https://github.com/supabase/cli/releases/download/v1.123.4/supabase_linux_amd64.tar.gz | tar -xz | |
| chmod +x supabase | |
| sudo mv supabase /usr/local/bin/ | |
| cd / | |
| rm -rf /tmp/supabase-cli | |
| supabase --version | |
| - name: Start Docker | |
| run: | | |
| sudo systemctl start docker | |
| sudo usermod -aG docker $USER | |
| - name: Start Supabase local instance | |
| run: | | |
| supabase start | |
| sleep 15 | |
| supabase status | |
| echo "=== Supabase Services Status ===" | |
| docker ps --filter name=supabase | |
| echo "=== Testing direct API connectivity ===" | |
| curl -v http://127.0.0.1:54321/health || echo "Health check failed" | |
| curl -v -H "apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0" http://127.0.0.1:54321/rest/v1/tags || echo "Tags API test failed" | |
| - name: Install Playwright browsers | |
| run: npx playwright install --with-deps | |
| - name: Start Angular app | |
| run: | | |
| npm run start:local & | |
| sleep 45 | |
| echo "=== Checking if Angular app is running ===" | |
| timeout 120 bash -c 'until curl -f http://localhost:4200; do echo "Waiting for Angular..."; sleep 3; done' | |
| echo "=== Angular app is running ===" | |
| curl -v http://localhost:4200 | head -50 | |
| env: | |
| SUPABASE_URL: http://127.0.0.1:54321 | |
| SUPABASE_ANON_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 | |
| - name: Run API connectivity tests first | |
| run: npx playwright test api-connectivity.spec.ts --project=local | |
| env: | |
| SUPABASE_URL: http://127.0.0.1:54321 | |
| SUPABASE_ANON_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 | |
| - name: Run E2E tests with debugging | |
| run: | | |
| echo "=== Running E2E tests with full debugging ===" | |
| DEBUG=pw:api npx playwright test --project=local --reporter=line | |
| env: | |
| SUPABASE_URL: http://127.0.0.1:54321 | |
| SUPABASE_ANON_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 | |
| - name: Debug on failure | |
| if: failure() | |
| run: | | |
| echo "=== DEBUGGING INFORMATION ===" | |
| echo "Docker containers:" | |
| docker ps -a | |
| echo "Supabase status:" | |
| supabase status || echo "Supabase status failed" | |
| echo "Angular process:" | |
| ps aux | grep ng || echo "No ng process found" | |
| echo "Network connections:" | |
| netstat -tulpn | grep -E '(4200|54321)' || echo "No connections found" | |
| echo "Checking logs:" | |
| docker logs $(docker ps -q --filter name=supabase_db) | tail -50 || echo "No DB logs" | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| retention-days: 30 | |
| - name: Stop services | |
| if: always() | |
| run: | | |
| pkill -f "ng serve" || true | |
| supabase stop || true |