name: E2E (Manual) run-name: E2E (dispatch) - ${{ github.ref_name }} on: workflow_dispatch: inputs: vitest-args: description: 'Optional vitest args forwarded to all suites (e.g. --testNamePattern="some test")' required: false default: "" type: string concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: read-all env: NODE_VERSION: "26" jobs: setup: name: Build Suite Matrix runs-on: ubuntu-latest timeout-minutes: 5 permissions: contents: read outputs: matrix: ${{ steps.build.outputs.matrix }} steps: - name: Checkout uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Set up Node.js uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: ${{ env.NODE_VERSION }} - name: Build matrix id: build shell: bash run: echo "matrix=$(node scripts/e2e/list-matrix.mjs)" >> "$GITHUB_OUTPUT" e2e: needs: setup strategy: fail-fast: false matrix: suite: ${{ fromJSON(needs.setup.outputs.matrix) }} permissions: contents: read checks: write uses: ./.github/workflows/e2e-runner.yml with: suite-id: ${{ matrix.suite.id }} check-name: "E2E - ${{ matrix.suite.name }}" artifact-name: "e2e-${{ matrix.suite.id }}-report" job-timeout-minutes: ${{ matrix.suite.timeout }} vitest-args: ${{ inputs.vitest-args || '' }}