PraisonAI v3.9.28 #366
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Comprehensive Test Suite | |
| on: | |
| workflow_dispatch: # Allow manual triggering | |
| inputs: | |
| test_type: | |
| description: 'Type of tests to run' | |
| required: true | |
| default: 'all' | |
| type: choice | |
| options: | |
| - all | |
| - unit | |
| - integration | |
| - fast | |
| - performance | |
| - frameworks | |
| - autogen | |
| - crewai | |
| release: | |
| types: [published, prereleased] | |
| schedule: | |
| # Run comprehensive tests weekly on Sundays at 3 AM UTC | |
| - cron: '0 3 * * 0' | |
| jobs: | |
| comprehensive-test: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| env: | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| OPENAI_MODEL_NAME: gpt-4o-mini | |
| strategy: | |
| matrix: | |
| python-version: ["3.11"] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install UV | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.local/bin" >> $GITHUB_PATH | |
| - name: Install dependencies | |
| run: | | |
| cd src/praisonai | |
| uv pip install --system ."[ui,gradio,api,agentops,google,openai,anthropic,cohere,chat,code,realtime,call,crewai,autogen]" | |
| uv pip install --system duckduckgo_search | |
| uv pip install --system pytest pytest-asyncio pytest-cov pytest-benchmark pytest-timeout | |
| # Install knowledge dependencies from praisonai-agents | |
| uv pip install --system "praisonaiagents[knowledge]" | |
| - name: Verify environment variables | |
| run: | | |
| if [ -n "$OPENAI_API_KEY" ]; then | |
| echo "✅ OPENAI_API_KEY is set (length: ${#OPENAI_API_KEY})" | |
| else | |
| echo "⚠️ OPENAI_API_KEY is NOT set" | |
| fi | |
| - name: Run Comprehensive Test Suite | |
| run: | | |
| # Determine test type from input or default to 'all' | |
| TEST_TYPE="${{ github.event.inputs.test_type || 'all' }}" | |
| echo "🧪 Running comprehensive test suite (type: $TEST_TYPE)" | |
| case $TEST_TYPE in | |
| "unit") | |
| cd src/praisonai && python -m pytest tests/unit/ -v --tb=short --disable-warnings --cov=praisonai --cov-report=xml --cov-branch || echo "Some unit tests failed" | |
| ;; | |
| "integration") | |
| cd src/praisonai && python -m pytest tests/integration/ -v --tb=short --disable-warnings --cov=praisonai --cov-report=xml --cov-branch || echo "Some integration tests failed" | |
| ;; | |
| "fast") | |
| cd src/praisonai && python tests/test_runner.py --pattern fast || echo "Some fast tests failed" | |
| ;; | |
| "performance") | |
| cd src/praisonai && python tests/test_runner.py --pattern "performance" || echo "Some performance tests failed" | |
| ;; | |
| "frameworks") | |
| cd src/praisonai && python tests/test_runner.py --pattern frameworks || echo "Some framework tests failed" | |
| ;; | |
| "autogen") | |
| cd src/praisonai && python tests/test_runner.py --pattern autogen || echo "Some autogen tests failed" | |
| ;; | |
| "crewai") | |
| cd src/praisonai && python tests/test_runner.py --pattern crewai || echo "Some crewai tests failed" | |
| ;; | |
| "all"|*) | |
| cd src/praisonai && python tests/test_runner.py --pattern all || echo "Some tests failed" | |
| ;; | |
| esac | |
| - name: Generate Comprehensive Test Report | |
| if: always() | |
| run: | | |
| echo "# 📋 Comprehensive Test Report" > comprehensive_report.md | |
| echo "" >> comprehensive_report.md | |
| echo "**Python Version:** ${{ matrix.python-version }}" >> comprehensive_report.md | |
| echo "**Test Type:** ${{ github.event.inputs.test_type || 'all' }}" >> comprehensive_report.md | |
| echo "**Trigger:** ${{ github.event_name }}" >> comprehensive_report.md | |
| echo "**Date:** $(date -u)" >> comprehensive_report.md | |
| echo "" >> comprehensive_report.md | |
| echo "## 🧪 Test Categories Covered:" >> comprehensive_report.md | |
| echo "" >> comprehensive_report.md | |
| echo "### Unit Tests:" >> comprehensive_report.md | |
| echo "- ✅ Core agent functionality" >> comprehensive_report.md | |
| echo "- ✅ Async operations" >> comprehensive_report.md | |
| echo "- ✅ Tool integrations" >> comprehensive_report.md | |
| echo "- ✅ UI components" >> comprehensive_report.md | |
| echo "" >> comprehensive_report.md | |
| echo "### Integration Tests:" >> comprehensive_report.md | |
| echo "- ✅ MCP (Model Context Protocol)" >> comprehensive_report.md | |
| echo "- ✅ RAG (Retrieval Augmented Generation)" >> comprehensive_report.md | |
| echo "- ✅ Base URL API mapping" >> comprehensive_report.md | |
| echo "- ✅ Multi-agent workflows" >> comprehensive_report.md | |
| echo "- ✅ AutoGen framework integration" >> comprehensive_report.md | |
| echo "- ✅ CrewAI framework integration" >> comprehensive_report.md | |
| echo "- 💬 LLM integrations (OpenAI, Anthropic, etc.)" >> comprehensive_report.md | |
| echo "- 🖥️ UI frameworks (Gradio, Streamlit)" >> comprehensive_report.md | |
| echo "- 📊 Memory and persistence" >> comprehensive_report.md | |
| echo "- 🌐 Multi-modal capabilities" >> comprehensive_report.md | |
| echo "- ✅ AutoGen framework integration" >> comprehensive_report.md | |
| echo "- ✅ CrewAI framework integration" >> comprehensive_report.md | |
| echo "" >> comprehensive_report.md | |
| echo "### Key Features Tested:" >> comprehensive_report.md | |
| echo "- 🤖 Agent creation and configuration" >> comprehensive_report.md | |
| echo "- 📋 Task management and execution" >> comprehensive_report.md | |
| echo "- 🔄 Sync/async workflows" >> comprehensive_report.md | |
| echo "- 🛠️ Custom tools and error handling" >> comprehensive_report.md | |
| echo "- 🧠 Knowledge bases and RAG" >> comprehensive_report.md | |
| echo "- 🔌 MCP server connections" >> comprehensive_report.md | |
| echo "- 💬 LLM integrations (OpenAI, Anthropic, etc.)" >> comprehensive_report.md | |
| - name: Upload coverage reports to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| file: src/praisonai/coverage.xml | |
| flags: comprehensive-tests | |
| name: comprehensive-tests-coverage | |
| fail_ci_if_error: false | |
| verbose: true | |
| - name: Upload Comprehensive Test Results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: comprehensive-test-results-python-${{ matrix.python-version }} | |
| path: | | |
| comprehensive_report.md | |
| src/praisonai/htmlcov/ | |
| src/praisonai/coverage.xml | |
| src/praisonai/.coverage | |
| retention-days: 30 | |
| test-matrix-summary: | |
| runs-on: ubuntu-latest | |
| needs: comprehensive-test | |
| if: always() | |
| steps: | |
| - name: Generate Matrix Summary | |
| run: | | |
| echo "# 🎯 Test Matrix Summary" > matrix_summary.md | |
| echo "" >> matrix_summary.md | |
| echo "## Python Version Results:" >> matrix_summary.md | |
| echo "- Python 3.10: ${{ needs.comprehensive-test.result }}" >> matrix_summary.md | |
| echo "- Python 3.11: ${{ needs.comprehensive-test.result }}" >> matrix_summary.md | |
| echo "" >> matrix_summary.md | |
| echo "## Overall Status:" >> matrix_summary.md | |
| if [ "${{ needs.comprehensive-test.result }}" == "success" ]; then | |
| echo "✅ **All tests passed across all Python versions!**" >> matrix_summary.md | |
| else | |
| echo "❌ **Some tests failed. Check individual job logs for details.**" >> matrix_summary.md | |
| fi | |
| - name: Upload Matrix Summary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-matrix-summary | |
| path: matrix_summary.md | |
| retention-days: 30 |