Skip to content

Part 6 pw

Part 6 pw #6

Workflow file for this run

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