





















@@ -5,7 +5,10 @@ import { resolveStateDir } from "openclaw/plugin-sdk/state-paths";
55import { resolvePreferredOpenClawTmpDir } from "openclaw/plugin-sdk/temp-path";
66import { captureEnv } from "openclaw/plugin-sdk/test-env";
77import { mockPinnedHostnameResolution } from "openclaw/plugin-sdk/test-env";
8-import { createNoisyPngBuffer, createSolidPngBuffer } from "openclaw/plugin-sdk/test-fixtures";
8+import {
9+createGrayscaleAlphaPngBuffer,
10+createSolidPngBuffer,
11+} from "openclaw/plugin-sdk/test-fixtures";
912import { withMockedWindowsPlatform, withRestoredMocks } from "openclaw/plugin-sdk/test-node-mocks";
1013import { optimizeImageToPng } from "openclaw/plugin-sdk/web-media";
1114import { afterAll, afterEach, beforeAll, describe, expect, it, vi } from "vitest";
@@ -68,14 +71,14 @@ beforeAll(async () => {
6871alphaPngFile = await writeTempFile(alphaPngBuffer, ".png");
6972// Keep this small so the alpha-fallback test stays deterministic but fast.
7073const size = 24;
71-fallbackPngBuffer = createNoisyPngBuffer(size, size);
74+fallbackPngBuffer = createGrayscaleAlphaPngBuffer(size, size);
7275fallbackPngFile = await writeTempFile(fallbackPngBuffer, ".png");
7376const smallestPng = await optimizeImageToPng(fallbackPngBuffer, 1);
74-fallbackPngCap = Math.max(1, smallestPng.optimizedSize - 1);
77+fallbackPngCap = Math.max(1, Math.min(fallbackPngBuffer.length, smallestPng.optimizedSize) - 1);
7578const jpegOptimized = await optimizeImageToJpeg(fallbackPngBuffer, fallbackPngCap);
76-if (jpegOptimized.buffer.length >= smallestPng.optimizedSize) {
79+if (jpegOptimized.buffer.length > fallbackPngCap) {
7780throw new Error(
78-`JPEG fallback did not shrink below PNG (jpeg=${jpegOptimized.buffer.length}, png=${smallestPng.optimizedSize})`,
81+`JPEG fallback did not fit cap (jpeg=${jpegOptimized.buffer.length}, cap=${fallbackPngCap})`,
7982);
8083}
8184});
@@ -151,7 +154,7 @@ describe("web media loading", () => {
151154const result = await loadWebMedia(tinyPngWrongExtFile, 1024 * 1024);
152155153156expect(result.kind).toBe("image");
154-expect(result.contentType).toBe("image/jpeg");
157+expect(result.contentType).toBe("image/png");
155158});
156159157160it("includes URL + status in fetch errors", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。