Match the marketing homepage and About page to the latest Figma: black hero CTA, spaces in word-split headings, redesigned feature grid, and cited About statistics.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -63,4 +63,27 @@ describe("AboutPage", () => {
|
||||
}),
|
||||
).toHaveAttribute("href", getAssetPath(governanceBookletPath()));
|
||||
});
|
||||
|
||||
test("shows sourced About statistics with as-of years", () => {
|
||||
render(<AboutPage />);
|
||||
const page = messages.pages.about;
|
||||
|
||||
expect(screen.getByText("420M+")).toBeInTheDocument();
|
||||
expect(screen.getByText("24%")).toBeInTheDocument();
|
||||
expect(screen.getByText("45%")).toBeInTheDocument();
|
||||
expect(screen.getByText("800+")).toBeInTheDocument();
|
||||
expect(screen.queryByText("8000+")).not.toBeInTheDocument();
|
||||
expect(screen.queryByText("27%")).not.toBeInTheDocument();
|
||||
|
||||
for (const item of page.stats.items) {
|
||||
expect(screen.getByText(item.label)).toBeInTheDocument();
|
||||
if (item.sourceHref) {
|
||||
expect(
|
||||
screen.getAllByRole("link").some(
|
||||
(link) => link.getAttribute("href") === item.sourceHref,
|
||||
),
|
||||
).toBe(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -35,13 +35,13 @@ describe("Page", () => {
|
||||
// FeatureGrid is next/dynamic — wait like other code-split sections
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getAllByText("We've got your back, every step of the way")
|
||||
screen.getAllByText("Tools for the parts that get hard")
|
||||
.length,
|
||||
).toBeGreaterThan(0);
|
||||
});
|
||||
expect(
|
||||
screen.getAllByText(
|
||||
"Use our toolkit to improve, document, and evolve your organization.",
|
||||
"Every group runs into the same knots. CommunityRule gives you a way through, and a written record of what you decided.",
|
||||
).length,
|
||||
).toBeGreaterThan(0);
|
||||
|
||||
@@ -111,16 +111,18 @@ describe("Page", () => {
|
||||
// Wait for dynamically imported FeatureGrid component to load
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getAllByText("We've got your back, every step of the way")
|
||||
screen.getAllByText("Tools for the parts that get hard")
|
||||
.length,
|
||||
).toBeGreaterThan(0);
|
||||
});
|
||||
expect(
|
||||
screen.getAllByText(
|
||||
"Use our toolkit to improve, document, and evolve your organization.",
|
||||
"Every group runs into the same knots. CommunityRule gives you a way through, and a written record of what you decided.",
|
||||
).length,
|
||||
).toBeGreaterThan(0);
|
||||
const learnMore = screen.getAllByRole("link", { name: "Learn more" });
|
||||
const learnMore = screen.getAllByRole("link", {
|
||||
name: "Explore the toolkit",
|
||||
});
|
||||
expect(learnMore[0]).toHaveAttribute("href", "/learn");
|
||||
});
|
||||
|
||||
@@ -157,7 +159,7 @@ describe("Page", () => {
|
||||
// FeatureGrid
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getAllByText("We've got your back, every step of the way")
|
||||
screen.getAllByText("Tools for the parts that get hard")
|
||||
.length,
|
||||
).toBeGreaterThan(0);
|
||||
});
|
||||
@@ -211,7 +213,7 @@ describe("Page", () => {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getAllByText(
|
||||
"Use our toolkit to improve, document, and evolve your organization.",
|
||||
"Every group runs into the same knots. CommunityRule gives you a way through, and a written record of what you decided.",
|
||||
).length,
|
||||
).toBeGreaterThan(0);
|
||||
});
|
||||
@@ -236,7 +238,7 @@ describe("Page", () => {
|
||||
});
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getAllByText("We've got your back, every step of the way")
|
||||
screen.getAllByText("Tools for the parts that get hard")
|
||||
.length,
|
||||
).toBeGreaterThan(0);
|
||||
});
|
||||
@@ -285,7 +287,7 @@ describe("Page", () => {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getAllByText(
|
||||
"Use our toolkit to improve, document, and evolve your organization.",
|
||||
"Every group runs into the same knots. CommunityRule gives you a way through, and a written record of what you decided.",
|
||||
).length,
|
||||
).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
@@ -90,13 +90,13 @@ describe("Page Flow Integration", () => {
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByRole("heading", {
|
||||
name: "We've got your back, every step of the way",
|
||||
name: "Tools for the parts that get hard",
|
||||
}),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Use our toolkit to improve, document, and evolve your organization.",
|
||||
"Every group runs into the same knots. CommunityRule gives you a way through, and a written record of what you decided.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
|
||||
@@ -233,7 +233,7 @@ describe("Page Flow Integration", () => {
|
||||
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText("We've got your back, every step of the way"),
|
||||
screen.getByText("Tools for the parts that get hard"),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
|
||||
@@ -151,12 +151,12 @@ describe("User Journey Integration", () => {
|
||||
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText("We've got your back, every step of the way"),
|
||||
screen.getByText("Tools for the parts that get hard"),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Use our toolkit to improve, document, and evolve your organization.",
|
||||
"Every group runs into the same knots. CommunityRule gives you a way through, and a written record of what you decided.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
|
||||
@@ -206,7 +206,7 @@ describe("User Journey Integration", () => {
|
||||
|
||||
await waitFor(() => {
|
||||
expect(
|
||||
screen.getByText("We've got your back, every step of the way"),
|
||||
screen.getByText("Tools for the parts that get hard"),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user