name: CI on: push: branches: [master, develop] pull_request: branches: [master, develop] jobs: lint-and-test: name: Lint, type check, unit tests, coverage runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 24 cache: npm cache-dependency-path: frontend/package-lock.json - uses: actions/setup-java@v4 with: distribution: temurin java-version: 21 - name: Install frontend dependencies run: npm ci working-directory: frontend - name: Lint run: npm run lint working-directory: frontend - name: Type check run: npx vue-tsc --noEmit working-directory: frontend - name: Frontend unit tests run: npm run test working-directory: frontend - name: Backend unit tests run: ./gradlew :backend:test - name: Coverage verification run: | ./gradlew :backend:jacocoTestCoverageVerification npm run test:coverage working-directory: frontend e2e: name: E2E browser tests runs-on: ubuntu-latest env: POSTGRES_DB: bilhej POSTGRES_USER: bilhej POSTGRES_PASSWORD: test_pw_ci_123 JWT_SECRET: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa STRIPE_SECRET_KEY: sk_test_fake STRIPE_WEBHOOK_SECRET: whsec_fake STRIPE_PRICE_ID: price_fake steps: - uses: actions/checkout@v4 - name: Run E2E test stack run: | docker compose \ -f docker-compose.ci.yml \ up --build --abort-on-container-exit --exit-code-from playwright