File size: 1,624 Bytes
a03b3ba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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);
});