name: Unit Tests
on:
pull_request:
branches: [ main, uat, develop, feature/docker ]
push:
branches: [ main, uat, develop, feature/docker ]
jobs:
unit-tests:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22.15.1'
cache: 'yarn'
- name: Setup environment file
run: cp env.example .env
- name: Install dependencies
run: yarn install
- name: Run linting
continue-on-error: true
run: yarn lint
- name: Generate coverage report
run: yarn test:unit:coverage
env:
NODE_ENV: test
CI: true
AGENT_ID: test-agent
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: unit-test-results
path: |
coverage/
logs/
retention-days: 7
- name: Generate test summary
if: always()
run: |
echo "## Unit Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Environment" >> $GITHUB_STEP_SUMMARY
echo "✅ Node.js version: 22.15.1" >> $GITHUB_STEP_SUMMARY
echo "✅ Platform: ubuntu-latest" >> $GITHUB_STEP_SUMMARY
echo "✅ Execution: Direct Node.js/Yarn execution" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Test Coverage" >> $GITHUB_STEP_SUMMARY
if [ -f coverage/lcov.info ]; then
echo "✅ Coverage report generated successfully" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "📊 Coverage files:" >> $GITHUB_STEP_SUMMARY
ls -la coverage/ >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "📈 Coverage summary:" >> $GITHUB_STEP_SUMMARY
if [ -f coverage/coverage-summary.json ]; then
cat coverage/coverage-summary.json | jq -r '.total.lines.pct' | xargs -I {} echo "Lines: {}%" >> $GITHUB_STEP_SUMMARY
cat coverage/coverage-summary.json | jq -r '.total.statements.pct' | xargs -I {} echo "Statements: {}%" >> $GITHUB_STEP_SUMMARY
cat coverage/coverage-summary.json | jq -r '.total.functions.pct' | xargs -I {} echo "Functions: {}%" >> $GITHUB_STEP_SUMMARY
cat coverage/coverage-summary.json | jq -r '.total.branches.pct' | xargs -I {} echo "Branches: {}%" >> $GITHUB_STEP_SUMMARY
fi
else
echo "❌ Coverage report not generated" >> $GITHUB_STEP_SUMMARY
fi