name: Chat shard timing probe on: workflow_dispatch: permissions: contents: read jobs: general_tests: name: General tests (${{ matrix.group_label }}) runs-on: ubuntu-latest timeout-minutes: 20 permissions: contents: read strategy: fail-fast: false matrix: include: # Split the long chat file by collected test locations, and balance # the remaining server files across five runners. Normal PR/local # invocations retain their complete general-server group. - group: general-server-without-chat group_label: server (1/5) shard_index: 0 shard_count: 5 - group: general-server-without-chat group_label: server (2/5) shard_index: 1 shard_count: 5 - group: general-server-without-chat group_label: server (3/5) shard_index: 2 shard_count: 5 - group: general-server-without-chat group_label: server (4/5) shard_index: 3 shard_count: 5 - group: general-server-without-chat group_label: server (5/5) shard_index: 4 shard_count: 5 - group: general-chat group_label: chat (1/3) shard_index: 0 shard_count: 3 - group: general-chat group_label: chat (2/3) shard_index: 1 shard_count: 3 - group: general-chat group_label: chat (3/3) shard_index: 2 shard_count: 3 steps: - name: Checkout repository uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: ref: ${{ github.sha }} - name: Setup pnpm uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6 with: version: 9.15.4 - name: Setup Node.js uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: 24 cache: pnpm - name: Install dependencies run: pnpm install --no-frozen-lockfile - name: Run grouped general test suites run: | if [ -n "${{ matrix.shard_count }}" ]; then pnpm test:run:general -- --group '${{ matrix.group }}' \ --shard-index ${{ matrix.shard_index }} --shard-count ${{ matrix.shard_count }} else pnpm test:run:general -- --group '${{ matrix.group }}' fi