gradio/js/app/test/chatbot_multimodal.spec.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

192 lines
5.9 KiB
TypeScript
Raw Normal View History

Chatbot Tests (#4662) * playwright tests for chatbot * more tests * changelog * Update CHANGELOG.md * fix upload file delay (#4661) * fix * changes * changes --------- Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Forward `tqdm` constructor arguments to `Progress` component (#4475) * Forward tqdm constructor arguments to Progress component Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> * lint * reorder args * added tests --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Remove cleared_value (#4685) * Remove cleared_value * CHANGELOG * Add requirements.txt to dialogpt demo (#4686) * Add requirements.txt * Update demo notebook * Add torch * remove streaming demo + more tests * Fix blocks_kitchen_sink and streaming_stt demos (#4699) * Add code * Add json file * Remove streaming_stt demo * Undo generate_notebooks * Add blocks_kitchen_sink * fix tests * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * update notebook * remove debug * remove debug --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: aliabid94 <aabid94@gmail.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> Co-authored-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com> Co-authored-by: pngwn <hello@pngwn.io>
2023-06-29 05:11:46 +08:00
import { test, expect } from "@gradio/tootils";
test("text input by a user should be shown in the chatbot as a paragraph", async ({
page
}) => {
const textbox = await page.getByTestId("textbox");
await textbox.fill("Lorem ipsum");
await page.keyboard.press("Enter");
const user_message = await page
.getByTestId("user")
.first()
.getByRole("paragraph")
.textContent();
const bot_message = await page
.getByTestId("bot")
.first()
.getByRole("paragraph")
.textContent();
await expect(user_message).toEqual("Lorem ipsum");
await expect(bot_message).toBeTruthy();
});
test("images uploaded by a user should be shown in the chat", async ({
page
}) => {
const fileChooserPromise = page.waitForEvent("filechooser");
await page.getByRole("button", { name: "📁" }).click();
const fileChooser = await fileChooserPromise;
await fileChooser.setFiles("./test/files/cheetah1.jpg");
await page.keyboard.press("Enter");
2023-07-07 01:43:49 +08:00
Chatbot Tests (#4662) * playwright tests for chatbot * more tests * changelog * Update CHANGELOG.md * fix upload file delay (#4661) * fix * changes * changes --------- Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Forward `tqdm` constructor arguments to `Progress` component (#4475) * Forward tqdm constructor arguments to Progress component Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> * lint * reorder args * added tests --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Remove cleared_value (#4685) * Remove cleared_value * CHANGELOG * Add requirements.txt to dialogpt demo (#4686) * Add requirements.txt * Update demo notebook * Add torch * remove streaming demo + more tests * Fix blocks_kitchen_sink and streaming_stt demos (#4699) * Add code * Add json file * Remove streaming_stt demo * Undo generate_notebooks * Add blocks_kitchen_sink * fix tests * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * update notebook * remove debug * remove debug --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: aliabid94 <aabid94@gmail.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> Co-authored-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com> Co-authored-by: pngwn <hello@pngwn.io>
2023-06-29 05:11:46 +08:00
const user_message = await page.getByTestId("user").first().getByRole("img");
const bot_message = await page
.getByTestId("bot")
.first()
.getByRole("paragraph")
.textContent();
const image_src = await user_message.getAttribute("src");
expect(image_src).toBeTruthy();
expect(bot_message).toBeTruthy();
Chatbot Tests (#4662) * playwright tests for chatbot * more tests * changelog * Update CHANGELOG.md * fix upload file delay (#4661) * fix * changes * changes --------- Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Forward `tqdm` constructor arguments to `Progress` component (#4475) * Forward tqdm constructor arguments to Progress component Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> * lint * reorder args * added tests --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Remove cleared_value (#4685) * Remove cleared_value * CHANGELOG * Add requirements.txt to dialogpt demo (#4686) * Add requirements.txt * Update demo notebook * Add torch * remove streaming demo + more tests * Fix blocks_kitchen_sink and streaming_stt demos (#4699) * Add code * Add json file * Remove streaming_stt demo * Undo generate_notebooks * Add blocks_kitchen_sink * fix tests * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * update notebook * remove debug * remove debug --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: aliabid94 <aabid94@gmail.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> Co-authored-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com> Co-authored-by: pngwn <hello@pngwn.io>
2023-06-29 05:11:46 +08:00
});
test("audio uploaded by a user should be shown in the chatbot", async ({
page
}) => {
const fileChooserPromise = page.waitForEvent("filechooser");
await page.getByRole("button", { name: "📁" }).click();
const fileChooser = await fileChooserPromise;
await fileChooser.setFiles("../../test/test_files/audio_sample.wav");
await page.keyboard.press("Enter");
2023-07-07 01:43:49 +08:00
Chatbot Tests (#4662) * playwright tests for chatbot * more tests * changelog * Update CHANGELOG.md * fix upload file delay (#4661) * fix * changes * changes --------- Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Forward `tqdm` constructor arguments to `Progress` component (#4475) * Forward tqdm constructor arguments to Progress component Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> * lint * reorder args * added tests --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Remove cleared_value (#4685) * Remove cleared_value * CHANGELOG * Add requirements.txt to dialogpt demo (#4686) * Add requirements.txt * Update demo notebook * Add torch * remove streaming demo + more tests * Fix blocks_kitchen_sink and streaming_stt demos (#4699) * Add code * Add json file * Remove streaming_stt demo * Undo generate_notebooks * Add blocks_kitchen_sink * fix tests * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * update notebook * remove debug * remove debug --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: aliabid94 <aabid94@gmail.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> Co-authored-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com> Co-authored-by: pngwn <hello@pngwn.io>
2023-06-29 05:11:46 +08:00
const user_message = await page.getByTestId("user").first().locator("audio");
const bot_message = await page
.getByTestId("bot")
.first()
.getByRole("paragraph")
.textContent();
const audio_data = await user_message.getAttribute("src");
await expect(audio_data).toBeTruthy();
Chatbot Tests (#4662) * playwright tests for chatbot * more tests * changelog * Update CHANGELOG.md * fix upload file delay (#4661) * fix * changes * changes --------- Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Forward `tqdm` constructor arguments to `Progress` component (#4475) * Forward tqdm constructor arguments to Progress component Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> * lint * reorder args * added tests --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Remove cleared_value (#4685) * Remove cleared_value * CHANGELOG * Add requirements.txt to dialogpt demo (#4686) * Add requirements.txt * Update demo notebook * Add torch * remove streaming demo + more tests * Fix blocks_kitchen_sink and streaming_stt demos (#4699) * Add code * Add json file * Remove streaming_stt demo * Undo generate_notebooks * Add blocks_kitchen_sink * fix tests * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * update notebook * remove debug * remove debug --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: aliabid94 <aabid94@gmail.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> Co-authored-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com> Co-authored-by: pngwn <hello@pngwn.io>
2023-06-29 05:11:46 +08:00
await expect(bot_message).toBeTruthy();
});
test("videos uploaded by a user should be shown in the chatbot", async ({
page
}) => {
const fileChooserPromise = page.waitForEvent("filechooser");
await page.getByRole("button", { name: "📁" }).click();
const fileChooser = await fileChooserPromise;
await fileChooser.setFiles("../../test/test_files/video_sample.mp4");
await page.keyboard.press("Enter");
2023-07-07 01:43:49 +08:00
Chatbot Tests (#4662) * playwright tests for chatbot * more tests * changelog * Update CHANGELOG.md * fix upload file delay (#4661) * fix * changes * changes --------- Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Forward `tqdm` constructor arguments to `Progress` component (#4475) * Forward tqdm constructor arguments to Progress component Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> * lint * reorder args * added tests --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Remove cleared_value (#4685) * Remove cleared_value * CHANGELOG * Add requirements.txt to dialogpt demo (#4686) * Add requirements.txt * Update demo notebook * Add torch * remove streaming demo + more tests * Fix blocks_kitchen_sink and streaming_stt demos (#4699) * Add code * Add json file * Remove streaming_stt demo * Undo generate_notebooks * Add blocks_kitchen_sink * fix tests * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * update notebook * remove debug * remove debug --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: aliabid94 <aabid94@gmail.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> Co-authored-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com> Co-authored-by: pngwn <hello@pngwn.io>
2023-06-29 05:11:46 +08:00
const user_message = await page.getByTestId("user").first().locator("video");
const bot_message = await page
.getByTestId("bot")
.first()
.getByRole("paragraph")
.textContent();
const video_data = await user_message.getAttribute("src");
await expect(video_data).toBeTruthy();
Chatbot Tests (#4662) * playwright tests for chatbot * more tests * changelog * Update CHANGELOG.md * fix upload file delay (#4661) * fix * changes * changes --------- Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Forward `tqdm` constructor arguments to `Progress` component (#4475) * Forward tqdm constructor arguments to Progress component Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> * lint * reorder args * added tests --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * Remove cleared_value (#4685) * Remove cleared_value * CHANGELOG * Add requirements.txt to dialogpt demo (#4686) * Add requirements.txt * Update demo notebook * Add torch * remove streaming demo + more tests * Fix blocks_kitchen_sink and streaming_stt demos (#4699) * Add code * Add json file * Remove streaming_stt demo * Undo generate_notebooks * Add blocks_kitchen_sink * fix tests * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * Update js/app/test/chatbot_multimodal.spec.ts Co-authored-by: pngwn <hello@pngwn.io> * update notebook * remove debug * remove debug --------- Signed-off-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: aliabid94 <aabid94@gmail.com> Co-authored-by: Abubakar Abid <abubakar@huggingface.co> Co-authored-by: Ilya Trushkin <ilya.trushkin@intel.com> Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com> Co-authored-by: pngwn <hello@pngwn.io>
2023-06-29 05:11:46 +08:00
await expect(bot_message).toBeTruthy();
});
test("markdown input by a user should be correctly formatted: bold, italics, links", async ({
page
}) => {
const textbox = await page.getByTestId("textbox");
await textbox.fill(
"This is **bold text**. This is *italic text*. This is a [link](https://gradio.app)."
);
await page.keyboard.press("Enter");
const user_message = await page
.getByTestId("user")
.first()
.getByRole("paragraph")
.innerHTML();
const bot_message = await page
.getByTestId("bot")
.first()
.getByRole("paragraph")
.textContent();
await expect(user_message).toEqual(
'This is <strong>bold text</strong>. This is <em>italic text</em>. This is a <a href="https://gradio.app" target="_blank" rel="noopener noreferrer">link</a>.'
);
await expect(bot_message).toBeTruthy();
});
test("inline code markdown input by the user should be correctly formatted", async ({
page
}) => {
const textbox = await page.getByTestId("textbox");
await textbox.fill("This is `code`.");
await page.keyboard.press("Enter");
const user_message = await page
.getByTestId("user")
.first()
.getByRole("paragraph")
.innerHTML();
const bot_message = await page
.getByTestId("bot")
.first()
.getByRole("paragraph")
.textContent();
await expect(user_message).toEqual("This is <code>code</code>.");
await expect(bot_message).toBeTruthy();
});
test("markdown code blocks input by a user should be rendered correctly with the correct language tag", async ({
page
}) => {
const textbox = await page.getByTestId("textbox");
await textbox.fill("```python\nprint('Hello')\nprint('World!')\n```");
await page.keyboard.press("Enter");
const user_message = await page
.getByTestId("user")
.first()
.locator("pre")
.innerHTML();
const bot_message = await page
.getByTestId("bot")
.first()
.getByRole("paragraph")
.textContent();
await expect(user_message).toContain("language-python");
await expect(bot_message).toBeTruthy();
});
test("LaTeX input by a user should be rendered correctly", async ({ page }) => {
const textbox = await page.getByTestId("textbox");
await textbox.fill("This is LaTeX $$x^2$$");
await page.keyboard.press("Enter");
const user_message = await page
.getByTestId("user")
.first()
.getByRole("paragraph")
.innerHTML();
const bot_message = await page
.getByTestId("bot")
.first()
.getByRole("paragraph")
.textContent();
await expect(user_message).toContain("katex-display");
await expect(bot_message).toBeTruthy();
});
test("when a new message is sent the chatbot should scroll to the latest message", async ({
page
}) => {
const textbox = await page.getByTestId("textbox");
const line_break = "<br>";
await textbox.fill(line_break.repeat(30));
await page.keyboard.press("Enter");
const bot_message = await page
.getByTestId("bot")
.first()
.getByRole("paragraph");
await expect(bot_message).toBeVisible();
const bot_message_text = bot_message.textContent();
await expect(bot_message_text).toBeTruthy();
});
test("chatbot like and dislike functionality", async ({ page }) => {
await page.getByTestId("textbox").click();
await page.getByTestId("textbox").fill("hello");
await page.keyboard.press("Enter");
await page.getByLabel("like", { exact: true }).click();
await page.getByLabel("dislike").click();
expect(await page.getByLabel("clicked dislike").count()).toEqual(1);
expect(await page.getByLabel("clicked like").count()).toEqual(0);
});