Skip to content

[Refactoring] Split containers/api-proxy/token-tracker.test.js — 1,324-line test file with 4 distinct concerns #2908

@github-actions

Description

@github-actions

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:

  1. SSE/streaming parsing utilities: extractUsageFromSseLine, parseSseDataLines, extractUsageFromJson, normalizeUsage — pure parsing logic
  2. HTTP proxy tracking: isStreamingResponse, isCompressedResponse, trackTokenUsage (both streaming and compressed variants) — proxy middleware behavior
  3. WebSocket tracking: parseWebSocketFrames, trackWebSocketTokenUsage — a separate protocol path
  4. 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.jsextractUsageFromJson, extractUsageFromSseLine, parseSseDataLines, normalizeUsage (~260 lines). Pure SSE/JSON parsing utilities.
  • token-tracker.http.test.jsisStreamingResponse, isCompressedResponse, trackTokenUsage, trackTokenUsage (compressed) (~400 lines). HTTP proxy tracking middleware.
  • token-tracker.websocket.test.jsparseWebSocketFrames, trackWebSocketTokenUsage (~260 lines). WebSocket protocol tracking.
  • token-tracker.schema.test.jsvalidateTokenUsageRecord, 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 ·

  • expires on Jul 10, 2026, 2:34 PM UTC

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions