From b19549b601636bcbc2fadaa270a77a9fdb48b77a Mon Sep 17 00:00:00 2001 From: Vivaan Dhawan <150339722+VIVAAN-DHAWAN@users.noreply.github.com> Date: Thu, 28 May 2026 13:18:00 +0530 Subject: [PATCH] fix: parse Speedtest Tracker created_at as local time (#5751) --- .../speedtest-tracker-types.ts | 2 +- .../test/speedtest-tracker-types.spec.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 packages/integrations/src/speedtest-tracker/test/speedtest-tracker-types.spec.ts diff --git a/packages/integrations/src/speedtest-tracker/speedtest-tracker-types.ts b/packages/integrations/src/speedtest-tracker/speedtest-tracker-types.ts index 83aa5bb24..e7c5b7a44 100644 --- a/packages/integrations/src/speedtest-tracker/speedtest-tracker-types.ts +++ b/packages/integrations/src/speedtest-tracker/speedtest-tracker-types.ts @@ -2,7 +2,7 @@ import { z } from "zod/v4"; const createEnvelopeSchema = (dataSchema: T) => z.object({ data: dataSchema }); -const parseTimestamp = (timestamp: string): Date => new Date(`${timestamp.replace(" ", "T")}Z`); +const parseTimestamp = (timestamp: string): Date => new Date(timestamp.replace(" ", "T")); export const speedtestTrackerResultSchema = z.object({ id: z.number().int(), diff --git a/packages/integrations/src/speedtest-tracker/test/speedtest-tracker-types.spec.ts b/packages/integrations/src/speedtest-tracker/test/speedtest-tracker-types.spec.ts new file mode 100644 index 000000000..e5ddafc58 --- /dev/null +++ b/packages/integrations/src/speedtest-tracker/test/speedtest-tracker-types.spec.ts @@ -0,0 +1,19 @@ +import { describe, expect, test } from "vitest"; + +import { speedtestTrackerResultSchema } from "../speedtest-tracker-types"; + +describe("speedtestTrackerResultSchema", () => { + test("parses created_at as Speedtest Tracker local wall time", () => { + const result = speedtestTrackerResultSchema.parse({ + id: 1, + ping: 12, + download_bits: 100, + upload_bits: 50, + healthy: true, + created_at: "2026-05-18 18:30:01", + }); + + expect(result.created_at.getHours()).toBe(18); + expect(result.created_at.getMinutes()).toBe(30); + }); +});