chore(gha): automate e2e tests with new workflow (#8361)

This commit is contained in:
César Arroba
2025-07-24 16:54:01 +02:00
committed by GitHub
parent b99dce6a43
commit b051aeeb64
2 changed files with 107 additions and 98 deletions
-98
View File
@@ -46,104 +46,6 @@ jobs:
working-directory: ./ui
run: npm run build
e2e-tests:
runs-on: ubuntu-latest
env:
AUTH_SECRET: 'fallback-ci-secret-for-testing'
AUTH_TRUST_HOST: true
NEXTAUTH_URL: http://localhost:3000
PROWLER_API_PORT: 8080
NEXT_PUBLIC_API_BASE_URL: ${{ secrets.API_BASE_URL || 'http://localhost:8080/api/v1' }}
E2E_USER: ${{ secrets.E2E_USER }}
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Start needed services with docker compose
if: github.repository == 'prowler-cloud/prowler'
run: |
docker compose up -d api worker worker-beat
- name: Wait for prowler-api to respond
if: github.repository == 'prowler-cloud/prowler'
run: |
echo "Waiting for prowler-api..."
for i in {1..30}; do
if curl -s http://localhost:${PROWLER_API_PORT}/api/v1/docs >/dev/null 2>&1; then
echo "Prowler API is ready!"
break
fi
echo "Waiting for prowler-api... (attempt $i/30)"
sleep 3
done
- name: Run database migrations
if: github.repository == 'prowler-cloud/prowler'
run: |
echo "Running Django migrations..."
docker compose exec -T api sh -c '
poetry run python manage.py migrate --database admin
'
echo "Database migrations completed!"
- name: Copy local fixtures into API container
if: github.repository == 'prowler-cloud/prowler'
run: |
docker cp ./api/src/backend/api/fixtures/dev/. prowler-api-1:/home/prowler/backend/api/fixtures/dev
- name: Load database fixtures for e2e tests
if: github.repository == 'prowler-cloud/prowler'
run: |
docker compose exec -T api sh -c '
echo "Loading all fixtures from api/fixtures/dev/..."
for fixture in api/fixtures/dev/*.json; do
if [ -f "$fixture" ]; then
echo "Loading $fixture"
poetry run python manage.py loaddata "$fixture" --database admin
fi
done
echo "All database fixtures loaded successfully!"
'
- name: Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '20.x'
cache: 'npm'
cache-dependency-path: './ui/package-lock.json'
- name: Install dependencies
working-directory: ./ui
run: npm ci
- name: Build the application
working-directory: ./ui
run: npm run build
- name: Cache Playwright browsers
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
id: playwright-cache
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('ui/package-lock.json') }}
restore-keys: |
${{ runner.os }}-playwright-
- name: Install Playwright browsers
working-directory: ./ui
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: npm run test:e2e:install
- name: Run Playwright tests
working-directory: ./ui
run: npm run test:e2e
- name: Upload Playwright report
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
if: failure()
with:
name: playwright-report
path: ui/playwright-report/
retention-days: 30
- name: Cleanup services
if: github.repository == 'prowler-cloud/prowler'
run: |
echo "Shutting down services..."
docker-compose down -v || true
echo "Cleanup completed"
test-container-build:
runs-on: ubuntu-latest
steps: