mirror of
https://github.com/azaion/detections.git
synced 2026-04-22 23:16:32 +00:00
[AZ-137] [AZ-138] Decompose test tasks and scaffold E2E test infrastructure
Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# Async Detection & SSE Streaming Tests
|
||||
|
||||
**Task**: AZ-142_test_async_sse
|
||||
**Name**: Async Detection & SSE Streaming Tests
|
||||
**Description**: Implement E2E tests verifying async media detection initiation, SSE event streaming, and duplicate media_id rejection
|
||||
**Complexity**: 3 points
|
||||
**Dependencies**: AZ-138_test_infrastructure
|
||||
**Component**: Integration Tests
|
||||
**Jira**: AZ-142
|
||||
**Epic**: AZ-137
|
||||
|
||||
## Problem
|
||||
|
||||
Async media detection via POST /detect/{media_id} must return immediately with "started" status while processing continues in background. SSE streaming must deliver real-time detection events to connected clients. Duplicate media_id submissions must be rejected with 409.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Async detection returns immediately without waiting for processing
|
||||
- SSE connection receives detection events during processing
|
||||
- Final SSE event signals completion with mediaStatus "AIProcessed"
|
||||
- Duplicate media_id correctly rejected with 409 Conflict
|
||||
|
||||
## Scope
|
||||
|
||||
### Included
|
||||
- FT-P-08: Async media detection returns "started" immediately
|
||||
- FT-P-09: SSE streaming delivers detection events during async processing
|
||||
- FT-N-04: Duplicate media_id returns 409
|
||||
|
||||
### Excluded
|
||||
- Video frame sampling details (covered in video tests)
|
||||
- SSE queue overflow behavior (covered in resource limit tests)
|
||||
- Annotations service interaction (covered in resilience tests)
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
**AC-1: Immediate async response**
|
||||
Given an initialized engine
|
||||
When POST /detect/{media_id} is called with config and auth headers
|
||||
Then response arrives within 1s with {"status": "started"}
|
||||
|
||||
**AC-2: SSE event delivery**
|
||||
Given an SSE client connected to GET /detect/stream
|
||||
When async detection is triggered via POST /detect/{media_id}
|
||||
Then SSE events are received with detection data and mediaStatus "AIProcessing"
|
||||
And a final event with mediaStatus "AIProcessed" and percent 100 arrives
|
||||
|
||||
**AC-3: Duplicate media_id rejection**
|
||||
Given an async detection is already in progress for a media_id
|
||||
When POST /detect/{media_id} is called again with the same ID
|
||||
Then response is 409 Conflict
|
||||
|
||||
## Non-Functional Requirements
|
||||
|
||||
**Performance**
|
||||
- Async initiation response within 1s
|
||||
- SSE events delivered within 120s total processing time
|
||||
|
||||
## Integration Tests
|
||||
|
||||
| AC Ref | Initial Data/Conditions | What to Test | Expected Behavior | NFR References |
|
||||
|--------|------------------------|-------------|-------------------|----------------|
|
||||
| AC-1 | Engine warm, test-video, JWT token | POST /detect/{media_id} | Response < 1s, status "started" | Max 2s |
|
||||
| AC-2 | Engine warm, SSE connected, test-video | Listen SSE during async detection | Events received, final AIProcessed | Max 120s |
|
||||
| AC-3 | Active detection in progress | Second POST with same media_id | 409 Conflict | Max 5s |
|
||||
|
||||
## Constraints
|
||||
|
||||
- SSE client must connect before triggering async detection
|
||||
- JWT token required for async detection endpoint
|
||||
- Test video must be accessible via configured paths
|
||||
|
||||
## Risks & Mitigation
|
||||
|
||||
**Risk 1: SSE connection timing**
|
||||
- *Risk*: SSE connection may not be established before detection starts
|
||||
- *Mitigation*: Add small delay between SSE connect and detection trigger; verify connection established
|
||||
Reference in New Issue
Block a user