Skip to content

Commit f760dfe

Browse files
committed
integrate e2e testing
1 parent 6ea40f4 commit f760dfe

3 files changed

Lines changed: 118 additions & 86 deletions

File tree

.github/workflows/_push-images.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ jobs:
108108
push: true
109109
tags: ${{ steps.meta.outputs.tags }}
110110
labels: ${{ steps.meta.outputs.labels }}
111+
cache-from: type=gha,scope=${{ inputs.image-name }}
112+
cache-to: type=gha,mode=max,scope=${{ inputs.image-name }}
111113
build-args: |
112114
GIT_COMMIT_SHA=${{ env.COMMIT_SHA_FULL }}
113115
GIT_REPOSITORY_URL=${{ env.REPOSITORY_URL }}

.github/workflows/docker-compose-integration.yml

Lines changed: 0 additions & 86 deletions
This file was deleted.

.github/workflows/unified-ci.yml

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)