chore(gha): e2e tests pipeline with API services (#8338)

This commit is contained in:
César Arroba
2025-07-22 17:49:23 +02:00
committed by GitHub
parent 1efd5668ce
commit cbb5b21e6c
4 changed files with 107 additions and 3 deletions
+48 -3
View File
@@ -52,11 +52,49 @@ jobs:
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: http://localhost:8080/api/v1
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Start needed services with docker compose
run: |
docker compose up -d api worker worker-beat
- name: Wait for prowler-api to respond
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
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
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
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:
@@ -66,6 +104,9 @@ jobs:
- 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
@@ -78,9 +119,6 @@ jobs:
working-directory: ./ui
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: npm run test:e2e:install
- name: Build the application
working-directory: ./ui
run: npm run build
- name: Run Playwright tests
working-directory: ./ui
run: npm run test:e2e
@@ -92,6 +130,13 @@ jobs:
path: ui/playwright-report/
retention-days: 30
- name: Cleanup services
if: always()
run: |
echo "Shutting down services..."
docker-compose down -v || true
echo "Cleanup completed"
test-container-build:
runs-on: ubuntu-latest
steps: