Spaces:
Build error
Build error
import test, { expect, Page } from "@playwright/test"; | |
const toggleConversationPanel = async (page: Page) => { | |
const panel = page.getByTestId("conversation-panel"); | |
await page.waitForTimeout(1000); // Wait for state to stabilize | |
const panelIsVisible = await panel.isVisible(); | |
if (!panelIsVisible) { | |
const conversationPanelButton = page.getByTestId( | |
"toggle-conversation-panel", | |
); | |
await conversationPanelButton.click(); | |
} | |
return page.getByTestId("conversation-panel"); | |
}; | |
const selectConversationCard = async (page: Page, index: number) => { | |
const panel = await toggleConversationPanel(page); | |
// select a conversation | |
const conversationItem = panel.getByTestId("conversation-card").nth(index); | |
await conversationItem.click(); | |
// panel should close | |
await expect(panel).not.toBeVisible(); | |
await page.waitForURL(`/conversations/${index + 1}`); | |
expect(page.url()).toBe(`http://localhost:3001/conversations/${index + 1}`); | |
}; | |
test.beforeEach(async ({ page }) => { | |
await page.goto("/"); | |
}); | |
test("should only display the create new conversation button when in a conversation", async ({ | |
page, | |
}) => { | |
const panel = page.getByTestId("conversation-panel"); | |
const newProjectButton = panel.getByTestId("new-conversation-button"); | |
await expect(newProjectButton).not.toBeVisible(); | |
await page.goto("/conversations/1"); | |
await expect(newProjectButton).toBeVisible(); | |
}); | |
test("redirect to /conversation with the session id as a path param when clicking on a conversation card", async ({ | |
page, | |
}) => { | |
const panel = page.getByTestId("conversation-panel"); | |
// select a conversation | |
const conversationItem = panel.getByTestId("conversation-card").first(); | |
await conversationItem.click(); | |
// panel should close | |
expect(panel).not.toBeVisible(); | |
await page.waitForURL("/conversations/1"); | |
expect(page.url()).toBe("http://localhost:3001/conversations/1"); | |
}); | |
test("redirect to the home screen if the current session was deleted", async ({ | |
page, | |
}) => { | |
await page.goto("/conversations/1"); | |
await page.waitForURL("/conversations/1"); | |
const panel = page.getByTestId("conversation-panel"); | |
const firstCard = panel.getByTestId("conversation-card").first(); | |
const ellipsisButton = firstCard.getByTestId("ellipsis-button"); | |
await ellipsisButton.click(); | |
const deleteButton = firstCard.getByTestId("delete-button"); | |
await deleteButton.click(); | |
// confirm modal | |
const confirmButton = page.getByText("Confirm"); | |
await confirmButton.click(); | |
await page.waitForURL("/"); | |
}); | |
test("load relevant files in the file explorer", async ({ page }) => { | |
await selectConversationCard(page, 0); | |
// check if the file explorer has the correct files | |
const fileExplorer = page.getByTestId("file-explorer"); | |
await expect(fileExplorer.getByText("file1.txt")).toBeVisible(); | |
await expect(fileExplorer.getByText("file2.txt")).toBeVisible(); | |
await expect(fileExplorer.getByText("file3.txt")).toBeVisible(); | |
await selectConversationCard(page, 2); | |
// check if the file explorer has the correct files | |
expect(fileExplorer.getByText("reboot_skynet.exe")).toBeVisible(); | |
expect(fileExplorer.getByText("target_list.txt")).toBeVisible(); | |
expect(fileExplorer.getByText("terminator_blueprint.txt")).toBeVisible(); | |
}); | |
test("should redirect to home screen if conversation deos not exist", async ({ | |
page, | |
}) => { | |
await page.goto("/conversations/9999"); | |
await page.waitForURL("/"); | |
}); | |
test("display the conversation details during a conversation", async ({ | |
page, | |
}) => { | |
const conversationPanelButton = page.getByTestId("toggle-conversation-panel"); | |
await expect(conversationPanelButton).toBeVisible(); | |
await conversationPanelButton.click(); | |
const panel = page.getByTestId("conversation-panel"); | |
// select a conversation | |
const conversationItem = panel.getByTestId("conversation-card").first(); | |
await conversationItem.click(); | |
// panel should close | |
await expect(panel).not.toBeVisible(); | |
await page.waitForURL("/conversations/1"); | |
expect(page.url()).toBe("http://localhost:3001/conversations/1"); | |
const conversationDetails = page.getByTestId("conversation-card"); | |
await expect(conversationDetails).toBeVisible(); | |
await expect(conversationDetails).toHaveText("Conversation 1"); | |
}); | |