mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 04:38:33 +00:00
fix(player): treat runtime timeline as cross-origin ready (#1690)
This commit is contained in:
@@ -1807,6 +1807,9 @@ describe("HyperframesPlayer runtime ready handshake", () => {
|
||||
volume: number;
|
||||
audioLocked: boolean;
|
||||
playbackRate: number;
|
||||
ready: boolean;
|
||||
duration: number;
|
||||
paused: boolean;
|
||||
iframe: HTMLIFrameElement;
|
||||
_onMessage: (event: MessageEvent) => void;
|
||||
}
|
||||
@@ -1822,6 +1825,18 @@ describe("HyperframesPlayer runtime ready handshake", () => {
|
||||
});
|
||||
}
|
||||
|
||||
function timelineMessage(durationInFrames = 120) {
|
||||
return new MessageEvent("message", {
|
||||
source: frameWindow,
|
||||
data: {
|
||||
source: "hf-preview",
|
||||
type: "timeline",
|
||||
durationInFrames,
|
||||
scenes: [],
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function findControlCalls(action: string) {
|
||||
return postSpy.mock.calls.filter((call) => {
|
||||
const data = call[0] as { type?: string; action?: string };
|
||||
@@ -1951,6 +1966,29 @@ describe("HyperframesPlayer runtime ready handshake", () => {
|
||||
|
||||
expect(findControlCalls("set-muted")).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("treats a cross-origin runtime timeline message as player ready", () => {
|
||||
const readyEvents: Array<{ duration: number }> = [];
|
||||
player.addEventListener("ready", (event) => {
|
||||
readyEvents.push((event as CustomEvent<{ duration: number }>).detail);
|
||||
});
|
||||
|
||||
player._onMessage(timelineMessage(120));
|
||||
|
||||
expect(player.ready).toBe(true);
|
||||
expect(player.duration).toBe(4);
|
||||
expect(readyEvents).toEqual([{ duration: 4 }]);
|
||||
});
|
||||
|
||||
it("honors autoplay after cross-origin runtime timeline readiness", () => {
|
||||
player.setAttribute("autoplay", "");
|
||||
postSpy.mockClear();
|
||||
|
||||
player._onMessage(timelineMessage(120));
|
||||
|
||||
expect(player.paused).toBe(false);
|
||||
expect(findControlCalls("play")).toHaveLength(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe("HyperframesPlayer audio lock — Claude desktop UA fallback", () => {
|
||||
|
||||
Reference in New Issue
Block a user