mirror of
https://github.com/gradio-app/gradio.git
synced 2025-01-12 10:34:32 +08:00
15da39fca0
* first pass * multimodal textbox * add changeset * remove file * more changes * changes * add changeset * revert demo * doc strings fix * update demo * file icons * more updates * format * add story * remove doc line * type fixes * chat interface * new demo * image upload fix * ui changes * addressing PR comments * format * type check * more pr fixes * format * format * test fixes * test fixes * Streaming fixes + other stuff * optional keys to dict value * final fixes * notebook * format * Update guides/04_chatbots/01_creating-a-chatbot-fast.md Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Update guides/04_chatbots/01_creating-a-chatbot-fast.md Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Update guides/04_chatbots/01_creating-a-chatbot-fast.md Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * merge * backend fixes * story fix * ui test fix * format * story * format * demo fix * streaming test fix * stories fix * stories fix --------- Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
67 lines
2.1 KiB
TypeScript
67 lines
2.1 KiB
TypeScript
import { test, expect } from "@gradio/tootils";
|
|
|
|
test("chatinterface works with streaming functions and all buttons behave as expected", async ({
|
|
page
|
|
}) => {
|
|
const submit_button = page.getByRole("button", { name: "Submit" });
|
|
const retry_button = page.getByRole("button", { name: "🔄 Retry" });
|
|
const undo_button = page.getByRole("button", { name: "↩️ Undo" });
|
|
const clear_button = page.getByRole("button", { name: "🗑️ Clear" });
|
|
const textbox = page.getByPlaceholder("Type a message...");
|
|
|
|
await textbox.fill("hello");
|
|
await submit_button.click();
|
|
|
|
await expect(textbox).toHaveValue("");
|
|
const expected_text_el_0 = page.locator(".bot p", {
|
|
hasText: "Run 1 - You typed: hello"
|
|
});
|
|
await expect(expected_text_el_0).toBeVisible();
|
|
await expect
|
|
.poll(async () => page.locator(".bot.message").count(), { timeout: 2000 })
|
|
.toBe(1);
|
|
|
|
await textbox.fill("hi");
|
|
await submit_button.click();
|
|
await expect(textbox).toHaveValue("");
|
|
const expected_text_el_1 = page.locator(".bot p", {
|
|
hasText: "Run 2 - You typed: hi"
|
|
});
|
|
await expect(expected_text_el_1).toBeVisible();
|
|
await expect
|
|
.poll(async () => page.locator(".bot.message").count(), { timeout: 2000 })
|
|
.toBe(2);
|
|
|
|
await undo_button.click();
|
|
await expect
|
|
.poll(async () => page.locator(".message.bot").count(), { timeout: 5000 })
|
|
.toBe(1);
|
|
await expect(textbox).toHaveValue("hi");
|
|
|
|
await retry_button.click();
|
|
const expected_text_el_2 = page.locator(".bot p", {
|
|
hasText: ""
|
|
});
|
|
await expect(expected_text_el_2).toBeVisible();
|
|
|
|
await expect
|
|
.poll(async () => page.locator(".message.bot").count(), { timeout: 5000 })
|
|
.toBe(1);
|
|
|
|
await textbox.fill("hi");
|
|
await submit_button.click();
|
|
await expect(textbox).toHaveValue("");
|
|
const expected_text_el_3 = page.locator(".bot p", {
|
|
hasText: "Run 4 - You typed: hi"
|
|
});
|
|
await expect(expected_text_el_3).toBeVisible();
|
|
await expect
|
|
.poll(async () => page.locator(".bot.message").count(), { timeout: 2000 })
|
|
.toBe(2);
|
|
|
|
await clear_button.click();
|
|
await expect
|
|
.poll(async () => page.locator(".bot.message").count(), { timeout: 5000 })
|
|
.toBe(0);
|
|
});
|