|
import { test, expect } from "@gradio/tootils"; |
|
|
|
test("chatinterface works with streaming functions and all buttons behave as expected", async ({ |
|
page |
|
}) => { |
|
const submit_button = await page.getByRole("button", { name: "Submit" }); |
|
const retry_button = await page.getByRole("button", { name: "π Retry" }); |
|
const undo_button = await page.getByRole("button", { name: "β©οΈ Undo" }); |
|
const clear_button = await page.getByRole("button", { name: "ποΈ Clear" }); |
|
const textbox = await page.getByPlaceholder("Type a message..."); |
|
|
|
await textbox.fill("hello"); |
|
await submit_button.click(); |
|
await expect(textbox).toHaveValue(""); |
|
const bot_message_0 = await page.locator(".bot.message").nth(0); |
|
await expect(bot_message_0).toContainText("You typed: hello"); |
|
|
|
await textbox.fill("hi"); |
|
await submit_button.click(); |
|
await expect(textbox).toHaveValue(""); |
|
const bot_message_1 = await page.locator(".bot").nth(1); |
|
await expect(bot_message_1).toContainText("You typed: hi"); |
|
|
|
await retry_button.click(); |
|
await expect(textbox).toHaveValue(""); |
|
await expect(page.locator(".bot").nth(1)).toContainText("You typed: hi"); |
|
|
|
await undo_button.click(); |
|
await expect |
|
.poll(async () => page.locator(".message.bot").count(), { timeout: 5000 }) |
|
.toBe(1); |
|
await expect(textbox).toHaveValue("hi"); |
|
|
|
await textbox.fill("salaam"); |
|
await submit_button.click(); |
|
await expect(textbox).toHaveValue(""); |
|
await expect(page.locator(".bot").nth(1)).toContainText("You typed: salaam"); |
|
|
|
await clear_button.click(); |
|
await expect |
|
.poll(async () => page.locator(".bot.message").count(), { timeout: 5000 }) |
|
.toBe(0); |
|
}); |
|
|