CI: Tests E2E (Deploy for Forks) #2209
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | name: "CI: Tests E2E (Deploy for Forks)" | |
| description: "Deploys test results from forked PRs (forks can't access deployment secrets)" | |
| on: | |
| workflow_run: | |
| workflows: ["CI: Tests E2E"] | |
| types: [requested, completed] | |
| env: | |
| DATE_FORMAT: '+%m/%d/%Y, %I:%M:%S %p' | |
| jobs: | |
| deploy-and-comment-forked-pr: | |
| runs-on: ubuntu-latest | |
| if: | | |
| github.repository == 'Comfy-Org/ComfyUI_frontend' && | |
| github.event.workflow_run.event == 'pull_request' && | |
| github.event.workflow_run.head_repository != null && | |
| github.event.workflow_run.repository != null && | |
| github.event.workflow_run.head_repository.full_name != github.event.workflow_run.repository.full_name | |
| permissions: | |
| pull-requests: write | |
| actions: read | |
| steps: | |
| - name: Log workflow trigger info | |
| run: | | |
| echo "Repository: ${{ github.repository }}" | |
| echo "Event: ${{ github.event.workflow_run.event }}" | |
| echo "Head repo: ${{ github.event.workflow_run.head_repository.full_name || 'null' }}" | |
| echo "Base repo: ${{ github.event.workflow_run.repository.full_name || 'null' }}" | |
| echo "Is forked: ${{ github.event.workflow_run.head_repository.full_name != github.event.workflow_run.repository.full_name }}" | |
| - name: Checkout repository | |
| uses: actions/checkout@v5 | |
| - name: Get PR Number | |
| id: pr | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const { data: prs } = await github.rest.pulls.list({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| state: 'open', | |
| }); | |
| const pr = prs.find(p => p.head.sha === context.payload.workflow_run.head_sha); | |
| if (!pr) { | |
| console.log('No PR found for SHA:', context.payload.workflow_run.head_sha); | |
| return null; | |
| } | |
| console.log(`Found PR #${pr.number} from fork: ${context.payload.workflow_run.head_repository.full_name}`); | |
| return pr.number; | |
| - name: Handle Test Start | |
| if: steps.pr.outputs.result != 'null' && github.event.action == 'requested' | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| run: | | |
| chmod +x scripts/cicd/pr-playwright-deploy-and-comment.sh | |
| ./scripts/cicd/pr-playwright-deploy-and-comment.sh \ | |
| "${{ steps.pr.outputs.result }}" \ | |
| "${{ github.event.workflow_run.head_branch }}" \ | |
| "starting" \ | |
| "$(date -u '${{ env.DATE_FORMAT }}')" | |
| - name: Download and Deploy Reports | |
| if: steps.pr.outputs.result != 'null' && github.event.action == 'completed' | |
| uses: actions/download-artifact@v4 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| run-id: ${{ github.event.workflow_run.id }} | |
| pattern: playwright-report-* | |
| path: reports | |
| - name: Handle Test Completion | |
| if: steps.pr.outputs.result != 'null' && github.event.action == 'completed' | |
| env: | |
| CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
| CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
| GITHUB_TOKEN: ${{ github.token }} | |
| run: | | |
| # Rename merged report if exists | |
| [ -d "reports/playwright-report-chromium-merged" ] && \ | |
| mv reports/playwright-report-chromium-merged reports/playwright-report-chromium | |
| chmod +x scripts/cicd/pr-playwright-deploy-and-comment.sh | |
| ./scripts/cicd/pr-playwright-deploy-and-comment.sh \ | |
| "${{ steps.pr.outputs.result }}" \ | |
| "${{ github.event.workflow_run.head_branch }}" \ | |
| "completed" |