name: test
on: push
jobs:
  node:
    name: Node.js v${{ matrix.node-version }}
    strategy:
      matrix:
        node-version:
          - 20
          - 22
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: npm
      - run: npm ci
      - run: npm test
  deno:
    name: Deno
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - uses: denoland/setup-deno@v1
        with:
          deno-version: latest
      - run: deno task test
        working-directory: runtime/deno
  bun:
    name: Bun
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2
        with:
          bun-version: latest
      - run: bun test
        working-directory: runtime/bun