<aside> ☝

PR testing requires preview environments.

</aside>

  1. Open a PR to add a few GitHub Actions

  2. Add this GitHub Workflow that will be responsible for creating the QA Wolf Semaphore check run.

    name: Persistent QA Wolf Semaphore
    
    on:
      pull_request:
        types: [opened, reopened, synchronize]
      check_suite:
        types: [completed]
      merge_group:
    
    jobs:
      qawolf_check_creation:
        runs-on: ubuntu-latest
        permissions:
          checks: write
          pull-requests: read
        steps:
          - name: Create passing check for pull request
            if: ${{ github.event_name == 'pull_request' }}
            uses: actions/github-script@v6
            with:
              script: |
                await github.rest.checks.create({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  name: 'QA Wolf Semaphore',
                  head_sha: context.payload.pull_request.head.sha,
                  status: 'completed',
                  conclusion: 'success',
                  output: {
                    title: 'QA Wolf Semaphore',
                    summary: 'QA Wolf approved PRs by default, expecting E2E test runs in the merge queues.'
                  }
                });
    
          - name: Create in-progress check for merge queue
            if: ${{ github.event_name == 'merge_group' }}
            uses: actions/github-script@v6
            with:
              script: |
                await github.rest.checks.create({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  name: 'QA Wolf Semaphore',
                  head_sha: context.sha,
                  status: 'in_progress',
                  output: {
                    title: 'QA Wolf Semaphore',
                    summary: 'Waiting E2E tests in the merge queue'
                  }
                });
    
          - name: Reproduce QA Wolf Status Check
            if: ${{ github.event_name == 'check_suite' }}
            uses: actions/github-script@v6
            with:
              script: |
                const appName = context.payload.check_suite.app.name;
                console.log(`Check suite app name: ${appName}`);
    
                if (appName !== 'QA Wolf') {
                  console.log(`Skipping check creation for app: ${appName}`);
                  return;
                }
    
                await github.rest.checks.create({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  name: 'QA Wolf Semaphore',
                  head_sha: context.payload.check_suite.after,
                  status: 'completed',
                  conclusion: context.payload.check_suite.conclusion,
                  output: {
                    title: 'QA Wolf Semaphore',
                    summary: `Reproducing QAWolf check suite conclusion: ${context.payload.check_suite.conclusion}`
                  }
                });
    
  3. Add this GitHub Workflow to trigger preview environment testing in the merge queues:

    name: Test preview environment
    
    on:
      pull_request:
      merge_group:
    
    jobs:
      test-preview-environment:
        name: Trigger wolf tests
        runs-on: ubuntu-latest
        needs:
    	    - step-that-waits-your-preview-env-to-come-up
        steps:
    	    - name: Notify QA Wolf of deployment
            uses: qawolf/notify-qawolf-on-deploy-action@v1
            if: ${{ github.event_name == 'merge_group' }}
            with:
              qawolf-api-key: "${{ secrets.QAWOLF_API_KEY }}"
              deployment-url: "${{ possible-preview-url }}"
              deployment-type: "check-with-support"
            secrets:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    
  4. Merge the PR.

  5. Go into https://github.com/ORG/REPO/settings/rules and create/edit a rule that affects your main branch. Check Require status checks to pass, and add QA Wolf Semaphore as a required check.

  6. Your merge queue will only merge after QA Wolf tests pass.