fix: close presentation rehearsal contract gaps

This commit is contained in:
lda
2026-07-13 00:55:26 +07:00 Verified
parent c9ebc73184
commit 1e990847dc
3 changed files with 18 additions and 6 deletions
@@ -77,6 +77,11 @@ describe("PresentationRoute", () => {
{ hash: "#scene/thesis/title", heading: "Design and Implementation of lda.chat", hasDemoChrome: false },
{ hash: "#scene/architecture/client", heading: "Architecture Zoom", hasDemoChrome: false },
{ hash: "#scene/authoring/diagnose", heading: "Author, Validate, Repair", hasDemoChrome: false },
{
hash: "#scene/agent-handoff/request",
heading: "What should the workflow author prepare?",
hasDemoChrome: true,
},
{ hash: "#scene/prepared-lifecycle/discover", heading: "Prepared Workflow Lifecycle", hasDemoChrome: true },
{ hash: "#scene/run-from-deployment/graph", heading: "Run From Deployment", hasDemoChrome: true },
{ hash: "#scene/typed-human-boundary/approval", heading: "Typed Human Boundary", hasDemoChrome: true },
@@ -93,8 +98,12 @@ describe("PresentationRoute", () => {
render(<PresentationRoute />);
expect(await screen.findByRole("heading", { name: heading })).toBeInTheDocument();
const demoChrome = screen.queryByTestId("presentation-demo-rail");
expect(demoChrome !== null).toBe(hasDemoChrome);
const footer = screen.getByRole("contentinfo", { name: /presentation footer/i });
const action = within(footer).queryByRole("button", {
name: /run prepared workflow|play replay walkthrough/i,
});
const status = within(footer).queryByRole("status");
expect(action !== null || status !== null).toBe(hasDemoChrome);
},
);
@@ -20,6 +20,8 @@ const expectedBeats = {
describe("presentation rehearsal storyboard", () => {
it("keeps every scene count and canonical beat id aligned with the rehearsal", () => {
expect(new Set(mainScenes.map((scene) => scene.id))).toEqual(new Set(Object.keys(expectedBeats)));
for (const [sceneId, beatIds] of Object.entries(expectedBeats)) {
const scene = mainScenes.find((candidate) => candidate.id === sceneId);
expect(scene, `missing rehearsal scene ${sceneId}`).toBeDefined();