name: Test on: push: branches: - '**' - '!main' # Skip main branch (release workflow handles that) pull_request: branches: - main jobs: unit-tests: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Run unit tests run: npm run test:run # Acceptance tests that don't require DB read/write # Only run on pull requests to main safe-acceptance-tests: runs-on: ubuntu-latest needs: unit-tests if: github.event_name == 'pull_request' steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Run safe acceptance tests # These tests should not read/write to the database # They might test UI components, routing, or static content run: npm run test:acceptance -- --grep "safe|static|ui|component"