[Feat] Add automate e2e test framework for extensible integration tests #10
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: Integration Test [AI Gateway] | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: # Allow manual triggering | |
| jobs: | |
| test-ai-gateway: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - name: Check out the repo | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.24' | |
| - name: Set up Rust | |
| uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| with: | |
| toolchain: 1.90 | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| make \ | |
| curl \ | |
| build-essential \ | |
| pkg-config | |
| - name: Install Kind | |
| run: | | |
| curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64 | |
| chmod +x ./kind | |
| sudo mv ./kind /usr/local/bin/kind | |
| - name: Install kubectl | |
| run: | | |
| curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" | |
| chmod +x kubectl | |
| sudo mv kubectl /usr/local/bin/kubectl | |
| - name: Install Helm | |
| run: | | |
| curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash | |
| - name: Download E2E test dependencies | |
| run: | | |
| cd e2e && go mod download | |
| - name: Build E2E test binary | |
| run: | | |
| make build-e2e | |
| - name: Run AI Gateway E2E tests | |
| id: e2e-test | |
| run: | | |
| set +e # Don't exit on error, we want to capture the result | |
| make e2e-test PROFILE=ai-gateway | |
| TEST_EXIT_CODE=$? | |
| echo "test_exit_code=${TEST_EXIT_CODE}" >> $GITHUB_OUTPUT | |
| exit ${TEST_EXIT_CODE} | |
| env: | |
| E2E_VERBOSE: "true" | |
| KEEP_CLUSTER: "true" | |
| - name: Upload test reports | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-reports | |
| path: | | |
| test-report.json | |
| test-report.md | |
| retention-days: 30 | |
| - name: Create test summary from report | |
| if: always() | |
| run: | | |
| if [ -f "test-report.md" ]; then | |
| echo "=== Reading test report from test-report.md ===" | |
| cat test-report.md >> $GITHUB_STEP_SUMMARY | |
| # Add additional context | |
| cat >> $GITHUB_STEP_SUMMARY << 'EOF' | |
| --- | |
| ### 📚 Additional Resources | |
| - **Trigger:** ${{ github.event_name }} | |
| - **Branch:** `${{ github.ref_name }}` | |
| - **Commit:** `${{ github.sha }}` | |
| - **Workflow Run:** [${{ github.run_id }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) | |
| - [E2E Test Framework Documentation](https://github.com/${{ github.repository }}/tree/main/e2e) | |
| - [AI Gateway Profile](https://github.com/${{ github.repository }}/tree/main/e2e/profiles/ai-gateway) | |
| ### � Artifacts | |
| - Test reports (JSON and Markdown) are available as workflow artifacts | |
| - Reports are retained for 30 days | |
| EOF | |
| else | |
| echo "⚠️ Test report file not found!" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "The E2E test framework did not generate a report file." >> $GITHUB_STEP_SUMMARY | |
| echo "This might indicate that the test failed before report generation." >> $GITHUB_STEP_SUMMARY | |
| fi | |
| - name: Clean up | |
| if: always() | |
| run: | | |
| make e2e-cleanup || true | |