name: UI v2 Integration CI on: pull_request: branches: - main paths: - "ui-next/**" push: branches: - main paths: - "ui-next/**" permissions: contents: read jobs: e2e-integration: name: E2E (Integration) runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - name: Free disk space run: | sudo rm -rf /usr/share/dotnet sudo rm -rf /usr/local/lib/android sudo rm -rf /opt/ghc sudo rm -rf /usr/local/share/boost sudo apt-get clean - name: Setup pnpm uses: pnpm/action-setup@v6 with: version: 10.32.0 # setup-node must come after pnpm/action-setup so it can locate the store. - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 22 cache: pnpm cache-dependency-path: ui-next/pnpm-lock.yaml - name: Install dependencies run: pnpm install --frozen-lockfile working-directory: ui-next - name: Cache Playwright browsers id: playwright-cache uses: actions/cache@v5 with: path: ~/.cache/ms-playwright key: ${{ runner.os }}-playwright-chromium-${{ hashFiles('ui-next/pnpm-lock.yaml') }} - name: Install Playwright browsers if: steps.playwright-cache.outputs.cache-hit != 'true' run: pnpm exec playwright install chromium working-directory: ui-next # OS-level dependencies (apt packages) cannot be cached — always install. - name: Install Playwright OS dependencies run: pnpm exec playwright install-deps chromium working-directory: ui-next - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Cache Docker layers for conductor:server uses: actions/cache@v5 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-conductor-server-${{ hashFiles('docker/server/Dockerfile', '**/build.gradle', 'settings.gradle') }} restore-keys: ${{ runner.os }}-conductor-server- - name: Build conductor:server Docker image uses: docker/build-push-action@v7 with: context: . file: docker/server/Dockerfile tags: conductor:server load: true cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=min - name: Move Docker layer cache run: | rm -rf /tmp/.buildx-cache mv /tmp/.buildx-cache-new /tmp/.buildx-cache - name: Run integration E2E tests run: pnpm test:e2e:integration working-directory: ui-next - name: Upload Playwright integration report uses: actions/upload-artifact@v7 if: failure() with: name: playwright-integration-report path: ui-next/playwright-integration-report/ retention-days: 7