Fix case-study share chrome, hero lockup width, and copy confirmation in the share dialog.

Marketing pages omitted create-flow nav copy, so Share rendered as a translation key; the case-study banner squeezed hero text to the thumbnail width; Copy link had no hover or copied state.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
adilallo
2026-09-09 22:00:19 -06:00
co-authored by Cursor
parent ddf7b0ef7a
commit ce581a42c8
17 changed files with 225 additions and 52 deletions
+26 -1
View File
@@ -1,9 +1,12 @@
import { describe, test, expect, vi } from "vitest";
import { screen } from "@testing-library/react";
import { screen, render as rtlRender } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { renderWithProviders as render } from "../utils/test-utils";
import { MessagesProvider } from "../../app/contexts/MessagesContext";
import UseCaseCompletedRulePage from "../../app/(marketing-case-study)/use-cases/[slug]/rule/page";
import messages from "../../messages/en/index";
import marketingMessages from "../../messages/en/marketing";
import { getTranslation } from "../../lib/i18n/getTranslation";
import { USE_CASE_DETAIL_SLUGS } from "../../lib/useCaseSyntheticPost";
const mockPush = vi.fn();
@@ -83,9 +86,31 @@ describe("UseCaseCompletedRulePage", () => {
name: messages.pages.useCasesCompletedRule.topNav.duplicateAriaLabel,
}),
).toBeInTheDocument();
expect(screen.getByRole("button", { name: "Share" })).toBeInTheDocument();
},
);
test("marketing message bundle resolves Share (not the dotted create.topNav key)", () => {
expect(getTranslation(marketingMessages, "create.topNav.share")).toBe(
"Share",
);
});
test("Share button reads Share under the marketing case-study bundle", async () => {
rtlRender(
<MessagesProvider messages={marketingMessages}>
{await UseCaseCompletedRulePage({
params: Promise.resolve({ slug: "mutual-aid-colorado" }),
})}
</MessagesProvider>,
);
expect(screen.getByRole("button", { name: "Share" })).toBeInTheDocument();
expect(
screen.queryByRole("button", { name: "create.topNav.share" }),
).not.toBeInTheDocument();
});
test("Duplicate opens login when signed out", async () => {
const user = userEvent.setup();
mockOpenLogin.mockClear();