test: migrate backend and scripts to bun test runner #3030
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - ".gitignore" | |
| - "**/*.md" | |
| - "docs/**" | |
| push: | |
| paths-ignore: | |
| - ".gitignore" | |
| - "**/*.md" | |
| - "docs/**" | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out Git repository | |
| uses: actions/checkout@v6 | |
| - name: Install Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| - name: Install Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.2.18 | |
| - name: Cache Bun dependencies | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-bun- | |
| - name: Install Dependencies | |
| run: | | |
| bun install --frozen-lockfile | |
| - name: Run lint | |
| run: | | |
| bun run lint | |
| type-check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out Git repository | |
| uses: actions/checkout@v6 | |
| - name: Install Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| - name: Install Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.2.18 | |
| - name: Cache Bun dependencies | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-bun- | |
| - name: Install Dependencies | |
| run: | | |
| bun install --frozen-lockfile | |
| - name: Run type-check | |
| run: | | |
| bun run type-check | |
| unit: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| project: [core, web, backend, scripts] | |
| steps: | |
| - name: Check out Git repository | |
| uses: actions/checkout@v6 | |
| - name: Install Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| - name: Install Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.2.18 | |
| - name: Cache Bun dependencies | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-bun- | |
| - name: Install Dependencies | |
| run: | | |
| bun install --frozen-lockfile | |
| # backend and scripts boot an in-memory MongoDB; cache the downloaded | |
| # mongod binary so each run doesn't re-fetch it. | |
| - name: Cache MongoDB binaries | |
| if: matrix.project == 'backend' || matrix.project == 'scripts' | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cache/mongodb-binaries | |
| key: ${{ runner.os }}-mongodb-memory-server | |
| - name: Run web tests | |
| if: matrix.project == 'web' | |
| timeout-minutes: 1 | |
| env: | |
| TZ: Etc/UTC | |
| run: | | |
| bun run test:web | |
| - name: Run ${{ matrix.project }} tests | |
| if: matrix.project != 'web' | |
| timeout-minutes: 5 | |
| env: | |
| TZ: Etc/UTC | |
| run: | | |
| bun run test:${{ matrix.project }} |