From 2c0b72acb8ed19b6b56b0b41c2b63c78aa79e844 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 22 Feb 2026 14:07:53 +0000 Subject: [PATCH] test: speed up slow media and synology suites --- extensions/synology-chat/src/client.test.ts | 39 ++++++++++++++----- ...compresses-common-formats-jpeg-cap.test.ts | 8 ++-- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/extensions/synology-chat/src/client.test.ts b/extensions/synology-chat/src/client.test.ts index b332f470689..9aa14f3f5f3 100644 --- a/extensions/synology-chat/src/client.test.ts +++ b/extensions/synology-chat/src/client.test.ts @@ -1,5 +1,5 @@ import { EventEmitter } from "node:events"; -import { describe, it, expect, vi, beforeEach } from "vitest"; +import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; // Mock http and https modules before importing the client vi.mock("node:https", () => { @@ -15,6 +15,13 @@ vi.mock("node:http", () => { // Import after mocks are set up const { sendMessage, sendFileUrl } = await import("./client.js"); const https = await import("node:https"); +let fakeNowMs = 1_700_000_000_000; + +async function settleTimers(promise: Promise): Promise { + await Promise.resolve(); + await vi.runAllTimersAsync(); + return promise; +} function mockSuccessResponse() { const httpsRequest = vi.mocked(https.request); @@ -55,23 +62,30 @@ function mockFailureResponse(statusCode = 500) { describe("sendMessage", () => { beforeEach(() => { vi.clearAllMocks(); + vi.useFakeTimers(); + fakeNowMs += 10_000; + vi.setSystemTime(fakeNowMs); + }); + + afterEach(() => { + vi.useRealTimers(); }); it("returns true on successful send", async () => { mockSuccessResponse(); - const result = await sendMessage("https://nas.example.com/incoming", "Hello"); + const result = await settleTimers(sendMessage("https://nas.example.com/incoming", "Hello")); expect(result).toBe(true); }); it("returns false on server error after retries", async () => { mockFailureResponse(500); - const result = await sendMessage("https://nas.example.com/incoming", "Hello"); + const result = await settleTimers(sendMessage("https://nas.example.com/incoming", "Hello")); expect(result).toBe(false); }); it("includes user_ids when userId is numeric", async () => { mockSuccessResponse(); - await sendMessage("https://nas.example.com/incoming", "Hello", 42); + await settleTimers(sendMessage("https://nas.example.com/incoming", "Hello", 42)); const httpsRequest = vi.mocked(https.request); expect(httpsRequest).toHaveBeenCalled(); const callArgs = httpsRequest.mock.calls[0]; @@ -82,22 +96,27 @@ describe("sendMessage", () => { describe("sendFileUrl", () => { beforeEach(() => { vi.clearAllMocks(); + vi.useFakeTimers(); + fakeNowMs += 10_000; + vi.setSystemTime(fakeNowMs); + }); + + afterEach(() => { + vi.useRealTimers(); }); it("returns true on success", async () => { mockSuccessResponse(); - const result = await sendFileUrl( - "https://nas.example.com/incoming", - "https://example.com/file.png", + const result = await settleTimers( + sendFileUrl("https://nas.example.com/incoming", "https://example.com/file.png"), ); expect(result).toBe(true); }); it("returns false on failure", async () => { mockFailureResponse(500); - const result = await sendFileUrl( - "https://nas.example.com/incoming", - "https://example.com/file.png", + const result = await settleTimers( + sendFileUrl("https://nas.example.com/incoming", "https://example.com/file.png"), ); expect(result).toBe(false); }); diff --git a/src/web/auto-reply.web-auto-reply.compresses-common-formats-jpeg-cap.test.ts b/src/web/auto-reply.web-auto-reply.compresses-common-formats-jpeg-cap.test.ts index 1a5d481476f..c241271d97f 100644 --- a/src/web/auto-reply.web-auto-reply.compresses-common-formats-jpeg-cap.test.ts +++ b/src/web/auto-reply.web-auto-reply.compresses-common-formats-jpeg-cap.test.ts @@ -98,8 +98,8 @@ describe("web auto-reply", () => { }, ] as const; - const width = 1200; - const height = 1200; + const width = 1150; + const height = 1150; const sharedRaw = crypto.randomBytes(width * height * 3); for (const fmt of formats) { @@ -179,8 +179,8 @@ describe("web auto-reply", () => { const bigPng = await sharp({ create: { - width: 1800, - height: 1800, + width: 1200, + height: 1200, channels: 3, background: { r: 0, g: 0, b: 255 }, },