Fix prettier formatting issues
This commit is contained in:
@@ -16,18 +16,18 @@ describe("ContentLockup Integration", () => {
|
||||
subtitle="Get Started"
|
||||
description="This is a description"
|
||||
ctaText="Get Started"
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Welcome" })
|
||||
screen.getByRole("heading", { name: "Welcome" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Get Started" })
|
||||
screen.getByRole("heading", { name: "Get Started" }),
|
||||
).toBeInTheDocument();
|
||||
expect(screen.getByText("This is a description")).toBeInTheDocument();
|
||||
expect(screen.getAllByRole("button", { name: "Get Started" })).toHaveLength(
|
||||
3
|
||||
3,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -40,18 +40,18 @@ describe("ContentLockup Integration", () => {
|
||||
description="Feature description"
|
||||
linkText="Learn More"
|
||||
linkHref="/learn"
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Feature Title" })
|
||||
screen.getByRole("heading", { name: "Feature Title" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("link", { name: "Learn More" })
|
||||
screen.getByRole("link", { name: "Learn More" }),
|
||||
).toBeInTheDocument();
|
||||
expect(screen.getByRole("link", { name: "Learn More" })).toHaveAttribute(
|
||||
"href",
|
||||
"/learn"
|
||||
"/learn",
|
||||
);
|
||||
});
|
||||
|
||||
@@ -61,14 +61,14 @@ describe("ContentLockup Integration", () => {
|
||||
variant="ask"
|
||||
title="Ask Question"
|
||||
subtitle="Ask subtitle"
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Ask Question" })
|
||||
screen.getByRole("heading", { name: "Ask Question" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Ask subtitle" })
|
||||
screen.getByRole("heading", { name: "Ask subtitle" }),
|
||||
).toBeInTheDocument();
|
||||
// Ask variant should not have description or CTA
|
||||
expect(screen.queryByRole("button")).not.toBeInTheDocument();
|
||||
@@ -81,7 +81,7 @@ describe("ContentLockup Integration", () => {
|
||||
title="Left Aligned"
|
||||
subtitle="Subtitle"
|
||||
alignment="left"
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
const container = screen
|
||||
@@ -92,7 +92,7 @@ describe("ContentLockup Integration", () => {
|
||||
|
||||
test("renders responsive buttons correctly", () => {
|
||||
render(
|
||||
<ContentLockup variant="hero" title="Responsive" ctaText="Click Me" />
|
||||
<ContentLockup variant="hero" title="Responsive" ctaText="Click Me" />,
|
||||
);
|
||||
|
||||
// Should render all three button variants for different breakpoints
|
||||
@@ -107,7 +107,7 @@ describe("ContentLockup Integration", () => {
|
||||
title="Custom Button"
|
||||
ctaText="Custom"
|
||||
buttonClassName="custom-button-class"
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
const buttons = screen.getAllByRole("button", { name: "Custom" });
|
||||
@@ -119,7 +119,7 @@ describe("ContentLockup Integration", () => {
|
||||
render(<ContentLockup variant="hero" title="Minimal" />);
|
||||
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Minimal" })
|
||||
screen.getByRole("heading", { name: "Minimal" }),
|
||||
).toBeInTheDocument();
|
||||
// Should not crash without subtitle, description, or CTA
|
||||
expect(screen.queryByRole("button")).not.toBeInTheDocument();
|
||||
@@ -146,7 +146,7 @@ describe("ContentLockup Integration", () => {
|
||||
title="Accessible"
|
||||
linkText="Accessible Link"
|
||||
linkHref="/accessible"
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
const link = screen.getByRole("link", { name: "Accessible Link" });
|
||||
|
||||
@@ -49,26 +49,26 @@ describe("Component Interactions Integration", () => {
|
||||
<div>
|
||||
<HeroBanner {...heroData} />
|
||||
<NumberedCards {...numberedCardsData} />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Hero introduces the concept
|
||||
expect(
|
||||
screen.getByText(/Help your community make important decisions/)
|
||||
screen.getByText(/Help your community make important decisions/),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// Numbered cards explain the process
|
||||
expect(screen.getByText("How CommunityRule works")).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("Document how your community makes decisions")
|
||||
screen.getByText("Document how your community makes decisions"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("Build an operating manual for a successful community")
|
||||
screen.getByText("Build an operating manual for a successful community"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Get a link to your manual for your group to review and evolve"
|
||||
)
|
||||
"Get a link to your manual for your group to review and evolve",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -83,7 +83,7 @@ describe("Component Interactions Integration", () => {
|
||||
<div>
|
||||
<RuleStack />
|
||||
<FeatureGrid {...featureGridData} />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Rule stack shows governance options
|
||||
@@ -94,12 +94,12 @@ describe("Component Interactions Integration", () => {
|
||||
|
||||
// Feature grid provides support context
|
||||
expect(
|
||||
screen.getByText("We've got your back, every step of the way")
|
||||
screen.getByText("We've got your back, every step of the way"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Use our toolkit to improve, document, and evolve your organization."
|
||||
)
|
||||
"Use our toolkit to improve, document, and evolve your organization.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -108,13 +108,13 @@ describe("Component Interactions Integration", () => {
|
||||
|
||||
// Quote provides credibility and social proof
|
||||
expect(
|
||||
screen.getByText(/The rules of decision-making must be open/)
|
||||
screen.getByText(/The rules of decision-making must be open/),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// Should have proper attribution
|
||||
expect(screen.getByText("Jo Freeman")).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("The Tyranny of Structurelessness")
|
||||
screen.getByText("The Tyranny of Structurelessness"),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -131,10 +131,10 @@ describe("Component Interactions Integration", () => {
|
||||
// Provides help for users who need assistance
|
||||
expect(screen.getByText("Still have questions?")).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("Get answers from an experienced organizer")
|
||||
screen.getByText("Get answers from an experienced organizer"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("link", { name: /Ask an organizer/i })
|
||||
screen.getByRole("link", { name: /Ask an organizer/i }),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -160,7 +160,7 @@ describe("Component Interactions Integration", () => {
|
||||
subtitle="Test help subtitle"
|
||||
buttonText="Test Help Button"
|
||||
/>
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// All components should render without errors
|
||||
@@ -169,7 +169,7 @@ describe("Component Interactions Integration", () => {
|
||||
expect(screen.getByText("Consensus clusters")).toBeInTheDocument();
|
||||
expect(screen.getByText("Test Features")).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(/The rules of decision-making must be open/)
|
||||
screen.getByText(/The rules of decision-making must be open/),
|
||||
).toBeInTheDocument();
|
||||
expect(screen.getByText("Test Help")).toBeInTheDocument();
|
||||
});
|
||||
@@ -209,7 +209,7 @@ describe("Component Interactions Integration", () => {
|
||||
<NumberedCards {...testData.cards} />
|
||||
<FeatureGrid {...testData.features} />
|
||||
<AskOrganizer {...testData.help} />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Verify all data is passed correctly
|
||||
@@ -217,7 +217,7 @@ describe("Component Interactions Integration", () => {
|
||||
expect(screen.getByText("Test Subtitle")).toBeInTheDocument();
|
||||
expect(screen.getByText("Test description")).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getAllByRole("button", { name: "Test CTA" }).length
|
||||
screen.getAllByRole("button", { name: "Test CTA" }).length,
|
||||
).toBeGreaterThan(0);
|
||||
expect(screen.getByText("Test Cards")).toBeInTheDocument();
|
||||
expect(screen.getByText("Card 1")).toBeInTheDocument();
|
||||
@@ -225,7 +225,7 @@ describe("Component Interactions Integration", () => {
|
||||
expect(screen.getByText("Test Features")).toBeInTheDocument();
|
||||
expect(screen.getByText("Test Help")).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("link", { name: /Test Help Button/i })
|
||||
screen.getByRole("link", { name: /Test Help Button/i }),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -258,7 +258,7 @@ describe("Component Interactions Integration", () => {
|
||||
buttonText="Contact us"
|
||||
buttonHref="#contact"
|
||||
/>
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Test interaction flow
|
||||
@@ -281,7 +281,7 @@ describe("Component Interactions Integration", () => {
|
||||
expect(screen.getByText("Consensus clusters")).toBeInTheDocument();
|
||||
expect(screen.getByText("Features")).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(/The rules of decision-making must be open/)
|
||||
screen.getByText(/The rules of decision-making must be open/),
|
||||
).toBeInTheDocument();
|
||||
expect(screen.getByText("Need help?")).toBeInTheDocument();
|
||||
});
|
||||
@@ -294,7 +294,7 @@ describe("Component Interactions Integration", () => {
|
||||
<NumberedCards title="Minimal Cards" cards={[]} />
|
||||
<FeatureGrid title="Minimal Features" />
|
||||
<AskOrganizer title="Minimal Help" />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Components should render without crashing
|
||||
@@ -331,7 +331,7 @@ describe("Component Interactions Integration", () => {
|
||||
subtitle="Accessible help subtitle"
|
||||
buttonText="Accessible Help Button"
|
||||
/>
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Check for proper heading hierarchy
|
||||
|
||||
@@ -14,7 +14,7 @@ describe("Layout Integration", () => {
|
||||
<div>
|
||||
<Header />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Check that CommunityRule branding appears in both header and footer
|
||||
@@ -30,19 +30,21 @@ describe("Layout Integration", () => {
|
||||
<div>
|
||||
<Header />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Header navigation items
|
||||
expect(
|
||||
screen.getAllByRole("menuitem", { name: "Navigate to Use cases page" })
|
||||
.length
|
||||
.length,
|
||||
).toBeGreaterThan(0);
|
||||
expect(
|
||||
screen.getAllByRole("menuitem", { name: "Navigate to Learn page" }).length
|
||||
screen.getAllByRole("menuitem", { name: "Navigate to Learn page" })
|
||||
.length,
|
||||
).toBeGreaterThan(0);
|
||||
expect(
|
||||
screen.getAllByRole("menuitem", { name: "Navigate to About page" }).length
|
||||
screen.getAllByRole("menuitem", { name: "Navigate to About page" })
|
||||
.length,
|
||||
).toBeGreaterThan(0);
|
||||
|
||||
// Footer navigation items (should be present in footer as well)
|
||||
@@ -92,23 +94,23 @@ describe("Layout Integration", () => {
|
||||
// Contact information
|
||||
expect(screen.getByText("medlab@colorado.edu")).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("link", { name: "medlab@colorado.edu" })
|
||||
screen.getByRole("link", { name: "medlab@colorado.edu" }),
|
||||
).toHaveAttribute("href", "mailto:medlab@colorado.edu");
|
||||
|
||||
// Social media links
|
||||
expect(
|
||||
screen.getByRole("link", { name: "Follow us on Bluesky" })
|
||||
screen.getByRole("link", { name: "Follow us on Bluesky" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("link", { name: "Follow us on GitLab" })
|
||||
screen.getByRole("link", { name: "Follow us on GitLab" }),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// Legal links
|
||||
expect(
|
||||
screen.getByRole("link", { name: "Privacy Policy" })
|
||||
screen.getByRole("link", { name: "Privacy Policy" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("link", { name: "Terms of Service" })
|
||||
screen.getByRole("link", { name: "Terms of Service" }),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -134,7 +136,7 @@ describe("Layout Integration", () => {
|
||||
<div>
|
||||
<Header />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Header should have banner role
|
||||
@@ -155,7 +157,7 @@ describe("Layout Integration", () => {
|
||||
<div>
|
||||
<Header />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Header should have responsive navigation elements
|
||||
@@ -172,7 +174,7 @@ describe("Layout Integration", () => {
|
||||
<div>
|
||||
<Header />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Get all interactive elements
|
||||
@@ -195,7 +197,7 @@ describe("Layout Integration", () => {
|
||||
<div>
|
||||
<Header />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Header provides main navigation
|
||||
@@ -215,7 +217,7 @@ describe("Layout Integration", () => {
|
||||
<div>
|
||||
<Header />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Main navigation in header
|
||||
@@ -228,13 +230,13 @@ describe("Layout Integration", () => {
|
||||
(link) =>
|
||||
link.textContent?.includes("Use cases") ||
|
||||
link.textContent?.includes("Learn") ||
|
||||
link.textContent?.includes("About")
|
||||
link.textContent?.includes("About"),
|
||||
);
|
||||
expect(navigationLinks.length).toBeGreaterThan(0);
|
||||
|
||||
// Contact information in footer
|
||||
expect(
|
||||
screen.getByRole("link", { name: "medlab@colorado.edu" })
|
||||
screen.getByRole("link", { name: "medlab@colorado.edu" }),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -13,15 +13,15 @@ describe("Page Flow Integration", () => {
|
||||
|
||||
// Hero Banner section
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Collaborate" })
|
||||
screen.getByRole("heading", { name: "Collaborate" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "with clarity" })
|
||||
screen.getByRole("heading", { name: "with clarity" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Help your community make important decisions in a way that reflects its unique values."
|
||||
)
|
||||
"Help your community make important decisions in a way that reflects its unique values.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
// Check that CTA button exists (multiple sizes for responsive design)
|
||||
const ctaButtons = screen.getAllByRole("button", {
|
||||
@@ -39,65 +39,65 @@ describe("Page Flow Integration", () => {
|
||||
|
||||
// Numbered Cards section
|
||||
expect(
|
||||
screen.getByRole("heading", { name: /How CommunityRule works/ })
|
||||
screen.getByRole("heading", { name: /How CommunityRule works/ }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Here's a quick overview of the process, from start to finish."
|
||||
)
|
||||
"Here's a quick overview of the process, from start to finish.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("Document how your community makes decisions")
|
||||
screen.getByText("Document how your community makes decisions"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("Build an operating manual for a successful community")
|
||||
screen.getByText("Build an operating manual for a successful community"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Get a link to your manual for your group to review and evolve"
|
||||
)
|
||||
"Get a link to your manual for your group to review and evolve",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// Rule Stack section
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Consensus clusters" })
|
||||
screen.getByRole("heading", { name: "Consensus clusters" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Elected Board" })
|
||||
screen.getByRole("heading", { name: "Elected Board" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Consensus" })
|
||||
screen.getByRole("heading", { name: "Consensus" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Petition" })
|
||||
screen.getByRole("heading", { name: "Petition" }),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// Feature Grid section
|
||||
expect(
|
||||
screen.getByRole("heading", {
|
||||
name: "We've got your back, every step of the way",
|
||||
})
|
||||
}),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Use our toolkit to improve, document, and evolve your organization."
|
||||
)
|
||||
"Use our toolkit to improve, document, and evolve your organization.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// Quote Block section
|
||||
expect(
|
||||
screen.getByText(/The rules of decision-making must be open/)
|
||||
screen.getByText(/The rules of decision-making must be open/),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// Ask Organizer section
|
||||
expect(
|
||||
screen.getByRole("heading", { name: "Still have questions?" })
|
||||
screen.getByRole("heading", { name: "Still have questions?" }),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("Get answers from an experienced organizer")
|
||||
screen.getByText("Get answers from an experienced organizer"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByRole("link", { name: /Ask an organizer/i })
|
||||
screen.getByRole("link", { name: /Ask an organizer/i }),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -125,7 +125,7 @@ describe("Page Flow Integration", () => {
|
||||
|
||||
// Check that all three cards are rendered
|
||||
const cards = screen.getAllByText(
|
||||
/Document how your community|Build an operating manual|Get a link to your manual/
|
||||
/Document how your community|Build an operating manual|Get a link to your manual/,
|
||||
);
|
||||
expect(cards).toHaveLength(3);
|
||||
|
||||
@@ -167,7 +167,7 @@ describe("Page Flow Integration", () => {
|
||||
|
||||
// Check that main content is properly structured
|
||||
const mainContent = screen.getByText(
|
||||
/Help your community make important decisions/
|
||||
/Help your community make important decisions/,
|
||||
);
|
||||
expect(mainContent).toBeInTheDocument();
|
||||
});
|
||||
@@ -194,7 +194,7 @@ describe("Page Flow Integration", () => {
|
||||
// Verify the logical flow of information
|
||||
// 1. Hero introduces the concept
|
||||
expect(
|
||||
screen.getByText(/Help your community make important decisions/)
|
||||
screen.getByText(/Help your community make important decisions/),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// 2. How it works section explains the process
|
||||
@@ -205,12 +205,12 @@ describe("Page Flow Integration", () => {
|
||||
|
||||
// 4. Features highlight benefits
|
||||
expect(
|
||||
screen.getByText("We've got your back, every step of the way")
|
||||
screen.getByText("We've got your back, every step of the way"),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// 5. Quote provides social proof
|
||||
expect(
|
||||
screen.getByText(/The rules of decision-making must be open/)
|
||||
screen.getByText(/The rules of decision-making must be open/),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// 6. Call to action for help
|
||||
|
||||
@@ -17,12 +17,12 @@ describe("User Journey Integration", () => {
|
||||
<Header />
|
||||
<Page />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// User sees the main value proposition
|
||||
expect(
|
||||
screen.getByText(/Help your community make important decisions/)
|
||||
screen.getByText(/Help your community make important decisions/),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// User clicks the main CTA to learn more
|
||||
@@ -64,7 +64,7 @@ describe("User Journey Integration", () => {
|
||||
<Header />
|
||||
<Page />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// User clicks on navigation links in header (check that they exist and are clickable)
|
||||
@@ -73,7 +73,7 @@ describe("User Journey Integration", () => {
|
||||
(link) =>
|
||||
link.textContent?.includes("Use Cases") ||
|
||||
link.textContent?.includes("Learn") ||
|
||||
link.textContent?.includes("About")
|
||||
link.textContent?.includes("About"),
|
||||
);
|
||||
|
||||
// Test that navigation links are present and clickable
|
||||
@@ -90,7 +90,7 @@ describe("User Journey Integration", () => {
|
||||
// User scrolls to the bottom and sees the help section
|
||||
expect(screen.getByText("Still have questions?")).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("Get answers from an experienced organizer")
|
||||
screen.getByText("Get answers from an experienced organizer"),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// User clicks the ask organizer button (it's actually a link, not a button)
|
||||
@@ -105,15 +105,15 @@ describe("User Journey Integration", () => {
|
||||
|
||||
// User reads through the process steps
|
||||
expect(
|
||||
screen.getByText("Document how your community makes decisions")
|
||||
screen.getByText("Document how your community makes decisions"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("Build an operating manual for a successful community")
|
||||
screen.getByText("Build an operating manual for a successful community"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Get a link to your manual for your group to review and evolve"
|
||||
)
|
||||
"Get a link to your manual for your group to review and evolve",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// User sees the step numbers
|
||||
@@ -128,7 +128,7 @@ describe("User Journey Integration", () => {
|
||||
<Header />
|
||||
<Page />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// User finds contact email in footer
|
||||
@@ -153,17 +153,17 @@ describe("User Journey Integration", () => {
|
||||
|
||||
// User sees the features section
|
||||
expect(
|
||||
screen.getByText("We've got your back, every step of the way")
|
||||
screen.getByText("We've got your back, every step of the way"),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Use our toolkit to improve, document, and evolve your organization."
|
||||
)
|
||||
"Use our toolkit to improve, document, and evolve your organization.",
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// User sees the testimonial/quote (check for the actual quote content)
|
||||
expect(
|
||||
screen.getByText(/The rules of decision-making must be open/)
|
||||
screen.getByText(/The rules of decision-making must be open/),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -173,7 +173,7 @@ describe("User Journey Integration", () => {
|
||||
<div>
|
||||
<Page />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// User sees the logo wall with partner logos (check for any logo images)
|
||||
@@ -185,7 +185,7 @@ describe("User Journey Integration", () => {
|
||||
img.alt?.includes("Metagov") ||
|
||||
img.alt?.includes("Open Civics") ||
|
||||
img.alt?.includes("Mutual Aid CO") ||
|
||||
img.alt?.includes("CU Boulder")
|
||||
img.alt?.includes("CU Boulder"),
|
||||
);
|
||||
expect(partnerLogos.length).toBeGreaterThan(0);
|
||||
|
||||
@@ -203,7 +203,7 @@ describe("User Journey Integration", () => {
|
||||
<Header />
|
||||
<Page />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// 1. User discovers the application
|
||||
@@ -218,12 +218,12 @@ describe("User Journey Integration", () => {
|
||||
|
||||
// 4. User sees features and benefits
|
||||
expect(
|
||||
screen.getByText("We've got your back, every step of the way")
|
||||
screen.getByText("We've got your back, every step of the way"),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// 5. User sees social proof
|
||||
expect(
|
||||
screen.getByText(/The rules of decision-making must be open/)
|
||||
screen.getByText(/The rules of decision-making must be open/),
|
||||
).toBeInTheDocument();
|
||||
|
||||
// 6. User can take action
|
||||
@@ -243,7 +243,7 @@ describe("User Journey Integration", () => {
|
||||
<Header />
|
||||
<Page />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Header navigation
|
||||
@@ -256,7 +256,7 @@ describe("User Journey Integration", () => {
|
||||
(link) =>
|
||||
link.textContent?.includes("Use cases") ||
|
||||
link.textContent?.includes("Learn") ||
|
||||
link.textContent?.includes("About")
|
||||
link.textContent?.includes("About"),
|
||||
);
|
||||
expect(navigationLinks.length).toBeGreaterThan(0);
|
||||
|
||||
@@ -273,7 +273,7 @@ describe("User Journey Integration", () => {
|
||||
<Header />
|
||||
<Page />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
|
||||
// Test all interactive elements
|
||||
|
||||
Reference in New Issue
Block a user