better-chatbot / tests /core /unauthenticated.spec.ts
Bot
Initial commit for HF Spaces
05c5ed5
Raw
History Blame Contribute Delete
3.55 kB
import { test, expect } from "@playwright/test";
test.describe("Unauthenticated User Experience", () => {
test("should load the landing page", async ({ page }) => {
await page.goto("/");
await page.waitForLoadState("networkidle");
// Basic app health check
await expect(page.locator("body")).toBeVisible();
// Should have a title
const title = await page.title();
expect(title).toBeTruthy();
});
test("should redirect to sign-in from protected routes", async ({ page }) => {
await page.goto("/agents");
await page.waitForLoadState("networkidle");
// Should redirect to auth page or show login UI
const currentUrl = page.url();
expect(
currentUrl.includes("/sign-in") || currentUrl.includes("/sign-up"),
).toBeTruthy();
});
test("should display sign-in page", async ({ page }) => {
await page.goto("/sign-in");
await page.waitForLoadState("networkidle");
// Should show sign-in form elements
await expect(
page.locator(
'input[type="email"], input[name="email"], input[id="email"]',
),
).toBeVisible();
await expect(
page.locator(
'button[type="submit"], button:has-text("Sign in"), button:has-text("Continue")',
),
).toBeVisible();
});
test("should display sign-up page", async ({ page }) => {
await page.goto("/sign-up");
await page.waitForLoadState("networkidle");
// Should show sign-up form elements
await expect(page.getByTestId("email-signup-button")).toBeVisible();
});
test("should navigate between sign-in and sign-up pages", async ({
page,
}) => {
// Test that both authentication pages are accessible
await page.goto("/sign-in");
await page.waitForLoadState("networkidle");
expect(page.url()).toContain("/sign-in");
// Verify sign-in page has expected elements
await expect(page.getByTestId("signin-submit-button")).toBeVisible();
// Navigate to sign-up page
await page.goto("/sign-up");
await page.waitForLoadState("networkidle");
expect(page.url()).toContain("/sign-up");
// Verify sign-up page has expected elements
await expect(page.getByTestId("email-signup-button")).toBeVisible();
// Verify we can navigate back to sign-in
await page.goto("/sign-in");
await page.waitForLoadState("networkidle");
expect(page.url()).toContain("/sign-in");
// Verify sign-in page has expected elements
await expect(page.getByTestId("signin-submit-button")).toBeVisible();
});
test("should be responsive on mobile", async ({ page }) => {
await page.setViewportSize({ width: 375, height: 667 });
await page.goto("/");
await page.waitForLoadState("networkidle");
await expect(page.locator("body")).toBeVisible();
const hasHorizontalScroll = await page.evaluate(() => {
return document.body.scrollWidth > window.innerWidth;
});
expect(hasHorizontalScroll).toBeFalsy();
});
test("should have no critical console errors", async ({ page }) => {
const errors: string[] = [];
page.on("console", (msg) => {
if (msg.type() === "error") {
const text = msg.text();
if (
!text.includes("API key") &&
!text.includes("401") &&
!text.includes("403") &&
!text.includes("fetch") &&
!text.includes("MCP")
) {
errors.push(text);
}
}
});
await page.goto("/");
await page.waitForLoadState("networkidle");
expect(errors).toEqual([]);
});
});