Fix total response time calculation to include queuing time

- Change calculation from lastDataTimestamp - sendRequest.ts to lastDataTimestamp - timing.start
- timing.start includes the earliest request event (ResourceWillSendRequest) with queuing
- sendRequest.ts only starts from ResourceSendRequest which skips queuing time
- Total response time now correctly represents wall clock time from request initiation to completion
- Fixes issue where total response time was incorrectly shorter than individual request duration
- Maintains fallback to sendRequest timestamp if timing.start unavailable

This resolves the discrepancy where total response time (3.4ms) was impossibly faster
than request duration (87.2ms) for request ID CFE45B40FA39328019033E8AC78DB909.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Michael Mainguy 2025-08-11 12:31:47 -05:00
parent 63550a42b4
commit 4236ed0c55

View File

@ -156,7 +156,11 @@ export const calculateDurations = (request: HTTPRequest): void => {
}
// Calculate Total Response Time (wall clock time from request initiation to completion)
if (request.events.sendRequest && lastDataTimestamp) {
// Use the earliest request start time (timing.start) which includes queuing, not sendRequest.ts
if (request.timing.start && lastDataTimestamp) {
request.timing.totalResponseTime = lastDataTimestamp - request.timing.start
} else if (request.events.sendRequest && lastDataTimestamp) {
// Fallback to sendRequest timestamp if timing.start unavailable
request.timing.totalResponseTime = lastDataTimestamp - request.events.sendRequest.ts
} else if (request.timing.queueTime && request.timing.duration) {
// Fallback: sum all known components