| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- name: Integration Tests
- on:
- push:
- branches: [master, develop]
- pull_request:
- branches: [master, develop]
- jobs:
- integration-test:
- name: Vitest Integration Tests
- runs-on: ubuntu-latest
- services:
- mysql:
- image: mysql:8.0
- env:
- MYSQL_ROOT_PASSWORD: root
- MYSQL_DATABASE: audio_book_test
- ports:
- - 3307:3306
- options: >-
- --health-cmd="mysqladmin ping"
- --health-interval=10s
- --health-timeout=5s
- --health-retries=5
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
- cache-dependency-path: server/package-lock.json
- - name: Install dependencies
- working-directory: server
- run: npm ci
- - name: Setup database
- run: |
- mysql -h 127.0.0.1 -P 3307 -u root -proot -e "CREATE DATABASE IF NOT EXISTS audio_book_test;"
- npx prisma db push --skip-generate || true
- - name: Run integration tests
- working-directory: server
- env:
- TEST_DATABASE_URL: mysql://root:root@127.0.0.1:3307/audio_book_test
- run: npx vitest run --config vitest.config.mts tests/integration
- - name: Upload test results
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: integration-test-results
- path: tests/test-results/
- retention-days: 7
|