name: UI - E2E Tests on: pull_request: branches: - master - "v5.*" paths: - 'ui/**' env: SERVICES_TO_START: "api-dev postgres valkey worker-beat worker-dev" DOCKER_COMPOSE_FILE: "docker-compose-dev.yml" jobs: e2e: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' cache-dependency-path: './ui/package-lock.json' # - name: Cache Playwright Browsers # uses: actions/cache@v4 # with: # path: ~/.cache/ms-playwright # key: playwright-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }} # restore-keys: | # playwright-${{ runner.os }}- - name: Install dependencies run: npm ci working-directory: ./ui - name: Install Playwright Browsers run: npx playwright install --with-deps working-directory: ./ui - name: Set up Docker Compose uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746 #v1.2.0 - name: Start Docker Compose run: docker compose -f ${DOCKER_COMPOSE_FILE} up -d ${SERVICES_TO_START} - name: Wait for API to be ready run: | for i in {1..30}; do if curl -s http://localhost:8000/api/v1; then echo "API is up!" break fi echo "Waiting for API..." sleep 5 done - name: Run Playwright tests run: npx playwright test working-directory: ./ui - name: Upload Playwright report uses: actions/upload-artifact@v4 with: name: playwright-report path: ./ui/playwright-report - name: Upload Playwright videos uses: actions/upload-artifact@v4 with: name: test-videos path: ./ui/test-results/**/*.webm - name: Docker Compose Down if: always() run: docker compose -f ${DOCKER_COMPOSE_FILE} down