name: Tests

on:
  # Trigger the workflow on push or pull request,
  # but only for the main branch
  push:
    branches:
      - main  # Trigger on push events to the main branch
      - beta # Trigger on push events to the beta branch
  pull_request:
    branches:
      - main  # Trigger on pull request events targeting the main branch
      - beta # Trigger on pull request events targeting the beta branch
  merge_group:
    types: [checks_requested]

jobs:
  pre-test:
    name: Run Pre-test
    runs-on: ubuntu-latest
    steps:
      - name: Check out Git repository
        uses: actions/checkout@v4
        with:
          submodules: 'recursive'
          path: tests-action
      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
      - name: Install Node.js dependencies
        working-directory: tests-action
        run: npm ci
      - name: Run Pre-test
        working-directory: tests-action
        run: npx vitest run --project pre ${{ !runner.debug && '--silent' || '' }}

  run-tests:
    name: Run Tests 
    needs: [pre-test]
    strategy:
      matrix:
        shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    uses: ./.github/workflows/test-shard-template.yml
    with:
      project: main
      shard: ${{ matrix.shard }}
      totalShards: 10