name: e2e on: workflow_dispatch: inputs: url: required: false description: The URL to run the test suite against. If omitted, it runs against all. type: string deployment_status: concurrency: group: ${{ github.workflow }}-${{ github.event.inputs.url || github.event.deployment.payload.web_url || github.event.deployment_status.target_url }} cancel-in-progress: true jobs: playwright: environment: name: ${{ github.event.deployment.environment || 'Production' }} url: ${{ github.event.inputs.url || github.event.deployment.payload.web_url || github.event.deployment_status.target_url }} if: github.event.deployment_status.state == 'success' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest container: image: mcr.microsoft.com/playwright:v1.48.2-focal steps: - uses: actions/checkout@v4 - run: corepack enable - uses: actions/setup-node@v4 with: node-version: "22" cache: "pnpm" - name: Install dependencies run: pnpm install --frozen-lockfile - name: Install playwright run: pnpm playwright install - run: pnpm test:e2e env: BASE_URL: ${{ github.event.inputs.url || github.event.deployment.payload.web_url || github.event.deployment_status.target_url }} lighthouse: environment: name: ${{ github.event.deployment.environment || 'Production' }} url: ${{ github.event.inputs.url || github.event.deployment.payload.web_url || github.event.deployment_status.target_url }} if: github.event.deployment_status.state == 'success' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: curl ${{ github.event.inputs.url || github.event.deployment.payload.web_url || github.event.deployment_status.target_url }} - name: Audit URLs using Lighthouse uses: treosh/lighthouse-ci-action@v12 with: urls: ${{ github.event.inputs.url || github.event.deployment.payload.web_url || github.event.deployment_status.target_url }} uploadArtifacts: true temporaryPublicStorage: true budgetPath: ./budget.json runs: 3 env: LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}