name: Run Tests

on:
    push:
        branches: ['*']
    pull_request:
        branches: ['*']
    workflow_dispatch:

jobs:
    test:
        runs-on: ubuntu-latest

        steps:
            - name: Checkout code
              uses: actions/checkout@v4
              with:
                  fetch-depth: 1

            - name: Setup Bun
              uses: oven-sh/setup-bun@v1
              with:
                  bun-version: latest

            - name: Cache dependencies
              uses: actions/cache@v3
              with:
                  path: |
                      ./bun_modules
                      ./node_modules
                      ./bun.lock
                  key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}

            - name: Install dependencies
              run: bun install --frozen-lockfile

            - name: Install playwright dependencies
              run: bun run install:playwright

            - name: Run vitest
              run: bun run test:headless
