name: "yarn e2e" on: workflow_call: inputs: head_sha: required: true type: string env: NODE: "22" FRONTEND_MONOREPO_DIR: "web" jobs: main: name: "yarn e2e" runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: hmarr/debug-action@v3.0.0 - name: Configure git shell: bash run: | set -xeuo pipefail git config --global user.name 'robot-ci-heartex' git config --global user.email 'robot-ci-heartex@users.noreply.github.com' - name: Checkout uses: actions/checkout@v6 with: ref: ${{ inputs.ref }} - name: Setup frontend environment uses: ./.github/actions/setup-frontend-environment with: node-version: "${{ env.NODE }}" directory: "${{ env.FRONTEND_MONOREPO_DIR }}" - name: Install e2e dependencies working-directory: ${{ env.FRONTEND_MONOREPO_DIR }}/libs/editor/tests/e2e run: yarn install - name: Install Playwright browsers working-directory: ${{ env.FRONTEND_MONOREPO_DIR }}/libs/editor/tests/e2e run: yarn playwright install --with-deps - name: Run LSF server id: run-lsf-server timeout-minutes: 2 working-directory: ${{ env.FRONTEND_MONOREPO_DIR }} env: NODE_ENV: development BUILD_NO_MINIMIZATION: true run: | set -xeuo pipefail yarn lsf:serve & pid=$! echo "pid=${pid}" >> $GITHUB_OUTPUT while ! curl -s -o /dev/null -L "http://localhost:3000"; do echo "=> Waiting for service to become available" sleep 2s done - name: Run tests working-directory: ${{ env.FRONTEND_MONOREPO_DIR }} env: HEADLESS: true COVERAGE: true run: | yarn lsf:e2e:ci - name: Upload coverage to Codecov if: ${{ always() && github.event.pull_request.head.repo.fork == false && github.event.pull_request.user.login != 'dependabot[bot]' }} uses: codecov/codecov-action@v5 with: name: lsf-e2e flags: lsf-e2e directory: web/libs/editor/tests/coverage token: ${{ secrets.CODECOV_TOKEN }} verbose: true fail_ci_if_error: true - uses: actions/upload-artifact@v6 if: always() with: name: e2e output path: | web/libs/editor/tests/e2e/output web/libs/editor/tests/coverage - name: Kill LSF server if: always() continue-on-error: true run: kill -9 "${{ steps.run-lsf-server.outputs.pid }}"