The web shell still showed leftovers from the trading prototype: composer chips with German trading and "Steve Jobs" prompts, trading suggestion chips under the empty conversation line, a German trading hero for the empty transcript, and a German "data protection" status panel in the sidebar. They suggested actions the product does not have and added persistent chrome. Remove the composer chips and their helper, the empty-state chips and the hero (the empty conversation keeps its existing one-line start hint), the sidebar trading indicator and the data trust panel. The new-bot E2E now asserts the plain empty state; the sidebar spec no longer expects the trading status, and the placeholder Steve Jobs spec with no assertions is gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MRtGG9ARfqqhma3t85Ro2u
50 lines
2.0 KiB
TypeScript
50 lines
2.0 KiB
TypeScript
/**
|
|
* E2E: Sidebar navigation elements.
|
|
*
|
|
* Verifies the expected sidebar sections appear and that Integrations is gone.
|
|
*/
|
|
import { expect, test } from "@playwright/test";
|
|
import { captureScreenshot, completeOnboarding, signup } from "./helpers";
|
|
|
|
test.describe.configure({ mode: "serial" });
|
|
|
|
test("sidebar has expected navigation items and no integrations", async ({ page }) => {
|
|
const testInfo = test.info();
|
|
const stamp = Date.now();
|
|
await signup(page, `snnav-${stamp}@rakazo.test`, "password12", "SnNav");
|
|
await completeOnboarding(page);
|
|
await expect(page.getByText("Chief").first()).toBeVisible();
|
|
|
|
const sidebar = page.locator("aside").first();
|
|
await captureScreenshot(page, testInfo, "sidebar-nav-before");
|
|
|
|
// Actual sidebar structure (verified by snapshot):
|
|
// - button "Activity" (top action)
|
|
// - textbox "Search" (search input)
|
|
// - button "Heute" (today)
|
|
// - text "Sprich mit deinen Oo's" (conversations section header)
|
|
// - NO "Integration(en)" button or text
|
|
|
|
// Search: it's a textbox, not a button
|
|
const searchInput = sidebar.locator('input[placeholder="Search"], textbox[name="Search"]');
|
|
await expect(searchInput).toBeVisible({ timeout: 5000 });
|
|
|
|
// "Heute" (Today)
|
|
const todayBtn = sidebar.getByRole("button", { name: "Heute", exact: true });
|
|
await expect(todayBtn).toBeVisible({ timeout: 5000 });
|
|
|
|
// "Sprich mit deinen Oo's" is plain text, not a button
|
|
const conversationsText = sidebar.getByText("Sprich mit deinen Oo's");
|
|
await expect(conversationsText).toBeVisible({ timeout: 5000 });
|
|
|
|
// No "Integration(en)" button
|
|
const integrationBtn = sidebar.getByRole("button", { name: /Integration(en)?/i });
|
|
await expect(integrationBtn).toHaveCount(0, { timeout: 5000 });
|
|
|
|
// No "Integration(en)" text anywhere in sidebar
|
|
const integrationText = sidebar.getByText(/Integration(en)?/i);
|
|
await expect(integrationText).toHaveCount(0, { timeout: 5000 });
|
|
|
|
await captureScreenshot(page, testInfo, "sidebar-nav-after");
|
|
});
|