Files
recipe-app/.gitea/workflows/test.yml
T
Nils-Johan Gynther 6ff58ed013
Test Suite / backend-pr-quick (push) Has been skipped
Test Suite / quick-import-pr-quick (push) Has been skipped
Test Suite / backend-full (push) Failing after 1s
Test Suite / flutter-quality (push) Failing after 1s
refactor: simplify CI workflow by removing Node.js setup steps and verifying toolchain
2026-05-12 21:30:39 +02:00

141 lines
4.1 KiB
YAML

name: Test Suite
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
jobs:
backend-pr-quick:
if: gitea.event_name == 'pull_request'
runs-on: backend-node24
env:
DATABASE_URL: mysql://ci:ci@127.0.0.1:3306/recipe_app
steps:
- name: Verify Node toolchain on runner
run: |
node --version
npm --version
- name: Install dependencies (backend)
working-directory: ./backend
run: npm ci
- name: Prisma schema validate
working-directory: ./backend
run: npx prisma validate --schema prisma/schema.prisma
- name: Generate Prisma Client
working-directory: ./backend
run: npm run prisma:generate
- name: Verify generated Prisma client is typed
working-directory: ./backend
run: |
if ! grep -q "export \* from '.prisma/client/default'" node_modules/@prisma/client/index.d.ts; then
echo "Prisma client export is unexpected"
exit 1
fi
- name: Run receipt-import focused tests (PR quick)
working-directory: ./backend
run: npx jest src/receipt-import/receipt-import.service.spec.ts src/receipt-import/receipt-import.parse-flow.spec.ts src/receipt-import/receipt-import.save.spec.ts --no-coverage
- name: Build NestJS app
working-directory: ./backend
run: npm run build
quick-import-pr-quick:
if: gitea.event_name == 'pull_request'
runs-on: backend-node24
env:
DATABASE_URL: mysql://ci:ci@127.0.0.1:3306/recipe_app
steps:
- name: Verify Node toolchain on runner
run: |
node --version
npm --version
- name: Install dependencies (backend)
working-directory: ./backend
run: npm ci
- name: Run quick-import focused tests (PR quick)
working-directory: ./backend
run: npx jest src/quick-import/quick-import.service.spec.ts --no-coverage
backend-full:
if: gitea.event_name == 'push'
runs-on: backend-node24
env:
DATABASE_URL: mysql://ci:ci@127.0.0.1:3306/recipe_app
steps:
- name: Verify Node toolchain on runner
run: |
node --version
npm --version
- name: Install dependencies (backend)
working-directory: ./backend
run: npm ci
- name: Prisma schema validate
working-directory: ./backend
run: npx prisma validate --schema prisma/schema.prisma
- name: Generate Prisma Client
working-directory: ./backend
run: npm run prisma:generate
- name: Verify generated Prisma client is typed
working-directory: ./backend
run: |
if ! grep -q "export \* from '.prisma/client/default'" node_modules/@prisma/client/index.d.ts; then
echo "Prisma client export is unexpected"
exit 1
fi
- name: Dependency audit (high+critical)
working-directory: ./backend
run: npm audit --audit-level=high
- name: Run tests (backend)
working-directory: ./backend
run: npm test
- name: Build NestJS app
working-directory: ./backend
run: npm run build
flutter-quality:
runs-on: flutter-3-41
steps:
- name: Verify Flutter toolchain on runner
run: flutter --version
- name: Install dependencies (flutter)
working-directory: ./flutter
run: flutter pub get
- name: Analyze Flutter code
working-directory: ./flutter
run: flutter analyze
- name: Set Flutter test mode
shell: bash
run: |
if [ "${{ gitea.event_name }}" = "pull_request" ]; then
echo "FLUTTER_TEST_CMD=flutter test --reporter=compact" >> "$GITHUB_ENV"
else
echo "FLUTTER_TEST_CMD=flutter test" >> "$GITHUB_ENV"
fi
- name: Run Flutter tests
working-directory: ./flutter
run: ${{ env.FLUTTER_TEST_CMD }}