From 62217250ed9a5689fe543e78ee95037d82a310ed Mon Sep 17 00:00:00 2001 From: Hongming Wang Date: Fri, 24 Apr 2026 13:01:40 -0700 Subject: [PATCH] =?UTF-8?q?test(pricing):=20finish=20Starter=E2=86=92Team,?= =?UTF-8?q?=20Pro=E2=86=92Growth=20rename=20in=206=20stale=20assertions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Marketing-lead agent's rename pass updated the "renders all three plans" test (lines 56-57) but missed lines 77, 94, 114, 132, 143, 158 which still referenced the pre-rename "Upgrade to Starter" / "Upgrade to Pro" button names. Canvas (Next.js) build failed with getByRole timeout because the component now says "Upgrade to Team" / "Upgrade to Growth". Internal PlanId tuple ("free" | "starter" | "pro") and startCheckout(planId) call are unchanged — only the user-facing button labels shifted, so assertions like startCheckout("pro", "acme") still match the server-side API. Verified locally: 9/9 PricingTable tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/components/__tests__/PricingTable.test.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/canvas/src/components/__tests__/PricingTable.test.tsx b/canvas/src/components/__tests__/PricingTable.test.tsx index 919dc788..535daeb7 100644 --- a/canvas/src/components/__tests__/PricingTable.test.tsx +++ b/canvas/src/components/__tests__/PricingTable.test.tsx @@ -74,7 +74,7 @@ describe("PricingTable", () => { it("Paid CTA + anonymous → bounces to signup (no checkout call)", async () => { mockedFetchSession.mockResolvedValue(null); render(); - fireEvent.click(screen.getByRole("button", { name: "Upgrade to Starter" })); + fireEvent.click(screen.getByRole("button", { name: "Upgrade to Team" })); await waitFor(() => expect(mockedRedirectToLogin).toHaveBeenCalledWith("sign-up")); expect(mockedStartCheckout).not.toHaveBeenCalled(); }); @@ -91,7 +91,7 @@ describe("PricingTable", () => { }); render(); - fireEvent.click(screen.getByRole("button", { name: "Upgrade to Pro" })); + fireEvent.click(screen.getByRole("button", { name: "Upgrade to Growth" })); await waitFor(() => expect(mockedStartCheckout).toHaveBeenCalledWith("pro", "acme"), @@ -111,7 +111,7 @@ describe("PricingTable", () => { mockedGetTenantSlug.mockReturnValue(""); render(); - fireEvent.click(screen.getByRole("button", { name: "Upgrade to Starter" })); + fireEvent.click(screen.getByRole("button", { name: "Upgrade to Team" })); await waitFor(() => { const alert = screen.getByRole("alert"); @@ -129,7 +129,7 @@ describe("PricingTable", () => { mockedStartCheckout.mockRejectedValue(new Error("checkout: 500 boom")); render(); - fireEvent.click(screen.getByRole("button", { name: "Upgrade to Pro" })); + fireEvent.click(screen.getByRole("button", { name: "Upgrade to Growth" })); await waitFor(() => { const alert = screen.getByRole("alert"); @@ -140,7 +140,7 @@ describe("PricingTable", () => { it("treats fetchSession network errors as anonymous (fail-closed to signup)", async () => { mockedFetchSession.mockRejectedValue(new Error("network down")); render(); - fireEvent.click(screen.getByRole("button", { name: "Upgrade to Starter" })); + fireEvent.click(screen.getByRole("button", { name: "Upgrade to Team" })); await waitFor(() => expect(mockedRedirectToLogin).toHaveBeenCalledWith("sign-up")); expect(mockedStartCheckout).not.toHaveBeenCalled(); }); @@ -155,7 +155,7 @@ describe("PricingTable", () => { mockedStartCheckout.mockReturnValue(new Promise(() => {})); render(); - const button = screen.getByRole("button", { name: "Upgrade to Pro" }); + const button = screen.getByRole("button", { name: "Upgrade to Growth" }); fireEvent.click(button); await waitFor(() => {