| name | api-integration-test-scaffolder |
| description | Generates integration tests for frontend → backend → Genkit flow connections. Use when creating E2E API tests. |
API Integration Test Scaffolder Workflow
This skill creates comprehensive integration tests that validate the complete data flow from frontend to backend to AI flows.
Workflow Steps
-
Identify integration to test:
- Ask for frontend service function (e.g.,
aiServices.generateKscResponses)
- Find corresponding backend endpoint
- Identify associated Genkit flow (if any)
- Determine test scenario (success, validation, error)
-
Generate integration test file:
- Read template:
.claude/skills/api-integration-test-scaffolder/templates/integration_test.py.tpl
- Replace placeholders:
{{TEST_NAME}} - Descriptive test name
{{ENDPOINT_PATH}} - API endpoint path
{{REQUEST_DATA}} - Sample request payload
{{EXPECTED_RESPONSE}} - Expected response structure
{{GENKIT_FLOW}} - Associated Genkit flow name
- Write to:
backend/app/tests/integration/test_{{feature_name}}_integration.py
-
Include test scenarios:
- ✅ Happy path: Valid request → successful response
- ⚠️ Validation: Invalid data → 422 validation error
- 🔒 Authentication: Unauthorized → 401 error
- ❌ Error handling: Server error → 500 with proper message
- 🔄 Genkit flow: Verify flow execution and caching
- 📊 Response validation: Type checking, required fields
-
Add mock setup:
- Mock Firebase Auth dependencies
- Mock Genkit flow responses (optional)
- Mock external services (email, storage, etc.)
- Set up test database/Firestore
-
Report success:
- Show test file path
- Display test coverage (scenarios included)
- Provide command to run tests
- Show example test execution output
Template Structure
import pytest
from httpx import AsyncClient
from unittest.mock import AsyncMock, patch
from app.main import app
from app.models.{{MODEL}} import {{REQUEST_MODEL}}, {{RESPONSE_MODEL}}
@pytest.fixture
async def async_client():
async with AsyncClient(app=app, base_url="http://test") as client:
yield client
class Test{{FEATURE}}Integration:
\"\"\"Integration tests for {{FEATURE}} frontend → backend → flow.\"\"\"
@patch("app.core.dependencies.get_current_user")
async def test_complete_flow_success(self, mock_auth, async_client):
# Test implementation
pass
# Additional test methods...
Example Usage
User: Create an integration test for the KSC generation feature
Assistant: I'll create a comprehensive integration test...
Files created:
- backend/app/tests/integration/test_ksc_generation_integration.py
Test scenarios included:
✅ Happy path: Valid job description → KSC responses
⚠️ Validation: Empty job description → 422 error
🔒 Authentication: No auth token → 401 error
🔄 Genkit flow: Verify generateKscResponse flow execution
📊 Response validation: Check response structure and types
Run tests:
pytest backend/app/tests/integration/test_ksc_generation_integration.py -v