Match Home, top nav, hero, and logo wall to the current marketing frames.
Puts Workshops in the header, pairs the hero with a static rule card and breakpoint CTAs, and shows the three pilot marks with no wall label. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
e12e06f7ce
commit
33cdaf135c
47 files changed
+728
-527
No files matched your search
@@ -7,40 +7,40 @@ test.describe("Critical User Journeys", () => {
|
||||
|
||||
test("complete user journey: learn about CommunityRule", async ({ page }) => {
|
||||
// 1. User lands on homepage
|
||||
await expect(page.locator("text=Collaborate")).toBeVisible();
|
||||
await expect(page.locator("text=Build structure")).toBeVisible();
|
||||
|
||||
// 2. User reads hero section
|
||||
await expect(
|
||||
page.locator("text=Help your community make important decisions"),
|
||||
page.locator("text=Strong communities agree on four things early"),
|
||||
).toBeVisible();
|
||||
|
||||
// 3. User clicks CTA to learn more
|
||||
const learnCta = page
|
||||
.getByRole("link", { name: /Learn how CommunityRule works/i })
|
||||
.or(page.getByRole("button", { name: /Learn how CommunityRule works/i }))
|
||||
.getByRole("link", { name: /Talk to a facilitator/i })
|
||||
.or(page.getByRole("button", { name: /Talk to a facilitator/i }))
|
||||
.first();
|
||||
if ((await learnCta.count()) > 0 && (await learnCta.isVisible())) {
|
||||
await learnCta.click();
|
||||
await expect(page).toHaveURL(/\/how-it-works/);
|
||||
await expect(page).toHaveURL(/\/workshops/);
|
||||
}
|
||||
|
||||
// 4. User scrolls to CardSteps section (home)
|
||||
// Note: mobile title is one line; lg+ uses stacked "How / CommunityRule / helps" from home copy
|
||||
const howItWorksHeading = page.locator(
|
||||
'h2:has-text("How CommunityRule works"), h2:has-text("How"), h2:has-text("CommunityRule"), h2:has-text("helps")',
|
||||
'h2:has-text("How CommunityRule helps"), h2:has-text("How"), h2:has-text("CommunityRule"), h2:has-text("helps")',
|
||||
);
|
||||
await expect(howItWorksHeading).toBeVisible();
|
||||
|
||||
// 5. User reads the process steps
|
||||
await expect(
|
||||
page.locator("text=Document how your community makes decisions"),
|
||||
page.locator("text=See what has worked for other communities"),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.locator("text=Build an operating manual for a successful community"),
|
||||
page.locator("text=Decide how you will decide, while things are calm"),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.locator(
|
||||
"text=Get a link to your manual for your group to review and evolve",
|
||||
"text=Invite your members and change it together as you grow",
|
||||
),
|
||||
).toBeVisible();
|
||||
|
||||
@@ -87,20 +87,22 @@ test.describe("Critical User Journeys", () => {
|
||||
|
||||
// Check main sections are present
|
||||
await expect(
|
||||
page.locator("h1, h2").filter({ hasText: "Collaborate" }),
|
||||
page.locator("h1, h2").filter({ hasText: "Build structure" }),
|
||||
).toBeVisible();
|
||||
|
||||
const howItWorksHeading = page.locator(
|
||||
'h2:has-text("How CommunityRule works"), h2:has-text("How CommunityRule helps")',
|
||||
'h2:has-text("How CommunityRule helps"), h2:has-text("How CommunityRule helps")',
|
||||
);
|
||||
await expect(howItWorksHeading).toBeVisible();
|
||||
|
||||
await expect(
|
||||
page.locator("h1").filter({ hasText: "Tools for the parts that get hard" }),
|
||||
page.locator("h2").filter({ hasText: "Tools for the parts that get hard" }),
|
||||
).toBeVisible();
|
||||
|
||||
// Check key components are rendered
|
||||
await expect(page.locator('img[alt="Hero illustration"]')).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("heading", { name: "CommunityRule Creative Team" }),
|
||||
).toBeVisible();
|
||||
await expect(page.locator('img[alt="Food Not Bombs"]')).toBeVisible();
|
||||
await expect(page.locator("text=Jo Freeman")).toBeVisible();
|
||||
});
|
||||
@@ -108,11 +110,11 @@ test.describe("Critical User Journeys", () => {
|
||||
test("feature grid section functionality", async ({ page }) => {
|
||||
// Check section header
|
||||
await expect(
|
||||
page.locator('h1:has-text("Tools for the parts that get hard")'),
|
||||
page.locator('h2:has-text("Tools for the parts that get hard")'),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.locator(
|
||||
"text=Every group runs into the same knots. CommunityRule gives you a way through",
|
||||
"text=Every community runs into the same knots. CommunityRule gives you a way through",
|
||||
),
|
||||
).toBeVisible();
|
||||
|
||||
@@ -127,12 +129,12 @@ test.describe("Critical User Journeys", () => {
|
||||
featureSection.locator("text=Plan for conflict"),
|
||||
).toBeVisible();
|
||||
|
||||
// Feature tiles are presentational — only the lockup "Explore the toolkit" is a link
|
||||
// Feature tiles are presentational — only the lockup "Explore the patterns" is a link
|
||||
await expect(
|
||||
featureSection.locator('a[href="#decision-making"]'),
|
||||
).toHaveCount(0);
|
||||
await expect(
|
||||
featureSection.getByRole("link", { name: "Explore the toolkit" }),
|
||||
featureSection.getByRole("link", { name: "Explore the patterns" }),
|
||||
).toHaveAttribute("href", "/learn");
|
||||
});
|
||||
|
||||
@@ -186,19 +188,19 @@ test.describe("Critical User Journeys", () => {
|
||||
// Test mobile viewport
|
||||
await page.setViewportSize({ width: 375, height: 667 });
|
||||
await expect(
|
||||
page.locator("h1, h2").filter({ hasText: "Collaborate" }),
|
||||
page.locator("h1, h2").filter({ hasText: "Build structure" }),
|
||||
).toBeVisible();
|
||||
|
||||
// Test tablet viewport
|
||||
await page.setViewportSize({ width: 768, height: 1024 });
|
||||
await expect(
|
||||
page.locator("h1, h2").filter({ hasText: "Collaborate" }),
|
||||
page.locator("h1, h2").filter({ hasText: "Build structure" }),
|
||||
).toBeVisible();
|
||||
|
||||
// Test desktop viewport
|
||||
await page.setViewportSize({ width: 1440, height: 900 });
|
||||
await expect(
|
||||
page.locator("h1, h2").filter({ hasText: "Collaborate" }),
|
||||
page.locator("h1, h2").filter({ hasText: "Build structure" }),
|
||||
).toBeVisible();
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user