on:
  push:
    branches:
      - main
  pull_request:
  merge_group:

name: Test

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
          submodules: recursive

      - name: "Setup"
        uses: ./.github/actions/setup

      - name: Run tests
        run: pnpm nx run-many --target=test:coverage
        env:
          NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
          RPC_URL_MAINNET: ${{ secrets.RPC_URL_MAINNET }}

      - name: 'Report @evmts/core Coverage'
        if: always() # Also generate the report if tests are failing
        uses:  davelosert/vitest-coverage-report-action@v2
        with:
          name: "@evmts/core"
          working-directory: "./core"
      - name: 'Report @evmts/ethers Coverage'
        if: always() # Also generate the report if tests are failing
        uses:  davelosert/vitest-coverage-report-action@v2
        with:
          name: "@evmts/ethers"
          working-directory: "./ethers"
      - name: 'Report @evmts/bundler Coverage'
        if: always() # Also generate the report if tests are failing
        uses:  davelosert/vitest-coverage-report-action@v2
        with:
          name: "@evmts/bundler"
          working-directory: "./bundlers/bundler"
      - name: 'Report @evmts/esbuild-plugin Coverage'
        if: always() # Also generate the report if tests are failing
        uses:  davelosert/vitest-coverage-report-action@v2
        with:
          name: "@evmts/esbuild-plugin"
          working-directory: "./bundlers/esbuild"
      - name: 'Report @evmts/ts-plugin Coverage'
        if: always() # Also generate the report if tests are failing
        uses:  davelosert/vitest-coverage-report-action@v2
        with:
          name: "@evmts/ts-plugin"
          working-directory: "./ts-plugin"
      - name: 'Report @evmts/config Coverage'
        if: always() # Also generate the report if tests are failing
        uses:  davelosert/vitest-coverage-report-action@v2
        with:
          name: "@evmts/config"
          working-directory: "./config"
      - name: 'Report @evmts/esbuild Coverage'
        if: always() # Also generate the report if tests are failing
        uses:  davelosert/vitest-coverage-report-action@v2
        with:
          name: "@evmts/esbuild"
          working-directory: "./examples/esbuild"
  e2e:
    name: E2E
    timeout-minutes: 60
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
          submodules: recursive

      - name: "Setup"
        uses: ./.github/actions/setup

      - name: Install Playwright Browsers
        run: npx playwright install --with-deps

      - name: Run tests
        run: echo "WIP" # pnpm nx e2e e2e
        env:
          NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
