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