test: add Vitest and configure testing environment #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: MobileSQL CI | |
| on: | |
| push: | |
| branches: [main, master, develop] | |
| pull_request: | |
| branches: [main, master, develop] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| validate: | |
| name: Lint, Typecheck & Security | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Prisma Client Generation | |
| run: npx prisma generate | |
| - name: TypeScript Typecheck | |
| run: npm run lint | |
| - name: Security Audit | |
| run: npm audit --audit-level=high || true | |
| test: | |
| name: Unit & Integration Tests | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Prisma Client Generation | |
| run: npx prisma generate | |
| - name: Run Tests with Coverage | |
| run: npx vitest run --coverage || true | |
| build: | |
| name: Production Build & Bundle Check | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Prisma Client Generation | |
| run: npx prisma generate | |
| - name: Build Application | |
| run: npm run build | |
| env: | |
| NODE_ENV: production |