@@ -474,6 +474,36 @@ jobs:
474474 name : bundle-size-report-${{ github.sha }}
475475 path : bundle-size-report.json
476476
477+ # ─────────────────────────────────────────────────────────
478+ # Performance Monitoring
479+ # ─────────────────────────────────────────────────────────
480+ performance :
481+ name : Performance Budget Check
482+ runs-on : ubuntu-latest
483+ steps :
484+ - name : Checkout code
485+ uses : actions/checkout@v4
486+
487+ - name : Setup Node.js
488+ uses : actions/setup-node@v4
489+ with :
490+ node-version : ${{ env.NODE_VERSION }}
491+ cache : ' npm'
492+
493+ - name : Cache node modules
494+ uses : actions/cache@v4
495+ id : cache-node-modules
496+ with :
497+ path : node_modules
498+ key : ${{ runner.os }}-node-${{ env.NODE_VERSION }}-${{ hashFiles('package-lock.json') }}
499+
500+ - name : Install dependencies
501+ if : steps.cache-node-modules.outputs.cache-hit != 'true'
502+ run : npm ci --legacy-peer-deps
503+
504+ - name : Run performance benchmark
505+ run : npm run performance:benchmark
506+
477507 # ─────────────────────────────────────────────────────────
478508 # Merge Protection (only on PRs)
479509 # ─────────────────────────────────────────────────────────
@@ -495,6 +525,7 @@ jobs:
495525 rust-build,
496526 load-test,
497527 bundle-size,
528+ performance,
498529 ]
499530 steps :
500531 - name : All checks passed
@@ -521,6 +552,7 @@ jobs:
521552 rust-build,
522553 load-test,
523554 bundle-size,
555+ performance,
524556 ]
525557 steps :
526558 - name : Check for failures
@@ -539,7 +571,8 @@ jobs:
539571 [ "${{ needs.rust-tests.result }}" != "success" ] || \
540572 [ "${{ needs.rust-build.result }}" != "success" ] || \
541573 [ "${{ needs.load-test.result }}" != "success" ] || \
542- [ "${{ needs.bundle-size.result }}" != "success" ]; then
574+ [ "${{ needs.bundle-size.result }}" != "success" ] || \
575+ [ "${{ needs.performance.result }}" != "success" ]; then
543576 echo "One or more CI checks failed"
544577 exit 1
545578 fi
0 commit comments