name: Test on: push: branches: [develop] pull_request: branches: [develop] concurrency: group: test-${{ gitea.ref }} cancel-in-progress: true env: NODE_VERSION: "20" jobs: api-tests: name: API Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: "npm" - run: npm ci - run: npm run db:generate - run: npm run type-check - run: npm run test:api marketplace-tests: name: Marketplace Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: "npm" - run: npm ci - run: npm run build --workspace @rentaldrivego/types - run: npm run test:marketplace admin-tests: name: Admin Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: "npm" - run: npm ci - run: npm run test:admin dashboard-tests: name: Dashboard Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: "npm" - run: npm ci - run: npm run build --workspace @rentaldrivego/types - run: npm run test:dashboard integration-tests: name: API Integration Tests runs-on: ubuntu-latest services: postgres: image: postgres:16-alpine env: POSTGRES_DB: rentaldrivego_test POSTGRES_USER: postgres POSTGRES_PASSWORD: password options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 redis: image: redis:7-alpine options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 env: DATABASE_URL: postgresql://postgres:password@postgres:5432/rentaldrivego_test REDIS_URL: redis://redis:6379 NODE_ENV: test JWT_SECRET: test-secret JWT_EXPIRY: 8h FILE_STORAGE_ROOT: /tmp/rentaldrivego-test-storage steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: "npm" - run: npm ci - run: npm run db:generate - run: npm run db:deploy - run: npx prisma db push --schema packages/database/prisma/schema.prisma - run: npm run test:api:integration