Skip to content
File

Blob: tests/e2e/specs/11-share-invalid-token.spec.ts

typescript55 lines
1import { test, expect } from "../fixtures/bland-test";
2 
3test.describe("invalid share token - terminal error", () => {
4 test("invalid token renders clean terminal error without share chrome", async ({ browser }) => {
5 const ctx = await browser.newContext();
6 const page = await ctx.newPage();
7 
8 const pageErrors: string[] = [];
9 page.on("pageerror", (err) => pageErrors.push(err.message));
10 
11 await page.goto("/s/definitely-not-a-real-token");
12 
13 // Terminal error content should be visible
14 const errorMessage = page.locator("text=Share link not found or expired");
15 await expect(errorMessage).toBeVisible({ timeout: 15_000 });
16 
17 // "Go home" action button should be present
18 const goHome = page.locator("button", { hasText: "Go home" });
19 await expect(goHome).toBeVisible();
20 
21 // Share header must NOT be rendered (no <header> element)
22 await expect(page.locator("header")).toHaveCount(0);
23 
24 // Share sidebar must NOT be rendered (no sidebar nav)
25 await expect(page.locator("nav[aria-hidden]")).toHaveCount(0);
26 
27 // Share footer must NOT be rendered
28 await expect(page.locator("footer")).toHaveCount(0);
29 
30 // No JS errors
31 expect(pageErrors).toEqual([]);
32 
33 await ctx.close();
34 });
35 
36 test("expired share token renders terminal error without share chrome (authenticated)", async ({
37 authenticatedPage: { page },
38 }) => {
39 // Use an authenticated context navigating to a bad token to verify
40 // the terminal state is the same regardless of auth status
41 const pageErrors: string[] = [];
42 page.on("pageerror", (err) => pageErrors.push(err.message));
43 
44 await page.goto("/s/this-token-does-not-exist");
45 
46 const errorMessage = page.locator("text=Share link not found or expired");
47 await expect(errorMessage).toBeVisible({ timeout: 15_000 });
48 
49 await expect(page.locator("header")).toHaveCount(0);
50 await expect(page.locator("footer")).toHaveCount(0);
51 
52 expect(pageErrors).toEqual([]);
53 });
54});