evOo-local/apps/web/e2e/fixtures/media-editor.tsx
Claude bab398cb52
wip(media): editor e2e and player fixes (unverified)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NLSCTnhge4umMnemGXWr1w
2026-10-03 19:29:59 +00:00

59 lines
2.2 KiB
TypeScript

import { setupI18n } from "@lingui/core";
import { I18nProvider } from "@lingui/react";
import { useState } from "react";
import { createRoot } from "react-dom/client";
import { BrandKitView } from "../../src/pages/media/BrandKitView";
import { EditorView } from "../../src/pages/media/EditorView";
import type { MediaView } from "../../src/pages/media/nav";
import { ProjectView } from "../../src/pages/media/ProjectView";
import { ReviewView } from "../../src/pages/media/ReviewView";
import "../../src/styles.css";
/*
* Mounts the Media Studio editor-side views on their own, starting at the view
* named in the query string, so specs reach them without the library flow.
* Views the editor side does not own render as a marker the spec can assert.
*/
const params = new URLSearchParams(location.search);
const i18n = setupI18n({ locale: "en", messages: { en: {} } });
function initialView(): MediaView {
const projectId = params.get("projectId") ?? "";
switch (params.get("view")) {
case "editor":
return { name: "editor", projectId, planId: params.get("planId") ?? "" };
case "review":
return { name: "review", projectId, renderId: params.get("renderId") ?? "" };
case "brandKit":
return { name: "brandKit", brandKitId: params.get("brandKitId") ?? undefined };
default:
return { name: "project", projectId };
}
}
function Harness() {
const [view, setView] = useState<MediaView>(initialView);
const props = { navigate: setView, onClose: () => undefined };
switch (view.name) {
case "project":
return <ProjectView {...props} projectId={view.projectId} />;
case "editor":
return <EditorView {...props} projectId={view.projectId} planId={view.planId} />;
case "review":
return <ReviewView {...props} projectId={view.projectId} renderId={view.renderId} />;
case "brandKit":
return <BrandKitView {...props} brandKitId={view.brandKitId} />;
default:
return <div data-testid="media-other-view" data-view={view.name} />;
}
}
createRoot(document.getElementById("root")!).render(
<I18nProvider i18n={i18n}>
<main className="min-h-screen bg-background text-foreground">
<Harness />
</main>
</I18nProvider>,
);