ci: consolidate test jobs into single workflow with npm caching
Run Tests on Branches / Run Tests (push) Successful in 1m44s

- Merge 3 parallel test jobs (backend/frontend/mobile) into one sequential job
- Remove dependency on dorny/paths-filter@v3 (replaced with git diff script)
- Add npm cache via setup-node to speed up dependency installation
- Downgrade Node.js from 24 to 22 LTS for stability
- Reduce checkout fetch-depth from full history to 2 commits
This commit is contained in:
Antoni Nuñez Romeu
2026-07-13 21:16:46 +02:00
parent 20cc399731
commit 5ae3ebecee
2 changed files with 20 additions and 64 deletions
+18 -62
View File
@@ -6,86 +6,42 @@ on:
- 'main'
jobs:
detect-changes:
name: Detect Changes
runs-on: ubuntu-latest
outputs:
backend: ${{ steps.filter.outputs.backend }}
frontend: ${{ steps.filter.outputs.frontend }}
frontend-mobile: ${{ steps.filter.outputs.frontend-mobile }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
backend:
- 'apps/backend/**'
- 'packages/**'
frontend:
- 'apps/frontend/**'
- 'packages/**'
frontend-mobile:
- 'apps/frontend-mobile/**'
- 'packages/**'
test-backend:
name: Backend Tests
needs: detect-changes
if: needs.detect-changes.outputs.backend == 'true'
test:
name: Run Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Detect Changes
id: changes
run: |
BASE=${{ github.event.before }}
[ -z "$BASE" ] || [ "$BASE" = "0000000000000000000000000000000000000000" ] && BASE=$(git rev-parse HEAD~1)
echo "backend=$(git diff --name-only "$BASE"...HEAD | grep -qE '^(apps/backend/|packages/)' && echo true || echo false)" >> "$GITHUB_OUTPUT"
echo "frontend=$(git diff --name-only "$BASE"...HEAD | grep -qE '^(apps/frontend/|packages/)' && echo true || echo false)" >> "$GITHUB_OUTPUT"
echo "frontend-mobile=$(git diff --name-only "$BASE"...HEAD | grep -qE '^(apps/frontend-mobile/|packages/)' && echo true || echo false)" >> "$GITHUB_OUTPUT"
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
node-version: '22'
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Run Backend Tests
if: steps.changes.outputs.backend == 'true'
run: npm test --workspace=farma-clic-backend -- --ci
test-frontend:
name: Frontend Tests
needs: detect-changes
if: needs.detect-changes.outputs.frontend == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
- name: Install Dependencies
run: npm ci
- name: Run Frontend Tests
if: steps.changes.outputs.frontend == 'true'
run: npm test --workspace=farma-clic-frontend -- --run --reporter=basic
test-frontend-mobile:
name: Frontend Mobile Tests
needs: detect-changes
if: needs.detect-changes.outputs.frontend-mobile == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
- name: Install Dependencies
run: npm ci
- name: Run Frontend Mobile Tests
if: steps.changes.outputs.frontend-mobile == 'true'
run: npm test --workspace=frontend-mobile -- --ci
continue-on-error: true