Refactoring Opportunity
Summary
- File:
containers/api-proxy/token-tracker.test.js
- Current size: 1,324 lines
- Responsibilities identified: 3+ distinct functional areas across 13 describe blocks
Evidence
The file spans 1,324 lines and contains 13 describe blocks testing the entire token-tracker.js module in a single file:
39: describe('extractUsageFromJson', ...)
164: describe('extractUsageFromSseLine', ...)
265: describe('parseSseDataLines', ...)
299: describe('normalizeUsage', ...)
380: describe('isStreamingResponse', ...)
400: describe('trackTokenUsage', ...) # ~148 lines (400–548)
548: describe('isCompressedResponse', ...)
570: describe('trackTokenUsage (compressed responses)', ...) # ~228 lines (570–798)
798: describe('parseWebSocketFrames', ...)
902: describe('trackWebSocketTokenUsage', ...) # ~155 lines (902–1057)
1057: describe('validateTokenUsageRecord', ...)
1152: describe('token-usage JSONL record schema field', ...)
1276: describe('token-usage _schema exact version', ...)
Three clearly distinct concerns are interleaved:
- SSE/streaming parsing utilities:
extractUsageFromSseLine, parseSseDataLines, extractUsageFromJson, normalizeUsage — pure parsing logic
- HTTP proxy tracking:
isStreamingResponse, isCompressedResponse, trackTokenUsage (both streaming and compressed variants) — proxy middleware behavior
- WebSocket tracking:
parseWebSocketFrames, trackWebSocketTokenUsage — a separate protocol path
- Schema/record validation:
validateTokenUsageRecord, schema field tests, version pin tests — JSONL record format correctness
Proposed Split
containers/api-proxy/token-tracker.test.js (1,324 lines) could be split into:
token-tracker.parsing.test.js — extractUsageFromJson, extractUsageFromSseLine, parseSseDataLines, normalizeUsage (~260 lines). Pure SSE/JSON parsing utilities.
token-tracker.http.test.js — isStreamingResponse, isCompressedResponse, trackTokenUsage, trackTokenUsage (compressed) (~400 lines). HTTP proxy tracking middleware.
token-tracker.websocket.test.js — parseWebSocketFrames, trackWebSocketTokenUsage (~260 lines). WebSocket protocol tracking.
token-tracker.schema.test.js — validateTokenUsageRecord, schema field tests, version pin tests (~270 lines). JSONL record schema validation.
Affected Callers
Test file only; no production imports. The Jest glob **/*.test.js will automatically discover the split files.
Effort Estimate
Low
Benefits
- Each test file has a clear, single focus making CI failure messages more actionable
- WebSocket tests (a distinct protocol path) are isolated from HTTP tests
- Schema pin tests can be reviewed independently when the JSONL format changes
Detected by Refactoring Scanner workflow. Run date: 2026-05-11
Generated by Refactoring Opportunity Scanner · ● 794.9K · ◷
Refactoring Opportunity
Summary
containers/api-proxy/token-tracker.test.jsEvidence
The file spans 1,324 lines and contains 13 describe blocks testing the entire
token-tracker.jsmodule in a single file:Three clearly distinct concerns are interleaved:
extractUsageFromSseLine,parseSseDataLines,extractUsageFromJson,normalizeUsage— pure parsing logicisStreamingResponse,isCompressedResponse,trackTokenUsage(both streaming and compressed variants) — proxy middleware behaviorparseWebSocketFrames,trackWebSocketTokenUsage— a separate protocol pathvalidateTokenUsageRecord, schema field tests, version pin tests — JSONL record format correctnessProposed Split
containers/api-proxy/token-tracker.test.js(1,324 lines) could be split into:token-tracker.parsing.test.js—extractUsageFromJson,extractUsageFromSseLine,parseSseDataLines,normalizeUsage(~260 lines). Pure SSE/JSON parsing utilities.token-tracker.http.test.js—isStreamingResponse,isCompressedResponse,trackTokenUsage,trackTokenUsage (compressed)(~400 lines). HTTP proxy tracking middleware.token-tracker.websocket.test.js—parseWebSocketFrames,trackWebSocketTokenUsage(~260 lines). WebSocket protocol tracking.token-tracker.schema.test.js—validateTokenUsageRecord, schema field tests, version pin tests (~270 lines). JSONL record schema validation.Affected Callers
Test file only; no production imports. The Jest glob
**/*.test.jswill automatically discover the split files.Effort Estimate
Low
Benefits
Detected by Refactoring Scanner workflow. Run date: 2026-05-11