From 3b68bebf4081144f77d2bf68afb6b5d57c864940 Mon Sep 17 00:00:00 2001 From: nick-delirium Date: Wed, 18 Dec 2024 14:48:54 +0100 Subject: [PATCH] tracker: changes to resource fails tracking --- frontend/app/player/web/types/resource.ts | 6 +++--- tracker/tracker/CHANGELOG.md | 5 +++++ tracker/tracker/src/main/modules/timing.ts | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/frontend/app/player/web/types/resource.ts b/frontend/app/player/web/types/resource.ts index 53944ab4a..45c0dfc64 100644 --- a/frontend/app/player/web/types/resource.ts +++ b/frontend/app/player/web/types/resource.ts @@ -129,14 +129,14 @@ export const Resource = (resource: IResource) => { export function getResourceFromResourceTiming(msg: ResourceTiming, sessStart: number) { // duration might be duration=0 when cached - const success = msg.duration > 0 || msg.encodedBodySize > 0 || msg.transferredSize > 0 + const failed = msg.duration === 0 && msg.ttfb === 0 && msg.headerSize === 0 && msg.encodedBodySize === 0 && msg.transferredSize === 0 const type = getResourceType(msg.initiator, msg.url) return Resource({ ...msg, type, method: type === ResourceType.FETCH ? ".." : "GET", // should be GET for all non-XHR/Fetch resources, right? - success, - status: success ? '2xx-3xx' : '4xx-5xx', + success: !failed, + status: !failed ? '2xx-3xx' : '4xx-5xx', time: Math.max(0, msg.timestamp - sessStart) }) } diff --git a/tracker/tracker/CHANGELOG.md b/tracker/tracker/CHANGELOG.md index bb04dc581..32a4dcbcb 100644 --- a/tracker/tracker/CHANGELOG.md +++ b/tracker/tracker/CHANGELOG.md @@ -1,3 +1,8 @@ +## 15.0.4 + +- support for spritemaps (svg with `use` tags) +- improvements for missing resources tracking + ## 15.0.3 - fixing `failuresOnly` option for network diff --git a/tracker/tracker/src/main/modules/timing.ts b/tracker/tracker/src/main/modules/timing.ts index 12d6c8bb2..a64628631 100644 --- a/tracker/tracker/src/main/modules/timing.ts +++ b/tracker/tracker/src/main/modules/timing.ts @@ -121,6 +121,23 @@ export default function (app: App, opts: Partial): void { if (shouldSkip) { return } + const failed = entry.responseEnd === 0 && entry.transferSize === 0 + if (failed) { + app.send( + ResourceTiming( + entry.startTime + getTimeOrigin(), + 0, + 0, + 0, + 0, + 0, + entry.name, + entry.initiatorType, + 0, + true, + ), + ) + } app.send( ResourceTiming( entry.startTime + getTimeOrigin(),