# TEMPORARILY DISABLED - Comprehensive Testing Workflow
# Multi-layered testing strategy to prevent integration failures like fs.readJsonSync
name: Comprehensive Testing
on:
push:
branches: [ main, test ]
pull_request:
branches: [ main, test ]
workflow_dispatch:
inputs:
ref:
description: 'Branch or commit to test'
required: false
default: 'main'
jobs:
# Layer 1: Quick validation - fails fast on basic issues
quick-validation:
name: Quick Validation (Unit + Smoke)
runs-on: ubuntu-latest
timeout-minutes: 10
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: Generate version files
run: npm run prebuild
- name: Type checking
run: npm run type-check
- name: Linting
run: npm run lint:all
- name: Unit tests
run: npm run test:unit
- name: Smoke tests
run: npm run test:smoke
- name: Upload unit test coverage
uses: codecov/codecov-action@v4
if: success()
with:
files: ./coverage/lcov.info
flags: unit-tests
name: unit-test-coverage
# Layer 2: Server lifecycle validation - catches startup/shutdown issues
lifecycle-validation:
name: Server Lifecycle Testing
runs-on: ubuntu-latest
needs: quick-validation
timeout-minutes: 15
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: Generate version files
run: npm run prebuild
- name: Server lifecycle tests
run: npm run test:lifecycle
env:
NODE_ENV: test
# Layer 3: Integration testing - real MCP protocol validation
integration-testing:
name: MCP Protocol Integration (18, 20, 22)
runs-on: ubuntu-latest
needs: quick-validation
timeout-minutes: 20
strategy:
matrix:
node-version: ['18', '20', '22']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Generate version files
run: npm run prebuild
- name: Integration tests
run: npm run test:integration
env:
NODE_ENV: test
AGENT_COMM_TEST_TIMEOUT: 60000
- name: Upload integration test results
uses: actions/upload-artifact@v4
if: always()
with:
name: integration-test-results-node-${{ matrix.node-version }}
path: test-results/
# Layer 4: End-to-end testing - full system validation (PR only)
e2e-testing:
name: End-to-End Testing
runs-on: ubuntu-latest
needs: [lifecycle-validation, integration-testing]
if: github.event_name == 'pull_request'
timeout-minutes: 30
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: Generate version files
run: npm run prebuild
- name: E2E tests
run: npm run test:e2e
env:
NODE_ENV: test
AGENT_COMM_E2E_TIMEOUT: 120000
- name: Upload E2E test results
uses: actions/upload-artifact@v4
if: always()
with:
name: e2e-test-results
path: test-results/
# Performance regression testing (PR only)
performance-testing:
name: Performance Regression Testing
runs-on: ubuntu-latest
needs: integration-testing
if: github.event_name == 'pull_request'
timeout-minutes: 25
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: Generate version files
run: npm run prebuild
- name: Performance benchmarks
run: npm run test:e2e -- --testNamePattern="Performance"
env:
NODE_ENV: test
- name: Upload performance results
uses: actions/upload-artifact@v4
if: always()
with:
name: performance-test-results
path: test-results/
# Security and dependency scanning
security-scan:
name: Security & Dependency Scan
runs-on: ubuntu-latest
needs: quick-validation
timeout-minutes: 10
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: Run security audit
run: npm audit --audit-level=high
- name: Check for outdated dependencies
run: npm outdated || true
# Test summary and coverage aggregation
test-summary:
name: Test Summary & Coverage
runs-on: ubuntu-latest
needs: [quick-validation, lifecycle-validation, integration-testing]
if: always()
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: Generate version files
run: npm run prebuild
- name: Generate comprehensive coverage report
run: npm run test:all
continue-on-error: true
- name: Upload comprehensive coverage
uses: codecov/codecov-action@v4
with:
files: ./coverage/lcov.info
flags: comprehensive-tests
name: comprehensive-coverage
- name: Test Results Summary
if: always()
run: |
echo "## Test Results Summary" >> $GITHUB_STEP_SUMMARY
echo "| Test Layer | Status |" >> $GITHUB_STEP_SUMMARY
echo "|------------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| Quick Validation | ${{ needs.quick-validation.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Lifecycle Testing | ${{ needs.lifecycle-validation.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Integration Testing | ${{ needs.integration-testing.result }} |" >> $GITHUB_STEP_SUMMARY
if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "| E2E Testing | ${{ needs.e2e-testing.result }} |" >> $GITHUB_STEP_SUMMARY
fi
# Deployment readiness check (main branch only)
deployment-readiness:
name: Deployment Readiness Check
runs-on: ubuntu-latest
needs: [test-summary, security-scan]
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
timeout-minutes: 5
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: Build check
run: npm run build
- name: Package validation
run: |
echo "Checking package integrity..."
npm pack --dry-run
- name: Deployment readiness summary
run: |
echo "## 🚀 Deployment Readiness" >> $GITHUB_STEP_SUMMARY
echo "✅ All tests passed" >> $GITHUB_STEP_SUMMARY
echo "✅ Security scan clean" >> $GITHUB_STEP_SUMMARY
echo "✅ Build successful" >> $GITHUB_STEP_SUMMARY
echo "✅ Package validated" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Ready for production deployment! 🎉" >> $GITHUB_STEP_SUMMARY