qhkr2z22o: Prefer direct mp4Url for feed video playback with hls fallback

This commit is contained in:
2026-10-19 17:11:33 -06:00
parent 9719b8dc83
commit 102f2f534a
5 changed files with 78 additions and 14 deletions
+21
View File
@@ -5,6 +5,7 @@ import { PostCard } from "@/components/PostCard";
import { toCardPosts } from "@/lib/feed-model";
import { choosePlayback, supportsNativeHls } from "@/lib/video-playback";
const MP4 = "https://cdn.feed.sharedservices.vt.com/v.mp4";
const HLS = "https://stream.mux.com/abc.m3u8";
const item = (media: Record<string, unknown>) => ({
type: "post",
@@ -55,4 +56,24 @@ describe("video media in the card", () => {
expect(out).not.toContain("<video");
expect(out).toContain('src="https://i/v.jpg"');
});
it("prefers mp4Url: plain video source, no hls.js needed", () => {
const out = html({ ...video, hlsUrl: HLS, mp4Url: MP4 });
expect(out).toContain("<video");
expect(out).toContain(`src="${MP4}"`);
expect(out).toContain('poster="https://i/v.jpg"');
expect(out).not.toContain("m3u8");
expect(out).not.toContain("autoplay");
});
it("mp4Url alone renders the player", () => {
expect(html({ ...video, mp4Url: MP4 })).toContain(`src="${MP4}"`);
});
it("hls-only video renders a video without a src (hls.js attaches it)", () => {
const out = html({ ...video, hlsUrl: HLS });
expect(out).toContain("<video");
expect(out).not.toContain(`src="${HLS}"`);
});
it("rejects an mp4Url off the feed CDN", () => {
const out = html({ ...video, mp4Url: "https://evil.example/v.mp4" });
expect(out).not.toContain("<video");
});
});