@@ -322,3 +322,119 @@ jobs:
322322 environment : dev
323323 secrets :
324324 AWS_ROLE_ARN : ${{ secrets.AWS_ROLE_ARN }}
325+
326+ # ============================================================================
327+ # DOCKER COMPOSE E2E TESTS (runs after builds, uses GHA cache)
328+ # ============================================================================
329+ docker-compose-tests :
330+ needs :
331+ - user-management-build
332+ - sticker-award-build
333+ - sticker-catalogue-build
334+ - web-backend-build
335+ # Run if all build jobs succeeded or were skipped (not failed/cancelled)
336+ if : |
337+ always() &&
338+ !contains(needs.*.result, 'failure') &&
339+ !contains(needs.*.result, 'cancelled')
340+ runs-on : ubuntu-latest
341+ steps :
342+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
343+
344+ - name : Set up Docker Buildx
345+ uses : docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
346+
347+ - name : Create CI .env
348+ run : |
349+ cat > .env << EOF
350+ ENV=ci
351+ COMMIT_SHA=latest
352+ DEPLOYMENT_HOST_URL=http://localhost:8080
353+ DD_API_KEY=dummy
354+ DD_SITE=datadoghq.com
355+ DD_RUM_APPLICATION_ID=dummy
356+ DD_RUM_CLIENT_TOKEN=dummy
357+ EOF
358+
359+ - name : Build services with GHA cache
360+ run : |
361+ # Build each service using the GHA cache from build jobs
362+ docker buildx build \
363+ --cache-from type=gha,scope=sticker-catalogue-service \
364+ --load -t sticker-catalogue:latest \
365+ -f sticker-catalogue/src/main/docker/Dockerfile.jvm \
366+ sticker-catalogue
367+
368+ docker buildx build \
369+ --cache-from type=gha,scope=sticker-award-service \
370+ --load -t sticker-award:latest \
371+ -f sticker-award/Dockerfile \
372+ sticker-award
373+
374+ docker buildx build \
375+ --cache-from type=gha,scope=user-management-service \
376+ --load -t user-management:latest \
377+ -f user-management/src/Stickerlandia.UserManagement.Api/Dockerfile \
378+ user-management
379+
380+ docker buildx build \
381+ --cache-from type=gha,scope=user-management-worker \
382+ --load -t user-management-worker:latest \
383+ -f user-management/src/Stickerlandia.UserManagement.Worker/Dockerfile \
384+ user-management
385+
386+ docker buildx build \
387+ --cache-from type=gha,scope=user-management-migration \
388+ --load -t user-management-migration:latest \
389+ -f user-management/src/Stickerlandia.UserManagement.MigrationService/Dockerfile \
390+ user-management
391+
392+ docker buildx build \
393+ --cache-from type=gha,scope=web-backend-service \
394+ --load -t web-backend:latest \
395+ -f web-backend/Dockerfile \
396+ web-backend
397+
398+ docker buildx build \
399+ --cache-from type=gha,scope=web-frontend \
400+ --load -t web-frontend:latest \
401+ -f web-frontend/Dockerfile \
402+ web-frontend
403+
404+ - name : Start services
405+ run : docker compose up -d
406+
407+ - name : Wait for services
408+ run : ./scripts/wait-for-services.sh
409+
410+ - name : Test service endpoints
411+ run : ./scripts/test-services.sh --max-retries 5 --retry-delay 10
412+
413+ - name : Setup Node.js
414+ uses : actions/setup-node@v4
415+ with :
416+ node-version : ' 22'
417+ cache : ' npm'
418+ cache-dependency-path : e2e/package-lock.json
419+
420+ - name : Install Playwright
421+ working-directory : e2e
422+ run : npm ci && npx playwright install --with-deps chromium
423+
424+ - name : Run E2E tests
425+ working-directory : e2e
426+ run : npx playwright test
427+ env :
428+ CI : true
429+ BASE_URL : http://localhost:8080
430+
431+ - name : Upload report on failure
432+ uses : actions/upload-artifact@v4
433+ if : failure()
434+ with :
435+ name : playwright-report
436+ path : e2e/playwright-report/
437+
438+ - name : Cleanup
439+ if : always()
440+ run : docker compose down -v
0 commit comments