Add optimized tutorial cover images

这个提交包含在:
cryptocommuniums-afk
2026-03-15 12:01:21 +08:00
父节点 bee24d547d
当前提交 143c60a054
修改 7 个文件,包含 673 行新增242 行删除

查看文件

@@ -0,0 +1,43 @@
import { describe, expect, it } from "vitest";
import {
buildTutorialImageFfmpegArgs,
buildTutorialImageKey,
buildTutorialImageUrl,
getTutorialImageSpec,
} from "./tutorialImages";
describe("tutorialImages", () => {
it("maps tennis categories to image specs", () => {
expect(getTutorialImageSpec("forehand")?.sourcePageUrl).toContain("Ray_Dunlop_forehand");
expect(getTutorialImageSpec("backhand")?.sourcePageUrl).toContain("Backhand_Federer");
expect(getTutorialImageSpec("serve")?.sourcePageUrl).toContain("Serena_Williams_Serves");
expect(getTutorialImageSpec("wall")?.sourcePageUrl).toContain("Tennis_wall");
expect(getTutorialImageSpec("unknown")).toBeNull();
});
it("builds stable storage keys and public URLs", () => {
expect(buildTutorialImageKey("forehand-fundamentals")).toBe("tutorials/forehand-fundamentals.webp");
expect(buildTutorialImageUrl("forehand-fundamentals")).toBe("/uploads/tutorials/forehand-fundamentals.webp");
});
it("uses a fixed compression pipeline for tutorial images", () => {
const args = buildTutorialImageFfmpegArgs("/tmp/input.jpg", "/tmp/output.webp");
expect(args).toEqual([
"-y",
"-i",
"/tmp/input.jpg",
"-vf",
"scale=1200:675:force_original_aspect_ratio=increase,crop=1200:675",
"-frames:v",
"1",
"-c:v",
"libwebp",
"-quality",
"78",
"-compression_level",
"6",
"/tmp/output.webp",
]);
});
});