test.yml•1.74 kB
name: Tests
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node-version: [20.x, 22.x]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Run linter
run: bun run lint
- name: Build project
run: bun run build
- name: Run tests
run: bun run test
- name: Run tests with coverage
run: bun run test:coverage
if: matrix.node-version == '20.x' && matrix.os == 'ubuntu-latest'
- name: Upload coverage reports
uses: codecov/codecov-action@v4
if: matrix.node-version == '20.x' && matrix.os == 'ubuntu-latest'
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
e2e:
runs-on: ubuntu-latest
needs: test
strategy:
matrix:
node-version: [20.x]
steps:
- uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Build project
run: bun run build
- name: Run E2E tests
run: bun run test:e2e
env:
# Use mock API keys for E2E tests
OPENAI_API_KEY: mock-openai-key
GOOGLE_API_KEY: mock-google-key
AZURE_API_KEY: mock-azure-key
AZURE_BASE_URL: https://mock.openai.azure.com/